<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>SAHD.dev</title><description>Code between the chaos. A journal of real projects, built on stolen hours, by a dad who codes — and a kid who taps.</description><link>https://sahd.dev/</link><language>en-us</language><item><title>Twelve Raycast snippets for parents who code</title><link>https://sahd.dev/tools/twelve-raycast-snippets-for-parents-who-code/</link><guid isPermaLink="true">https://sahd.dev/tools/twelve-raycast-snippets-for-parents-who-code/</guid><description>Half of these are technical. Half of these are &apos;remind me about the lunchbox.&apos; All twelve save me time on a normal Tuesday.</description><pubDate>Sun, 24 May 2026 21:26:57 GMT</pubDate></item><item><title>Warp + Zed, four months in</title><link>https://sahd.dev/tools/warp-zed-four-months-in/</link><guid isPermaLink="true">https://sahd.dev/tools/warp-zed-four-months-in/</guid><description>I replaced iTerm and VS Code at the start of the year. Here&apos;s what stuck, what didn&apos;t, and what I&apos;d tell someone considering the swap.</description><pubDate>Sun, 24 May 2026 21:26:57 GMT</pubDate></item><item><title>Tap shoes and Tailwind: a Saturday</title><link>https://sahd.dev/dad/tap-shoes-and-tailwind-a-saturday/</link><guid isPermaLink="true">https://sahd.dev/dad/tap-shoes-and-tailwind-a-saturday/</guid><description>A Saturday that included a tap recital, a Tailwind refactor, and the realization that both require practice and rhythm.</description><pubDate>Sun, 24 May 2026 21:26:57 GMT</pubDate></item><item><title>The 5 AM commit</title><link>https://sahd.dev/dad/the-5-am-commit/</link><guid isPermaLink="true">https://sahd.dev/dad/the-5-am-commit/</guid><description>How I ship code before my kid wakes up. The daily routine. When the work actually happens. Why the constraints are the feature, not the bug.</description><pubDate>Sun, 24 May 2026 21:26:57 GMT</pubDate></item><item><title>Hello world (again)</title><link>https://sahd.dev/dad/hello-world-again/</link><guid isPermaLink="true">https://sahd.dev/dad/hello-world-again/</guid><description>Why SAHD.dev is starting over. What the old site was — music metaphors and all — and what this one will be. Plus the kid who doesn&apos;t care about any of it.</description><pubDate>Sun, 24 May 2026 21:26:57 GMT</pubDate></item><item><title>Cloudflare D1 migrations without tears</title><link>https://sahd.dev/dev/cloudflare-d1-migrations-without-tears/</link><guid isPermaLink="true">https://sahd.dev/dev/cloudflare-d1-migrations-without-tears/</guid><description>Three months of running D1 in production. What I do for migrations, and the script I run before every deploy.</description><pubDate>Sun, 24 May 2026 21:26:57 GMT</pubDate></item><item><title>Discriminated unions, explained at 5 AM</title><link>https://sahd.dev/dev/discriminated-unions-explained-at-5-am/</link><guid isPermaLink="true">https://sahd.dev/dev/discriminated-unions-explained-at-5-am/</guid><description>The TypeScript pattern I reach for when I have ninety minutes and need to ship a feature with no bugs. Short, with diagrams.</description><pubDate>Sun, 24 May 2026 21:26:57 GMT</pubDate></item><item><title>AI-assisted development: my honest workflow</title><link>https://sahd.dev/dev/ai-assisted-development-my-honest-workflow/</link><guid isPermaLink="true">https://sahd.dev/dev/ai-assisted-development-my-honest-workflow/</guid><description>How I actually use Claude, Cursor, and Copilot. What it&apos;s good at, what it isn&apos;t, and the three places it makes me slower.</description><pubDate>Sun, 24 May 2026 21:26:57 GMT</pubDate></item><item><title>emDash first impressions: building SAHD.dev on Cloudflare&apos;s new CMS</title><link>https://sahd.dev/dev/emdash-first-impressions-building-sahddev-on-cloudflares-new-cms/</link><guid isPermaLink="true">https://sahd.dev/dev/emdash-first-impressions-building-sahddev-on-cloudflares-new-cms/</guid><description>A real review of setting up emDash. What works, what&apos;s rough, what&apos;s missing. The bugs I filed and the ones I patched.</description><pubDate>Sun, 24 May 2026 21:26:57 GMT</pubDate></item><item><title>Signuppity data model: designing the schema</title><link>https://sahd.dev/build/signuppity-data-model-designing-the-schema/</link><guid isPermaLink="true">https://sahd.dev/build/signuppity-data-model-designing-the-schema/</guid><description>The D1 schema. Slots, signups, users, orgs. Why these choices and what I had to throw out twice.</description><pubDate>Sun, 24 May 2026 21:26:57 GMT</pubDate></item><item><title>Choosing the stack: Astro, emDash, Cloudflare</title><link>https://sahd.dev/build/choosing-the-stack-astro-emdash-cloudflare/</link><guid isPermaLink="true">https://sahd.dev/build/choosing-the-stack-astro-emdash-cloudflare/</guid><description>Why this stack and not the obvious one. What emDash is and why it matters when you have ninety minutes a day. Honest pros and cons.</description><pubDate>Sun, 24 May 2026 21:26:57 GMT</pubDate></item><item><title>Why I&apos;m building a SignupGenius killer</title><link>https://sahd.dev/build/why-im-building-a-signupgenius-killer/</link><guid isPermaLink="true">https://sahd.dev/build/why-im-building-a-signupgenius-killer/</guid><description>The problem with SignupGenius. Why a developer would bother competing. The vision for Signuppity, and how I&apos;m scoping the MVP between a real job and a six-year-old.</description><pubDate>Sun, 24 May 2026 21:26:57 GMT</pubDate></item></channel></rss>