<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>notes</title><description>A slightly-too-honest log of what I&apos;m building, why it&apos;s taking longer than planned, and what I learned anyway.</description><link>https://example.com/</link><item><title>Static Sites, Revisited</title><link>https://example.com/blog/static-sites-revisited/</link><guid isPermaLink="true">https://example.com/blog/static-sites-revisited/</guid><description>Why I moved this blog back to a fully static build after two years of chasing server-rendered features.</description><pubDate>Fri, 14 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Notes on a Three-Day Memory Leak</title><link>https://example.com/blog/three-day-memory-leak/</link><guid isPermaLink="true">https://example.com/blog/three-day-memory-leak/</guid><description>A slow leak in a Node worker, the wrong assumptions that hid it, and what finally found it.</description><pubDate>Wed, 29 Jul 2026 00:00:00 GMT</pubDate></item><item><title>A Year of Writing in Public</title><link>https://example.com/blog/year-of-writing-in-public/</link><guid isPermaLink="true">https://example.com/blog/year-of-writing-in-public/</guid><description>What changed after I started publishing drafts instead of waiting for finished thoughts.</description><pubDate>Tue, 02 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Rebuilding My Terminal Setup, Slowly</title><link>https://example.com/blog/rebuilding-terminal-setup/</link><guid isPermaLink="true">https://example.com/blog/rebuilding-terminal-setup/</guid><description>Small, deliberate changes to a workflow I use twelve hours a day.</description><pubDate>Sat, 18 Apr 2026 00:00:00 GMT</pubDate></item><item><title>The Small Tools I Actually Kept Using</title><link>https://example.com/blog/small-tools-that-stuck/</link><guid isPermaLink="true">https://example.com/blog/small-tools-that-stuck/</guid><description>A year-end look back at which weekend projects survived contact with daily use, and which quietly died.</description><pubDate>Sun, 18 Jan 2026 00:00:00 GMT</pubDate></item><item><title>Why Every Post Needed at Least One Tag</title><link>https://example.com/blog/why-every-post-needs-a-tag/</link><guid isPermaLink="true">https://example.com/blog/why-every-post-needs-a-tag/</guid><description>Reworking the tag pages taught me more about the site&apos;s actual shape than writing the posts did.</description><pubDate>Sun, 21 Dec 2025 00:00:00 GMT</pubDate></item><item><title>A Fifty-Line Script That Catches My Dead Links</title><link>https://example.com/blog/dead-link-checker-script/</link><guid isPermaLink="true">https://example.com/blog/dead-link-checker-script/</guid><description>A small Node script that walks every post and flags broken links before a reader finds them first.</description><pubDate>Sun, 16 Nov 2025 00:00:00 GMT</pubDate></item><item><title>Chasing a Layout Shift That Only Showed Up on Mobile</title><link>https://example.com/blog/mobile-only-layout-shift/</link><guid isPermaLink="true">https://example.com/blog/mobile-only-layout-shift/</guid><description>A CLS regression that never appeared on desktop, traced back to a font fallback with different metrics.</description><pubDate>Sun, 26 Oct 2025 00:00:00 GMT</pubDate></item><item><title>A Table of Contents Without a Framework</title><link>https://example.com/blog/toc-without-a-framework/</link><guid isPermaLink="true">https://example.com/blog/toc-without-a-framework/</guid><description>Forty lines of vanilla JS and an IntersectionObserver instead of reaching for a plugin.</description><pubDate>Sun, 14 Sep 2025 00:00:00 GMT</pubDate></item><item><title>Trying Worker Threads for a Job That Didn&apos;t Need Them</title><link>https://example.com/blog/worker-threads-i-didnt-need/</link><guid isPermaLink="true">https://example.com/blog/worker-threads-i-didnt-need/</guid><description>A build script got 40% slower after I &apos;optimized&apos; it with worker threads, and what that taught me about profiling first.</description><pubDate>Sun, 10 Aug 2025 00:00:00 GMT</pubDate></item><item><title>Deciding Not to Add Analytics, Again</title><link>https://example.com/blog/not-adding-analytics-again/</link><guid isPermaLink="true">https://example.com/blog/not-adding-analytics-again/</guid><description>Every few months I consider adding a visit counter, and every few months I remember why I don&apos;t.</description><pubDate>Sun, 20 Jul 2025 00:00:00 GMT</pubDate></item><item><title>Making Lighthouse Part of the Build, Not an Afterthought</title><link>https://example.com/blog/lighthouse-in-the-build/</link><guid isPermaLink="true">https://example.com/blog/lighthouse-in-the-build/</guid><description>Wiring Lighthouse CI into the pipeline so a performance regression fails the build instead of getting noticed later.</description><pubDate>Sun, 29 Jun 2025 00:00:00 GMT</pubDate></item><item><title>Too Many npm Scripts</title><link>https://example.com/blog/too-many-npm-scripts/</link><guid isPermaLink="true">https://example.com/blog/too-many-npm-scripts/</guid><description>How a package.json with thirty scripts got refactored down to five I can actually remember.</description><pubDate>Sun, 08 Jun 2025 00:00:00 GMT</pubDate></item><item><title>Auditing Every Animation for Reduced Motion</title><link>https://example.com/blog/reduced-motion-audit/</link><guid isPermaLink="true">https://example.com/blog/reduced-motion-audit/</guid><description>Going through every transition on the site one by one to check it actually respects prefers-reduced-motion.</description><pubDate>Sat, 17 May 2025 00:00:00 GMT</pubDate></item><item><title>Container Queries Made One Layout Bug Disappear</title><link>https://example.com/blog/container-queries-fixed-it/</link><guid isPermaLink="true">https://example.com/blog/container-queries-fixed-it/</guid><description>Swapping a media-query hack for a container query solved a card layout bug I&apos;d been patching around for months.</description><pubDate>Sat, 05 Apr 2025 00:00:00 GMT</pubDate></item><item><title>The Build Failed and I Was Grateful</title><link>https://example.com/blog/build-failed-i-was-grateful/</link><guid isPermaLink="true">https://example.com/blog/build-failed-i-was-grateful/</guid><description>A Zod schema catching a malformed frontmatter date before it ever reached a reader.</description><pubDate>Sat, 22 Mar 2025 00:00:00 GMT</pubDate></item><item><title>Cache Headers, Finally Explained to Myself</title><link>https://example.com/blog/cache-headers-explained/</link><guid isPermaLink="true">https://example.com/blog/cache-headers-explained/</guid><description>Writing out cache-control rules for a static site forced me to actually understand what they do.</description><pubDate>Thu, 27 Feb 2025 00:00:00 GMT</pubDate></item><item><title>Git Bisect Found It in Four Minutes</title><link>https://example.com/blog/git-bisect-four-minutes/</link><guid isPermaLink="true">https://example.com/blog/git-bisect-four-minutes/</guid><description>A regression I&apos;d been guessing at for a week, solved by finally trusting the tool built for exactly this.</description><pubDate>Sat, 08 Feb 2025 00:00:00 GMT</pubDate></item><item><title>Why I Stopped Loading Fonts From Google</title><link>https://example.com/blog/self-hosting-fonts/</link><guid isPermaLink="true">https://example.com/blog/self-hosting-fonts/</guid><description>Self-hosting two font families cut a render-blocking request and a chunk of layout shift in one afternoon.</description><pubDate>Sat, 11 Jan 2025 00:00:00 GMT</pubDate></item><item><title>A Weekend Inside View Transitions</title><link>https://example.com/blog/inside-view-transitions/</link><guid isPermaLink="true">https://example.com/blog/inside-view-transitions/</guid><description>What I learned falling down the astro:transitions rabbit hole trying to get one cross-fade to feel right.</description><pubDate>Sat, 14 Dec 2024 00:00:00 GMT</pubDate></item><item><title>The Test That Only Failed on CI</title><link>https://example.com/blog/flaky-test-only-on-ci/</link><guid isPermaLink="true">https://example.com/blog/flaky-test-only-on-ci/</guid><description>A flaky accessibility test, a race condition in a fade transition, and the fix that was one attribute long.</description><pubDate>Sat, 09 Nov 2024 00:00:00 GMT</pubDate></item><item><title>Getting the RSS Feed Right</title><link>https://example.com/blog/getting-the-rss-feed-right/</link><guid isPermaLink="true">https://example.com/blog/getting-the-rss-feed-right/</guid><description>Three small bugs in a feed nobody complained about, found only because I finally opened it in a real reader.</description><pubDate>Sat, 19 Oct 2024 00:00:00 GMT</pubDate></item><item><title>Writing My First Real Test Suite</title><link>https://example.com/blog/first-real-test-suite/</link><guid isPermaLink="true">https://example.com/blog/first-real-test-suite/</guid><description>How a two-line &apos;does the page load&apos; check turned into a Playwright suite I actually trust.</description><pubDate>Sat, 28 Sep 2024 00:00:00 GMT</pubDate></item><item><title>Letting Astro Own My Images</title><link>https://example.com/blog/astro-image-pipeline/</link><guid isPermaLink="true">https://example.com/blog/astro-image-pipeline/</guid><description>Ripping out a hand-rolled image resizing script in favor of Astro&apos;s built-in `&lt;Image /&gt;` component.</description><pubDate>Thu, 05 Sep 2024 00:00:00 GMT</pubDate></item></channel></rss>