The Fool on the Hill

The Fool on the Hill

Post Scarcity state of play, April 2026

By Simon Brooke || 20 April 2026

I write up the state of play of the Post Scarcity Software Environment in a developer's log on a fairly regular basis; but it only gets published (here) when I publish a new release, which is to say, rarely.

I assume that no one else at all is interested in the project, that it is simply my lone obsession; but, my blog is also mostly my lone obsession, and, on the off-chance that someone out there is sufficiently mad to be following along, I thought I would publish soft-of-monthly updates on my blog. The discipline of doing so may help me stay focused on the project, too.

So here's the first such.

Continue reading →


Reducing the number of colours on a website

By Simon Brooke || 19 April 2026

It seems I don't write technical notes about the web much these days.

I'm working with a popular documentation generator which will remain nameless to prevent embarrassing its maintainers. Its standard stylesheet uses one hundred and ten different colour specifications. I wanted to produce 'dark theme' and 'light theme' stylesheet variants, so that I can have my documentation sensitive to the user's preferences in exactly the same way this blog is.

How do you even start to retheme a stylesheet with one hundred and ten different colour specifications? Let me show the ways.

Continue reading →


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 →


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?