A personal engineering blog
Notes from building
software and systems.
I write about the things I’m learning and building across software engineering, distributed systems, data, and AI. Practical ideas, honest trade-offs, and the occasional lesson learned the hard way.
A little about this blogRecent writing
Latest notes
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.
Follow a thread
Browse by topic
Software engineering
Patterns for thoughtful, maintainable software.
↗ 02 / CONNECTDistributed systems
How services communicate, scale, and recover.
↗ 03 / ORGANIZEData engineering
Reliable pipelines and useful data platforms.
↗ 04 / EXPLOREAI engineering
Practical notes on building with AI systems.
↗