Writing
Notes on building products, infrastructure, and agentic AI systems.
Agent Orchestration for Real World Constraints
A deep-dive from my March 2026 talk at AI Community Africa x MLOps Community Lagos, covering the five orchestration patterns, how each maps to latency, cost, security, and governance constraints, and why constrained environments often produce better-engineered systems.
The Live Map Problem: Why GPS Pings Shouldn't Touch Your Database First
Showing hundreds of moving things on a map in real time, answering "who's nearby?", and never losing an update, all at once, breaks if every ping hits your primary database. The fix is to split the fast path from the durable path.
Stop Trusting Yourself to Notice the Leaked Key
The same mistakes show up in every codebase: a committed secret, a sloppy Dockerfile, a fragile shell script. Code review is too late and humans miss them. Here's the set of enforced, fail-closed gates I put on every project.
Zero-Downtime Deploys Without Kubernetes: Rolling Updates on Docker Swarm
You don't need Kubernetes to deploy a handful of services without dropping traffic. Docker Swarm rolling updates behind a health-checked proxy get you there with a fraction of the operational weight.
Webhooks Are Hostile: Making Payment Events Idempotent, Verified, and Ordered
Payment webhooks arrive twice, out of order, and sometimes forged, usually right when money is involved. Treat every one as untrusted and possibly-duplicate, or you'll double-credit someone.
Turning Bad Seller Photos Into a Clean Catalog, Automatically
On a marketplace, your catalog is only as good as the worst seller photo. Here's a computer-vision pipeline, segment then understand then regenerate, that turns messy uploads into consistent, catalog-ready images without a human touching each one.
Matching People to Jobs with Embeddings, and Knowing When Not to Trust the Model
Keyword search ranks the wrong candidates. Embeddings rank better, until they confidently match nonsense. Here's a job-matching pipeline that uses ML where it helps and rules where it must.
From a Hundred Sportsbooks to One Source of Truth: Ingesting, Matching, and Resolving Live Odds
Aggregating live betting odds looks like "fetch and display." It's really real-time entity resolution over messy, adversarial sources, with money riding on getting it right. Here's the four-stage pipeline.
Money That Moves Between Rails: A Multi-Currency Wallet Ledger
Holding fiat and crypto in one wallet, and settling between them, is an accounting problem before it's a blockchain problem. Here's how to keep the books correct.
Surviving Gas Wars: The Ethereum Transaction Lifecycle in Your UI
On a busy mint, a transaction isn't fire-and-forget: it's a living thing you have to monitor, bump, and sometimes cancel. Here's how to model that honestly for users.