When I was young, my dad encouraged me to learn to #program. He sat me down with various computers, which had BASIC (Sinclair Research BASIC in the ZX Spectrum is quite an experience to program - its symbols are tokenised so each single keystroke can type an entire command, with a bunch of modifier keys) or maybe some ancient versions of Turbo Pascal on an IBM XT.

While trying to make platform games, point and click adventure games, text adventure games, simple windowing systems and trying to get some sounds out of Soundblaster-compatible cards on my old 286, I was always interested in the idea of the development of an actual OS. My dad had told me about how #DOS was a layer between the hardware and the software, and had shown me Sun Sparcstations running X-Windows at his work, as well as Windows 3.1, so I was aware of the existence of all these different systems, even though I couldn't get to use many of them.

In addition to this, my dad worked as an electronics engineer for some time, so I was also exposed to 8-bit #microcontrollers, random hardware and a general interest in electronics. This made things like low level drivers even more interesting, so it's no surprise that I'd spend time thinking about what my own OS might look like, sketching random little windows and things. Of course, 12 year old me didn't really appreciate the complexity in a modern OS!

Saying that, hobby OS development has become a popular pastime amongst software engineers – the existence of websites like osdev.org/r/osdev, the educational xv6 and the many OS projects on Github show that it's something plenty of people are interested in.

So, as the years have gone by, I've still had the notion, but didn't really do much. The more I learned about OS development and software in general, the more I knew was required, whilst still not really getting started. I had particular concerns about things like virtual memory, where you need to be able to manipulate your page tables from within the linear world of memory as defined by your page tables, which is just mind bending when you're first starting out. After a while of thinking about it though, I found things started to fall into place, and if you take it one step at a time, things start to work.

For my OS, I have some ideas I want to play with:

I have other ideas, but those are the “big” ones for now!