Journal
Journal
Decision logs, behind the scenes, and "why I did it this way" pieces.
Your Architecture Decisions Rot Because Nothing Runs Them
An architecture decision written in a wiki is a wish. The boundaries you can't enforce are the ones that quietly erode — until the diagram stops matching the code. Make the rule executable
AI Didn't Remove the Bottleneck — It Moved It
Cheap code production doesn't raise throughput if review, integration, and verification can't keep up. The bottleneck just moves downstream — and that's where the work now is
Flaky Tests: Retrying Isn't a Fix
AI made writing tests nearly free and flaky suites exploded. Why retry and quarantine are a treadmill, and what catches flakiness deterministically
Schema Evolution: Changing a Contract Without Breaking It
A message's data shape is a contract across services you can't change atomically. The rule: additive is safe, a breaking change needs a new identity — and consumers upgrade first
Can You Ship Vibe-Coded Software to Production?
Vibe coding lowers the cost of a first version, not the cost of being wrong. That bill arrives in production, not at build time — and it depends on whose hands shipped it.
Layered Architecture or Clean Architecture?
Why the classic layered structure is enough for most projects while we drown in abstraction layers, and when Clean Architecture actually pays off.
The Production Cost of "Just-in-Case" Code
Applying YAGNI in practice: the price of adding flexibility you don't need today, repaid daily in maintenance, readability, and bug surface
When I Move to Microservices
The measured signals that justify moving from a monolith to a distributed architecture — and the common false reasons that say it's still too early
Gitflow or GitHub Flow? How I Choose
Practical criteria for picking a branching strategy by product model, version count, and deploy rhythm — and how each model breaks in the wrong place.
When I Switch to Trunk-Based Development
Why release branches break for high-frequency deploy teams and how much of trunk-based is really discipline — the thresholds I cross and the ones I don't
Why I Start Projects With a Modular Monolith
The case for drawing clean module boundaries inside a single deployable app before jumping to microservices — and when I stop doing it.
Why I Prefer Boring Architecture
The pragmatic case for choosing proven tools over chasing new technology. This is not cowardice, it is a budget decision.
My AI-Assisted Engineering Workflow
The seven rules I follow to use Claude Code and similar agents on production code with confidence — not a skeptic, a discipline manifesto