The Fool on the Hill

The Fool on the Hill

Towards a Compiler

By Simon Brooke || 3 April 2026

Towards a Compiler

Abdulaziz Ghuloum's paper An Incremental Approach to Compiler Construction starts with the observation:

Compilers are perceived to be magical artifacts, carefully crafted by the wizards, and unfathomable by the mere mortals. Books on compilers are better described as wizard-talk: written by and for a clique of all-knowing practitioners. Real-life compilers are too complex to serve as an educational tool. And the gap between real-life compilers and the educational toy compilers is too wide. The novice compiler writer stands puzzled facing an impenetrable barrier, “better write an interpreter instead.”

Continue reading →


Nodes, threads, locks and links

By Simon Brooke || 28 March 2026

The problem

Up to now, I've been building a single threaded Lisp. I haven't had to worry about who is mutating memory while I'm trying to read it. The idea that this is a mostly immutable Lisp has encouraged me to be blasé about this. But actually, it isn't entirely immutable, and that matters.

Whenever any new datum is created, the freelist pointers have to mutate; whenever any new value is written to any namespace, the namespace has to mutate. The freelist pointers also mutate when objects are allocated and when objects are freed.

Continue reading →


Paged space objects

By Simon Brooke || 23 March 2026

Antecedents for this essay:

  1. Reference counting, and the garbage collection of equal sized objects;
  2. Vector space, Pages, Mark-but-don't-sweep, and the world's slowest ever rapid prototype.

A Sierpiński Carpet

Continue reading →


Don't know, don't care

By Simon Brooke || 20 March 2026

The famous XKCD cartoon showing all modern digital infrastructure depending on a single person's spare-time project

(It turns out that I'm so defensive about my 'don't know, don't care' design principle that I've written defending it twice. The previous essay with this title is here.)


Continue reading →


Vector space, Pages, Mark-but-don't-sweep, and the world's slowest ever rapid prototype

By Simon Brooke || 13 March 2026

Trinity College library, Dublin

I started work on the Post-scarcity Software Environment on the second of January, 2017; which is to say, more than nine years ago. It was never intended to be a rapid prototype; it was intended, largely, to be a giant thought experiment. But now enough of it does work that I can see fundamental design mistakes, and I'm thinking about whether it's time to treat it as a rapid prototype: to take what has been learned from this code, and instead of trying to fix those mistakes, to start again from scratch.

So what are the mistakes?

Continue reading →


About Cookies

This site does not track you; it puts no cookies on your browser. Consequently you don't have to click through any annoying click-throughs, and your privacy rights are not affected.

Wouldn't it be nice if more sites were like this?