<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Peter Benoit</title>
    <link>https://peterbenoit.com/blog/</link>
    <description>When I'm not hiking, I'm coding. When I'm not exploring, I'm building. Notes on all of it.</description>
    <language>en-us</language>
    <lastBuildDate>Fri, 17 Apr 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://peterbenoit.com/feed.xml" rel="self" type="application/rss+xml"/>
  <item>
    <title>Showing Up: A Morning at Baseline Road</title>
    <link>https://peterbenoit.com/blog/baseline-trailhead/</link>
    <guid isPermaLink="true">https://peterbenoit.com/blog/baseline-trailhead/</guid>
    <description>I wasn't feeling great last weekend, but I went anyway. That's kind of my rule with Bowie. He doesn't negotiate.</description>
    <pubDate>Fri, 17 Apr 2026 00:00:00 +0000</pubDate>
  </item>
  <item>
    <title>The First Thing I Do When I Open a Project</title>
    <link>https://peterbenoit.com/blog/first-thing-open-project/</link>
    <guid isPermaLink="true">https://peterbenoit.com/blog/first-thing-open-project/</guid>
    <description>Opening a project cold can be a challenge. I built a VS Code extension to solve that: structure analysis, git diagnostics, and plain-text summaries in one file.</description>
    <pubDate>Thu, 09 Apr 2026 00:00:00 +0000</pubDate>
  </item>
  <item>
    <title>That One HTML Attribute I Wish I Knew About Sooner</title>
    <link>https://peterbenoit.com/blog/inert-attribute/</link>
    <guid isPermaLink="true">https://peterbenoit.com/blog/inert-attribute/</guid>
    <description>The inert attribute solves focus trapping without JavaScript ceremony. A 40-line focus trap function replaced by four lines that actually work.</description>
    <pubDate>Tue, 07 Apr 2026 00:00:00 +0000</pubDate>
  </item>
  <item>
    <title>The Enshittification of Trust (or: Why You Need a Fake Name to Buy a Palisade)</title>
    <link>https://peterbenoit.com/blog/enshittification-of-trust/</link>
    <guid isPermaLink="true">https://peterbenoit.com/blog/enshittification-of-trust/</guid>
    <description>How car buying became a three-layer trust collapse requiring fake identities and AI agents just to negotiate safely.</description>
    <pubDate>Sat, 04 Apr 2026 00:00:00 +0000</pubDate>
  </item>
  <item>
    <title>The Layout Reflow That Didn't Have To Happen</title>
    <link>https://peterbenoit.com/blog/pretext/</link>
    <guid isPermaLink="true">https://peterbenoit.com/blog/pretext/</guid>
    <description>Pretext is a tiny JavaScript library that measures and lays out multiline text without touching the DOM. No reflow. No getBoundingClientRect. Just arithmetic.</description>
    <pubDate>Fri, 03 Apr 2026 00:00:00 +0000</pubDate>
  </item>
  <item>
    <title>The Bookmark That Survived Every Browser I've Ever Used</title>
    <link>https://peterbenoit.com/blog/peters-evil-overlord-list/</link>
    <guid isPermaLink="true">https://peterbenoit.com/blog/peters-evil-overlord-list/</guid>
    <description>Peter Anspach's Evil Overlord List has been on the same URL since 1996. I've been meaning to write about it for twenty-five years. Here's why it still matters.</description>
    <pubDate>Wed, 01 Apr 2026 00:00:00 +0000</pubDate>
  </item>
  <item>
    <title>Four Lines of CSS and My Phone Finally Called Me Out</title>
    <link>https://peterbenoit.com/blog/safe-area-inset/</link>
    <guid isPermaLink="true">https://peterbenoit.com/blog/safe-area-inset/</guid>
    <description>env() safe area insets return 0 unless you opt in first. Here is the viewport meta attribute that changes that, and the four lines of CSS that follow.</description>
    <pubDate>Mon, 30 Mar 2026 00:00:00 +0000</pubDate>
  </item>
  <item>
    <title>Things the Web Killed. Most of Them Had It Coming.</title>
    <link>https://peterbenoit.com/blog/things-the-web-killed/</link>
    <guid isPermaLink="true">https://peterbenoit.com/blog/things-the-web-killed/</guid>
    <description>A look back at the web technologies that didn't make it: SOAP, Flash, framesets, the blink tag, and everything else the platform eventually outgrew.</description>
    <pubDate>Fri, 27 Mar 2026 00:00:00 +0000</pubDate>
  </item>
  <item>
    <title>My Local PHP Environment Kept Breaking. ddev Didn't.</title>
    <link>https://peterbenoit.com/blog/ddev/</link>
    <guid isPermaLink="true">https://peterbenoit.com/blog/ddev/</guid>
    <description>After years of fighting MAMP, Valet, and handrolled Docker configs, ddev quietly solved local PHP development for me. Here's what clicked.</description>
    <pubDate>Wed, 25 Mar 2026 00:00:00 +0000</pubDate>
  </item>
  <item>
    <title>I Asked a Robot How to Fix iPhoto Search. Three Hours Later I Was Debugging Docker.</title>
    <link>https://peterbenoit.com/blog/immich/</link>
    <guid isPermaLink="true">https://peterbenoit.com/blog/immich/</guid>
    <description>A practical guide to getting Immich running on Windows with Docker, including the gotchas nobody warns you about: exFAT drives, Windows Firewall, and those stubborn marker files.</description>
    <pubDate>Sun, 22 Mar 2026 00:00:00 +0000</pubDate>
  </item>
  <item>
    <title>CSS @starting-style: Animating Elements Into Existence</title>
    <link>https://peterbenoit.com/blog/css-starting-style/</link>
    <guid isPermaLink="true">https://peterbenoit.com/blog/css-starting-style/</guid>
    <description>@starting-style gives CSS transitions a declarative 'from' state for elements entering the DOM. No JavaScript required.</description>
    <pubDate>Tue, 10 Mar 2026 00:00:00 +0000</pubDate>
  </item>
  <item>
    <title>The Lush Canopies of Marshall Swamp</title>
    <link>https://peterbenoit.com/blog/marshall-swamp/</link>
    <guid isPermaLink="true">https://peterbenoit.com/blog/marshall-swamp/</guid>
    <description>Spring makes the Marshall Swamp Trail into a green corridor of maples, oaks, and palms. And a reminder that Florida's floodplain forests are doing serious ecological work.</description>
    <pubDate>Tue, 10 Mar 2026 00:00:00 +0000</pubDate>
  </item>
  <item>
    <title>color-mix() Is Quietly Replacing My Sass Variables</title>
    <link>https://peterbenoit.com/blog/color-mix/</link>
    <guid isPermaLink="true">https://peterbenoit.com/blog/color-mix/</guid>
    <description>For years I reached for Sass just to darken or lighten a brand color. native CSS color-mix() in oklch does it better.</description>
    <pubDate>Sat, 28 Feb 2026 00:00:00 +0000</pubDate>
  </item>
  <item>
    <title>Winter Solitude at Yearling Trail</title>
    <link>https://peterbenoit.com/blog/yearling-trail/</link>
    <guid isPermaLink="true">https://peterbenoit.com/blog/yearling-trail/</guid>
    <description>The Ocala National Forest in January has a stillness that's hard to find elsewhere in Florida. Open prairies, limestone sinkholes, and a homestead that's mostly returned to scrub.</description>
    <pubDate>Thu, 22 Jan 2026 00:00:00 +0000</pubDate>
  </item>
  <item>
    <title>Scroll-Driven Animations Without a Single Line of JavaScript</title>
    <link>https://peterbenoit.com/blog/scroll-driven-animations/</link>
    <guid isPermaLink="true">https://peterbenoit.com/blog/scroll-driven-animations/</guid>
    <description>The Scroll-Driven Animations spec lets you tie CSS animations to scroll position or element visibility. No JavaScript required.</description>
    <pubDate>Tue, 20 Jan 2026 00:00:00 +0000</pubDate>
  </item>
  <item>
    <title>The Ancient Giants of Silver Springs State Park</title>
    <link>https://peterbenoit.com/blog/silver-springs/</link>
    <guid isPermaLink="true">https://peterbenoit.com/blog/silver-springs/</guid>
    <description>The humidity finally broke, and I spent a morning on the Sandhill and Swamp Trails. Away from the glass-bottom boats, deep in old cypress.</description>
    <pubDate>Fri, 14 Nov 2025 00:00:00 +0000</pubDate>
  </item>
  </channel>
</rss>
