This is the first roundup I’m doing monthly instead of weekly. Weekly was the right cadence for a narrow slice of work — RPC maintenance, one framework decision, one week’s frustration. It’s the wrong cadence for a month that included a full site redesign, a real SEO audit, watching a protocol I care about reconsider its whole architecture, and starting a business with my son. Some of these threads move at a weekly pace. Most of them don’t. Monthly is closer to the truth.
🎨 Rebuilding mikezupper.com — dark-first, zero JS, and a color you can actually pick
This site got rebuilt from the ground up this month, in five deliberate phases: semantic HTML and structure fixes first, then a popover-based nav that let me delete the hamburger menu’s JavaScript entirely, then motion/focus/viewport hygiene, then a real CSS architecture (cascade layers, oklch color, light-dark() theming instead of a duplicated .dark variable set), and finally typography and view-transition polish. The semantic-HTML and CSS-architecture work leaned directly on two of my own Claude Code skills — semantic-html-skill and modern-css-skill — the same two I wrote up in Stop Letting Your Agent Write Div Soup.
Then I redesigned it again on top of that foundation — dark-first now, electric blue by default, and a palette picker in the header so you’re not stuck with my taste. Five presets, a full hue slider, your choice persisted and restored on load. The reading progress bar, the reveal-on-scroll cards, and the shared-element transition where a post card’s title morphs into the post’s headline are all driven by scroll-driven animations and view transitions — zero JavaScript beyond the ~20-line inline theme toggle. The site ships no JS bundles.
None of that shipped clean on the first pass. The sticky header rule initially matched every <header> on the page, not just the site banner, so post-page metadata cards started sticking to the viewport and overlapping content. Post dates were rendering a day early because pubDate is UTC midnight and the display logic wasn’t. And the saved theme was restoring after first paint, so light-theme visitors got a flash of the dark-first default and a console full of AbortError from skipped view transitions. All three are fixed now, and each one taught me something about where “it works on my machine” quietly stops being true.
🔍 An actual SEO audit, and making sure these bugs don’t come back
I pulled Google Search Console exports for the first time — Coverage, Crawl Stats, Performance — and went through them against google-seo-skill, a Claude Code skill I built packaging Google’s own Search Central guidance, instead of assuming the sitemap was fine because it existed. It wasn’t fine. www.mikezupper.com was serving the entire site with no redirect to the apex, every internal tag link was missing its trailing slash and costing a needless redirect, a casing inconsistency ("Javascript" vs "JavaScript") had built two duplicate tag pages, and about 40 tag archive pages had exactly one post each — thin, near-duplicate content that Google had correctly decided wasn’t worth indexing.
All of that’s fixed now: a Cloudflare redirect rule for the www host, corrected links, case-insensitive tag deduplication at build time, and a real threshold — a tag page only gets indexed once three or more posts share it, everything below that gets noindex, follow instead of competing for a results slot with nothing unique to say. I also consolidated 15 redundant tags that had accumulated on a handful of posts tagging every sub-topic they touched in passing.
The part I actually care about long-term: I stopped treating this as a one-time cleanup. The repo now has a real README (it was still the unmodified Astro starter template — that’s embarrassing in hindsight), an MIT license, a GitHub Actions build check on every push, and a small docs/ set — architecture, conventions, and a living lessons-learned log — adapted from OpenAI’s harness-engineering writeup, scaled down to what a one-person static blog actually needs. The goal is that the next time I or an agent touches the tag system, the reason not to repeat this mistake is written down, not just remembered.
✍️ What I published this month
- Stop Letting Your Agent Write Div Soup — why semantic HTML and modern CSS matter more, not less, when an AI agent is writing your markup, plus the skills I use to enforce it.
- Stop Throwing Exceptions — railway-oriented error handling in TypeScript with Effect, and why I stopped reaching for
throw. - The Platform Is the Framework — a three-part series on web components and Lit: Part 1: the metaframework tax, Part 2: SSR/SSG/CSR from one route table, and Part 3: five example apps that put it all together.
👨👦 On the personal side: college visits, and building something real with my son
My son’s been looking at colleges, and this month turned into a string of campus visits as a family — Drexel, Rowan University, Immaculata University, Thomas Jefferson University, and East Stroudsburg University so far, with a few more on the calendar. It’s a strange thing watching him try on futures in real time.
Separately, but not really separately, we started a business together: M2Z Design, a father/son web design and management agency. The point isn’t the agency — it’s that I wanted a real, high-stakes way to teach him entrepreneurship and sales, not a textbook version of it. We’re running it on The E-Myth Revisited as the operating philosophy: positions before people (an org chart with Sales, Production, Ops, Finance, Infrastructure, each with a one-page agreement — result owned, work included, how it’s measured), a weekly scoreboard we update from day one even when every number is zero, and milestones instead of calendars — we advance when a gate is passed, not when a week elapses, because calendars create the feeling of progress and gates create the actual thing. Every recurring task eventually gets written down as an SOP, and the bar for “done” is whether a stranger of average skill could run it from the doc alone. We’ve got a launch sprint planned through the end of August. More on how that actually goes once there’s real data instead of a plan.
🎬 Livepeer 2.0 and the move toward an agent platform
I’ve been following — and weighing in on — the Livepeer 2.0 roadmap discussions this month. The short version: Livepeer is proposing to become an “agentic-first, open video agent platform,” not just a transcoding network. That’s three things happening together. First, protocol changes aimed at tying LPT’s value to actual usage: a Burn-Mint Equilibrium model where fees buy LPT from the market and node operators earn newly-minted LPT proportional to honest work, a stake-elected validator set scoring node quality (since a protocol can’t cryptographically verify AI work the way it can verify transcoding), and fixed bonds per node replacing the current 100-node cap. Second, expanding the network past GPU-only transcoding into broader compute — local model hosting, API passthrough, specialized tasks. Third, and the part that’s easiest to actually see: the Livepeer Agent, an open-source MCP connector that turns a prompt into a finished video, orchestrating across models and the network’s compute providers, usable directly from Claude, ChatGPT, or whatever agent you’re already working in.
The community reaction has been what you’d want it to be — real support for the direction, and real pushback on the details: whether fee-based rewards starve long-tail/niche node operators, whether validators can genuinely evaluate independently instead of piggybacking on each other’s scores, and whether large institutional compute providers end up dominating both supply and validation at once. Closed beta for the Agent launches August 13, a litepaper is due late August, and a protocol vote is targeted for Q4. I’ll have more to say once there’s something concrete to react to instead of a roadmap.
🦞 BlueClaw: quietly leaving beta
Real, unglamorous forward motion on BlueClaw this month. The “beta” framing is retired across the stack, and the welcome credit dropped from $25 to $5 to match — the kind of change that only makes sense once you trust the thing is actually working. Beyond that: an OpenAI-compatible /v1/models endpoint so existing tooling can point at BlueClaw without modification, the portal restructured as its own git submodule instead of an embedded app, a welcome-email flow on first sign-in instead of auto-minting keys, and the first design work on weighted fairshare node selection — a fairer way to distribute work across the network than pure first-come allocation. Small commits, but the kind that add up to something you can actually hand someone else and trust.
🧪 Agent interop and generative UI — early research
I’ve also been digging into three projects at the intersection of agent interoperability and UI: the Microsoft Agent Framework (Microsoft’s unified successor to Semantic Kernel and AutoGen for building and orchestrating agents), the A2A protocol (Agent2Agent — now a Linux Foundation project, letting agents built on different frameworks discover and talk to each other instead of every vendor inventing its own wire format), and A2UI (Google’s spec for an agent to emit a declarative UI description instead of raw HTML or code, so the result renders natively and portably across web, mobile, and desktop).
The thread connecting all three, for me: how much of an agent should be deterministic and how much should be generative. I’m tinkering with agents that stay deterministic where it matters — the actual decision logic, tool calls, guardrails — but generate their presentation layer, and a bit of personality and voice, through an LLM on top of that fixed skeleton. Early days. More to come once there’s something worth showing instead of just describing.
🚧 What’s next
- A real writeup once the M2Z Design launch sprint hits its first gate (or doesn’t)
- Livepeer 2.0’s litepaper, once it lands — worth a dedicated post once the protocol mechanics are concrete instead of proposed
- BlueClaw’s weighted fairshare selection, once there’s a design worth explaining
- A retrospective on the site redesign now that it’s had a month to actually live in
- Whatever comes out of the Microsoft Agent Framework / A2A / A2UI tinkering — deterministic agents with a generative, personalized front end
That’s July. More code, more family, more infrastructure I don’t fully control yet — same as most months, just written down properly this time.
— Mike
