A tiny primitive that turns concurrent work into a coordinated, adaptive system. "The Ephemeral Signals Pattern" In Part 1 we built ephemeral execution - bounded, private, self-cleaning async workflows. In Part 2 we turned that into a reusable library with…
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 article turns that pattern into a reusable library you can…
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 wrong). This article introduces something different: A pattern where…
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 self-optimising when it hits capacity - and how this pattern…
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 Part 3: Untrustworthy Gods for background. This article is the…
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 It Live: StyloBot.net - This is the real production system…
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 comment! I read them all (and it needn't be public). <!-- [TOC]…
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 PostgreSQL and want the best hierarchy query performance,…
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 Left gives you perfect display order. The catch? Every insert…
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 debugging, though moving subtrees means updating every…