On this blog
Posts
A growing collection of notes, ideas, and things I’ve learned along the way.
Testing behavior, not implementation
Tests that describe observable behavior survive refactoring; tests that mirror the implementation quietly make every change more expensive.
Designing reliable event-driven systems
A practical starting point for designing event-driven systems that remain understandable and resilient as they grow.
A practical guide to data pipeline reliability
Design data pipelines around observable guarantees, safe retries, and clear recovery paths.
Evaluating retrieval-augmented generation
A useful RAG evaluation separates retrieval quality from answer quality and tests both against real questions.