Writing

Notes.

Working notes on frontend engineering, design systems, and performance.

  1. The iframe is back, and AI brought it with it

    MCP Apps let tools ship their own frontend, rendered inside a sandboxed iframe in the host. One of the oldest browser features turns out to be well suited to a problem we're only beginning to deal with: running UI from a server you don't control.
    7 min read
  2. Undo might be the most important AI feature nobody talks about

    Confirmation dialogs in front of every agent action produce a clever system whose main job is asking you to click OK. Reversible actions, recorded changes and task-level checkpoints might matter more, with permission saved for the few places where undo stops working.
    6 min read
  3. React state is easy. Agent state is weird.

    Tools, approvals, handoffs and resumable runs break the loading/success/error model. What happens if you treat an agent run as a sequence of events instead of a status.
    7 min read
  4. HTML inside WebGPU sounds wrong. That is why it is interesting.

    Chrome is experimenting with letting real DOM become a texture that Canvas, WebGL and WebGPU can draw. The HTML stays HTML. The GPU just gets pixels. I built a small demo to find where that split breaks.
    5 min read
  5. Your website has a new user: the AI agent

    WebMCP points at a web where AI agents call your product's capabilities directly instead of driving your UI. What that means for semantic HTML, frontend architecture and undo.
    6 min read
  6. Building collaborative UI without Redis, Kafka or a message broker

    One Durable Object per room instead of Redis Pub/Sub and a fleet of WebSocket servers: how Cloudflare's model simplifies collaborative UI, and what you trade away.
    6 min read
  7. How real time does your dashboard actually need to be?

    Polling, long polling, SSE, streaming fetch, WebSockets, and WebTransport: one dashboard built six ways, and why SSE is what I would ship.
    8 min read