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
Clear ownership, small moving parts, fast verification loops, and release habits a team can trust.
LLMs in production: tools, retrieval, evals
Where each pattern earns its place, where it does not, and how I keep cost, latency, and trust honest.
Keep tool-calling agents on a short leash
The tool surface, eval loop, and refusal rules I want before an agent can touch a real repo.
AWS to GCP, after the workload inventory
Moving AI training onto managed GPUs only worked after we separated real runtime needs from idle infrastructure.
Offline-first mobile when the network is bad
The cluster and API only matter if the field worker can capture intent, reconnect, and trust the result.
MongoDB modeling mistakes that show up late
Document shape, indexes, and the day the working set stops fitting in memory.
Everything as code without the sprawl
Terraform, Ansible, GitHub, Sentry, local machines, and the console work I try to turn into repeatable code.
HTTP 497 Status Code
Plain HTTP sent to an HTTPS port is a small nginx edge case. The fix is tiny, but the habit is bigger: make protocol mistakes converge.
Ship it with Docker tips
Local containers only help when they can see the files developers are actually editing.
Magento field notes
EAV migrations, admin routing, payments, product lists, and the kind of debugging that makes operational reality hard to ignore.