Blogs / Personal blogs

One of the reasons I write is to help me organize my own mind. I have a compulsive need to figure things out and I’ll lay awake at night shuffling sentences around in my head until it hangs together. Then I just have to try to get it all down in Markdown before it dissolves back into chaos.

Popular posts
18
Total points
4,545
HN comments
2,400
Rank
#262 personal

Visit journal.stuffwithstuff.com → RSS feedOn Hacker News Jul 2013 – May 2025

Software Engineering 15Programming Languages 8Life, Learning & Writing 4Games & Graphics 3Tools & Productivity 1Tech Industry & Business 1

3

What Color Is Your Function?

I don’t know about you, but nothing gets me going in the morning quite like a good old fashioned programming language rant. It stirs the blood to see someone skewer one of those “blub” languages the plebians use, muddling through their day with it between furtive visits to StackOverflow.

6

Crafting Interpreters: 640 Pages in 15 Months

My book Crafting Interpreters on programming languages is done. OK, OK. I know I said it was done like fifteen months ago . But now it’s really done. And by that I mean, the print, e-book and PDF versions are done. You can buy it . You can hold it in your hands. And I do mean “hands” plural. Because this little…

7

Dropping Loot

I got started hacking on my own roguelike after spending several years avidly playing Angband . Like most projects, I had a few itches I wanted to scratch and it kind of took on a life of its own. One thing that annoyed me about Angband was how monsters dropped loot when they died.

10

JavaScript Isn't Scheme

It seems like I can’t spend five minutes on reddit these days without someone playing the JS-is-Scheme is card . I see everything from the innocuous, “JavaScript has a lot in common with Scheme”, all the way up to, “JavaScript is basically Scheme.” This is basically crazy. Or, at least it has a lot in common with…

11

Consider Knitting

Let’s say that, like me, you are a person who stares at a computer and writes code for a living. As a straight male who grew up in a time where knitting was very strongly female coded, it for the most part never occurred to me that knitting was a thing I could do and might enjoy. Regardless of your demographic…

12

How My Book Launch Went

Greetings, superfans! When we last tuned in , I was just about to “launch” my self-published book . I put that in quotes because it’s an awfully serious-sounding word for what was really just doing some clicking on my laptop. If my last post was the climax of my book writing adventure, consider this the denouement…

13

Pratt Parsers: Expression Parsing Made Easy (2011)

Every now and then, I stumble onto some algorithm or idea that’s so clever and such a perfect solution to a problem that I feel like I got smarter or gained a new superpower just by learning it. Heaps were one, just about the only thing I got out of my truncated CS education. I recently stumbled onto another: Pratt or…

14

Long Names are Long

One smart thing Google does is rigorous code reviews. Every change, before you can land it, gets reviewed in at least two ways. First, someone on the team does a normal review to make sure the code does what it’s supposed to.

15

Does Go Have Subtyping?

I’ve been noodling on a static type system for my current hobby language. To try to keep the language as simple as possible, I’m trying to see if I can live without subtyping. Since most of my programming experience is in object-oriented languages, I’ve been learning more about languages that lack—or at least claim to…

16

The Hardest Program I've Ever Written (2015)

The hardest program I’ve ever written, once you strip out the whitespace, is 3,835 lines long. That handful of code took me almost a year to write. Granted, that doesn’t take into account the code that didn’t make it. The commit history shows that I deleted 20,704 lines of code over that time. Every surviving line has…

18

Bootstrapping a Type System (2010)

Magpie has reached a strange but neat little milestone on the road from “weird experiment” to “real language”: the type system is now bootstrapped. I’m not aware of any other languages where a statement like that is even meaningful (maybe Typed Scheme ?), much less true , so I’ll try to break that down.