Build LogNewsletter
#71
2026-06-135 min read

Three newsletter hotfixes. The events table found all of them.

The newsletter form went live on 9 June. I subscribed from my own address and got nothing. No row, no email, no error. Three consecutive bugs followed, all found the same way: reading the events log, not the code.

Read post→
Build LogDevOps
#72
2026-06-125 min read

No Composer, no autoloader: the newsletter backend cPanel rewarded

The deployment target was a cPanel shared host with FTP access. Composer wants SSH or a committed vendor directory. Neither fits cleanly on shared hosting. The alternative was require_once, six PHP classes, and a 190-line schema that doubles as documentation. Six sprints in, the backend is completely understood.

Read post→
Build LogDevOps
#73
2026-06-125 min read

Scheduling articles through Telegram taught me that cron is the wrong model

The article pipeline pipeline could draft and voice-fix articles but had no scheduling layer. Adding one took six sprints, not because the cron was hard but because scheduling through Telegram needs to capture intent, not timestamps. The grammar parser, the 2×2 keyboard, and the 48-hour grace policy are the same design decision expressed three different ways.

Read post→
Build LogBBBrain
#74
2026-06-105 min read

The inbox filter model drops strangers silently. I built a queue instead.

Inbox filters drop what they don't recognise. I wanted a record instead: every unknown sender parked, every blocked arrival logged, nothing silently gone. Five tables, four sync branches, and a historyId cursor later, the editorial pipeline's Inbox Hub does exactly that.

Read post→
Build LogAgentic AI
#75
2026-06-096 min read

Archon was burning quota. The fix was a hook, not a scheduler.

Three Archon runs in flight simultaneously, two of them fired without a deliberate decision. The instinct was to build a smarter scheduler. What worked was a global PreToolUse hook that intercepts archon workflow run and forces a pause before anything spawns.

Read post→