
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.

- 57
- Published notes
- 10
- 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
Build 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. Every…
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 nextdistributed systems
Basics of Apache Kafka - An Overview
Topics, partitions, offsets, consumer groups and brokers: the Kafka concepts you need before designing anything on top of it.
Start here
Follow a thread
Guided paths through connected ideas, in the order they make the most sense.
The notebook
Latest writing
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.
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
An Envoy error pointed at the upstream. The real cause was retries turning dependency latency into worker pool exhaustion behind the proxy.
distributed systemsThe Acknowledgment Gap - How Event-Driven Systems Lose Messages Without Errors
Event-driven systems can drop messages while every component reports success. How acknowledgment boundaries hide loss, and where to put them.
aiHow I Built an AI-Assisted Dependency Vulnerability Fixer
Most CVE fixes fail on packaging, not on code. What I learned building an agent that upgrades dependencies and proves the build still works.