Paul Welty, PhD AI, WORK, AND STAYING HUMAN

Work log: Polymathic — February 28, 2026

What shipped today

The newsletter has strong content but no discovery infrastructure. Today’s session closed that gap by making every shared link look good and making sharing frictionless.

Social sharing infrastructure. Added Open Graph and Twitter Card meta tags to every page on the site. When someone shares a post on LinkedIn, Slack, or anywhere that unfurls links, it now shows a rich preview with the post title, description, and image. Posts with cover images use those; everything else falls back to a branded default OG image (1200x630, cream background with name and tagline in brand colors). Also added JSON-LD structured data — Article schema on posts, Organization schema on the homepage — so Google can surface rich results with author cards and article snippets.

Share buttons on every post. LinkedIn, Bluesky, and Mastodon share links now appear above the newsletter signup on every post page. Minimal editorial styling, no third-party tracking scripts — just native share URLs. The newsletter email template also got a forward prompt (“If this resonated, forward it to someone who’d find it useful”) and inline share links for LinkedIn and Bluesky.

Newsletter signup CTA refresh. Updated the inline signup copy from “Get essays like this in your inbox” to “One essay a week on AI, work, and staying human” — more specific about cadence and content. Description now reads “Short, honest writing on judgment, craft, and navigating what’s changing.”

Also bundled in: newsletter workflow docs refresh (sentence case, clearer structure, schedule flag docs) and the new draft post “Your process was built for a different speed.”

Completed

  • GH-28 — Add Open Graph and Twitter Card meta tags for social sharing
  • GH-29 — Add JSON-LD structured data for blog posts
  • Share buttons partial (LinkedIn, Bluesky, Mastodon) on post pages
  • Newsletter email share CTA + forward prompt
  • Newsletter signup CTA copy update
  • Branded OG default image (static/images/og-default.png)
  • Newsletter workflow docs and send script schedule flag

Carry-over

  • GH-32 — Optimize static images (3MB PNGs served uncompressed) — untouched
  • GH-31 — Post-commit hook runs full Hugo rebuild on every commit — untouched
  • GH-34 — Add newsletter send trigger to pre-commit hook — ready for grind
  • GH-27 — Newsletter send automation as polymathic-h hook — open
  • Distribution cadence: edition 12 teaser needs to go out on LinkedIn when it sends Tuesday

Risks

  • The OG default image was generated via macOS qlmanage + sips (SVG rendered to PNG with crop). The text rendering quality is acceptable but not pixel-perfect — a designer-made image would be better long-term.
  • The og:image:width and og:image:height are hardcoded to 1200x630 even for posts with custom cover images that may be different dimensions. Works fine for the default image but could be inaccurate for posts with existing covers.

Flags and watch-outs

  • Cloudflare Pages deployment triggered on push. OG tags and share buttons are now live.
  • The JSON-LD template uses safeJS to prevent Hugo’s HTML template engine from escaping the JSON inside script tags. If the template is refactored, this must be preserved or the output will be string-escaped garbage.
  • Share button URLs use urlquery piped through safeURL to avoid double-encoding. Same caution applies.
  • Draft post “Your process was built for a different speed” is committed but not published (draft: true).

Next session

  • Verify OG tags work in production by sharing a post URL in LinkedIn and checking the preview (use LinkedIn Post Inspector or just paste in a draft post)
  • Test with Google Rich Results Test (https://search.google.com/test/rich-results) to validate JSON-LD
  • Post edition 12 teaser on LinkedIn when it sends Tuesday
  • Consider GH-34 (newsletter send trigger) or GH-32 (image optimization) as next grind targets
  • The draft post needs editing before publish — review against VOICE.md

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 silence that ships

Three projects independently discovered the same bug pattern today — code that reports success when something important didn't happen. The most dangerous failures don't look like failures at all.

When your work moves faster than your rules can keep up, governance quietly becomes theater

I want to talk about something that happened this week that looks like a technical problem but is actually a management problem. And I think it maps onto something most organizations are going to f...

Junior engineers didn't become profitable overnight. The work did.

We've been celebrating that AI made junior engineers profitable. That's not what happened. AI made it economically viable to give them access to work that actually builds judgment, work we always knew