What shipped today
Major content and theme cleanup session. Converted all 375+ blog post titles from Title Case to sentence case using a deterministic Python script, fixed smart quotes throughout, and resolved the multi-line H1 line-height issue where md:text-5xl was overriding with line-height: 1 (changed to 1.2).
Then ran a full codebase scout, which identified 5 actionable issues across content quality and theme hygiene. Executed all 5 via parallel grind — two batches of agents working on separate branches, squash-merged sequentially. The cleanup removed 34 duplicate/placeholder content files (WordPress import artifacts), deleted 8 unused partial templates (~500 lines of dead code), fixed backslash escape sequences in 49 post titles, cleaned up escaped underscores in 17 posts, normalized 77 content_type values, and fixed an invalid HTML attribute that affected every page.
Completed
- Sentence case titles, smart quotes, and H1 line-height fix (375+ files)
- GH-17 — Remove duplicate and placeholder content files (34 files: 12 deleted, 17 renamed to proper slugs, 5 numeric stubs resolved)
- GH-18 — Clean up line break escape sequences in 49 post titles
- GH-19 — Fix missing space before crossorigin attribute in baseof.html
- GH-20 — Remove 8 unused partial templates (sidebar, reading-time, post-feature, 5 home-*.html)
- GH-21 — Clean up escaped underscores and normalize content_type values (17 files + 77 content_type fixes)
Carry-over
- GH-8: Product blog syndicated content separate from main feed (parked)
Risks
- None
Flags and watch-outs
- ElevenLabs quota still exhausted — podcast episodes default to OpenAI TTS
- The parallel grind shared-working-tree issue persists: both agents commit on the same branch, so PRs contain combined work. Works with squash merge but means issue-to-PR mapping is imprecise.
- A
.md.savefile (reading-meaning-and-ai.md.save) was committed by GH-21 agent — minor artifact, can clean up later
Next session
- Monitor Cloudflare Pages deploy for the cleanup changes
- Consider running
/scouton another project (paulos, authexis) — the pattern worked well here - Pick up GH-8 if ready to tackle syndicated content feeds
- ElevenLabs credits decision still pending
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.
Dev reflection - February 20, 2026
I want to talk about the difference between execution and verification. Because something happened this week that made the distinction painfully clear, and I think it matters far beyond software.
Dev reflection - February 18, 2026
There's a moment in any system—a team, a company, a workflow—where the thing you've been optimizing for stops being the constraint. And you don't notice right away. You keep pushing on the old bott...
Dev reflection - February 17, 2026
I want to talk about staging areas. Not the technical kind—the human kind. The places where work goes to sit. The inbox you check before forwarding. The draft folder. The approval queue. The meetin...