The last time I used Windows at all was right after the initial release of Windows 10 in July 2015. At that point, I had already been using Linux for a while on a separate computer (to avoid dual-boot issues). As I got more and more comfortable with Linux, I found myself using Windows very little. Not long after upgrading to Windows 10 on the Windows machine, I decided that I would start using Linux exclusively. Just recently, I spent a week trying out Windows again to see if it had actually gotten any better.
I have a penchant for trying to build practical things in obscure programming languages. Scheme isn't that obscure, but it's used pretty infrequently for "real work" (unfortunately). I'm quite a fan of it, so I decided to give it a shot for writing a web app, something that I do pretty often. Since there's so many implementations, I tried a few. I also took a holistic approach to the entire system and reevaluated my choice of text editor for the task.
While my previous Jekyll-based website wasn't horribly complex, maintaining it was still a chore. Like most software written in a scripting language, Jekyll has a lot of run-time dependencies that must be installed for it to function. Given that I switch between a few different computers running different operating systems, making sure that all my Gems were up-to-date was annoying. Since I'm not getting paid to make my own website, I figured that I might as well migrate it to a simpler static site generator.
The fact that C is the dominant programming language for everything low-level is an interesting historical oddity. Even though there were far better languages around when C was created (and now, of course), C still somehow ended up being what everything was written in. For that reason, having a good understanding of some of C's intricacies is important to be able to do security research or just maintain software written in C. There are far more complete resources on this topic, like the original C FAQ; the purpose of this post is to address specific things I would have liked to have known when I was starting out with C.