<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>White / wsuites · Articles</title>
    <link>https://whitesu.dev/blog</link>
    <description>Working notes on full-stack architecture, infrastructure, operations, and security-minded engineering.</description>
    <language>en</language>
    <atom:link href="https://whitesu.dev/blog/rss.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Cache-first lookups in an event-driven bot</title>
      <link>https://whitesu.dev/blog/cache-first-event-driven-bot</link>
      <guid isPermaLink="true">https://whitesu.dev/blog/cache-first-event-driven-bot</guid>
      <description>Why independent event tasks and a cache-first read path were the right shape for an alpha Rust bot, and what that architecture costs you later.</description>
      <pubDate>Sat, 01 Aug 2026 00:00:00 GMT</pubDate>
      <category>rust</category>
      <category>architecture</category>
      <category>caching</category>
    </item>
    <item>
      <title>Typed translations: making a missing string a build error</title>
      <link>https://whitesu.dev/blog/typed-translations-static-build</link>
      <guid isPermaLink="true">https://whitesu.dev/blog/typed-translations-static-build</guid>
      <description>Two languages from one static build, where TypeScript refuses to compile if a translation is missing instead of quietly falling back to English.</description>
      <pubDate>Fri, 24 Jul 2026 00:00:00 GMT</pubDate>
      <category>i18n</category>
      <category>architecture</category>
      <category>typescript</category>
    </item>
    <item>
      <title>A strict CSP on a static site, without giving up interaction</title>
      <link>https://whitesu.dev/blog/strict-csp-static-site</link>
      <guid isPermaLink="true">https://whitesu.dev/blog/strict-csp-static-site</guid>
      <description>How this site keeps script-src free of &apos;unsafe-inline&apos; while still running theme switching, scroll effects, and a protected contact form.</description>
      <pubDate>Sun, 12 Jul 2026 00:00:00 GMT</pubDate>
      <category>security</category>
      <category>csp</category>
      <category>web</category>
    </item>
  </channel>
</rss>
