Writing
Notes on building products, infrastructure, and agentic AI systems.
with-context-mcp: Persistent Memory for AI Agents, With Supervision
Why stateless AI agents are a daily frustration, and how with-context-mcp gives agents structured, supervised persistent memory backed by an Obsidian vault you actually control.
The Hard Parts of Live Transcription Aren't the Model
"Add transcription to calls" sounds like a weekend project: pipe audio to a speech-to-text model and render the text. The model is the easy 20%. This is a writeup of the problems that actually consumed the time: biasing the model toward the vocabulary that matters, breaking the feedback loop where a corrector learns from its own mistakes, telling silence apart from dropped speech, deduplicating the overlap that low latency forces, and turning a wall of fragments into something people will read.
envsitter-guard: Keeping Secrets Out of Agent Hands
How a practical problem with agentic coding tools led to building an OpenCode plugin that blocks AI agents from reading .env files — without breaking their ability to work with environment configuration.
One Core, Many Brands: Killing Configuration Drift with One-Way Generation
When you run a family of near-identical sites, copy-paste forking guarantees they drift apart. Here's the build pattern I use instead: a single core, thin per-brand overlays, and generation that only ever flows one direction.
One Interface, Many Providers: Abstracting Crypto Custody Behind Your Own Domain
Wire your app directly to one crypto provider and you inherit all its quirks forever. Here's how to put your own interface in front, so adding or swapping a provider is one adapter, not a rewrite.
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.