In Part 1: Fire and Don't Quite Forget, we explored the theory behind ephemeral execution - bounded, private, debuggable async workflows that remember just enough to be useful and then evaporate.
This...
Friday, 12 December 2025 14:00
//
13 minute read
Most async systems either remember too much (logs, queues, persisted junk you never wanted)… or they remember nothing at all (fire-and-forget black holes that vanish the moment something goes...
Friday, 12 December 2025 12:00
//
15 minute read
Most systems degrade when overloaded. Memory fills up, queries slow down, users complain, servers crash.
A few unusual ones get better.
This article shows how an LRU-based behavioural memory becomes...
Tuesday, 09 December 2025 12:00
//
19 minute read
Most software architectures assume the system is static. DiSE assumes the system is alive.
Note: This is Part 4 in the "Cooking with DiSE" series. See Part 1, Part 2: Graduated Apprenticeships, and...
Monday, 08 December 2025 12:00
//
15 minute read
Scrapers are about to start using AI to mimic real users - so I built a bot detector that learns, adapts, and fights back.
Read Part 2: How Bots Got Smarter - The New Frontier in Bot Detection
👉 See...
Monday, 08 December 2025 07:00
//
17 minute read
By someone who can't stop analysing patterns, even their own.
As the category says, this is a far more personal essay than my usual work. I don't mind if you skip it...but if it resonates leave a...
Sunday, 07 December 2025 12:00
//
10 minute read
PostgreSQL's ltree extension gives you materialised paths with database-native superpowers: GiST indexes, specialised operators like @> and <@, and powerful pattern matching. If you're committed to...
Saturday, 06 December 2025 09:50
//
15 minute read
Nested sets encode the entire tree structure into just two integers per node - Left and Right boundaries from a depth-first walk. Finding all descendants becomes a simple range query, and ORDER BY...
Saturday, 06 December 2025 09:40
//
16 minute read
Materialised paths store the complete ancestry as a delimited string - like /1/3/7/ - making ancestors instantly readable without any joins. Perfect for breadcrumb generation and human-readable...
Saturday, 06 December 2025 09:30
//
14 minute read
Closure tables precompute and store every ancestor-descendant relationship, trading storage space for blazing-fast reads. This is the approach this blog uses for its comment system - when reads vastly...
Saturday, 06 December 2025 09:20
//
16 minute read