Work log: Polymathic — April 1, 2026
What shipped today
The main work today was filling in missing tag metadata on 51 older published posts (GH-242). These posts — mostly imported content from pre-2026 — had no tags: field at all, which matters more now that every published post is automatically voiced and ingested into the podcast feed. Apple Podcasts and Spotify use episode tags for topic-based discovery, so untagged posts are essentially invisible to search. The fix was straightforward: read each post’s content, apply 3–5 relevant tags drawn from the existing tag vocabulary, and commit. The change touched a broad cross-section of the archive — everything from Rails helper posts to management essays to early ChatGPT commentary.
The work revealed a latent bug in the pre-commit hook that became impossible to ignore at this scale. The hook generates TTS audio for every staged markdown file in content/posts/, which is fine when you’re committing one or two new posts. But when 51 posts are staged with only frontmatter changes, the hook tries to call OpenAI TTS for all of them — burning time and API budget on posts that already have audio or that don’t need regeneration. The commit had to be forced through with SKIP_AUDIO=1 to avoid the runaway generation. That gap is now filed as GH-247: the hook needs to diff only the post body and skip audio generation when only metadata changed.
Completed
- GH-242 — Fill missing tags on 53 published posts (51 of 53 posts updated; 2 already had tags per the grep scope)
Carry-over
- GH-247 — Pre-commit hook triggers audio generation on frontmatter-only changes. Needs a body-diff check before dispatching TTS. This is
ready-for-prep— needs an approach spec before dev. - GH-246 —
paulos blog ideacommand returning Authexis API 404. Low urgency but annoying; blocks quick idea capture from CLI. - GH-243 — 70 legacy drafts in
content/_drafts/need triage/archive. Large but mechanical. - GH-112 — Date display accuracy on
/blog/— stillneeds-clarification. - GH-79 — Per-episode
itunes:imagein podcast feed — backlog.
Risks
The pre-commit audio hook is now a reliability problem at scale. Any bulk metadata edit to content/posts/ will hit the same issue. Until GH-247 is fixed, bulk frontmatter changes need SKIP_AUDIO=1. This is worth noting: the tag-filling work also means 51 posts now lack audio_url and will trigger TTS on the next individual commit that touches them — unless the hook correctly skips posts that already have audio. Verify the idempotency logic in the hook before committing anything that touches previously-voiced posts.
Flags and watch-outs
SKIP_AUDIO=1was used for today’s commit. Posts that were modified today may not have audio yet if they lacked it before. The hook should catch them on next commit.- The two generated SASS resource files (
resources/_gen/assets/sass/...) are dirty but ignored — these are Hugo build artifacts, not meaningful changes.
Next session
- Prep GH-247 — Write the fix spec: detect frontmatter-only changes by diffing the post body (strip frontmatter block, compare hash), skip audio generation if body is unchanged. Assign to dev.
- Check audio coverage — Run
grep -L 'audio_url' content/posts/*.mdafter a test commit to verify the hook is picking up the newly-tagged posts correctly and not double-triggering on posts that already have audio. - Triage GH-243 — Start the
content/_drafts/cleanup. Even a quick pass to identify which files are worth keeping would help.
Why customer tools are organized wrong
This article reveals a fundamental flaw in how customer support tools are designed—organizing by interaction type instead of by customer—and explains why this fragmentation wastes time and obscures the full picture you need to help users effectively.
Infrastructure shapes thought
The tools you build determine what kinds of thinking become possible. On infrastructure, friction, and building deliberately for thought rather than just throughput.
Server-side dashboard architecture: Why moving data fetching off the browser changes everything
How choosing server-side rendering solved security, CORS, and credential management problems I didn't know I had.
The work of being available now
A book on AI, judgment, and staying human at work.
The practice of work in progress
Practical essays on how work actually gets done.
Delegation without comprehension is just prayer
The organizations that survive won't be the ones that automated the most. They'll be the ones that figured out what to stop delegating.
The case for corporate amnesia
Most organizations worship institutional memory. But what if the thing they're preserving is mostly decay?
Your design philosophy is already written
Builders who work across multiple projects leave fingerprints everywhere. The same mind solves the same problem differently in every domain — and usually doesn't notice. You need someone to read it back to you.