 Cool. Thank you. Wow. At this hour, so many people, there's clearly something wrong. You want to be in another talk, not in this one. Okay. We're all gone. Okay. So, yeah, thank you for the interest in my talks. You know, this is a less technical talk, but I'm also bringing a couple of funny things at the end, so it's not too boring. So I wanted to reflect on the UNIX class that I've been teaching for a while now, and I thought this would be interesting to this audience because you're also BSD folks, so I figured this might be something you might find interesting in. So this is basically the outline that I'm going to talk about and something a little bit about me, some people know me already, so I'm the co-host on the BSD Now podcast. Alan asked me actually last year to join the podcast because Chris Moore didn't have enough time anymore to do it. So I'm approaching my one-year anniversary on BSD Now, which is cool. I'm also sitting on the Free BSD Core team. I'm also involved in the Free BSD Foundation. I served there as the vice president on the board. Wow, how did that happen? But in my normal, yeah, bad luck, I guess, but in my normal life I'm a university system administrator at the University of Applied Sciences in Germany in Darmstadt, and so this is more about my day job less than my free BSD work. But I try to combine them in this talk a little bit so it's not too far off the BSD track. So I'm teaching a UNIX lecture called UNIX for Software Developers, and so this is basically explaining a little bit how this came to be and why I'm teaching the things that I'm teaching and why I'm doing the things. And yeah, let's start with the lecture, but first I should start with a little motivational talk that inspired me when I was starting out with UNIX. So this is an old article on the on-lamp side from... What was that? Oh, what was that from? No, it's on-lamp. Oh, what was that? O'Reilly, right. O'Reilly, right. And so this is kind of the motivational thing. It's also in the introductory chapter on Drulavine's BSD Hacks. So this is also on my web page that I'm going to show later on. So this is the theme for my lecture that I'm teaching. So UNIX is for many people very mysterious, something a little intimidating, but also very fascinating. And once you get into the under the hood you find a lot of cool gems and really like the underlying things that are buried under the surface. And that's also what I start usually with my lecture. So I present this to the students and they're like, whoa, what's this guy talking about? But the lecture actually started way before my time. So I was a student once, even though some people will never recognize me as a student. So I started my studies at the computer science department where I currently work. In 2001, wow, I feel old now. So back then I didn't have any UNIX knowledge. So I had a DOS Windows background back then. I heard about UNIX but I'd never sat in front of a UNIX system. And I had a little bit of programming knowledge but this is basically just the start of my university career. And so my first programming lecture I will never forget because we had a very engaging and very interesting professor. And so he was kind of the catalyst for me to explore UNIX a little bit more. So he basically came into the lecture room, everyone sat down and he started the lecture with basically there are two groups in this computer science department. The first group is using UNIX. That's the group I belong to. And the second group is using Windows. That's everyone else. And after that everyone was kind of hooked because he was kind of old school. So Professor Schutter ran back in the day, Linux on his ThinkPad and for most of the class that we were having including me, this was a new experience because we all just knew Windows and some of the more advanced system that he was using there. So he pretty much opened his ThinkPad and did everything in the shell and the terminal. That was kind of a wow experience because way back when I liked the DOS environment and seeing the UNIX environment for the first time with the tap completion and all the cool things he can do there, that was certainly something that I wanted to get more information about. And he was also very old school UNIX or he still is an old school UNIX professor. So he had the rare ability to explain complicated things very easily so that everyone could understand it. And sadly many of the other professors didn't have that skill or didn't develop that skill. So I was really lucky to have his lecture introducing me to the more finer points of programming and operating systems later on. So it's pretty much his fault that I'm standing here today because I not only took his programming lectures but also operating systems and distributed systems and all that on UNIX. So this is really the eye-opening experience that I had back then. So later on way back when I finished already and he had me or asked me what I could help him a little bit with lab work and helping students, he was like, yeah well remember back when you were sitting in the class and we were still a student and you were seeing me using Linux back then and he switched to Mac OS in the meantime. So that's pretty much every new student generation has the same experience. So professor opens his laptop, uses some kind of system and they're now trying to emulate that environment and that was kind of the idea that's going to start it there. And I talk to students sometimes that having his classes and I see that they're having these experiences all over again and this is kind of a nice thing to see. So back then, so right around my master's level I was also experiencing a little bit with other UNIXes so I ran Debian for a long time and until one fateful day that I found a previously ISO image and I was like, oh wow, you can switch terminals real quickly and that took a long time on the Linux's back then so that kind of hooked me onto the BST track otherwise I wouldn't be doing this so it's just terminal switching. It's just like, whoa, how cool would that be? How often do you do that? So that got me... It's crazy how small things... Yeah, just turn you totally into a different environment and yeah, so from there on I started discovering the BSTs a little bit more I ran Debian and FreeBSD in parallel and at one day I was like, oh wow, you haven't booted this Debian system for a long time maybe I can do the complete switch over to FreeBSD and that's what I did and pretty much never looked back so this is my main system except the microS. But my gosh, it's based on FreeBSD. Yeah, so there's the logical progression in that and I feel quite at home although people try to nag me a little bit and get a FreeBSD desktop some kind of laptop that's running FreeBSD. But the nice thing about that is that one day I should have approached me, by that time I was now working in the university department because why not? He asked me whether I would be willing because I also took that lecture at him this is an elective course and he asked me whether I would be interested in taking over the class because he was busy in other lectures and he couldn't do it anymore so rather than having the lecture die I would take over the lecture basically holding the lecture, doing the labs and also the exam so this is the honor of passing the baton from him to me and yeah, this is pretty much how I got involved with this lecture and since I took the lecture myself I was kind of in the know of where I was going to and what I was expecting from the students since I experienced most of the trouble that I had with that lecture myself so I knew what kind of things needed to be fixed so what is this lecture Unix for developers? so it's basically an undergraduate course that I should have created in our computer science department and this is all in Darmstadt, Germany where I live and so the goals back then is so he noticed that a lot of people were interested in Unix since he showed this in his lectures all the time and they didn't actually know how to do programming on Unix or what kind of things you could do on the terminal in shell scripting and other things so he created this course and, you know, did it a couple of times until he passed it over to me and so the required knowledge is basically you took his operating systems course and maybe his distributed systems course and you should know a little bit about programming and then you could basically go into these topics so he covered Unix overview, a little bit of history where this all came from and what it's currently going to maybe or where it's currently at editors, yes, we were learning VI the hard way and I still... well, it's not too bad I tried also to expose the students to it but not too much so I know that there's immediately two groups one that hate VI with the passion and the other ones are like, okay, I can still work with this editor and other things so then we do a little bit of shell what the shell can do this is basically what most people know about so tap completion and history and stuff so this is all the stuff that you probably all know about and from there we started getting into shell scripting and things you can do there to automate certain tasks and make sure that it runs certain tasks in a fashion that you would never have done because there's no separate program for that then we focus a little bit more on file system so back then he was teaching about how EXT 2 and 3 that's way back when was working and for me, my topics that I now changed a little bit I will go into this a little while focusing a little bit more on open ZFS because I think that's something that the students should be exposed to to just see what kind of cool things that open ZFS can provide there's also the grepset and arc set chapter which has most students just grown about the crazy syntax that arc is using but they can also see what kind of cool things you can do with arc that you wouldn't normally do or would have to do in a very complicated fashion nowadays and what I added is Ansible and I added that last year because I thought this would be interesting to students and the feedback that I got after the class when the students got into their practicals before they do their final thesis is that many of the companies are looking for students to know this already coming from the university and so that they have a little bit of knowledge about how Ansible works or how the whole configuration management thing is doing so this lecture is basically one and a half hours or 90 minutes per week and we have also three hour lab every two weeks so we have a relatively big lab so that students can get a couple of assignments done in this time frame so that they pretty much can get the exposure that they need to work with the actual systems you can do this lecture totally theoretically but it wouldn't help you much if you're really sitting on a unique system so this typically is five to six labs over the semester so this is typically 14 weeks that we have and you know you cannot start the first lab on the first week because students don't know that much to do something but this is basically how we structure this lecture and at the end there's a written exam of course so for this semester the last exam was just two days ago while I was on the way here so a colleague of mine took over that so he would just watch people writing the exam in hands and collected it again which means when I come back to the first thing I have to do is you know create the exams but that's okay so changes that I made to the course I already mentioned the addition of OpenZFS so when I took over the slides when he passed over the lecture to me the slides were already outdated so they were covering Linux 2.6 and I was like I have to redo the slides anyway so I might as well push a little bit BSD into it because the lecture is called software developers and not Linux for software developers or BSD for software developers so I'm trying to level it out a little bit not just Linux but also a little bit of BSD so that students can get an idea of what the two systems can do and what kind of differences there are originally also the lecture was held in German originally but with the addition our department is now doing with more international work they asked me whether I could switch this course language over into English so I said yeah let's try this and what I found is that it was relatively easy to do because all the technical terms didn't need to be translated at all and I could just use some of the slides from some conferences take snippets in there and put it in there so it's just in English all the time so this is the third time that I'm doing this now and the German students like it didn't teach students or I didn't lose any of those groups so I'm trying to use this or motivates me to keep this in English yeah and for the students so when you start a lecture in a German university and you start in English everyone is like do I understand what he's saying but this is pretty much how it goes all the time and the second week students kind of get familiar with the talking speed and that you don't know all the words all the time I mean this is just me talking in English and the second week they start warming up to the whole idea and then they start raising their hands and asking questions so this is also a good training for them to get into their language skills I mean computer science is English anyway so they might as well practice in the university while they're still learning and then they can flex their muscles a little bit. There was one guy in the last or this semester's lab so I was constantly talking to him in English in the labs and he was constantly repeating in German so he understood what I was saying but he kept repeating everything in German so I was like okay you can do this but if you want to do this we can find a common ground here so that was kind of interesting that most students switch to English for this lab because they also have to work with the exchange students a little bit so there's the common course language and of course I keep making changes to the course because especially in computer science you can never stick to one topic or with one topic you have to constantly learn yourself the new things that are happening in the systems. The systems change themselves as well so you have to constantly keep the stuff updated because otherwise the students would just leave if you talk about this old stuff no one is using anymore. That's why I added Ansible and I'm already thinking about what new things I would add for the next iteration so this is a yearly course so I typically teach this in the winter term which is from October till late January and then in February there's typically the exam okay so why bother, why should I teach this class or why should I even spend my time with students so I could just sit in the university office and do my normal system in work so I have the same motivation that I have when I took the class myself because I think that UNIX gives us the relevant today and that students in university don't get at least in our university I think don't get too much UNIX exposure so I'm managing our big data cluster at our university which is typically for master students and it's all running UNIX systems so we have currently we have Ubuntu on it and FreeBSD so I'm trying to get more FreeBSD on it of course but what I find is that even the master students sometimes sit in front of the terminal and don't know what kind of commands to enter and this is typically that they didn't know about UNIX before or that they don't use UNIX in their private time so I wanted to create this class or the motivation still there to have the class there so that they get a little bit of exposure to UNIX and do some programming on it and again if you want to keep UNIX alive you need to train the people start early with that because otherwise they are lost to some other operating system and the idea is to even if I have a class of 40 students maybe just 5 students will stick with UNIX and the other ones are like yeah this is nice enough but I'm going back to my other window systems or max even but even the 5 that are left with the UNIX impression or the UNIX spirit these are 5 more UNIX people that we now have and they might become developers of some open source project one day so this is already a benefit they also need to or should know how to use UNIX tools because as you know it's very flexible what you can do with UNIX tools we can combine them in different ways just using pipes and all these things and knowing about this is very good for students for their toolbox that they now later on bring into companies because then they can say oh I can work on this CSV file with ARC and write a shell script that does certain things on a server or I can use Ansible to do certain automations and that's certainly something that students should know and then they can apply this also to many different other fields but then people ask why are using BSD as a teaching tool so why are you using this why can't you just use the Linuxes of this world well the reasons are relatively simple if you only have a hammer and so if people only use Linux which is good which is totally fine if it solves the problem but sometimes people try to apply the wrong solution to the right problem and if they don't know about that there are other systems out there they just try to apply the same solution which might not work but if they know ah there's this other operating system out there that has other cool features that might apply better to this current situation or to this current problem a way to decide which problem to fix in this way and of course there are some features in the BSDs that the Linuxes don't have or not yet have so like OpenZFS or GoodEnvironments, Adam was talking about this earlier and some of the free BSD based system utilities I just don't want to miss so I typically show in the class relatively many demos some fail relatively spectacular but I switch between systems very often so I show them top for example and I can tell them hey look in free BSD I can say top 10 in a Linux I get an error message when I enter that so it's these small things that students experience in my class and see that's what's working on this system and this is working on this other system so they can decide later on which is better for their own purposes and of course sources are available that's also true for the Linuxes of course and they can also they allow it to play with those, tinker, change it and work with it in different ways yeah so some people ask me hey how can you teach if you're not a professor so I'm not a professor I'm employed I'm employed at the university and some people think that only professors can teach at the university which is not true at least not in the way that I do it so in Germany you can typically go to university and say hey I'm an expert in this kind of way because I have work experience I've worked on this particular operating system or this particular topic in computer science if you want to go that far and are you interested in that I can talk or give a lecture about this and many of the universities look for people like that because they cannot hope to cover all of these different subjects that are out there and students are also interested in getting practitioners in their field to talk about in class about their experiences and how it works in the real world later on so that's my encouragement for you to if you're interested in teaching and all these things that you should also maybe approach this the pay is probably not the best motivation for that but it's certainly interesting to have this interaction of teaching and learning and seeing students get better over the semester to get more exposure to the system or to other areas that you're interested in so for me it's a good combination of my sysadmin work that I'm doing on the big data cluster and also the lecture that I'm giving because I can carry over some of this task that I'm doing on the big data cluster into the lecture and also this way give the students a little bit more ideas of what their later work might look like so they might have to solve the same problems that I'm telling them about so they might as well figure out solutions for that right away and not later on when they're in their job so I try to make a lot of practical examples and if I'm trying to do something all over again on the cluster there's something that's probably something I should automate one day so that's why I'm doing a little bit more with Ansible and then students see ah he's so typically my lectures go like this I present a problem and I'm showing them possible solutions on the system and then they can see ah he's solving it in this way and there is a little bit of discussion happening typically because there are often multiple ways to skin a cat yeah so typical challenges when I start the semester because students don't know me I don't know what the students are like so typically since this is an elective course I typically get the students that are already a little bit interested in Unix I don't get the people who hate Unix with a passion because they don't have to take the course it's not a mandatory course so I already have a little filter already that students who are working with Unix a little bit or just want to see what the system can do that I get those students and not the ones that I probably never see in this class but then so I start telling them a little bit you know when classes are and how many exam or yeah the exam a little bit or how many labs they're going to be and then someone raises his hand in the back and says which Linux distribution are we going to use in this course and I go all and none so if you have a Unix distribution that you like and you can use that to solve all of the labs then by all means use it I'm not indoctrinating you in any way I just want to show you another system and if you hate this other system at the end of the class that's fine use your own system but for the students that are new to Unix anyway I should give them at least some system that I think is best for them to learn with and that's typically so that keeps the people who say I want to run my Ubuntu or to run my Arch Linux or whatever and they can use that by all means yeah they can pretty much solve all the labs that I'm presenting them and for the new students who are totally overwhelmed with the stuff that I'm presenting to them I want to keep them in the class as well so I should not drive them away but scaring them with a new operating system so I'm trying to get these two groups still in the same class yeah that's what I said here with the first group that so some of the students already know more than I do so they are like yeah okay I just come to the first lecture and the last one before the exam and then I'll see how I go that's fine because they don't get on my nerves this way but some of the and they pretty much finish off pretty much all of the labs in one go and I'm okay you're the expert you can teach me a thing or two but you just need the labs for the actual exam later on so but most of the students are relatively new and we have many students who have a little bit of knowledge of Unix but want to know more and these are exactly the students I want to have in my class so I'm not trying to scare them away too much and ideally even for the more advanced students they should also know something new so they probably never heard about OpenZFS or what Ansible is and what it can do so this is the new parts that also makes them stick to the class and the first lab actually is the most challenging one for me because in this one I try to bring everyone together so the one group that is the experts who have installed probably 50 Unix systems in their lifetime already and some of them say oh I'm a system administrator in this company I'm working for in the meantime and I'm like okay sure then go ahead and install the system that I'm presenting but the people who are new they've never installed a Unix system before they want to have a little bit of hand holding so I can help them a little bit if they enter a wrong command or created a data set that's not the proper name or things like that they need a little bit of help so that's why I'm having lab one being the one that tries to sync everyone to the same system because we're basically installing a FreeBSD system from scratch because although people say that the installer is bad pretty much every student could install the installer using the installation menu and go through the prompts and that's pretty much not what computer science is about they want to know what's happening in the system why are we partitioning disks why are we copying files over and extracting them in certain directories so this is the idea that I'm trying to give them there why are we using the system in the way that we're using it May I ask? Can you explain this stuff like partitioning and so on because there are a lot of topics related to just installation so the question was whether I explain these concepts of partitioning and other things that I'm using before the actual lab starts so the first lab is more descriptive so it's kind of a FreeBSD handbook chapter light to install the system but I give them also assignments so they should not just blindly type the commands in there they also need to figure out what are the device names what are the, if config interfaces they need to configure so these are the things they need to figure out in the lab themselves but the rest is pretty much a partition is a logical division of a hard drive in this case and some of the things that I'm explaining I'm also explaining them later in the labs or the lectured itself it's just that the timing isn't right it's more in the labs later on the lecture would be lagging behind and vice versa so it's a little bit of trade-off it's a master course no it's a bachelor's it's undergraduate so yeah that's the lab one so this is the most difficult for me but lab two is then fine because then they have a system set up and yes students try out things and rack their system in interesting ways that's why we create a boot environment and I'm not giving them the lab for the lab for the mark one until I see that they have a boot environment ready to save their neck um and this helped me a lot because if students find out in the fourth lab that their system isn't booting anymore and it's like oh well you have to reinstall the whole system again not anymore you just restore the boot environment and we're back to normal so this way I can make sure that I sleep well so that students don't stay in the middle of the night and say oh I've crashed my system can you help me yes so boot environments are a ZFS feature that's why we're installing a freeBSD on ZFS oh the question was what's a boot environment a boot environment is basically a way to use open ZFS to have multiple versions of your operating system or your file system in this case ZFS and if you want to know more Alan gave a talk two hours before this one about it and there's also a bunch of things I also covered boot environments in the lecture a little bit but this is a typical question a student would ask me also in lab one what's this BEADM system I'm using I've never used this before okay that's fine but I'm explaining it so we have a chapter in the lecture later on about file systems and that's where I explain what ZFS is and what is a pool and what is a data set because most students have never heard about this so they covered the whole ecosystem of open ZFS that would be a lecture of its own but the basics are there you just need to know what a pool is and what a data set is and then you cover snapshots a little bit and that typically gets them knowing what this is all about okay so this is the challenge that I have so the labs themselves I covered them a little bit already so lab one is bring everyone on the same page yes a couple of people tried it in KBM that's also working and so it's just having the same environment for everyone so two years ago I let students install it on their own physical machines and there was one student was like well he didn't apparently do the partitioning right or the boot environment management so what happened was he was trying to boot his window system again only to find out that it wasn't there anymore and the student for the rest of the lab was just sitting staring blindly at his laptop going through his head what kind of systems he lost and what kind of software licenses he had to get again so that was kind of a let down for me so that's why I'm using it in a controlled environment and because in virtual box all the devices have always the same name no matter what kind of hardware the students bring so we're not doing this on lab machines so every student can bring their own machine as a snap the think-pads of this world so all kinds of different hardware and the exchange students have even more crazy hardware so we have students from South Korea and even the keyboard layout I want to try to help them a little bit and type something in and it was like well why don't you type a little bit but it's interesting for me I learned a lot of stuff helping these students and some of these systems there are only 32 bits so they cannot emulate a 64 bit free BST system so I was hoping they all die out by now these old 32 bit systems but they're still out there that too is basically setting up an X environment because we're doing some gooey stuff later on it's relatively simple but I want to have them not just work in the shell so we install a little bit of an X environment I'm using flux box currently I'm probably next year switching over to Lumina so I'm trying how this works for the students so this is a constant experiment and students are also a little bit of my guinea pigs so I'm trying new things on them then lab 3 is about basic shell commands so you know chain of pipes we have a I'm doing a little chain of pipes contest so the group that creates the longest chain so with the most pipes in between that does something useful on Unix they get a little price and so this is kind of interesting how many pipes you can put into a system like they get something from a file and paste it to something else and then filter out something and it's certainly interesting what people come up with and then what I noticed that students should know a little bit about graph is why because students later on will write their thesis about some kind of topic and the chances are relatively high that they should visualize something there and I found graph is really easy because you just write a couple of instructions and the computer is creating these nice graphs that you can see so I find this very helpful and students from two semesters after they finished my course they say thank you that you showed me this graph with thing then how can I create my thesis quicker without having to learn this graph with utility or some other GUI graph environment so lab 4 is so by the time we'll reach lab 4 we already covered a lot of programming in the lecture so we're doing shell scripting there and a lot of basic things, see dialogue things and creating a boot environment menu so they can have a little GUI environment to select the boot environment they want to switch to and things like that lab 5 originally we had 6 labs but time constraints in the lecture or in the semester kind of had me cut the last lab because it's too close to the actual exams so they should focus more on the exam by then but lab 5 is basically integrating lab 7 AWK into shell script so that they know which environment they're currently on because dollar 1 is different in the shell environment and it is in arc and they should know the difference between the two and how to pass like variables from shell to arc and vice-versa so that's what this lab is typically all about and each of this lab has a little bit of open ZFS in it so I'm not having a dedicated lab for ZFS itself, well lab 1 could be but there's much more steps in lab 1 than just ZFS so there's always a little site assignment in each lab that says oh, let's create a couple of desktop data sets and set different compression level and then extract the port street on it and see which is the best one for this case so that they know also a little bit about the differences between the algorithms that open ZFS is using and things like that okay, the exam oh, this is kind of a nice section of the presentation so the exam questions typically focus on the stuff that I covered in lecture of course and some shell script writing so I typically ask the students what kind of helpers they want to use so I have three stages so an easy exam does allow no helpers so nothing, they just bring their brains hopefully and their writing skills a medium sized difficulty exam will have them bring a piece of paper that they wrote themselves so if people are like super nervous and get blackouts they still have their piece of paper where they wrote certain things down and I also give them the choice to have a very difficult exam where they can bring everything, computers, books but no group ever selected this option, I don't know why most of them chose just easy exams and that's what I typically do, so in an easy exam they have just paper and pencil, no computer exactly, they cannot check their source code but if I have an easy exam I say you must at most write ten lines of shell and I think that's parsable in the brain that you have at that point and sometimes I give them source code that's wrong, it has errors in it and at one point I had a shell script that has three syntax errors in it the first one was in line one so I switched around the bin SH so it's hash bang bin SH and I switched around the bang and the hash and there was one student in the lab or in the exam sitting five minutes the last one everyone left already handed in their exams and that person said I want to find this one error in this exam and he was like totally crazy and I said okay hand it in if you hand it in I will tell you where the error is so he handed it in and it's like in the first line the bin SH was switched around and he's like oh no because this is the line that everyone is not looking at and they just think it's just working and yeah this is fun yeah but no student ever failed this class although some exchange students last semester tried really hard so what they did they wrote the whole exam with pencil I don't know if that's a thing but that's what I did and then before handing it in they erased everything again but so badly that I could still read the stuff in there so I graded it as normal they barely passed and yeah I wish them well they probably will never use Unix again but here I have a typical question for my exam so maybe you know about this one so Doc McIlroy formulated three ideas that form the basic philosophy of Unix so this is my introductory lecture typically where I talk a little bit about Unix history so you probably heard about this before write programs that do hmmm and do yeah yes second one write programs to yes and write programs to handle text streams because that is a universal interface excellent you just passed so here are the solutions so here I photographed a couple of the solutions that students handed in exam gold so this is what the first so this is after grading it so this is typically what you get you can see already that they didn't learn this question so it gets better stuff is always the right solution if you don't know the answer it's stuff make life easier yeah of course why not that's what programs are for next one so this is a three point question how much can you lose in this one I like the memes part in this one because yeah so you sit down with a stack of exams to correct and ah correct wrong correct and then you read certain things like this and ah this kind of brings a smile to your face and I save the best for last write programs that do enough and do not what okay next one is write programs to automate processes and write programs to handle this test because it's a pain in the ok that's all kind of feedback for me how the difficulty of the test was so this is the stuff that I have to deal with yeah so things that I noticed from the students indirectly or from the feedback that they gave me about this class many of the students nowadays come with computers that have only a GUI environment some people bring their tablets some people bring their mini laptops that have only a little GUI on it and then telling them well we have to go to this black and white input environment that's kind of a horror for them because that is like the old ages of the computing environment so but more and more students are bringing these and they have never used anything else before so they're all using GUIs it's kind of difficult to bring them into the UNIX environment if they only know GUI environments and mouse clicks and of course this is typically for the students who have already used the linux system a little bit they think that bin-bash is the prompt that you should use for shell scripting and they write perfect scripts and then I say well why are you using bin-bash you can run the same script with bin-sh because you're not using any specialties that the bash provides in this programming and they are oh interesting I didn't know that it worked in bin-sh so that's probably why and then I tell them about portability because trying to port this bin-bash script to a FreeBSD system or some other UNIX system won't work because that's a different path because bash as you know is not in the FreeBSD base system and then they say yeah okay I change it to bin-sh and then they're reluctantly changing that script and hand it in but there's also things so I always knew teaching as not as a one-way street so as much as I teach the students I get as much information back even though they don't actively teach me so the feedback that they give me indirectly is when I'm holding a lecture like this you don't have to be perfect you don't have to pronounce every word correctly they still understand what you mean they also you can have a bad day and give a very bad lecture and at the end a student comes to you and said oh wow I learned as much in this lecture as ever and it's like oh wow great so don't worry be crappy you can still teach enough students that they will not hate you forever and you don't have to do this all stick okay so they were learning about UNIX system yeah loosen up a little bit you can do this maybe not on the first time you're doing this but students typically react to this more lively interaction and they like a little bit more jokes in the lecture for example so and UNIX pretty much provides the best environment to do this so sometimes I've been SL installed and if I mistyped SL then the train drives through my screen everyone laughs and yeah that's how it that's how you keep the students interested I mean 90 minutes lecture is already hard for some students yeah this is the world we're living in so this is the stuff that I try to do in the future so I think when we're in a nice decimal environment we also should let shell script send notifications to the desktop so they can see there's something happening in that you get some kind of feedback from the shell script the lecture is also going to change a little bit so I'm trying to do a little bit less of slides so I typically my slides look very much wall of text but I'm not reading the slides so I'm just giving the slides out for students so that I can read it afterwards in like a prose text and I'm doing a lot of demos in the lecture which has me prepare the lecture in a certain way so if I'm teaching a section on AWK I need to brush up my actual practical experience with AWK because I might not have used it in like half a year and then I need to see whether all the scripts still work but doing this on a live system is much more interesting to students rather than doing slides because if you put stuff on slides yeah everything works on slides all the time but if you're doing it on a live system you can see all the different things that break or that someone has changed something in the operating system that you didn't know about then oh the commands I was using don't work anymore I should change that and fix my slides I'm also thinking about introducing detrace to students I had George Neville Newell teach at my university for two times already and the way that he teaches detrace is very unique in the whole teach BSD approach but my lecture is only limited to like 14 weeks and it's kind of difficult to cram detrace into there I want to give them not just a brush overview from detrace but also focus on actual problems they can solve with detrace and I think of creating its own lecture for detrace for the undergraduates so I'm still thinking about how to integrate this properly I also find performance measuring super interesting and I also want to expose the students to that because that's probably what they're also going to do later on in their jobs they pretty much have all the programs written by them and it's just programs behaving badly and having performance problems and that's what they have to deal with in the future and people who don't know this so Kahoot is a interactive application where you can ask questions and the students can answer them on their mobile phone what kind of result here what kind of answers the students were giving and kind of a statistic and that's how you can also say to students okay these are the slides that I was presenting today let's go home and if you didn't understand anything do this Kahoot thing to like a self-control and this way you can see what you learned in this lecture or what kind of stuff you need to repeat again that's pretty much the end of it perfect time for questions how many students in average do that Kahoot question I need to create that first the thing that I want to do in the future I haven't done that yet so that's my I need to repeat the question so he was asking how many students are using that Kahoot so I haven't created the questions yet I need to basically go through my slides all over again and think about questions that they should answer which shouldn't also be exam questions otherwise it's too easy and if you ever create a curriculum then you can see that you can only ask so many questions because the material is there and you can only ask questions about the material that you have and if you don't have enough material then you pretty quickly run out of questions but this is certainly an interactive way because you have always students sitting in the back and you know they have their laptops open and I can see that they're on Facebook and not on my lecture slides so yeah but that's the way it is and that gives a little bit more interactivity to a relatively boring lecture yeah the question was whether there's a theme that the students like or what they want to see in future lectures yeah so they're interested in the Ansible stuff definitely that's why I'm now teaching this also at certain BSD conferences because the topic is still relatively new the whole configuration management stuff and OpenZFS is definitely interesting to them because most of them have never heard about this and they're also seeing what features it has so I cover snapshots and boot environments as I said so they're like wow that's in an operating system file system wow I need to check this out and that's typically what I get as feedback one second before you finish we need to leave the place clean so if you have trash around you or whatever you have a trash can leaving this room on the outside so you can put everything on it thank you very much more question? oh here we go you answered my deep-face question and there's a question on the internet if you introduce sick info to your students yes I do so that's typically what I do when I tell about differences whether I introduce sick info to the students yes that's what I'm doing I also write articles in the FreeBSD Journal about sick info even though they are small so sick info is one thing where you can say oh look this is different from the literacies of this world and if I type control T then the system gives me something back and I also will cover traps in the shell scripting section so they can write their own control T handler and they can say oh this program is now giving me that message and this other key combinations messages here so this is typically the difference between that I'm trying to focus on in the lecture next? oh wow a lot of questions the question was whether there is C programming in the lecture originally there was but again if you teach a whole programming language they cover programming in the first two semesters which is C++ and so Professor Schütte did it in a way that covered the differences between C and C++ but again if you cover C then you can not do it in just one lecture you can do so many things in C and if you're doing programming in Unix in the kernel environment that pretty much warrants its own lecture because you can do a lot of stuff in there than just the things that I cover but it's certainly worth while teaching that to them this could be the third lecture I'm teaching oh wow if I'm not appearing in any future BSD conferences I'm totally stuck now in teaching at university courses that I think are relevant to them yeah this is the tradeoff that I'm doing yeah what do you look for what inspires you the question was when I add new content to the lecture what are the things that I'm looking for what inspires me to add them so typically I add stuff that interests me because I typically create lectures that I wanted to visit myself but I weren't offered back in the day so I'm also switching interests a couple of times so I'm currently totally into monitoring and you know a little bit into defops I'm also going but I cannot put everything in this one lecture it still has its own theme it has its own curriculum but if I find a and if I finish a topic earlier than I was anticipating stuff at the end that before the exam starts so that this is not in the exam itself but students who are interested in this they can see oh this is also happening on Unix or you can do these things on Unix follow up question so I also see certain I'm also following the trend or the market a little bit yeah a little bit because it interests me and I think that's also interesting when the students going out into the industry to work there and if we don't teach them the stuff in university they have to be trained on the job and that's a little bit late or they don't get a job at all which is worse yeah and you should also teach them to learn stuff for themselves they cannot just sit there and yeah let someone else talk in front of the class and don't start learning yourself that's the actual goal of the whole university education follow your interests do what you're interested in and then get interested in certain things the question was whether I was introducing my students to version control so I keep that for the first and second semester because they are doing a little bit of version control there with subversion and git yeah that's already the framework starting and yeah it's typically not part of the lecture but I can I could do a basic git introduction there that isn't too difficult but they don't have to have version control for the small assignments that I'm giving them I could do one that covers the whole lecture or the whole exam period or I could do a project that covers lab 1 to 6 that they have to follow along that would be something I could try but there is no necessity in this case to have a big version control where you have mergers and different conflicting versions around typically students program on their own device show it to me and I'm marking it up as complete yeah you said that some of your students are continuing using FreeBSD for example not using Free in your course and continuing using Linux yeah the question was whether some of the students that continue using FreeBSD and whether that's what the reasons for that are and why are they not going back to Linux so the outcome is relatively small because at first I don't see what they're doing after my class so I always send them a message after the exam hey congratulations you passed and I want to keep in touch with you or you can still send me questions even though the class is officially over and few students send me a message a couple of years later oh I'm now working in a job and what you told me in AUK I didn't see back then but now I'm totally in this environment but the outcome again it's not an indoctrination class to FreeBSD it's not my intent to show them oh this is the one true operating system I want to give them a broader view that there's not just one system out there whether it's FreeBSD or Linux I want to broaden their horizon so that they can apply a certain problem with one system or the other so the outcome is typically out of 40 students maybe 2 or 5 maybe will use FreeBSD after that it's kind of a bad outcome but the 5 students who are using it they will stick with that and some of the students just can't be taught to use this particular system because I don't want to tell them oh you have to use this one system from now until the rest of your life that would be bad I wish there would be more people coming to me afterwards oh I want to join FreeBSD and other open source operating system projects but I think I give them enough tools and insights so that they can start this later because they're also studying 5 other classes in parallel and they need to work those as well as my class maybe after you don't know what they're doing in their free time so maybe they have other interests in doing offline open source projects things like that actually if you're looking for the slides you can find them in the uploaded slides already you can just click this one and you can get to my web page and that's where you find all the lectures all the exams not the exams the actual that would be nice students finding this link and it's like oops but here are the actual slide text there's a little ZFS introduction there's Ansible for the students for interested there's a trial exam but yeah if you're interested look at the slides there's also the lab assignments if you want to do them random people lab assignments complete and they want to have them marked up yeah this is the giveaway for people to just look at this I mean most of the content for you will be boring and it's just repetition of the basics but maybe there's something new for you or give this to other people there's no copyright or anything I hate people just hiding their lecture slides behind some learning portal and put a password on it this is open source still this is stuff you should give to people because education is there for educating people not hide it from them anyone else I have maybe longer questions so I'm not sure we can also do it afterwards we are completely out of them or there's a minus between the available time left you said but I just think that the students are asking questions I'm from Technical University in Prague and I'm currently working here for one maybe it's based on national values or something that students barely ask this semester I had one first and I was trying to make students more active to ask why I was asking them questions trying to somehow class dismissed by the way