<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Project Insomnia</title><description>Andrew Rich — writing about software, Spokane, and whatever else.</description><link>https://projectinsomnia.com/</link><language>en-us</language><item><title>My Gmail Filter Hit a Character Limit. The Fix Was to Stop Using Gmail Filters.</title><link>https://projectinsomnia.com/blog/gmail-filter-character-limit/</link><guid isPermaLink="true">https://projectinsomnia.com/blog/gmail-filter-character-limit/</guid><description>Gmail caps the length of a filter&apos;s from: field, and mine was full at 698 characters across 24 senders. Combining what I could bought back 61 characters. The real fix was a Google Apps Script that reads senders from a Sheet, so adding a newsletter means tagging one message instead of editing a string. Plus the Gmail query injection I found in my own address parsing, and the production bug 49 passing tests could not have caught.</description><pubDate>Wed, 02 Sep 2026 00:00:00 GMT</pubDate></item><item><title>A Torrent Frozen at 99.2%: How to Tell When a Swarm Is Actually Dead</title><link>https://projectinsomnia.com/blog/torrent-frozen-at-99-percent-dead-swarm/</link><guid isPermaLink="true">https://projectinsomnia.com/blog/torrent-frozen-at-99-percent-dead-swarm/</guid><description>A torrent stuck at 99.2% for two weeks with zero seeders isn&apos;t slow, it&apos;s dead: the missing piece was never distributed to anyone alive. How to confirm that in five minutes with transmission-remote, why adding trackers won&apos;t save you, and the two yt-dlp plugin bugs I hit routing around it (relative imports, and the *IE class-name gotcha that crashes the URL matcher).</description><pubDate>Tue, 21 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Five Races</title><link>https://projectinsomnia.com/blog/five-races/</link><guid isPermaLink="true">https://projectinsomnia.com/blog/five-races/</guid><description>One finish, then five races I didn&apos;t complete. Why I&apos;m retiring from long-course triathlon, and how a race in 2023 shaped the two years that followed.</description><pubDate>Mon, 20 Jul 2026 00:00:00 GMT</pubDate></item><item><title>We Did 11 Disney Cruises. Then We Tried Virgin Voyages.</title><link>https://projectinsomnia.com/blog/virgin-voyages-review/</link><guid isPermaLink="true">https://projectinsomnia.com/blog/virgin-voyages-review/</guid><description>After 11 Disney cruises over 20 years, we tried Virgin Voyages&apos; Brilliant Lady for an 8-night Pacific Coast run from LA to Vancouver. It changed how we think about cruising.</description><pubDate>Thu, 14 May 2026 00:00:00 GMT</pubDate></item><item><title>I didn&apos;t ship anything this week</title><link>https://projectinsomnia.com/blog/i-didnt-ship-anything-this-week/</link><guid isPermaLink="true">https://projectinsomnia.com/blog/i-didnt-ship-anything-this-week/</guid><description>160 PRs across two GitHub orgs, every one green, exactly zero of them a feature. A week of plumbing — Claude review workflow v3, a Dependabot trusted-namespace policy, CI security hardening, and a tech-debt scheduler that finally finishes the night.</description><pubDate>Sat, 02 May 2026 00:00:00 GMT</pubDate></item><item><title>Unlocking the Login Keychain Over SSH on a Headless Mac</title><link>https://projectinsomnia.com/blog/unlocking-login-keychain-over-ssh-headless-mac/</link><guid isPermaLink="true">https://projectinsomnia.com/blog/unlocking-login-keychain-over-ssh-headless-mac/</guid><description>macOS locks the login keychain when there&apos;s no GUI login, which quietly breaks Claude Code, git credential helpers, and anything that calls SecKeychainFindGenericPassword. The fix: 1Password on the client, ssh connection multiplexing, and `security -i` on the remote — no password in argv, on disk, or in env on either side.</description><pubDate>Fri, 24 Apr 2026 00:00:00 GMT</pubDate></item><item><title>My AI Assistant Was Reading Its Own Credentials From a Text File</title><link>https://projectinsomnia.com/blog/1password-claude-credentials/</link><guid isPermaLink="true">https://projectinsomnia.com/blog/1password-claude-credentials/</guid><description>Migrating Claude Code and Claude Desktop off on-disk secrets and onto 1Password service accounts: one vault, one token in Keychain, no plaintext anywhere. Plus a macOS TCC database detour.</description><pubDate>Tue, 14 Apr 2026 00:00:00 GMT</pubDate></item><item><title>SSH Anywhere: Building a Secure Tunnel Into My Home Lab</title><link>https://projectinsomnia.com/blog/ssh-anywhere-home-lab-vpn/</link><guid isPermaLink="true">https://projectinsomnia.com/blog/ssh-anywhere-home-lab-vpn/</guid><description>OpenVPN on TCP/443 through a Synology NAS, with DNS tricks to make .local hostnames work over the tunnel. A practical guide to remote access that survives hostile networks.</description><pubDate>Fri, 10 Apr 2026 00:00:00 GMT</pubDate></item><item><title>Building a Website for Someone Who Actually Uses It</title><link>https://projectinsomnia.com/blog/building-website-for-someone-who-uses-it/</link><guid isPermaLink="true">https://projectinsomnia.com/blog/building-website-for-someone-who-uses-it/</guid><description>A cleaning business runs on Thumbtack at $30 per contact. I built a static site on Netlify to filter leads, cut costs, and give the owner a web presence she can edit herself.</description><pubDate>Tue, 07 Apr 2026 00:00:00 GMT</pubDate></item><item><title>I Made the Sky Move with No JavaScript and One Regrettable Color Palette</title><link>https://projectinsomnia.com/blog/nightowlstudio-scroll-driven-redesign/</link><guid isPermaLink="true">https://projectinsomnia.com/blog/nightowlstudio-scroll-driven-redesign/</guid><description>Redesigning nightowlstudio.us with pure CSS scroll-driven animations: a forest that transitions from afternoon to night as you scroll, an owl that blinks, and one important accessibility bug I almost shipped.</description><pubDate>Mon, 06 Apr 2026 00:00:00 GMT</pubDate></item><item><title>I Solo-Built a Production Observability Platform. Then I Got Laid Off by Email.</title><link>https://projectinsomnia.com/blog/solo-building-observability-platform/</link><guid isPermaLink="true">https://projectinsomnia.com/blog/solo-building-observability-platform/</guid><description>How one sentence of requirements became a full-stack data platform — Python, FastAPI, Streamlit, SQLite, Kubernetes — built solo over 5 months at Oracle Health. Then 30,000 of us got the same email.</description><pubDate>Wed, 01 Apr 2026 00:00:00 GMT</pubDate></item><item><title>The Mac Mini Has a Thunderbolt Port. The Simulator Doesn&apos;t Know That.</title><link>https://projectinsomnia.com/blog/ios-simulator-external-volume/</link><guid isPermaLink="true">https://projectinsomnia.com/blog/ios-simulator-external-volume/</guid><description>iOS simulator runtimes can&apos;t live on external storage. macOS TCC silently blocks CoreSimulatorService from writing to removable volumes, and there&apos;s no supported workaround.</description><pubDate>Mon, 30 Mar 2026 00:00:00 GMT</pubDate></item><item><title>The Synergy Multi-Monitor Rabbit Hole I Fell Into So You Don&apos;t Have To</title><link>https://projectinsomnia.com/blog/synergy-multi-monitor-rabbit-hole/</link><guid isPermaLink="true">https://projectinsomnia.com/blog/synergy-multi-monitor-rabbit-hole/</guid><description>Synergy flattens all monitors into one virtual screen. When your displays aren&apos;t the same height, edge transitions break. Here&apos;s why and how to fix it.</description><pubDate>Tue, 24 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Baumgartner Must Go</title><link>https://projectinsomnia.com/blog/baumgartner-must-go/</link><guid isPermaLink="true">https://projectinsomnia.com/blog/baumgartner-must-go/</guid><description>Rep. Baumgartner on Federal Agent Violence</description><pubDate>Sat, 24 Jan 2026 00:00:00 GMT</pubDate></item><item><title>2025 in Live Music and Comedy</title><link>https://projectinsomnia.com/blog/2025-in-live-music-and-comedy/</link><guid isPermaLink="true">https://projectinsomnia.com/blog/2025-in-live-music-and-comedy/</guid><description>My 2025 live music/comedy recap!</description><pubDate>Thu, 01 Jan 2026 00:00:00 GMT</pubDate></item><item><title>When Your Mac Admin Password Isn’t Accepted… Until You Reset SecureToken</title><link>https://projectinsomnia.com/blog/when-your-mac-admin-password-isnt-accepted-until-you-reset-securetoken/</link><guid isPermaLink="true">https://projectinsomnia.com/blog/when-your-mac-admin-password-isnt-accepted-until-you-reset-securetoken/</guid><description>On macOS, there’s nothing more frustrating than typing your known admin password into a system dialog — only to have it rejected, over and…</description><pubDate>Wed, 24 Sep 2025 00:00:00 GMT</pubDate></item><item><title>Automating macOS Security Dialogs: A Tale of Yak Shaving and AppleScript</title><link>https://projectinsomnia.com/blog/automating-macos-security-dialogs-a-tale-of-yak-shaving-and-applescript/</link><guid isPermaLink="true">https://projectinsomnia.com/blog/automating-macos-security-dialogs-a-tale-of-yak-shaving-and-applescript/</guid><description>TL;DR: Created an AppleScript to click “Allow” on recurring nginx security prompts automatically.</description><pubDate>Thu, 23 Jan 2025 00:00:00 GMT</pubDate></item><item><title>2024 In Live Music</title><link>https://projectinsomnia.com/blog/2024-in-live-music/</link><guid isPermaLink="true">https://projectinsomnia.com/blog/2024-in-live-music/</guid><description>In 2024, I attended nine live music performances, including 14 artists — here’s a wrap-up!</description><pubDate>Mon, 06 Jan 2025 00:00:00 GMT</pubDate></item><item><title>My 2023 in live music</title><link>https://projectinsomnia.com/blog/my-2023-in-live-music/</link><guid isPermaLink="true">https://projectinsomnia.com/blog/my-2023-in-live-music/</guid><description>It&apos;s a bit late, but here is my 2023 live music wrap-up!</description><pubDate>Thu, 07 Mar 2024 00:00:00 GMT</pubDate></item><item><title>How to remove unwanted items from Plex’s “Recently Added” sections</title><link>https://projectinsomnia.com/blog/how-to-remove-unwanted-items-from-plexs-recently-added-sections/</link><guid isPermaLink="true">https://projectinsomnia.com/blog/how-to-remove-unwanted-items-from-plexs-recently-added-sections/</guid><description>I added a movie in 2019 but it’s showing as Recently Added. Annoying!</description><pubDate>Sat, 23 Dec 2023 00:00:00 GMT</pubDate></item><item><title>how to corporate</title><link>https://projectinsomnia.com/blog/how-to-corporate/</link><guid isPermaLink="true">https://projectinsomnia.com/blog/how-to-corporate/</guid><description>put the bad news on blue slides, because blue = calming</description><pubDate>Fri, 12 May 2023 00:00:00 GMT</pubDate></item><item><title>My 2022 in live music</title><link>https://projectinsomnia.com/blog/my-2022-in-live-music/</link><guid isPermaLink="true">https://projectinsomnia.com/blog/my-2022-in-live-music/</guid><description>My setlist.fm stats tell the story: I love live music. And after a dreary nearly three years of pandemic cancellations, live music is back…</description><pubDate>Sun, 01 Jan 2023 00:00:00 GMT</pubDate></item><item><title>How to build a great company culture!</title><link>https://projectinsomnia.com/blog/how-to-build-a-great-company-culture/</link><guid isPermaLink="true">https://projectinsomnia.com/blog/how-to-build-a-great-company-culture/</guid><description>Want to build a great company culture? Here are your four essential components.</description><pubDate>Thu, 11 Mar 2021 00:00:00 GMT</pubDate></item><item><title>HOW TO GET YOUR PELOTON RIDES INTO IRONMAN VR CLUB</title><link>https://projectinsomnia.com/blog/how-to-get-your-peloton-rides-into-ironman-vr-club/</link><guid isPermaLink="true">https://projectinsomnia.com/blog/how-to-get-your-peloton-rides-into-ironman-vr-club/</guid><description>SportHeroes’ application security failures impact IRONMAN VR Club participants</description><pubDate>Sat, 18 Apr 2020 00:00:00 GMT</pubDate></item><item><title>Hallway</title><link>https://projectinsomnia.com/blog/hallway/</link><guid isPermaLink="true">https://projectinsomnia.com/blog/hallway/</guid><description>I wrote this for a Narration class last weekend, based on an extemporaneous speech about “my favorite room”; the homework assignment was to…</description><pubDate>Mon, 14 May 2018 00:00:00 GMT</pubDate></item><item><title>An Incomplete List of Everything “Reset All Settings” Actually Resets</title><link>https://projectinsomnia.com/blog/an-incomplete-list-of-everything-reset-all-settings-actually-resets/</link><guid isPermaLink="true">https://projectinsomnia.com/blog/an-incomplete-list-of-everything-reset-all-settings-actually-resets/</guid><description>In troubleshooting a strange Apple Pay problem (the iPhone helpfully tells me to “Hold near reader to pay” even when the phone is literally…</description><pubDate>Tue, 07 Nov 2017 00:00:00 GMT</pubDate></item><item><title>Syncing Garmin Forerunner 920XT Triathlon activities to Strava and Runkeeper</title><link>https://projectinsomnia.com/blog/syncing-garmin-forerunner-920xt-triathlon-activities-to-strava-and-runkeeper/</link><guid isPermaLink="true">https://projectinsomnia.com/blog/syncing-garmin-forerunner-920xt-triathlon-activities-to-strava-and-runkeeper/</guid><description>The Garmin Forerunner 920XT is a terrific triathlon watch, and I really like the tri mode — where you just hit the Lap key in between…</description><pubDate>Thu, 16 Mar 2017 00:00:00 GMT</pubDate></item><item><title>Never too early…</title><link>https://projectinsomnia.com/blog/never-too-early/</link><guid isPermaLink="true">https://projectinsomnia.com/blog/never-too-early/</guid><description>…to start thinking about my athletic goals for 2017.</description><pubDate>Wed, 07 Sep 2016 00:00:00 GMT</pubDate></item><item><title>Good News Comes In Threes</title><link>https://projectinsomnia.com/blog/good-news-comes-in-threes/</link><guid isPermaLink="true">https://projectinsomnia.com/blog/good-news-comes-in-threes/</guid><description>A huge personal athletic achievement: I broke two hours in the half marathon last weekend, at Brazen Racing’s Summer Breeze race in San…</description><pubDate>Tue, 09 Aug 2016 00:00:00 GMT</pubDate></item><item><title>Athletic self-assessment</title><link>https://projectinsomnia.com/blog/athletic-self-assessment/</link><guid isPermaLink="true">https://projectinsomnia.com/blog/athletic-self-assessment/</guid><description>Watching the Olympics brings to mind how I roughly approximate and rate my performance in any given athletic endeavor. I figure that if I’m…</description><pubDate>Sun, 07 Aug 2016 00:00:00 GMT</pubDate></item></channel></rss>