<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>dout.dev - May 2026</title>
    <link>https://dout.dev/months/2026-05/</link>
    <description>RSS feed for posts from May 2026</description>
    <atom:link href="https://dout.dev/months/2026-05.xml" rel="self" type="application/rss+xml" />
    <language>en</language>
    <lastBuildDate>Sat, 30 May 2026 00:00:00 GMT</lastBuildDate>
    <item>
      <title>Modern CSS Is Enough (Container Queries, Nesting, `:has()` - No Framework Required)</title>
      <link>https://dout.dev/posts/2026-05-30-modern-css-is-enough.html</link>
      <guid isPermaLink="true">https://dout.dev/posts/2026-05-30-modern-css-is-enough.html</guid>
      <pubDate>Sat, 30 May 2026 00:00:00 GMT</pubDate>
      <description>The short version (for the impatient)</description>
    </item>
    <item>
      <title>Vibe Coding With Rigor (Or: How to Use AI Without Your Codebase Turning Into a Dumpster Fire)</title>
      <link>https://dout.dev/posts/2026-05-26-vibe-coding-with-rigor.html</link>
      <guid isPermaLink="true">https://dout.dev/posts/2026-05-26-vibe-coding-with-rigor.html</guid>
      <pubDate>Tue, 26 May 2026 00:00:00 GMT</pubDate>
      <description>The term I am reclaiming (because &quot;vibe coding&quot; got a bad rap)</description>
    </item>
    <item>
      <title>CI/CD Around GitHub Pages (Or: How I Got Deploy Previews Without Paying Netlify)</title>
      <link>https://dout.dev/posts/2026-05-23-ci-cd-around-github-pages.html</link>
      <guid isPermaLink="true">https://dout.dev/posts/2026-05-23-ci-cd-around-github-pages.html</guid>
      <pubDate>Sat, 23 May 2026 00:00:00 GMT</pubDate>
      <description>The gap GitHub Pages leaves open (it&apos;s not that bad)</description>
    </item>
    <item>
      <title>Quality Gate: Linting, Formatting, and Verify (Or: How I Stopped Shipping Broken HTML)</title>
      <link>https://dout.dev/posts/2026-05-19-quality-gate-lint-format-verify.html</link>
      <guid isPermaLink="true">https://dout.dev/posts/2026-05-19-quality-gate-lint-format-verify.html</guid>
      <pubDate>Tue, 19 May 2026 00:00:00 GMT</pubDate>
      <description>Why the gate exists (because you will ship shit if you don&apos;t)</description>
    </item>
    <item>
      <title>SEO Metadata Without Rituals (Or: I Read 47 SEO Blog Posts So You Don&apos;t Have To)</title>
      <link>https://dout.dev/posts/2026-05-16-seo-metadata-without-rituals.html</link>
      <guid isPermaLink="true">https://dout.dev/posts/2026-05-16-seo-metadata-without-rituals.html</guid>
      <pubDate>Sat, 16 May 2026 00:00:00 GMT</pubDate>
      <description>The short version (TL;DR for the impatient)</description>
    </item>
    <item>
      <title>OG Images at Build Time (Or: How I Stopped Worrying and Learned to Love Sharp)</title>
      <link>https://dout.dev/posts/2026-05-12-og-images-at-build-time.html</link>
      <guid isPermaLink="true">https://dout.dev/posts/2026-05-12-og-images-at-build-time.html</guid>
      <pubDate>Tue, 12 May 2026 00:00:00 GMT</pubDate>
      <description>The problem and the usual solutions (none of which I wanted)</description>
    </item>
    <item>
      <title>Feeds and Sitemaps at Build Time (RSS Is Dead, Long Live RSS. Also JSON Feed.)</title>
      <link>https://dout.dev/posts/2026-05-09-feeds-and-sitemaps-at-build-time.html</link>
      <guid isPermaLink="true">https://dout.dev/posts/2026-05-09-feeds-and-sitemaps-at-build-time.html</guid>
      <pubDate>Sat, 09 May 2026 00:00:00 GMT</pubDate>
      <description>The distribution minimum (three files, that&apos;s it)</description>
    </item>
    <item>
      <title>Build Assets Pipeline (Or: How I Turned a Simple Blog Into an Image Processing Factory)</title>
      <link>https://dout.dev/posts/2026-05-05-build-assets-pipeline.html</link>
      <guid isPermaLink="true">https://dout.dev/posts/2026-05-05-build-assets-pipeline.html</guid>
      <pubDate>Tue, 05 May 2026 00:00:00 GMT</pubDate>
      <description>The goal (four non-negotiable constraints)</description>
    </item>
    <item>
      <title>Design Tokens Before Pages (Yes, I Wrote the CSS Before the First Line of HTML)</title>
      <link>https://dout.dev/posts/2026-05-02-design-tokens-before-pages.html</link>
      <guid isPermaLink="true">https://dout.dev/posts/2026-05-02-design-tokens-before-pages.html</guid>
      <pubDate>Sat, 02 May 2026 00:00:00 GMT</pubDate>
      <description>The mistake I kept making (repeat after me: tokens first)</description>
    </item>
  </channel>
</rss>
