Posts
One Responsibility per Layer, and the Discipline It Takes
Each layer should own one job you can state plainly; blur it and debugging becomes guesswork. On over-abstraction, under-abstraction, and when not to abstract.
Error Messages Are Written for the Next Person
A useful error message says what happened, where the boundary was, and where to look next. Write it for whoever gets paged at 2:30 in the morning.
net/http and the Middleware Pattern
Every Go web framework sits on net/http: http.Handler and ServeHTTP are the whole abstraction, and middleware is a closure wrapping a Handler, outermost first.
Running Docker and Linux Machines on macOS with OrbStack
OrbStack is a lightweight Docker Desktop alternative — fast to start, light on resources, and it runs Linux machines and Kubernetes too.
Introducing My Docker Compose Template Collection
Docker Compose templates on GitHub for MySQL, Redis and other services: clone, adjust, docker-compose up -d. For local development and integration testing, not production.
Building a Website with Hugo
Notes on building a site with Hugo: install, Quick Start, Hugotex theme, GitHub Pages deployment via GitHub Actions, plus the archetype commands for new posts.