
I build tools and systems that stay boringly reliable.
Seasoned technical lead and solutions architect, building reliable systems at scale and internal tools that improve developer experience.

- 59
- Published notes
- 11
- Deep-dive series
- Since ’19
- Writing in public
- 30K+
- Monthly readers, August 2026
Worth your time
Featured for you
A fresh post, a reader favourite and one useful find from the archive.
Newai
Scaling an Agentic Coding SDK: What Concurrency Actually Costs
Running agent jobs in parallel is not free. Measuring the real memory, process and shared-state costs of concurrency in an agentic coding SDK.
Reader favouritedistributed systems
Introduction to gRPC
What gRPC is, how Protocol Buffers and HTTP/2 fit together, and when it beats REST or WebSockets for service-to-service calls.
Explore nextazure
Multi-stage builds for Ionic Apps with Azure Pipeline Templates
Build and sign Android APKs for an Ionic app with reusable Azure Pipelines YAML templates, secure files, pipeline variables, and AndroidSigning.
Start here
Follow a thread
Guided paths through connected ideas, in the order they make the most sense.
The notebook
Latest writing
.NETWhen IMemoryCache Stops Scaling: Moving to Redis with .NET Aspire
See why IMemoryCache breaks down across multiple app instances, then move shared cache state to Redis and wire it with .NET Aspire.
distributed systemsReplacing Sharp with WASM: How a Hidden SVG Dependency Broke Our Rendering Pipeline
A production-only SVG failure exposed a hidden Sharp dependency, a broken fallback, and why I replaced the rasteriser with resvg WASM.
kubernetesWhen Three Kubernetes Pods Try to Run One Database Migration
Three replicas raced the same Prisma migration. A PostgreSQL advisory lock coordinator fixes it when your platform cannot run a pre-deploy Job.
Updated · originally
aiScaling an Agentic Coding SDK: What Concurrency Actually Costs
Running agent jobs in parallel is not free. Measuring the real memory, process and shared-state costs of concurrency in an agentic coding SDK.
aiBuild a Safe Repository Maintenance Agent with GitHub Copilot and Microsoft Agent Framework in .NET
Giving an AI agent access to a repository takes only a few lines of code. Giving it useful access without silently approving every command is the real…
aiBuild a Safe Repository Maintenance Agent with GitHub Copilot and Microsoft Agent Framework in Python
In the .NET tutorial, we built a repository agent that could inspect a checkout, propose a one-line repair, run its tests, and report the result…
metaWhat I Learned Growing an Engineering Blog from 0 to 463,000 Pageviews
Seven years, 56 posts and 463,000 pageviews. Which articles actually earned the traffic, what the numbers hide, and what I would do differently.
distributed systemsReplacing a Critical Data Path Without a Flag Day
Shadow reads, a normalized comparison and a staged cutover: how to replace a data path in production without a single big-bang release.
distributed systemsWhen "no healthy upstream" isn't about the upstream you think
Learn what Envoy's no healthy upstream error means, why health checks can remove every backend, and how timeouts and retries can trigger it.