<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Beyond CRUD</title><link>https://beyondcrud.dev</link><description>Free system design for developers: caching, queues, databases, scaling, failures and AI in production, plus teardowns of new apps, the AI tools and the open source alternatives worth knowing.</description><item><title>One word keeps your table writable while an index builds</title><link>https://beyondcrud.dev/writing/postgres-create-index-concurrently/</link><guid>https://beyondcrud.dev/writing/postgres-create-index-concurrently/</guid><pubDate>Wed, 21 Oct 2026 00:00:00 GMT</pubDate><description>CREATE INDEX vs CREATE INDEX CONCURRENTLY in Postgres, and the four things that bite people when they switch.</description></item><item><title>An AI agent just got a 503 from your API</title><link>https://beyondcrud.dev/writing/ai-agents-and-your-api/</link><guid>https://beyondcrud.dev/writing/ai-agents-and-your-api/</guid><pubDate>Tue, 20 Oct 2026 00:00:00 GMT</pubDate><description>A human gives up after two refreshes. An agent doesn't. Four things I'd ship on any API that agents will call.</description></item><item><title>How Dead Letter Exchanges Prevent Distributed Systems From Silently Failing</title><link>https://beyondcrud.dev/writing/how-dead-letter-exchanges-prevent/</link><guid>https://beyondcrud.dev/writing/how-dead-letter-exchanges-prevent/</guid><pubDate>Wed, 29 Jul 2026 00:00:00 GMT</pubDate><description>One bad payment event can keep thousands of healthy events waiting. The interesting part is not what a DLX is - it is deciding which failures should leave the hot path, and what happens after they do.</description></item></channel></rss>