Kernel Puppeteer

Motivation

In my 4A semester I took an Operating Systems (CS 350) course, which uses OS 161. However, it was really awkward to edit and compile, so I developed a tool to improve the developer experience. As I was completing the assignments, I also decided to add tests to Kernel Puppeteer, and it ended up paying off as I got 100% on every assignment.

KpptrScreenshot

Why Build It?

At the very start of the semester, someone on Piazza had shared a simple Bash script for running OS 161, which I used at first. However, soon I started running into limitations (such as wanting to run a debugger as well), and figured that the complexity of what I would eventually need would be annoying to do entirely in Bash, so I opted to rewrite the tool from the other student in Python.

This turned out to be a great decision, because it allowed for easily adding tests later on (though it could still be cleaned up quite a bit).

Current Thoughts & Learnings

I think Kernel Puppeteer is a lovely little tool, and I had a lot of fun making it. One thing that was unique about developing it was that I knew everyone would be running it on the school computers, and had a very specific folder layout. This made it easy to set convenient defaults, and make some simplifying assumptions.

Additionally, this is the first project I've rolled out update support for - it simply uses Git as a backend to check if there are any newer commits on master and pulls them. I think a lot of people appreciated this feature as I got a handful of questions about it.

I also really enjoyed that people were using Kernel Puppeteer, and found it really motivating to work on it. I think it contributed to me finishing my assignments early, so that I would be able to write the tests and share it with everyone with enough time that people wouldn't just be getting the tests on the last day the assignment was due.