~/writing · pragmatic engineering · AI agents · teams

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.

boring softwarearchitecture

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.

moMohamed Meabed· 11 min read
// boring software loop
business fact simple path verify
release check before deploy
// team rule
reliability = shared habit
Latest writing
llm·Mar 4, 2026

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.

11 min read0
llm·Feb 25, 2026

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.

8 min read0
aws·Feb 16, 2026

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.

10 min read0
kubernetes·Feb 6, 2026

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.

10 min read0
nodejs·Jan 28, 2026

MongoDB modeling mistakes that show up late

Pick the datastore by data shape, not by identity — and watch the document that quietly outgrows memory.

9 min read0
terraform·Jan 19, 2026

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.

12 min read0
nginx·Aug 12, 2018

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.

8 min read0
docker·Oct 27, 2014

Ship it with Docker tips

Docker should package what the build already proved, not become a second place where things get decided.

8 min read0
magento·Sep 5, 2013

Magento field notes

Catalog truth, inventory reality, order state, indexing, and the operational sharp edges a real PHP commerce store actually has.

9 min read0