Development of a Developer

14 March 2017

I was a curious child. I spent hours on the family computer, exploring every menu in Windows 95, and later XP. My exploration sometimes ended badly, like the time when I changed our computer’s language to Portuguese, or the time I set the foreground and background colors of the menus to lime green[^1]. Exploring and learning about computers has never failed to put that elated, soaring feeling in my chest.

Read more

How to Get the Network Namespace Associated With a Socket

08 March 2017

For the past week I’ve been struggling with a very particular issue in the Linux kernel. I seriously doubt that anyone else will have this issue, but if they do, perhaps a bit of luck and SEO will bring them to this page.

Read more

Kernel Development Made Easier

08 March 2017

A little while ago I wrote a post about creating a Linux system call. In it, I explained how to create a virtual machine, get the Linux source, modify it, build it, and boot your custom kernel. This is a totally valid way to do kernel development, but it can be a bit inconvenient. For one, the code was stored within the VM, so all editing and compiling was done in a VM too. For another, there was a pretty complex process to build an “initrd” in order for Arch Linux to boot properly. And finally, the kernel configuration we used was pretty massive, resulting in longer build times for extra features and device support to be compiled into the kernel.

Read more

Introducing CWRU Love

19 February 2017

On Valentine’s Day, Yelp announced that they had open-sourced Yelp Love. What is it? In their own words:

Read more

Revisiting the BART Algorithm

11 December 2016

Over the summer I wrote about my hackathon project, an app that virtually swaps BART tickets in order to reduce fares. This was a purely academic exercise, to apply some concepts I had learned from my “Advanced Algorithms” course to a problem in the real world. I described how you could model this problem as an (integer) linear program, and I guessed that the problem is, in fact, totally unimodular. However I offered no proof of this, and due to hackathon time constraints I was forced to use a slow, somewhat half-baked greedy algorithm to solve the problem.

Read more

Tutorial - Write a System Call

14 November 2016

A while back, I wrote about writing a shell in C, a task which lets you peek under the covers of a tool you use daily. Underneath even a simple shell are many operating system calls, like read, fork, exec, wait, write, and chdir (to name a few). Now, it’s time to continue this journey down another level, and learn just how these system calls are implemented in Linux.

Read more

Kernel Segfaults for Fun (but no profit)

03 November 2016

In “episode 2” of my kernel development series, I’m going to talk about how I put Python into an uninterruptible sleep. This spooky story involves a rogue kernel module, segmentation faults, and reference counting (a topic already well established to be spooky). And only a few days late for Halloween!

Read more

Stephen Tries Kernel Development: Episode I

13 October 2016

For the past few weeks I’ve been dipping my toes into Linux kernel development, as part of the work I’m doing for my master’s thesis. Like most things that stir up my nerdy interests, it’s leaked onto Twitter quite a bit…

Read more

Hello, HTTPS!

27 September 2016

An exciting announcement! Starting a few days ago, when you visit my website, you should see a green padlock next to the URL bar.

Read more

Fare Hacking on BART

23 July 2016

Imagine that you’re taking a long train ride on the BART. Maybe from Millbrae to North Concord. Chances are, at the very same moment, somebody else is going the other direction. For example, maybe from Pittsburgh/Bay Point to San Bruno. In case you haven’t memorized BART’s stops, here’s a useful map illustrating these rides:

Read more
Previous Next

Creative Commons License

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