*If you want to try it, download this, unzip it, and run either renpy.exe or renpy-32.exe. Once in the app, click "Heartwood.app," then "Launch Project."
All the images are screenshots from the game. I'd put images of security work, too, but terminals, Chrome dev tools, gdb, Wireshark, etc. just aren't as pretty. They were fun, though, and the feeling of getting a root shell after hours of trying to exploit a buffer overflow is unmatched :')
Left: my breadboard while working on the clock application. Right: some spirographs the amazing Lauren Saue-Fletcher made using the graphics and interrupts libraries.
We started from below C level, learning assembly code and hardware basics and implementing a Larson Scanner with it. I then tackled a clock, a string formatting library, backtrace, and malloc. Next I added a PS/2 keyboard to the hardware and coded a shell, a graphics library and console, and a system monitor with interrupts. Along the way, I also got to practice Git, gdb debugging, and using Makefiles. Started from the bit, now we're here.