<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>dout.dev - frontend</title>
    <link>https://dout.dev/tags/frontend/</link>
    <description>RSS feed for posts tagged with frontend</description>
    <atom:link href="https://dout.dev/tags/frontend.xml" rel="self" type="application/rss+xml" />
    <language>en</language>
    <lastBuildDate>Sun, 09 Aug 2026 00:00:00 GMT</lastBuildDate>
    <item>
      <title>HTML Is Automation Disguised as Markup (11 Features That Deleted My JavaScript)</title>
      <link>https://dout.dev/posts/2026-08-09-html-is-automation-disguised-as-markup.html</link>
      <guid isPermaLink="true">https://dout.dev/posts/2026-08-09-html-is-automation-disguised-as-markup.html</guid>
      <pubDate>Sun, 09 Aug 2026 00:00:00 GMT</pubDate>
      <description>The markup you skip is the code you rewrite</description>
    </item>
    <item>
      <title>CSS Grid vs Flexbox in 2026 - Stop Guessing, Start Knowing</title>
      <link>https://dout.dev/posts/2026-08-06-css-grid-vs-flexbox-2026.html</link>
      <guid isPermaLink="true">https://dout.dev/posts/2026-08-06-css-grid-vs-flexbox-2026.html</guid>
      <pubDate>Thu, 06 Aug 2026 00:00:00 GMT</pubDate>
      <description>The war that never should have happened</description>
    </item>
    <item>
      <title>It Is Time to Bury Utility CSS Frameworks (Yes, Even Tailwind)</title>
      <link>https://dout.dev/posts/2026-08-03-bury-utility-css-frameworks.html</link>
      <guid isPermaLink="true">https://dout.dev/posts/2026-08-03-bury-utility-css-frameworks.html</guid>
      <pubDate>Mon, 03 Aug 2026 00:00:00 GMT</pubDate>
      <description>The platform moved. Tailwind didn&apos;t get the memo.</description>
    </item>
    <item>
      <title>Vanilla JS + LLM Is the Only Way Forward (The Frameworks Did Their Job - Now Let Them Rest)</title>
      <link>https://dout.dev/posts/2026-07-30-vanilla-js-plus-llm-is-the-only-way.html</link>
      <guid isPermaLink="true">https://dout.dev/posts/2026-07-30-vanilla-js-plus-llm-is-the-only-way.html</guid>
      <pubDate>Thu, 30 Jul 2026 00:00:00 GMT</pubDate>
      <description>The industry ran a forty-four-meter circle and landed in your living room</description>
    </item>
    <item>
      <title>Honest Lazy Loading: IntersectionObserver vs Native loading=lazy (The Real Difference)</title>
      <link>https://dout.dev/posts/2026-06-30-honest-lazy-loading.html</link>
      <guid isPermaLink="true">https://dout.dev/posts/2026-06-30-honest-lazy-loading.html</guid>
      <pubDate>Tue, 30 Jun 2026 00:00:00 GMT</pubDate>
      <description>The two tools, in one paragraph</description>
    </item>
    <item>
      <title>Accessible Scrollspy and Outline Without contenteditable (Yes, It Can Be Done)</title>
      <link>https://dout.dev/posts/2026-06-27-accessible-scrollspy-outline.html</link>
      <guid isPermaLink="true">https://dout.dev/posts/2026-06-27-accessible-scrollspy-outline.html</guid>
      <pubDate>Sat, 27 Jun 2026 00:00:00 GMT</pubDate>
      <description>The feature and its trap</description>
    </item>
    <item>
      <title>A Custom Element for Syntax Highlight: Why I Wrote `pix-highlighter`</title>
      <link>https://dout.dev/posts/2026-06-23-custom-element-syntax-highlight.html</link>
      <guid isPermaLink="true">https://dout.dev/posts/2026-06-23-custom-element-syntax-highlight.html</guid>
      <pubDate>Tue, 23 Jun 2026 00:00:00 GMT</pubDate>
      <description>The stack I did not want</description>
    </item>
    <item>
      <title>The End of Borrowed Abstractions</title>
      <link>https://dout.dev/posts/2026-06-13-the-end-of-borrowed-abstractions.html</link>
      <guid isPermaLink="true">https://dout.dev/posts/2026-06-13-the-end-of-borrowed-abstractions.html</guid>
      <pubDate>Sat, 13 Jun 2026 00:00:00 GMT</pubDate>
      <description>The reflex that shaped software</description>
    </item>
    <item>
      <title>Why DisplayPreferencesPopover Exists (Accessibility Is Not a Checklist, It&apos;s User Preferences)</title>
      <link>https://dout.dev/posts/2026-06-09-why-display-preferences-popover-exists.html</link>
      <guid isPermaLink="true">https://dout.dev/posts/2026-06-09-why-display-preferences-popover-exists.html</guid>
      <pubDate>Tue, 09 Jun 2026 00:00:00 GMT</pubDate>
      <description>Accessibility is not one feature (it&apos;s ALL of them)</description>
    </item>
    <item>
      <title>How PixHighlighter Is Built (Or: I Wrote a Syntax Highlighter Because Prism Was Too Bloaty)</title>
      <link>https://dout.dev/posts/2026-06-06-how-pixhighlighter-is-built.html</link>
      <guid isPermaLink="true">https://dout.dev/posts/2026-06-06-how-pixhighlighter-is-built.html</guid>
      <pubDate>Sat, 06 Jun 2026 00:00:00 GMT</pubDate>
      <description>The contract stays plain (because HTML should be readable)</description>
    </item>
    <item>
      <title>WCAG 2.2 AA Without ARIA-Spam (Landmarks, Heading Order, Skip-Links - That&apos;s 80% of It)</title>
      <link>https://dout.dev/posts/2026-06-02-wcag-22-aa-without-aria-spam.html</link>
      <guid isPermaLink="true">https://dout.dev/posts/2026-06-02-wcag-22-aa-without-aria-spam.html</guid>
      <pubDate>Tue, 02 Jun 2026 00:00:00 GMT</pubDate>
      <description>The unpopular opinion (brace yourself)</description>
    </item>
    <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>
  </channel>
</rss>
