Work log: Polymathic — March 17, 2026
What shipped today
Newsletter edition 15 (“Most of your infrastructure is decoration”) went out this morning at 11am ET, completing the pipeline that started with staging and test emails in the previous session. During the send, we discovered Brevo’s API no longer accepts status=scheduled as a query filter — the script was updated to fetch all campaigns and filter client-side for draft/queued/scheduled status. The newsletter is now live.
A fresh /scout run explored the codebase and surfaced five grindable issues, all executed in the same session. The fixes span accessibility (aria-label on the search input), SEO (inLanguage in JSON-LD structured data), robustness (paulos CLI check in pre-commit hook, ISO 8601 validation for newsletter scheduling), and a bug fix (case-insensitive image extension regex so .JPG and .PNG resolve correctly). Each was a clean single-file change — the kind of sweep that steadily raises baseline quality.
We also audited frontmatter consistency across all 655 posts. Dates use three different formats (73% date-only, 23% full ISO with timezone, scattered others) and images use three different field names (coverImage dominant at 314, plus 5 image: and 2 featured_image:). Decided not to mass-normalize — the templates already handle the variation gracefully, and the CLAUDE.md rules ensure new posts are consistent. Low risk, high cost to change.
Completed
- Newsletter edition 15 — scheduled and sent via Brevo campaign 31
- #166 — Add aria-label to search input
- #167 — Fix case-sensitive image extension regex in resolve-image partial
- #168 — Validate SCHEDULE_AT format in newsletter-send.sh
- #169 — Add paulos CLI availability check to pre-commit hook
- #170 — Add inLanguage to JSON-LD structured data
Release progress
- April 2026: 2/3 closed
Carry-over
- #112 — Blog dates accuracy (
needs-clarification, still no human reply) - Check Brevo delivery stats for newsletter editions 13-15
- Update Brevo sender name to “Philosopher at Large” (carry-over from March 15)
Risks
- Newsletter edition 15 Brevo API status filter fix was reactive — if Brevo changes other API parameters, the send script may need similar updates. The script now handles this specific case but doesn’t have general API version detection.
Flags and watch-outs
- DNS resolution failed temporarily during the session (github.com unreachable). Flushing the DNS cache (
dscacheutil -flushcache) resolved it. May recur — possibly a local resolver issue. - The frontmatter audit confirmed the
resolve-image.htmlpartial’s fallback chain (coverImage → featured_image → image) is load-bearing — 7 posts depend on non-standard field names. Don’t remove the fallback logic.
Next session
- Check newsletter #15 delivery stats in Brevo
- #112 — Check if there’s been a reply on the blog dates accuracy issue
- #8 — Product blog syndicated content is the last open April 2026 milestone issue — consider prepping it
- Update Brevo sender name to “Philosopher at Large”
- Consider normalizing the 7 non-coverImage image fields (2
featured_image:+ 5image:) as a quick cleanup
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.
AI agents need org charts, not pipelines
Every agent framework organizes around tasks. The agencies that actually work organize around competencies. The AI community is about to rediscover this the hard way.
The delegation problem nobody talks about
When your automated systems start finding real bugs instead of formatting issues, delegation has crossed a line most managers never see coming.
What your systems won't tell you
The most dangerous gap in any organization isn't between what you know and what you don't. It's between what your systems know and what they're willing to say.