In some of the communities I hang around in1, there’s a fondness for the kind of industrial research that happened at places like PARC and Bell Labs. Things like Smalltalk, Mesa/Cedar, and Plan 9 not only introduced new ideas but demonstrated them in practical, working systems. If you want to actually do research like this, how should you go...
During my CS undergrad at Carleton University, I had the opportunity to do a bunch of internships.1 Looking back, I can’t help but think how lucky I was! I got to work on some great teams, learned a ton, and had a lot of fun. Corel My first real internship was on the Linux team at Corel in the summer of 2000. I was super excited about this, for a...
For the last 13 years, I’ve done the same thing almost every Monday night. At 9pm, I head out to a small sports club on the outskirts of Munich to play 5-a-side soccer. Many players have left, and new people have joined, but there’s a core group of us who’ve stayed the same. When you’ve been doing the same thing, with the same guys, for more than...
Like many programmers, I’ve always enjoyed learning new things. But over the past year, I’ve started taking learning seriously in a way that I never did before — at least outside of a formal academic setting. Earlier in my career, learning was basically a given: almost any interesting project I could take on would involve diving into things I was...
In response to a question on Twitter1, Richard Hipp wrote about why SQLite uses a bytecode VM for executing SQL statements. Most people probably associate bytecode VMs with general-purpose programming languages, like JavaScript or Python. But sometimes they appear in surprising places! Here are a few that I know about. eBPF Did you know that...
Late last year, I read a few blog posts that said something like “everyone knows that bytecode interpreters are faster than tree-walking interpreters”. And then I saw the paper AST vs. Bytecode: Interpreters in the Age of Meta-Compilation” when Stefan Marr shared a draft on Twitter. I realized that although I’d written a number of tree-walking...
I’ve got three young kids. If you were to spend a day in my house, one thing you’d notice is that there are a lot of alarms going off. Time to leave for school. Time to brush teeth. Time to finish the bedtime story and get into bed. Maybe it sounds stressful — but for us it’s the opposite. Making liberal use of alarms and timers makes our daily...
Last Monday, I found myself standing in front of eight kids, trying to explain what a y-coordinate is. “Um, it’s kinda like a street address…?” How did I end up there? Well, my kids go to a Montessori school, and one of the traditions at the school is afternoon projects run by parents. These cover all kinds of different subjects: yoga, gardening,...
It’s 2004 and I’m sitting in one of the largest lecture halls at my university. I’m a computer science major but I’m taking a course on natural history — plants and animals — as one of my electives. The professor tells us that he’s brought something from home, something he found in his freezer. He reaches down behind his desk, and then holds his...
Self is a prototype-based dynamic object-oriented programming language, environment, and virtual machine centered around the principles of simplicity, uniformity, concreteness, and liveness. — selflanguage.org I’ve been reading a bunch of old papers from the Self project. It’s pretty incredible how many things they invented that are absolutely...
In the fall of 2003, I started an eight-month internship at IBM Ottawa that would later turn into my first full-time job as a software developer. I had joined the J9 Java VM team to work on a new, multicore garbage collector. I knew next to nothing about GC, but was happy to jump into the deep end. On this kind of software, the feedback cycles...