Engineering notes, for shipping code that just works.
Pragmatic approaches, tested coding patterns, defensive programming, CI/CD, AI workflows, and the team habits that make reliable software easier to ship.
Build boring, reliable software
Architecture earns its keep by naming ownership, state, retries, and failure modes, so the next engineer can debug and change the system without learning a private map.
LLMs in production: tools, retrieval, evals
Retrieval quality is product quality. Output needs a trace. Low confidence needs a product path. Here is the shape I trust.
Keep tool-calling agents on a short leash
Agents get safer when the environment is code-defined: the repo, AGENTS.md, Terraform, and CI become the instruction surface, not the prompt.
AWS to GCP, without the big-bang
A cloud migration is an inventory exercise with a cutover attached. The savings came from data shape and deletion, not from the provider logo.
Offline-first mobile when the network is bad
The cluster and API only matter if the field worker can capture intent offline, reconnect, and trust the result that comes back.
MongoDB modeling mistakes that show up late
Pick the datastore by data shape, not by identity — and watch the document that quietly outgrows memory.
Everything as code without the sprawl
Repos, branch protections, Actions secrets, DNS, R2, Sentry as Terraform; Macs, Linux, WSL, Pis, and GPU boxes as Ansible. Use the console to learn the system, code to operate it.
HTTP 497 Status Code
A plain HTTP request landing on an HTTPS port is a tiny nginx edge case with an outsized ability to confuse. The fix is one line. The habit is making protocol mistakes converge instead of multiply.
Ship it with Docker tips
Docker should package what the build already proved, not become a second place where things get decided.
Magento field notes
Catalog truth, inventory reality, order state, indexing, and the operational sharp edges a real PHP commerce store actually has.