Nodes, threads, locks and links
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.
Paged space objects
Antecedents for this essay:
- Reference counting, and the garbage collection of equal sized objects;
- Vector space, Pages, Mark-but-don't-sweep, and the world's slowest ever rapid prototype.

Don't know, don't care

(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.)
Vector space, Pages, Mark-but-don't-sweep, and the world's slowest ever rapid prototype

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?
Letter concerning the war in Iran
This is a letter to my [Tory] MP, John Cooper, urging him to protest about British engagement in Trump and Netanyahu's attack on Iran. It is, obviously, framed to persuade a Conservative. It's not necessarily what I'd say to someone who was not Conservative.
