Blog
Notes on software engineering, architecture, and how systems get built.
April 7, 20267 min read
Why Documentation Templates Are Worth Building
Ad-hoc documentation fails teams silently. Here's a structure that fixes it: template design, writing standards, and what to include.
April 7, 20268 min read
Using Claude to Write and Maintain Technical Documentation
How to use Claude as a documentation assistant: what to provide, what to expect, and how to keep docs accurate over time.
March 18, 20264 min read
The MSCR Pattern: Structuring Every FastAPI Backend
Fat route handlers are a trap. Here's the four-layer architecture that keeps backends testable, maintainable, and sane.
March 17, 20264 min read
Transaction Control: Why Only Services Should Commit
SQLAlchemy makes it easy to commit from anywhere, which is exactly why you shouldn't. Here's why services own the transaction boundary and repositories only flush.
March 16, 20263 min read
The Dual-ID Pattern: Stop Exposing Integer Primary Keys in Your API
Returning database IDs like 1, 2, 3 in your API is a quiet security mistake. Here's a two-field fix that keeps your internals private.
March 15, 20263 min read
Race Conditions in APIs: Why 'Check If Exists' Isn't Enough
The naive duplicate check breaks under concurrent load. The check-then-catch pattern uses both application logic and database constraints as a safety net.