<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Roger Stringer</title><description>Personal site of Roger Stringer</description><link>https://rogerstringer.com/</link><language>en-us</language><item><title>Run the Whole Stack Locally: Datastar + Astro + Ollama, No Cloud Bill</title><link>https://rogerstringer.com/blog/local-first-datastar-ollama</link><guid>https://rogerstringer.com/blog/local-first-datastar-ollama</guid><description>&lt;![CDATA[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&apos;s a one-import change.]]&gt;</description><pubDate>Sun, 07 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Streaming Structured Output into a Datastar UI (a Card That Fills Itself In)</title><link>https://rogerstringer.com/blog/streaming-structured-output-datastar</link><guid>https://rogerstringer.com/blog/streaming-structured-output-datastar</guid><description>&lt;![CDATA[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.]]&gt;</description><pubDate>Sat, 06 Jun 2026 00:00:00 GMT</pubDate></item><item><title>How to use Claude Code to QA your website</title><link>https://rogerstringer.com/blog/how-to-use-claude-code-to-qa-your-website</link><guid>https://rogerstringer.com/blog/how-to-use-claude-code-to-qa-your-website</guid><description>&lt;![CDATA[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.]]&gt;</description><pubDate>Sat, 06 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Giving Your Datastar Chat Real Tools with the Vercel AI SDK v6 Agent</title><link>https://rogerstringer.com/blog/datastar-agent-tools-vercel-ai-sdk</link><guid>https://rogerstringer.com/blog/datastar-agent-tools-vercel-ai-sdk</guid><description>&lt;![CDATA[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.]]&gt;</description><pubDate>Fri, 05 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Build a Streaming AI Chat Widget with Astro, Datastar, and the Vercel AI SDK</title><link>https://rogerstringer.com/blog/streaming-ai-chat-widget-astro-datastar</link><guid>https://rogerstringer.com/blog/streaming-ai-chat-widget-astro-datastar</guid><description>&lt;![CDATA[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.]]&gt;</description><pubDate>Thu, 04 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Add an AI &quot;Summarize This Page&quot; Button to Any Astro Site with Datastar</title><link>https://rogerstringer.com/blog/ai-summarize-button-astro-datastar</link><guid>https://rogerstringer.com/blog/ai-summarize-button-astro-datastar</guid><description>&lt;![CDATA[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.]]&gt;</description><pubDate>Wed, 03 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Streaming LLM Responses into a Datastar UI with the Vercel AI SDK</title><link>https://rogerstringer.com/blog/streaming-llm-datastar-vercel-ai-sdk</link><guid>https://rogerstringer.com/blog/streaming-llm-datastar-vercel-ai-sdk</guid><description>&lt;![CDATA[The Vercel AI SDK&apos;s useChat only ships React, Vue, and Svelte bindings. Here&apos;s the small, reusable pattern for streaming AI tokens into a plain Datastar UI instead — no framework required]]&gt;</description><pubDate>Tue, 02 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Building AI Apps with Astro, Datastar &amp; the Vercel AI SDK (a 6-Part Series)</title><link>https://rogerstringer.com/blog/ai-apps-with-datastar</link><guid>https://rogerstringer.com/blog/ai-apps-with-datastar</guid><description>&lt;![CDATA[The Vercel AI SDK&apos;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]]&gt;</description><pubDate>Mon, 01 Jun 2026 00:00:00 GMT</pubDate></item><item><title>How to use VAPID web push notifications with Astro</title><link>https://rogerstringer.com/blog/vapid-web-push-notifications-astro</link><guid>https://rogerstringer.com/blog/vapid-web-push-notifications-astro</guid><description>&lt;![CDATA[You don&apos;t need OneSignal or Firebase to send push notifications. Web push with VAPID keys is built into every modern browser — here&apos;s the full setup in Astro: service worker, subscribe flow, SSR endpoints, and sending from the server.]]&gt;</description><pubDate>Fri, 29 May 2026 00:00:00 GMT</pubDate></item><item><title>Building a Streaming URL Summarizer with Astro, Datastar, and the Vercel AI SDK</title><link>https://rogerstringer.com/blog/streaming-url-summarizer-astro-datastar-vercel-ai-sdk</link><guid>https://rogerstringer.com/blog/streaming-url-summarizer-astro-datastar-vercel-ai-sdk</guid><description>&lt;![CDATA[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.]]&gt;</description><pubDate>Mon, 06 Apr 2026 00:00:00 GMT</pubDate></item><item><title>Why I’m migrating from HTMX + Alpine to Datastar</title><link>https://rogerstringer.com/blog/why-im-migrating-from-htmx-alpine-to-datastar</link><guid>https://rogerstringer.com/blog/why-im-migrating-from-htmx-alpine-to-datastar</guid><description>&lt;![CDATA[I&apos;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&apos;ve made the decision to move from HTMX + Alpine to Datastar for various reasons and the result means a better experience for users. ]]&gt;</description><pubDate>Sat, 28 Feb 2026 00:00:00 GMT</pubDate></item><item><title>3 ingredient Keto Chaffle Recipe</title><link>https://rogerstringer.com/blog/keto-chaffle-recipe</link><guid>https://rogerstringer.com/blog/keto-chaffle-recipe</guid><description>&lt;![CDATA[My girlfriend and I made a resolution to get healthier this year, by being low carb, high protein, for some recipes we follow keto, for others, we don&apos;t.

One recipe we&apos;ve been enjoying are chaffles, these are keto waffles made of egg and cheese. I added a little almond flour for a savoury version. The texture is firm and just a little crispy. They&apos;re delicious whether you&apos;re counting carbs or not!]]&gt;</description><pubDate>Thu, 08 Jan 2026 00:00:00 GMT</pubDate></item><item><title>Bun is joining Anthropic</title><link>https://rogerstringer.com/blog/bun-is-joining-anthropic</link><guid>https://rogerstringer.com/blog/bun-is-joining-anthropic</guid><description>&lt;![CDATA[TLDR: Bun has been acquired by Anthropic. Anthropic is betting on Bun as the infrastructure powering Claude Code, Claude Agent SDK, and future AI coding products &amp; tools.]]&gt;</description><pubDate>Tue, 02 Dec 2025 00:00:00 GMT</pubDate></item><item><title>Self-Hosting n8n on Railway</title><link>https://rogerstringer.com/blog/self-hosting-n8n-on-railway</link><guid>https://rogerstringer.com/blog/self-hosting-n8n-on-railway</guid><description>&lt;![CDATA[n8n is a powerful workflow automation tool that helps connect different services and automate tasks, ideal for personal or small-scale use. ]]&gt;</description><pubDate>Mon, 04 Aug 2025 00:00:00 GMT</pubDate></item><item><title>Replit AI agent deletes user&apos;s entire production database</title><link>https://rogerstringer.com/blog/replit-ai-agent-deletes-users-entire-production-database</link><guid>https://rogerstringer.com/blog/replit-ai-agent-deletes-users-entire-production-database</guid><description>&lt;![CDATA[A browser-based AI-powered software creation platform called Replit appears to have gone rogue and deleted a live company database with thousands of entries. What may be even worse is that the Replit AI agent apparently tried to cover up its misdemeanors, and even ‘lied’ about its failures. The Replit CEO has responded, and there appears to have already been a lot of firefighting behind the scenes to rein in this AI tool.]]&gt;</description><pubDate>Tue, 22 Jul 2025 00:00:00 GMT</pubDate></item><item><title>Windsurf&apos;s New Chapter</title><link>https://rogerstringer.com/blog/windsurfs-new-chapter</link><guid>https://rogerstringer.com/blog/windsurfs-new-chapter</guid><description>&lt;![CDATA[Cognition, a San Francisco–based AI company, has finalised an agreement to acquire Windsurf, including its IP, product, trademark, and remaining workforce.]]&gt;</description><pubDate>Mon, 14 Jul 2025 00:00:00 GMT</pubDate></item><item><title>OpenAI’s Windsurf deal is off — and Windsurf’s CEO is going to Google</title><link>https://rogerstringer.com/blog/google-windsurf-ceo-openai</link><guid>https://rogerstringer.com/blog/google-windsurf-ceo-openai</guid><description>&lt;![CDATA[OpenAI’s deal to buy Windsurf is off, and Google will instead hire Windsurf CEO Varun Mohan, cofounder Douglas Chen, and some of Windsurf’s R&amp;D employees and bring them onto the Google DeepMind team, Google and Windsurf announced Friday.]]&gt;</description><pubDate>Fri, 11 Jul 2025 00:00:00 GMT</pubDate></item><item><title>The Curious Case of Apple and Perplexity: Do They Need Each Other?</title><link>https://rogerstringer.com/blog/the-curious-case-of-apple-and-perplexity</link><guid>https://rogerstringer.com/blog/the-curious-case-of-apple-and-perplexity</guid><description>&lt;![CDATA[According to Mark Gurman, Apple executives are in the early stages of mulling an acquisition of Perplexity.]]&gt;</description><pubDate>Sun, 22 Jun 2025 00:00:00 GMT</pubDate></item><item><title>A new path forward for WordPress, and for the open web</title><link>https://rogerstringer.com/blog/a-new-path-forward-for-wordpress-and-for-the-open-web</link><guid>https://rogerstringer.com/blog/a-new-path-forward-for-wordpress-and-for-the-open-web</guid><description>&lt;![CDATA[The goal of FAIR is not to fork WordPress. We’re still using the same core software. We’re not building a separate platform. We are adding a new distribution layer and putting our own governance on top of it. It’s a new path within WordPress, not outside it.]]&gt;</description><pubDate>Mon, 09 Jun 2025 00:00:00 GMT</pubDate></item><item><title>Wake up, Remix!</title><link>https://rogerstringer.com/blog/wake-up-remix</link><guid>https://rogerstringer.com/blog/wake-up-remix</guid><description>&lt;![CDATA[Remix v2 had become such a thin wrapper around React Router that an artificial separation developed between the two projects. ]]&gt;</description><pubDate>Fri, 30 May 2025 00:00:00 GMT</pubDate></item><item><title>Claude 4</title><link>https://rogerstringer.com/blog/claude-4</link><guid>https://rogerstringer.com/blog/claude-4</guid><description>&lt;![CDATA[Claude Opus 4 is the world’s best coding model, with sustained performance on complex, long-running tasks and agent workflows. Claude Sonnet 4 is a significant upgrade to Claude Sonnet 3.7, delivering superior coding and reasoning while responding more precisely to your instructions.]]&gt;</description><pubDate>Sun, 25 May 2025 00:00:00 GMT</pubDate></item><item><title>MG Siegler, Predicting Epic’s Win in the Fight to Get Fortnite Back in the App Store</title><link>https://rogerstringer.com/blog/siegler-sweeney-fortnite-bank-shot</link><guid>https://rogerstringer.com/blog/siegler-sweeney-fortnite-bank-shot</guid><description>&lt;![CDATA[Again, Sweeney is not a moron, he has to know all of this. But why simply sit quietly when you have an excuse to poke the bear again and raise hell for your cause? So that’s what he’s doing. He wasn’t going to win the legal fight, but he could win the political one. And now he’s not going to win this legal fight, but he can win the pressure campaign. Especially important in the weeks leading up to WWDC...]]&gt;</description><pubDate>Thu, 22 May 2025 00:00:00 GMT</pubDate></item><item><title>Mozilla is killing Pocket</title><link>https://rogerstringer.com/blog/mozilla-is-killing-pocket</link><guid>https://rogerstringer.com/blog/mozilla-is-killing-pocket</guid><description>&lt;![CDATA[&quot;We’ve made the difficult decision to shut down Pocket on July 8, 2025. Thank you for being part of our journey over the years—we&apos;re proud of the impact Pocket has had for our users and communities. &quot;]]&gt;</description><pubDate>Thu, 22 May 2025 00:00:00 GMT</pubDate></item><item><title>How I Vibe Code</title><link>https://rogerstringer.com/blog/how-i-vibe-code</link><guid>https://rogerstringer.com/blog/how-i-vibe-code</guid><description>&lt;![CDATA[Vibe coding is great, using some sort of AI assistance to help code your app, but it isn&apos;t entirely as straight forward as some think. People tend to think they can just open up an IDE such as cursor or windsurf and ask it to build something but that&apos;s not how to achieve success with it.]]&gt;</description><pubDate>Mon, 19 May 2025 00:00:00 GMT</pubDate></item><item><title>Databricks is buying database startup Neon for about $1 billion</title><link>https://rogerstringer.com/blog/databricks-neon</link><guid>https://rogerstringer.com/blog/databricks-neon</guid><description>&lt;![CDATA[Data analytics startup Databricks said Wednesday that it is buying Neon, a cloud-based database software vendor, for about $1 billion.]]&gt;</description><pubDate>Wed, 14 May 2025 00:00:00 GMT</pubDate></item></channel></rss>