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
The adjacency list is the simplest and most intuitive approach to storing hierarchical data - each row just points to its parent. It's what most developers reach for first, and for shallow trees with...
Saturday, 06 December 2025 09:10
//
11 minute read
Hierarchical data is everywhere in software development: threaded comments, organisational charts, file systems, product categories, and forum discussions. The eternal question of "how do I store a...
Saturday, 06 December 2025 09:00
//
8 minute read
Here's an uncomfortable truth that nobody in the AI hype machine wants to discuss: We still don't know what intelligence actually is.
Not in humans. Not in animals. And certainly not in machines.
This...
Friday, 05 December 2025 14:30
//
21 minute read
The core principle: make releases fast and painless, and you'll release more often. This is critical for agile development - rapid, reliable deployments create the fast feedback loop you need. When...
Thursday, 04 December 2025 12:00
//
6 minute read
Welcome to Part 2 of our comprehensive guide to data access in .NET! In Part 1, we explored Entity Framework Core in depth, including SQL generation, common pitfalls, and that critical warning about...
Wednesday, 03 December 2025 15:00
//
20 minute read
When building .NET applications, one of the most important architectural decisions you'll make is how to handle data access and object mapping. The .NET ecosystem offers a rich variety of approaches,...
Wednesday, 03 December 2025 14:00
//
21 minute read
Ok quick piece here. You've read all about semantic search, in MANY articles here. But you may have noticed; THIS SITE AIN'T ACTUALLY USING IT YET. So where is it?
Simple the way I deploy this site...
Wednesday, 03 December 2025 12:30
//
Less than a minute
Now that you understand the fundamentals of k6 and performance testing, it's time to put that knowledge into practice. This article walks you through writing real tests, integrating them into CI/CD...
Tuesday, 02 December 2025 15:00
//
37 minute read
Your application works perfectly on your laptop. Unit tests pass. Integration tests pass. You deploy to production, and suddenly everything grinds to a halt. Five hundred real users hit your homepage...
Tuesday, 02 December 2025 14:00
//
13 minute read
If you've been following this blog, you might have noticed that my main blogging platform is... let's call it "enthusiastically engineered." PostgreSQL AND vector databases, semantic AND full-text...
Monday, 01 December 2025 12:00
//
10 minute read
From 89 articles to 487 (including >80 totally new ones)!
Well November is almost over so I thought I'd add some highlights and information about what we've done this month.
AI & LLM Deep Dive
The...
Sunday, 30 November 2025 12:00
//
7 minute read