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
When testing code that uses HttpClient, the traditional approach involves mocking HttpMessageHandler using frameworks like Moq. While this works, it can be verbose, ceremony-heavy, and frankly a bit...
Saturday, 29 November 2025 07:00
//
5 minute read
If you've built traditional ASP.NET Core MVC applications, you know the problem: that dreaded "click flash" when users navigate between pages. Full page reloads, the browser chrome flickering, content...
Friday, 28 November 2025 12:00
//
17 minute read
Playwright is Microsoft's official solution for modern browser automation, offering multi-browser support (Chrome, Firefox, Safari) with a single API, built-in trace debugging, and mobile emulation....
Thursday, 27 November 2025 14:00
//
18 minute read
Modern E2E (End-To-End, using your site like users would) testing doesn't have to be painful. This comprehensive guide shows you how to use PuppeteerSharp for fast, reliable browser automation in...
Thursday, 27 November 2025 12:00
//
38 minute read
Theory is one thing; production code is another. In Part 1 we covered the abstractions—now let's see how they're applied in a real codebase. This article walks through actual background services from...
Thursday, 27 November 2025 09:30
//
24 minute read
Every modern web application has work that shouldn't block an HTTP request—sending emails, processing files, syncing with external services, running scheduled maintenance. ASP.NET Core provides...
Thursday, 27 November 2025 09:00
//
24 minute read
Need to test a snippet of C# code without spinning up a full project? C# Script files (.csx) let you write and run C# code like a scripting language. No Program.cs, no .csproj, no build step - just...
Wednesday, 26 November 2025 20:00
//
28 minute read