My Blog
Searching...
No results found
Home About Posts Bookmarks

All Posts

22 articles

Roger
August 25, 2026 1 min read

Work in Progress

This post is still being written.

August 24, 2026 1 min read

Notes on Simplicity

Simplicity isn't the absence of complexity. It's the result of understanding a problem well enough to solve it cleanly.

Opinion
August 24, 2026 1 min read

A Weekend with a Side Project

No stakeholders, no deadlines, no Jira tickets. Just you and a dumb idea that might turn into something.

Creativity
August 24, 2026 1 min read

Designing with Constraints

Limitations aren't obstacles to creativity. They're the structure that makes creativity possible.

Creativity
August 24, 2026 2 min read

Small Tools, Big Impact

The best developer tools do one thing well and get out of your way. A love letter to focused software.

Tools
August 24, 2026 2 min read

Learning in Public

Writing about what you're learning is the fastest way to find out what you don't actually understand.

Opinion
EmDash Editorial
August 24, 2026 1 min read

The Case for Static

Static sites aren't a step backwards. They're what you get when you take performance and simplicity seriously.

Opinion Web Development
EmDash Editorial , Guest Contributor
August 24, 2026 1 min read

Building for the Long Term

The frameworks will change. The databases will change. What survives is the clarity of your thinking.

Opinion
Roger
July 23, 2026 10 min read

Context Engineering for Production Agents: Sources, Boundaries, and Evaluation

A practical framework for giving production agents the right evidence, the right limits, and a measurable definition of done.

AI Agents
Roger
July 7, 2026 5 min read

Your Astro API Route Can Be an MCP Server

Most MCP tutorials assume a standalone process. Here's how to expose one as just another Astro API route using Streamable HTTP — same auth, same deploy pipeline, no second app to maintain.

AI Agents Astro
Roger
July 1, 2026 3 min read

Talk to Your Datastar Chat: Voice Input with the Web Speech API

Extending the Datastar chat widget with the browser's native SpeechRecognition API — no new backend, no transcription service, just one more way to fill the same signal.

AI Astro Code
Roger
June 7, 2026 5 min read

Run the Whole Stack Locally: Datastar + Astro + Ollama, No Cloud Bill

Take the Astro + Datastar + Vercel AI SDK stack from this series and run it entirely on your own machine with Ollama — no API key, no per-token cost, no data leaving your laptop. It's a one-import change.

AI Astro Code
Roger
June 6, 2026 4 min read

Streaming Structured Output into a Datastar UI (a Card That Fills Itself In)

Stream typed, structured data from the Vercel AI SDK and watch a card build itself field by field in a Datastar UI — using streamText with output, the v6 replacement for streamObject. No React.

AI Astro Code
Roger
June 6, 2026 8 min read

How to use Claude Code to QA your website

My dialer QAs itself: Claude Code logs in, dials a list of Twilio test numbers — a voicemail, an IVR, a simulated gatekeeper — records what happened vs. what should have, and files GitHub issues for another agent to fix.

AI Code
Roger
June 5, 2026 5 min read

Giving Your Datastar Chat Real Tools with the Vercel AI SDK v6 Agent

Turn the streaming chat widget into an agent that calls tools — and stream the tool-call status live into the conversation. Astro, Datastar, and the AI SDK v6 ToolLoopAgent, no React.

AI Astro Code
Roger
June 4, 2026 5 min read

Build a Streaming AI Chat Widget with Astro, Datastar, and the Vercel AI SDK

A full multi-turn chat widget with live token streaming — where the server owns the conversation and the DOM is just the view. No React, no useChat, no client framework.

AI Astro Code
Roger
June 3, 2026 4 min read

Add an AI "Summarize This Page" Button to Any Astro Site with Datastar

A small, genuinely useful build: a button that streams an AI summary of the current page into a panel, using Astro, Datastar, and the Vercel AI SDK — no React, no client framework.

AI Astro Code
Roger
June 2, 2026 5 min read

Streaming LLM Responses into a Datastar UI with the Vercel AI SDK

The Vercel AI SDK's useChat only ships React, Vue, and Svelte bindings. Here's the small, reusable pattern for streaming AI tokens into a plain Datastar UI instead — no framework required

AI Astro Code
Roger
June 1, 2026 3 min read

Building AI Apps with Astro, Datastar & the Vercel AI SDK (a 6-Part Series)

The Vercel AI SDK's useChat only ships React, Vue, and Svelte bindings. This six-part series builds real AI apps — chat, agents, structured output, local models — with no client framework at all, using Astro, Datastar, and one small streaming pattern

AI Astro Datastar
Roger
May 29, 2026 6 min read

How to use VAPID web push notifications with Astro

You don't need OneSignal or Firebase to send push notifications. Web push with VAPID keys is built into every modern browser — here's the full setup in Astro: service worker, subscribe flow, SSR endpoints, and sending from the server.

Astro Code
Roger
April 6, 2026 4 min read

Building a Streaming URL Summarizer with Astro, Datastar, and the Vercel AI SDK

How I wired up a tiny TLDR tool that takes a URL, extracts the article, and streams a Markdown summary back to the browser in real time — using Astro SSR, Datastar for reactivity, and the Vercel AI SDK for the model call.

AI Astro Code
Roger
February 28, 2026 6 min read

Why I’m migrating from HTMX + Alpine to Datastar

I've been a big fan of HTMX + Alpine for a long time, the combination just lets you create powerful reactive web apps, but recently I've made the decision to move from HTMX + Alpine to Datastar for various reasons and the result means a better experience for users.

Astro Code Datastar
My Blog

Thoughts on building for the web

Navigate

  • Home
  • All Posts
  • Contact
  • Pricing
  • Home

Connect

  • RSS Feed

About

A blog about software, design, and the occasional stray thought.

Powered by EmDash