Hi there 👋

Notes on the messy business of building software, with the occasional opinion thrown in.
Getting Started with Azure Event Grid Simulator

Getting Started with Azure Event Grid Simulator

A walkthrough of AzureEventGridSimulator - install it, configure topics and subscribers, publish events to a locally running Azure Function, and explore filtering, retry, dead-lettering, and the built-in dashboard. No Azure subscription required.

April 4, 2026 · 8 min · 1625 words · Paul McIlreavy
Azure Log Retention Gotchas

Azure Log Retention Gotchas

Compliance says keep your logs for six years. Azure says sure, just navigate this maze of export limitations, append blob quirks, and lifecycle management gaps. Here’s what you’ll actually run into.

March 31, 2026 · 11 min · 2168 words · Paul McIlreavy
The Chainsaw and the Axe

The Chainsaw and the Axe

Most development teams right now have two types of developer: the ones polishing the axe and the ones ripping through forests with a chainsaw. The person paying for the tree to come down doesn’t care which tool you use.

March 27, 2026 · 13 min · 2640 words · Paul McIlreavy
SQL Server Integration Testing with Testcontainers

Part III: SQL Server Integration Testing with Testcontainers

Take your containerised SQL Server setup to the next level by using Testcontainers for .NET to write robust integration tests. Spin up real SQL Server instances on-demand, run your tests, and tear them down automatically.

January 7, 2026 · 16 min · 3351 words · Paul McIlreavy
Architecture Decision Records That People Actually Write and Read

Architecture Decision Records That People Actually Write and Read

Most teams either skip documenting architecture decisions entirely or create heavyweight documents everyone ignores. ADRs fix this - but only when they’re lightweight enough to write during the decision, structured enough to answer ‘why did we do that?’ six months later, and stored where people actually look. Here’s a practical approach with a template that sticks.

December 23, 2025 · 10 min · 1948 words · Paul McIlreavy