Skip to content

Write a Compiler (with David Beazley)#

Every year I tend to take a course somewhere — the topics are quite diverse, ranging from applied math to psychology (it's fun and helps me stay sharp). Normally I choose something in Stanford or MIT but this year I stumbled upon the Write a Compiler course by David Beazley and I couldn't resist. I must say, a week is a long enough period to show you what you are made of ...

It was intense — even though I ended up using Python1 to complete the projects!

The course hours were between 9:30am and 5:30pm US Central Time/Chicago, while I was taking it from France (so, between 4:30pm and 12:30am local time for me). As I suspected what would happen, I kicked my kids out for a week (there are many advantages of being divorced). I guess a "bachelor coding week" is a good description of what happened — it took me 16 hours of coding a day to keep up with the pace (and I am veeery comfortable with Python, tree recursion etc.)! Coming to think of it, I might have forgotten to take a shower during the course.

A typical day#

I start coding around 7am (local time in France), a quick lunch, continue coding until 3pm, take a nap for an hour or so, then join Zoom and of we go, super engaging discussions (geeky comments and ideas). Around 8pm there is a break and I have dinner (I take my time to prepare something nice). We continue working and around 10pm I start losing steam. I mostly listen to the discussion and go to sleep. The next day I catch-up in the morning (when I am fresh) ...

The end result#

I was able to have a working compiler for the Wab language by the end of day four and started working on Wabbi. Now I plan to repeat the process using Rust and then look into Wabbit and types.

This was such a treat! The course was organized flawlessly (I must admit that I have stolen some ideas for my courses). I really enjoyed the challenge and learned many things. Having independent educators like this is a gift.

Thanks Dave!


  1. Initially, I was considering using Rust or Racket.