41554 blogs · [
{
"id": "01a087d7-22ba-727c-b208-5da12d28ac82",
"title": "The Agentic OS in Practice: Running Multiple Agents Without Losing Control",
"url": "https://rogerstringer.com/blog/agentic-os-in-practice",
"published_at": "2026-09-06T00:00:00+00:00"
},
{
"id": "01a087d7-22ba-727c-b208-5da12dbc339a",
"title": "Your AI Agent Needs a Definition of Done",
"url": "https://rogerstringer.com/blog/agent-definition-of-done",
"published_at": "2026-09-03T00:00:00+00:00"
},
{
"id": "01a087d7-22ba-727c-b208-5da12e4a4525",
"title": "Setting Up Dozzle with Auth on Coolify",
"url": "https://rogerstringer.com/blog/setting-up-dozzle-with-auth-on-coolify",
"published_at": "2026-09-02T00:00:00+00:00"
},
{
"id": "01a087d7-22ba-727c-b208-5da12eae6f38",
"title": "How to Build an Agent QA Loop That Files Its Own GitHub Issues",
"url": "https://rogerstringer.com/blog/agent-qa-loop-github-issues",
"published_at": "2026-08-30T00:00:00+00:00"
},
{
"id": "01a087d7-22ba-727c-b208-5da12f7c3544",
"title": "Context Engineering for Production Agents: Sources, Boundaries, and Evaluation",
"url": "https://rogerstringer.com/blog/context-engineering-production-agents",
"published_at": "2026-07-23T00:00:00+00:00"
},
{
"id": "01a087d7-22ba-727c-b208-5da12fe53154",
"title": "Your Astro API Route Can Be an MCP Server",
"url": "https://rogerstringer.com/blog/mcp-server-astro-api-routes",
"published_at": "2026-07-07T00:00:00+00:00"
},
{
"id": "01a087d7-22ba-727c-b208-5da130364367",
"title": "Talk to Your Datastar Chat: Voice Input with the Web Speech API",
"url": "https://rogerstringer.com/blog/voice-input-datastar-chat-web-speech-api",
"published_at": "2026-07-01T00:00:00+00:00"
},
{
"id": "01a087d7-22ba-727c-b208-5da130fb9db0",
"title": "Run the Whole Stack Locally: Datastar + Astro + Ollama, No Cloud Bill",
"url": "https://rogerstringer.com/blog/local-first-datastar-ollama",
"published_at": "2026-06-07T00:00:00+00:00"
},
{
"id": "01a087d7-22ba-727c-b208-5da1315a8dcf",
"title": "How to use Claude Code to QA your website",
"url": "https://rogerstringer.com/blog/how-to-use-claude-code-to-qa-your-website",
"published_at": "2026-06-06T00:00:00+00:00"
},
{
"id": "01a087d7-22ba-727c-b208-5da131e33e1a",
"title": "Streaming Structured Output into a Datastar UI (a Card That Fills Itself In)",
"url": "https://rogerstringer.com/blog/streaming-structured-output-datastar",
"published_at": "2026-06-06T00:00:00+00:00"
},
{
"id": "01a087d7-22ba-727c-b208-5da132d588d5",
"title": "Giving Your Datastar Chat Real Tools with the Vercel AI SDK v6 Agent",
"url": "https://rogerstringer.com/blog/datastar-agent-tools-vercel-ai-sdk",
"published_at": "2026-06-05T00:00:00+00:00"
},
{
"id": "01a087d7-22ba-727c-b208-5da13369c7f5",
"title": "Build a Streaming AI Chat Widget with Astro, Datastar, and the Vercel AI SDK",
"url": "https://rogerstringer.com/blog/streaming-ai-chat-widget-astro-datastar",
"published_at": "2026-06-04T00:00:00+00:00"
},
{
"id": "01a087d7-22ba-727c-b208-5da1344aea99",
"title": "Add an AI \"Summarize This Page\" Button to Any Astro Site with Datastar",
"url": "https://rogerstringer.com/blog/ai-summarize-button-astro-datastar",
"published_at": "2026-06-03T00:00:00+00:00"
},
{
"id": "01a087d7-22ba-727c-b208-5da13534fcab",
"title": "Streaming LLM Responses into a Datastar UI with the Vercel AI SDK",
"url": "https://rogerstringer.com/blog/streaming-llm-datastar-vercel-ai-sdk",
"published_at": "2026-06-02T00:00:00+00:00"
},
{
"id": "01a087d7-22ba-727c-b208-5da1360e5701",
"title": "Building AI Apps with Astro, Datastar & the Vercel AI SDK (a 6-Part Series)",
"url": "https://rogerstringer.com/blog/ai-apps-with-datastar",
"published_at": "2026-06-01T00:00:00+00:00"
},
{
"id": "01a087d7-22ba-727c-b208-5da1370de416",
"title": "How to use VAPID web push notifications with Astro",
"url": "https://rogerstringer.com/blog/vapid-web-push-notifications-astro",
"published_at": "2026-05-29T00:00:00+00:00"
},
{
"id": "01a087d7-22ba-727c-b208-5da13784ab80",
"title": "Building a Streaming URL Summarizer with Astro, Datastar, and the Vercel AI SDK",
"url": "https://rogerstringer.com/blog/streaming-url-summarizer-astro-datastar-vercel-ai-sdk",
"published_at": "2026-04-06T00:00:00+00:00"
},
{
"id": "01a087d7-22ba-727c-b208-5da138741103",
"title": "Why I’m migrating from HTMX + Alpine to Datastar",
"url": "https://rogerstringer.com/blog/why-im-migrating-from-htmx-alpine-to-datastar",
"published_at": "2026-02-28T00:00:00+00:00"
},
{
"id": "01a087d7-22ba-727c-b208-5da1389cc4d4",
"title": "3 ingredient Keto Chaffle Recipe",
"url": "https://rogerstringer.com/blog/keto-chaffle-recipe",
"published_at": "2026-01-08T00:00:00+00:00"
},
{
"id": "01a087d7-22ba-727c-b208-5da138ebb9dd",
"title": "Bun is joining Anthropic",
"url": "https://rogerstringer.com/blog/bun-is-joining-anthropic",
"published_at": "2025-12-02T00:00:00+00:00"
},
{
"id": "01a087d7-22ba-727c-b208-5da1393dc5e3",
"title": "Self-Hosting n8n on Railway",
"url": "https://rogerstringer.com/blog/self-hosting-n8n-on-railway",
"published_at": "2025-08-04T00:00:00+00:00"
},
{
"id": "01a087d7-22ba-727c-b208-5da1396bb26e",
"title": "Replit AI agent deletes user's entire production database",
"url": "https://rogerstringer.com/blog/replit-ai-agent-deletes-users-entire-production-database",
"published_at": "2025-07-22T00:00:00+00:00"
},
{
"id": "01a087d7-22ba-727c-b208-5da139bebae8",
"title": "Windsurf's New Chapter",
"url": "https://rogerstringer.com/blog/windsurfs-new-chapter",
"published_at": "2025-07-14T00:00:00+00:00"
},
{
"id": "01a087d7-22ba-727c-b208-5da13a11c3cd",
"title": "OpenAI’s Windsurf deal is off — and Windsurf’s CEO is going to Google",
"url": "https://rogerstringer.com/blog/google-windsurf-ceo-openai",
"published_at": "2025-07-11T00:00:00+00:00"
},
{
"id": "01a087d7-22ba-727c-b208-5da13ad47cda",
"title": "The Curious Case of Apple and Perplexity: Do They Need Each Other?",
"url": "https://rogerstringer.com/blog/the-curious-case-of-apple-and-perplexity",
"published_at": "2025-06-22T00:00:00+00:00"
}
] posts Claim your blog