<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
  <title>xuzhang</title>
  <link>https://xuzhang.site/</link>
  <description>Notes on Linux, networking and self-hosting.</description>
  <language>en</language>
  <atom:link href="https://xuzhang.site/feed.xml" rel="self" type="application/rss+xml"/>
  <lastBuildDate>Tue, 20 Oct 2026 08:00:00 +0000</lastBuildDate>
  <item>
    <title>Notes on HTTP/2 multiplexing and connection reuse</title>
    <link>https://xuzhang.site/posts/http2-multiplexing/</link>
    <guid isPermaLink="true">https://xuzhang.site/posts/http2-multiplexing/</guid>
    <pubDate>Tue, 20 Oct 2026 08:00:00 +0000</pubDate>
    <description>How streams share one TCP connection, why browsers stopped opening six connections per host, and where head-of-line blocking still bites.</description>
  </item>
  <item>
    <title>Setting up Caddy as a static file server</title>
    <link>https://xuzhang.site/posts/caddy-static-site/</link>
    <guid isPermaLink="true">https://xuzhang.site/posts/caddy-static-site/</guid>
    <pubDate>Wed, 02 Sep 2026 08:00:00 +0000</pubDate>
    <description>A small Caddyfile that serves a static site with automatic HTTPS, compression, sensible headers and a custom 404 page.</description>
  </item>
  <item>
    <title>Debian 12 minimal server checklist</title>
    <link>https://xuzhang.site/posts/debian-12-checklist/</link>
    <guid isPermaLink="true">https://xuzhang.site/posts/debian-12-checklist/</guid>
    <pubDate>Wed, 15 Jul 2026 08:00:00 +0000</pubDate>
    <description>The short list of things I do on every fresh Debian 12 VPS before putting anything on it.</description>
  </item>
  <item>
    <title>Understanding TLS 1.3 handshakes</title>
    <link>https://xuzhang.site/posts/tls13-handshake/</link>
    <guid isPermaLink="true">https://xuzhang.site/posts/tls13-handshake/</guid>
    <pubDate>Thu, 28 May 2026 08:00:00 +0000</pubDate>
    <description>What actually goes over the wire in a TLS 1.3 handshake, why it takes one round trip, and what changed with hybrid post-quantum key exchange.</description>
  </item>
  <item>
    <title>Replacing cron jobs with systemd timers</title>
    <link>https://xuzhang.site/posts/systemd-timers/</link>
    <guid isPermaLink="true">https://xuzhang.site/posts/systemd-timers/</guid>
    <pubDate>Wed, 11 Mar 2026 08:00:00 +0000</pubDate>
    <description>Timers take two small files instead of one crontab line, but you get logging, missed-run catch-up and dependency handling for free.</description>
  </item>
</channel>
</rss>
