Paul Welty, PhD AI, WORK, AND STAYING HUMAN

Work log: Polymathic — March 4, 2026

What shipped today

Podcast feed validation and compliance (GH-42)

Ran the podcast feed through Podba.se validation and fixed every issue it flagged. Added the xmlns:podcast namespace for Podcast Standards Project (PSP-1) compliance, switched itunes:explicit from the deprecated “no”/“yes” values to the spec-correct “false”/“true” (both channel-level and per-episode), and added podcast:locked and podcast:guid elements. The GUID is a UUIDv5 derived from the feed URL, which is the standard approach. Also confirmed that the byte-range “failure” Podba.se reported was a false positive — Cloudinary (the audio host) correctly returns HTTP 206 with proper content-range headers.

Codebase-wide cleanup grind (GH-43 through GH-47)

Ran a /scout that identified five actionable issues, then ground all five in parallel using isolated worktrees. Each agent worked independently and all five merged cleanly to main:

  • GH-43: Converted file_size in 49 podcast posts from human-readable strings (“5.04 MB”) to integer bytes (5284823). The RSS <enclosure length> attribute requires bytes per spec, and the feed was outputting the raw string.
  • GH-44: Added missing description fields to 2 reflection posts and content_type metadata to 15 posts (9 work logs, 6 reflections). These were the stragglers from the content classification pass.
  • GH-45: Deleted 2 duplicate LinkedIn draft posts that had published essay equivalents, removed 1 duplicate work log with a non-standard filename, and archived 15 stale 2022-2024 draft posts to content/_archive/. The archive keeps them out of Hugo’s build without losing the content.
  • GH-46: Added rel="noopener noreferrer" to external links in the brand-links partial (security best practice for target="_blank"), and added a Sitemap directive to robots.txt.
  • GH-47: Set an RSS feed limit of 50 items in hugo.toml and removed a dead GA4 script block from baseof.html along with the unused [params.analytics] config.

GA4 tracking restored

GH-47’s cleanup inadvertently removed the Google Analytics 4 integration. Restored the measurement ID (G-FMZXZ2XER2) in hugo.toml, re-added the gtag script to baseof.html, and flipped privacy.googleAnalytics.disable back to false.

Social media cadence planning

Reviewed posting frequency research and discussed the Authexis social slot configuration. Landed on a recommended schedule: LinkedIn 3x/week (Tuesday 11:00, Wednesday 8:00, Friday 10:00), Bluesky 3x/week (Monday 8:30, Wednesday 14:30, Saturday 15:30), Mastodon 3x/week (Monday 13:00, Thursday 13:00, Saturday 16:00). No platform doubles on any day. The data says 1-2x is ideal for LinkedIn thought leadership, but 3x is fine with substantive original content — the fatigue risk comes from low-value repetition, not frequency.

Completed

  • #42 — Validate and fix podcast feed against Podba.se
  • #43 — Podcast RSS enclosure length outputs human-readable string instead of bytes
  • #44 — Add missing description and content_type to 17 posts
  • #45 — Delete duplicate draft posts and archive stale 2022-2024 drafts
  • #46 — Add rel=“noopener” to external links and sitemap to robots.txt
  • #47 — Add RSS feed limit and clean up dead GA4 template code

Release progress

  • March 2026: 6/6 closed — all issues complete, milestone ready to close when the month wraps
  • April 2026: 0/1 closed (GH-8: syndication still parked)

Carry-over

  • Stale worktrees from prior sessions (agent-a467dc04, agent-ac8f8dca) still exist in .claude/worktrees/ — should be cleaned up
  • Social slot changes need to be applied in Authexis (user will do manually)

Risks

  • GA4 was briefly missing between the GH-47 push and the restoration commit. Any visits during that window (~minutes) won’t have analytics data. Negligible.

Flags and watch-outs

  • Apple Podcasts artwork may still be showing the old black version — check if the CDN refresh has propagated (was triggered yesterday)
  • Edition 12 newsletter showed “sent” with 0 stats yesterday — verify Brevo reporting has caught up
  • Cloudflare Pages build time — resources/_gen/ was committed in a prior session (GH-41) to avoid regenerating 1,239 images on each deploy, but we haven’t confirmed whether it actually reduced build time

Next session

  • Verify Apple Podcasts artwork has updated to cream version
  • Check edition 12 newsletter stats in Brevo (delivery/open/click)
  • Monitor CF Pages build time on today’s deploy to see if resources/_gen/ commit helped
  • Clean up stale worktrees (agent-a467dc04, agent-ac8f8dca)
  • Consider closing March 2026 milestone if no new issues are planned for the month

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.

The smartest code you'll ever delete

The most dangerous kind of waste isn't the thing that doesn't work. It's the thing that works beautifully and shouldn't exist.

The first real user breaks everything

Your product works until someone actually uses it. The gap between 'works in dev' and 'works for a person' is where most systems fail — and most organizations avoid looking.

The loop nobody bothers to close

Most systems observe. Almost none learn. The difference is a feedback loop — and the boring cleanup work that makes it possible.