Blog

Implementing simple cooperative threads in C

24 May 2020

Multitasking, like many services an operating system provides, is something we take for granted so much that it can feel mundane. With our powerful smartphones and computers, the idea of a computer not being able to juggle hundreds of processes feels alien. I think it’s features like this that make computers incredibly useful, but also make them feel so complicated and magical.

Read more

Embracing modularity with Meson

08 May 2020

Almost seven years ago, I made the first commit to my very first C library. It was a personal C library – so personal that I gave it the name “libstephen”, ensuring that nobody else would ever even consider using it. And to be fair, nobody should have used it! This was a data structures library written by a kid with a few weeks of C experience and a bunch of basic Java coursework under his belt. Without getting into specifics, the code was pretty bad.

Read more

Implementing a virtio-blk driver in my own operating system

22 March 2020

In this blog post, I’m going to describe how I wrote my first block device driver in my operating system, SOS. This OS is my personal project for exploring how to implement an operating system. You can find more inforation about it in my first post about SOS, or check it out on Github.

Read more

Build your own OS: Pre-emptive Multitasking

08 February 2020

One of my recent long-running projects has been building my own operating system. It’s called SOS, for Stephen’s OS (real creative, I know). And beyond all odds, this project has progressed really well! Recently, SOS got the ability to do pre-emptive multitasking — and it only took me 116 commits and 1.5 years of on-and-off effort to get there! Throughout that time, I haven’t really posted about SOS because it felt too complicated to write about. But I don’t want to let that prevent me from trying, so going forward, I’m going to try to post about different features and achievements with SOS. To start, this post will describe how I got pre-emptive multitasking working.

Read more

Network Booting Raspberry Pi 4B with Upstream Kernel

04 December 2019

This is a guide and personal documentation for how I got my Raspberry Pi 4B booted with an upstream Linux kernel. I use this setup for quickly booting custom kernels as I do development. As a result, I had the following goals:

Read more

Site Update

17 February 2019

Today I made a few changes to my site’s design which hopefully makes things a bit more user-friendly for anyone using this site.

Read more

Creating an Alien Themed Linux Greeting Card

14 June 2017

My (former) roommate is a big fan of the Alien series, especially the classic first movie, and the really awesome video game, Alien: Isolation (I guess you could say I’m a fan too!). As a goodbye gift, I thought I’d create a really odd e-card: a bootable Linux flash drive with the same boot splash as computers from the movie, sound effects from the movie and game, and programs that look like the ones in the game. Everything turned out much better than I hoped, and so I thought I’d share the method and the result in a blog post!

Read more

Public Mistakes are Cool

24 April 2017

Confession time: I’m vain. While I write a blog because I like to write and share things, I’d be lying if I said that I didn’t enjoy the occasional publicity resulting from a successful post on Hacker News or Reddit. I get to open up a Google Analytics tab and watch visitors enter my site. How cool is that?

Read more

Linked Lists are Still Hard

21 April 2017

Kernel development offers a set of challenges that are very different than the ones you would encounter in other types of programming. When you’re new to kernel dev, you hear from lots of sources that you’re gonna have a hard time. But for me, after some initial culture shock, I didn’t feel that uncomfortable. It still felt like user-space C programming. But a few days ago, I finally encountered that bug that made me realize, we’re not in Kansas anymore, Toto.

Read more

Wireshark Tricks

12 April 2017

This is mostly for my own reference, but maybe others will find it interesting as well.

Read more
Previous Next
LegalRSS

Creative Commons License

Stephen Brennan's Blog is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License