The Linux/UNIX System Programming workshop

I’ve just returned from a 5 day course Linux/UNIX System Programming given by Michael Kerrisk. Following is the overview of the experience.

It is worth the price The lecturer has an unrivaled knowledge of the domain (man pages maintainer, author of the de facto standard book on the topic) with unchallenged teaching skills. It’s unlikely you’ll get a better value per buck opting for a cheaper option.

It’s pricey I still have to work for a company that will give this big of a learning budget. I financed it myself.

It’s a niche topic You should have worked with Linux for a few years and have some (copy-paste -> modify template code -> build) knowledge in c not to get overwhelmed.

The long version

I have been professionally in Linux for 5+ years. I have a good conceptional overview on how it works and can solve most of the Linux tasks I’m challenged with (some with deep understanding others with trial and error until it starts working :-) ). This course was a rewarding stream of insights and “Eureka” moments.

The topics covered in the course are the foundation for most of the userspace services you daily interact with on Linux. You’ll get an overview of the system calls API but the hidden jewels are the programming patterns that spring out of that API. i.e.:

  • How does a shell implement piping and redirection?
  • How does the login app drop it’s root privileges after forking?

Why did I choose this particular course (and paid for it myself)?

I won’t beat about the bush here, it is an expensive course. And when paying that much for a course you want to know what you’ll get. I am very cautious not to fall in love with a course agenda without knowing the teaching style of the lecturer. It’s to easy to be amazed by the packaging, make an idealized vision of what you’ll learn, only to find out you can’t keep track once the course start.

The great part of this course is there are opportunities to understand what you’ll get before committing. Half a year ago I wasn’t actively for any particular course but have joined a talk Michael has been giving during a conference.

My line of thought when picking it over other lectures was: “If the guy is maintaining the man pages he can probably articulate his ideas clearly”.

And that was very much the case. Michael doesn’t just have a great fundamental understanding of the Linux API but he can teach in a clear and understandable way. Also, a great skill he poses is the ability to interact with the body of people he’s lecturing to, not being dragged into the rabbit hole of incoherent questions while still keeping an inviting space and “there isn’t a stupid question” atmosphere.

It was after the workshop (which was free once you’re a conference attendee) I knew the net knowledge I would gain from a dedicated weekly course was worth the price.

What I wish I knew beforehand?

I wish I prepared a c IDE with autocomplete :)

Given that I don’t use c on a daily basis, I found myself lost in silly syntax errors and looking for the system call attributes manually in the documentation. Had I prepared a bit better in this regard that time could have been spent in grasping more concepts instead of fixing syntax.

Conclusion

In general, I am very satisfied with the course and have learned much and am hoping to attend more of Michael’s courses in the upcoming years.

Written on March 31, 2019