Work log: Polymathic — March 2, 2026
What shipped today
Responsive images in production (GH-38)
Shipped responsive srcset and lazy loading across all post images — the final piece of the image optimization trilogy (GH-36/37/38). Cover images on single posts and teasers now generate three WebP variants (480w, 800w, 1200w) with proper srcset and sizes attributes. Single post covers skip loading="lazy" since they’re above the fold; teaser images get lazy loading. Verified the Cloudflare Pages build from yesterday’s image pipeline push succeeded — production is serving WebP images correctly. Closed GH-32 (the parent issue) along with GH-38.
Email signature fix
The email signature “Latest” link had been showing “Junior engineers didn’t become profitable overnight” for days despite newer posts publishing. Root cause: the signature template (sigs/single.html) filtered for content_type: essay only, but recent posts were classified as reflection. Broadened the filter to exclude unwanted types (work-log, linkedin, toot, bookmark) instead of only including essay. Signatures now correctly show the latest substantive post.
Post-commit hook optimization (GH-31)
The post-commit hook was running a full Hugo rebuild on every commit — even commits that only touched scripts or config files. Added a git diff-tree guard that checks whether the commit touched content/, layouts/, themes/, or hugo.toml before triggering the rebuild. Simple fix, noticeable improvement to commit speed.
Podcast artwork cache bust
Apple Podcasts had been caching the old podcast cover image for a month. Query string cache busting (?v=2) doesn’t work with Apple’s CDN — they ignore query parameters. Renamed the image from podcast-cover.jpg to podcast-artwork.jpg and updated the feed XML reference. This forces Apple to fetch fresh.
Newsletter scheduling cleanup
Fixed the newsletter timeline. Edition 11 (“The work that remains”) had been erroneously sent on 2/28 (Saturday) but its blog date said 3/3. Edition 12 (“Your process was built for a different speed”) was scheduled for 3/4 (Wednesday) instead of Tuesday. Corrected both frontmatter dates (edition 11 → 2/28, edition 12 → 3/3) and rescheduled Brevo campaign 28 from 3/4 to 3/3 11am ET via the API. Tuesday cadence restored. Also confirmed share buttons (GH-39) and newsletter email share CTA (GH-40) were already implemented from yesterday’s work — closed both.
Completed
- GH-32 — Optimize static images — 3MB PNGs served uncompressed (parent, all children done)
- GH-38 — Add responsive srcset and lazy loading to all image tags
- GH-39 — Add share buttons to post pages (already implemented)
- GH-40 — Add share CTA to newsletter email template (already implemented)
- GH-31 — Post-commit hook runs full Hugo rebuild on every commit
Release progress
- Feb enhancements: 17/17 closed (all done, milestone can be closed)
- April 2026: 0/1 closed (GH-8 syndication, parked)
Carry-over
- Edition 12 newsletter sends tomorrow (3/3) at 11am ET via Brevo campaign 28 — first real test of the automated pipeline on send day
- GH-8 (syndication) parked in April 2026 milestone
Risks
- Edition 12 blog post is committed and will deploy, but this is the first newsletter where the scheduling was done via the send script + Brevo API reschedule. Verify it actually arrives tomorrow.
Flags and watch-outs
- Edition 6 doesn’t exist. Numbering jumped from 5 to 7 during the format transition. Not a bug — it’s lore now.
- The “Feb enhancements” milestone is complete (17/17). Should be formally closed next session.
- Apple podcast image change may take days to propagate through their CDN. Don’t panic if the old cover still shows for a while.
Next session
- Verify edition 12 newsletter arrived on 3/3 — check Brevo campaign 28 delivery stats
- Close the “Feb enhancements” milestone (all 17 issues done)
- Growth plan Phase 3: update inline signup CTA copy in
newsletter-inline.html— current “Get essays like this in your inbox” could be more specific - Consider creating a branded OG default image (
static/images/og-default.png, 1200x630) — currently falling back to site logo for posts without cover images - LinkedIn distribution: post edition 12 teaser within 24 hours of send (use
paulos blog tease)
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.
Nothing is finished until you say it is
Continuous delivery removed the endings from work. That felt like progress. But without formal completion, you lose the ability to say what you actually accomplished — and more importantly, what you're done thinking about.
Your biggest problems are the ones running fine
The most dangerous failures in any system — technical or organizational — aren't the ones throwing errors. They're the ones that appear to work perfectly. And they'll keep appearing to work perfectly right up until they don't.
The work that remains
When AI handles implementation, the human job shifts from doing the work to understanding the work. Speed without understanding is just technical debt with better commit messages.