The seed packet that thought it was a carrot
A weekly 'what should we start from seed' digest needed three things a naive join doesn't: derived sow dates, a matcher tie-break by position, and a monitor that asserts the email went out.
Read →Chester Frazier · Gulfport, MS · b. 1988
Debugging stories, architecture notes, and the occasional thing I built because nobody else had. New posts when I have something worth writing down.
A weekly 'what should we start from seed' digest needed three things a naive join doesn't: derived sow dates, a matcher tie-break by position, and a monitor that asserts the email went out.
Read →A replication watermark that could move backwards let the same rows drift twice. The culprit was a frozen snapshot being handed back to the writer that produced it.
Read →A replication bug where updated_at ran backwards, and a fix that never loaded because the restart was waiting in an approval queue it never belonged in.
Read →A nightly scraper that fills my audiobook library, and the two monitoring rules that keep it from quietly lying: refuse a partial parse, and check the table instead of the run.
Read →An offboarding script reported 9/10 steps. The tenth was a Microsoft 365 group the departing user owned — and Graph refuses to leave a group ownerless.
Read →A timestamp watermark silently skipped 41 replicated rows because now() in Postgres is transaction start time, not commit time. The fix, and the three details that made it wrong twice.
Read →Shipping a tool to an LLM agent takes three registrations, not two. Miss the intent router and the model truthfully tells you the tool isn't there.
Read →A .NET service on Linux refused to import a folder it could read perfectly well. The path had an emoji in it, and the error message pointed at permissions the whole time.
Read →A quota gate projected 120% usage from a 15% reading and shut down a whole tier of jobs on a Monday. The bug wasn't the math — it was letting the median decide.
Read →Culling 600 burst-mode photos with OpenCV: why sharpness has to be scored within the burst, not across the shoot, and how YuNet's eye landmarks catch blinks.
Read →An automation pipeline classified 21,000 events and executed none of them for three months. The bug was one wrong dictionary key, and Python's scoping rules did the rest.
Read →A monitoring flag meant to hide noisy checks was quietly hiding the most important one. Six automations were green because nothing they ran could ever be reported.
Read →A wall-mounted dashboard froze on a job tile for eleven hours. The SSE socket was dead, EventSource said it was open, and the server's keepalive was a comment JavaScript never sees.
Read →A bug report I had already fixed — except the build carrying the fix never reached the phone. How to find the real client from an access log, and why a version number should be read out of the artifact.
Read →A nightly Postgres backup shipped nothing to four destinations because one frozen snapshot database had a connection limit of zero. The fix is a batch-job design rule, not a Postgres trick.
Read →