
The Work Around the Agent Is Engineering Work
My use of coding agents gradually became work on the environment around them: current context, tool access, focused checks, review and recovery. The useful distinction is not how much an agent can do, but what makes its result defensible.
Read full article →
Same Container Image, Different Application
Promoting one image through environments is useful until build-time browser settings, secret rotation, migrations, or resource limits disagree with that promise. Configuration is part of the release, even when it lives outside Git.
Read full article →
The Domain Moved. Some Requests Did Not.
DNS cutovers, certificate renewal, forwarded headers, and cookie scope tend to become interesting after the first successful request. Moving an application means keeping several versions of its public address working at once.
Read full article →
The Request Ended. The Work Did Not.
Emails, exports, webhooks, and slow integrations should not keep an HTTP request open. A queue helps only when retries, duplicate delivery, job state, and the database handoff are designed explicitly.
Read full article →
Redis Is Fast. Your Data Can Still Be Wrong.
Redis can make an application feel dramatically faster, but speed is only useful when ownership, expiration, invalidation, and failure behavior are explicit. Otherwise the cache becomes a second truth nobody can explain.
Read full article →
The Database Changed Before the Deployment Finished
A schema migration and an application deployment do not happen at one instant. Zero-downtime changes work when old code, new code, and the database are allowed to coexist for a while.
Read full article →
SQL for Frontend Engineers: Model the Relationship First
SQL becomes much easier when you stop thinking in tables and start thinking in facts that must remain true. A checkout model shows where keys, JOINs, transactions, and indexes actually earn their place.
Read full article →
An API Is a Boundary, Not a URL
A working endpoint is not yet a reliable API. The real contract includes validation, errors, retries, idempotency, and a way to evolve without making yesterday’s frontend fail tomorrow.
Read full article →
What Actually Happens After fetch()
A frontend request does not jump straight from the browser into your backend. It crosses DNS, encrypted connections, edge infrastructure, application code, and a database before the UI sees a result.
Read full article →
AI Code Review Should Sound Like a Careful Engineer
I built a personal AI reviewer for GitHub Pull Requests, not as a cold rule bot, but as a local and observable tool that checks known risk patterns and turns them into useful engineering conversation.
Read full article →