<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Sherman Hayes</title>
    <link>https://shermanhayes.com/</link>
    <description>Notes on storage, databases, and the parts of running systems that only show up at three in the morning.</description>
    <language>en-us</language>
    <atom:link href="https://shermanhayes.com/feed.xml" rel="self" type="application/rss+xml"/>
    <item>
      <title>The fsync You Didn't Call</title>
      <link>https://shermanhayes.com/posts/the-fsync-you-didnt-call</link>
      <guid isPermaLink="true">https://shermanhayes.com/posts/the-fsync-you-didnt-call</guid>
      <pubDate>Thu, 18 Jun 2026 08:00:00 -0500</pubDate>
      <description>A successful write() means almost nothing. Here is the rest of the path, including the directory entry that everyone forgets.</description>
      <category>storage</category>
    </item>
    <item>
      <title>A Retry Storm, Start to Finish</title>
      <link>https://shermanhayes.com/posts/a-retry-storm-start-to-finish</link>
      <guid isPermaLink="true">https://shermanhayes.com/posts/a-retry-storm-start-to-finish</guid>
      <pubDate>Sat, 02 May 2026 08:00:00 -0500</pubDate>
      <description>A downstream service got 200 ms slower. Twenty minutes later we were sending it four times our normal traffic.</description>
      <category>incident</category><category>reliability</category>
    </item>
    <item>
      <title>p99 Is Lying to You</title>
      <link>https://shermanhayes.com/posts/p99-is-lying-to-you</link>
      <guid isPermaLink="true">https://shermanhayes.com/posts/p99-is-lying-to-you</guid>
      <pubDate>Wed, 11 Mar 2026 08:00:00 -0500</pubDate>
      <description>Your load generator waits for a response before sending the next request. That single fact deletes the worst latency from your data.</description>
      <category>latency</category><category>measurement</category>
    </item>
    <item>
      <title>Winter Bike Commuting, Year Six</title>
      <link>https://shermanhayes.com/posts/winter-bike-commuting-year-six</link>
      <guid isPermaLink="true">https://shermanhayes.com/posts/winter-bike-commuting-year-six</guid>
      <pubDate>Sat, 07 Feb 2026 08:00:00 -0600</pubDate>
      <description>Studded tires, three layers, and the one piece of advice that actually matters: it's your hands.</description>
      <category>not software</category>
    </item>
    <item>
      <title>Autovacuum Is Not Optional</title>
      <link>https://shermanhayes.com/posts/autovacuum-is-not-optional</link>
      <guid isPermaLink="true">https://shermanhayes.com/posts/autovacuum-is-not-optional</guid>
      <pubDate>Wed, 14 Jan 2026 08:00:00 -0600</pubDate>
      <description>The table was 41 GB holding 3 GB of live rows. Autovacuum had been running the whole time. It had simply never finished.</description>
      <category>postgres</category>
    </item>
    <item>
      <title>The Log Line That Wasn't There</title>
      <link>https://shermanhayes.com/posts/the-log-line-that-wasnt-there</link>
      <guid isPermaLink="true">https://shermanhayes.com/posts/the-log-line-that-wasnt-there</guid>
      <pubDate>Thu, 20 Nov 2025 08:00:00 -0600</pubDate>
      <description>We spent most of a day looking for the cause of a bad export. The clue was a log line that should have been printed and wasn't.</description>
      <category>debugging</category>
    </item>
    <item>
      <title>Timeouts Are a Contract</title>
      <link>https://shermanhayes.com/posts/timeouts-are-a-contract</link>
      <guid isPermaLink="true">https://shermanhayes.com/posts/timeouts-are-a-contract</guid>
      <pubDate>Tue, 02 Sep 2025 08:00:00 -0500</pubDate>
      <description>A timeout isn't a safety net you sprinkle on a client. It's a promise about how long the whole call may take, and it has to be passed down.</description>
      <category>reliability</category>
    </item>
  </channel>
</rss>
