Here I write about what I want to think through — as a developer, and sometimes about other things. I post what I find useful for building software, and whatever else seems worth keeping. So far most of it is about architecture: boundaries, contracts, and the habits that keep code legible.

  1. Boundaries before abstractions

    Why I draw the lines between modules first and let the abstractions arrive later, with the diagram I use to argue for it.

  2. Idempotency is a contract, not a flag

    What I ask a service to promise before I call it twice, and the small table I keep to make the promise hold.

  3. Notes on reading legacy code

    A short routine for the first two hours with an unfamiliar codebase.