Writing
I write about what I build and what broke along the way. Posts live on my blog.
A CLI tool became a loop. The loop grew and had kids for a year. Then I stopped building and started writing a spec. Here’s what rebuilding dialer automation from scratch actually …
One recording session, a month of Shorts. OBS captures, Python extracts the beats, FFmpeg assembles with title cards and normalized audio. Here’s the full pipeline and the three …
Every minute a flagged number stays active is a minute of compliance exposure. Here’s what it looks like to close that window — and what happens when the tool that’s supposed to …
AI coding agents optimize for appearing done rather than being done. Here’s the three-layer methodology — Director, Pipeline, Agent — with the proof standard and directive format …
Neither of the other two tools I’ve written about recently would exist without this one, and it’s the one I almost didn’t write about, because on its own it doesn’t have a moment. …
Six months learning the friction. Six months building. By month twelve, the job was monitoring itself — and I knew exactly what that meant.
Standard DNC scrubbing doesn’t catch reassigned numbers — it checks opt-outs, not ownership. Here’s what the FCC Reassigned Numbers Database is, why your lead list may contain …
The forecasting tool projected two things off the same underlying curve: how many contacts to expect by end of day, and how many of those contacts would turn into appointments. It …
I set out to build a fully automated AI content pipeline. No recording, no editing, no me. What I actually built was a FFMPEG pipeline that runs while I sleep — and the gap between …
A TCPA complaint has one question: can you prove the call was compliant? If the answer requires reconstructing removal history from four systems by hand, the documentation problem …
I’d asked an agent to verify something specific about a puzzle solver I’d been building: were the “dead zones” — tiles a player could never actually reach or use — genuinely …
The Telegram error log doesn’t lie. Ollama 404ing every five minutes. All four free-tier APIs throttled by morning. An autonomous loop called RALPH burning 144 LLM calls a day on …
Convoso’s manual list import is a CSV upload — one file, one campaign at a time. Here’s how to automate it with the pre-import hygiene that prevents compliance exposure before the …
There was a rule that had been running for a long time: if a list’s contact rate drops below a fixed number after enough attempts, cut it and move to something else. Simple, …
It’s 8PM on a Saturday. My daughter is asleep. The Tower is running at my parents’ place — a Dell OptiPlex 5050 I’ve got humming in their corner for $40 a month. I open the laptop …
Running Convoso and Zoom Contact Center together means compliance actions need to reach both systems. Here’s how to build the unified fan-out — and why partial failure is the …
The forecast had been “very inflated” for weeks. Nobody could say by how much, or why — just that the projected end-of-day numbers didn’t match what actually happened, often enough …
The game is called VoidDrift. You mine ore in orbit around a dying star, build a production chain, and feed a black hole that is slowly eating everything. It runs in a browser. It …
The forecast was wrong, and everyone knew it was wrong, and nobody knew why. That’s the specific, uncomfortable place to start a debugging session from. Not “there’s a bug” — …
I woke up on a Wednesday and checked Tower before I checked anything else. RALPH had fired at 2:47am. Detected a pattern in the task queue, ran a research chain, summarized the …