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.

documentationengineeringbest-practicesproductivity

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.

documentationaiclaudeengineeringproductivity

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.

architecturefastapipythonbackend

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.

fastapisqlalchemypythonbackenddatabase

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.

apisecuritydatabasebackend

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.

backenddatabasepythonconcurrency