<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Dev Notes</title><description>Software development and its discontents</description><link>https://mirror.jenchan.biz/</link><language>en-us</language><item><title>Home Lab 1.0</title><link>https://mirror.jenchan.biz/blog/home-lab-1/</link><guid isPermaLink="true">https://mirror.jenchan.biz/blog/home-lab-1/</guid><description>Building a digital fortress with old, refused hardware.</description><pubDate>Tue, 17 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Recovering from accidentally deleting my main user on NixOS</title><link>https://mirror.jenchan.biz/blog/that-time-i-locked-myself-out-of-nix/</link><guid isPermaLink="true">https://mirror.jenchan.biz/blog/that-time-i-locked-myself-out-of-nix/</guid><description>That time I locked myself out of NixOS the night before I was supposed to deploy a project, and fumbled back in.</description><pubDate>Sat, 20 Dec 2025 00:00:00 GMT</pubDate></item><item><title>Installing Lazyvim and Oh-My-Zsh on NixOS without Home Manager or flakes</title><link>https://mirror.jenchan.biz/blog/installing-lazyvim-on-nixos/</link><guid isPermaLink="true">https://mirror.jenchan.biz/blog/installing-lazyvim-on-nixos/</guid><description>After 2 days of on-and-off teeth-gnashing, I FINALLY got it working.</description><pubDate>Fri, 17 Oct 2025 00:00:00 GMT</pubDate></item><item><title>Building a vanilla Node CLI for bootstrapping projects with Cursor rules</title><link>https://mirror.jenchan.biz/blog/building-a-vanilla-node-cli/</link><guid isPermaLink="true">https://mirror.jenchan.biz/blog/building-a-vanilla-node-cli/</guid><description>Well look, I only used a tool to write a tool for managing how I use a different tool without using any other tools! And then I used only a tool from that tool to test it.</description><pubDate>Wed, 01 Oct 2025 00:00:00 GMT</pubDate></item><item><title>Recovering webmentions from the Fediverse after migrating to Cloudflare</title><link>https://mirror.jenchan.biz/blog/recovering-webmentions-after-migrating-to-cloudflare/</link><guid isPermaLink="true">https://mirror.jenchan.biz/blog/recovering-webmentions-after-migrating-to-cloudflare/</guid><description>Adding to the internet&apos;s dogpile of webmention troubleshooting for collecting authentic reactions from online communities.</description><pubDate>Tue, 23 Sep 2025 00:00:00 GMT</pubDate></item><item><title>Who Moved My Cookies? Of Cookies On Subdomains</title><link>https://mirror.jenchan.biz/blog/who-moved-my-cookies/</link><guid isPermaLink="true">https://mirror.jenchan.biz/blog/who-moved-my-cookies/</guid><description>The story of how 3 developers blew 45 minutes investigating where a cookie mysteriously wasn&apos;t.</description><pubDate>Wed, 09 Jul 2025 00:00:00 GMT</pubDate></item><item><title>Block AI Crawlers, Save Tears: Ditching Vercel for Cloudflare Pages</title><link>https://mirror.jenchan.biz/blog/blocking-ai-crawlers/</link><guid isPermaLink="true">https://mirror.jenchan.biz/blog/blocking-ai-crawlers/</guid><description>Or how I gave my Next.js deploy the glowup it deserves. (◕‿◕✿)</description><pubDate>Thu, 03 Jul 2025 00:00:00 GMT</pubDate></item><item><title>Agentic AI Workflow Woes: Cursor Edition</title><link>https://mirror.jenchan.biz/blog/agentic-ai-workflow-woes/</link><guid isPermaLink="true">https://mirror.jenchan.biz/blog/agentic-ai-workflow-woes/</guid><description>Expectations clash with reality while trying to turn prompts into workflows.</description><pubDate>Sun, 27 Apr 2025 00:00:00 GMT</pubDate></item><item><title>The Thankless Complexity of Custom Form Validations</title><link>https://mirror.jenchan.biz/blog/the-thankless-complexity-of-custom-form-validations/</link><guid isPermaLink="true">https://mirror.jenchan.biz/blog/the-thankless-complexity-of-custom-form-validations/</guid><description>Gripes and gotchas from building custom form validation after hundreds of hours lost to retrofitting library form components, writing and rewriting field validations exactly as clients wanted, and building accessible form field web components at enterprise.</description><pubDate>Sat, 29 Mar 2025 00:00:00 GMT</pubDate></item><item><title>A Mid-career Retrospective of Stores for State Management</title><link>https://mirror.jenchan.biz/blog/a-mid-career-retrospective-of-stores-for-state-management/</link><guid isPermaLink="true">https://mirror.jenchan.biz/blog/a-mid-career-retrospective-of-stores-for-state-management/</guid><description>Looking back at flux-style stores for modernizing front end applications. A tale of 3 projects, at 3 different businesses.</description><pubDate>Sun, 24 Nov 2024 00:00:00 GMT</pubDate></item><item><title>The Dual Nature of Seniority in Software Development</title><link>https://mirror.jenchan.biz/blog/the-dual-nature-of-seniority/</link><guid isPermaLink="true">https://mirror.jenchan.biz/blog/the-dual-nature-of-seniority/</guid><description>On expectations vs. reality of senior software developer roles, and the unspoken requirement of professional mindreading for navigating politics in senior+ roles.</description><pubDate>Tue, 09 Jul 2024 00:00:00 GMT</pubDate></item><item><title>🛑 Stop resizing your browser: improve testing for responsiveness</title><link>https://mirror.jenchan.biz/blog/stop-resizing-your-browser-improve-responsive-testing/</link><guid isPermaLink="true">https://mirror.jenchan.biz/blog/stop-resizing-your-browser-improve-responsive-testing/</guid><description>An in-the-weeds tirade to put an end to the lackluster practice of browser resizing. Use the browser&apos;s device mode or a whole range of free tools to improve accuracy</description><pubDate>Sun, 19 May 2024 00:00:00 GMT</pubDate></item><item><title>Error monitoring and bug triage: Whose job is it?</title><link>https://mirror.jenchan.biz/blog/error-monitoring-and-bug-triage/</link><guid isPermaLink="true">https://mirror.jenchan.biz/blog/error-monitoring-and-bug-triage/</guid><description>The invisible and thankless work of determining the right things to fix</description><pubDate>Sat, 02 Mar 2024 00:00:00 GMT</pubDate></item><item><title>Dissecting the hell that is Jest setup with ESM and Typescript</title><link>https://mirror.jenchan.biz/blog/dissecting-the-hell-jest-setup-esm-typescript-setup/</link><guid isPermaLink="true">https://mirror.jenchan.biz/blog/dissecting-the-hell-jest-setup-esm-typescript-setup/</guid><description>World&apos;s most delightful testing framework, held hostage by Node&apos;s ESM migration 2023</description><pubDate>Sun, 31 Dec 2023 00:00:00 GMT</pubDate></item><item><title>Crossing the senior chasm</title><link>https://mirror.jenchan.biz/blog/crossing-the-senior-chasm/</link><guid isPermaLink="true">https://mirror.jenchan.biz/blog/crossing-the-senior-chasm/</guid><description>Levelling up to senior and beyond: what I wish I knew</description><pubDate>Thu, 26 Oct 2023 00:00:00 GMT</pubDate></item><item><title>Bug Triage</title><link>https://mirror.jenchan.biz/blog/bug-triage/</link><guid isPermaLink="true">https://mirror.jenchan.biz/blog/bug-triage/</guid><description>Notes on prioritizing bugs and enhancements</description><pubDate>Sun, 04 Jun 2023 00:00:00 GMT</pubDate></item><item><title>Closing, Cloning, or Disabling the Shadow DOM</title><link>https://mirror.jenchan.biz/blog/closing-cloning-or-disabling-shadow-dom/</link><guid isPermaLink="true">https://mirror.jenchan.biz/blog/closing-cloning-or-disabling-shadow-dom/</guid><description>Farcical experiments in seeing if I can turn a web component into not-a-web-component, and I&apos;ve found answers you don&apos;t want to hear</description><pubDate>Sat, 28 Jan 2023 00:00:00 GMT</pubDate></item><item><title>Maintaining a Healthy-Enough Mindset through Uncertainty</title><link>https://mirror.jenchan.biz/blog/maintaining-a-healthy-enough-mindset-through-uncertainty/</link><guid isPermaLink="true">https://mirror.jenchan.biz/blog/maintaining-a-healthy-enough-mindset-through-uncertainty/</guid><description>How to live down the fear of being fired</description><pubDate>Sat, 03 Dec 2022 00:00:00 GMT</pubDate></item><item><title>Build Time, Runtime, Execution time... What &quot;time&quot; is it in Javascript?</title><link>https://mirror.jenchan.biz/blog/what-time-is-it-in-javascript/</link><guid isPermaLink="true">https://mirror.jenchan.biz/blog/what-time-is-it-in-javascript/</guid><description>Runtime, Build time, Parsing and Execution</description><pubDate>Wed, 23 Nov 2022 00:00:00 GMT</pubDate></item><item><title>Git Rebase for Preventing Merge Commits</title><link>https://mirror.jenchan.biz/blog/git-rebase-for-preventing-merge-commits/</link><guid isPermaLink="true">https://mirror.jenchan.biz/blog/git-rebase-for-preventing-merge-commits/</guid><description>How to prevent merge commits when pulling from remote to local, or merging from feature to remote main.</description><pubDate>Sun, 30 Oct 2022 00:00:00 GMT</pubDate></item><item><title>Things Strong Developers Do That Drive Their Team Crazy</title><link>https://mirror.jenchan.biz/blog/things-strong-developers-do-that-drive-their-team-crazy/</link><guid isPermaLink="true">https://mirror.jenchan.biz/blog/things-strong-developers-do-that-drive-their-team-crazy/</guid><description>After years of nose to the keyboard, you&apos;ve unlocked a level of ultra-learning you could not have imagined! How can anything be so doable? Why aren&apos;t people as good as you? Here are some things you might be doing that make your team dynamic shift for the worse.</description><pubDate>Thu, 27 Oct 2022 00:00:00 GMT</pubDate></item><item><title>Ask Good Questions; Get Unblocked Faster</title><link>https://mirror.jenchan.biz/blog/ask-good-questions-get-unblocked-faster/</link><guid isPermaLink="true">https://mirror.jenchan.biz/blog/ask-good-questions-get-unblocked-faster/</guid><description>How to find support, when to ask, and what to ask to get help faster</description><pubDate>Tue, 06 Sep 2022 00:00:00 GMT</pubDate></item><item><title>On Levelling Up</title><link>https://mirror.jenchan.biz/blog/on-levelling-up/</link><guid isPermaLink="true">https://mirror.jenchan.biz/blog/on-levelling-up/</guid><description>Storytime for your career doldrums</description><pubDate>Sun, 06 Mar 2022 00:00:00 GMT</pubDate></item><item><title>Unit Testing Components in Storybook</title><link>https://mirror.jenchan.biz/blog/unit-testing-components-in-storybook/</link><guid isPermaLink="true">https://mirror.jenchan.biz/blog/unit-testing-components-in-storybook/</guid><description>An overview of unit testing with Storybook for components in design systems</description><pubDate>Wed, 22 Sep 2021 00:00:00 GMT</pubDate></item><item><title>Storybook and Chromatic for Visual Regression Testing</title><link>https://mirror.jenchan.biz/blog/storybook-and-chromatic-for-visual-regression-testing/</link><guid isPermaLink="true">https://mirror.jenchan.biz/blog/storybook-and-chromatic-for-visual-regression-testing/</guid><description>Setting up visual regression testing as part of build pipelines</description><pubDate>Mon, 20 Sep 2021 00:00:00 GMT</pubDate></item><item><title>How good am I? Reflections on 5th year designer-developer doldrums</title><link>https://mirror.jenchan.biz/blog/how-good-am-i/</link><guid isPermaLink="true">https://mirror.jenchan.biz/blog/how-good-am-i/</guid><description>Just knowing I&apos;m a dev</description><pubDate>Fri, 05 Mar 2021 00:00:00 GMT</pubDate></item><item><title>Differential Loading for Legacy Browser Support in Angular 9</title><link>https://mirror.jenchan.biz/blog/differential-loading-for-legacy-browser-support-in-angular9/</link><guid isPermaLink="true">https://mirror.jenchan.biz/blog/differential-loading-for-legacy-browser-support-in-angular9/</guid><description>For those of us who can&apos;t let go</description><pubDate>Tue, 21 Jul 2020 00:00:00 GMT</pubDate></item><item><title>A Stab at Performance Testing with Intersection Observer and Scroll events</title><link>https://mirror.jenchan.biz/blog/a-stab-at-performance-testing-with-intersection-observer/</link><guid isPermaLink="true">https://mirror.jenchan.biz/blog/a-stab-at-performance-testing-with-intersection-observer/</guid><description>Basic runtime performance testing for an app that used multiple, possibly-very-long-forms</description><pubDate>Mon, 29 Jun 2020 00:00:00 GMT</pubDate></item><item><title>On Being Wrong</title><link>https://mirror.jenchan.biz/blog/on-being-wrong/</link><guid isPermaLink="true">https://mirror.jenchan.biz/blog/on-being-wrong/</guid><pubDate>Sat, 09 May 2020 00:00:00 GMT</pubDate></item><item><title>Running IE 11 with VirtualBox on Mac</title><link>https://mirror.jenchan.biz/blog/running-ie11-on-virtualbox-on-mac/</link><guid isPermaLink="true">https://mirror.jenchan.biz/blog/running-ie11-on-virtualbox-on-mac/</guid><pubDate>Wed, 06 May 2020 00:00:00 GMT</pubDate></item><item><title>Challenge: Cross-browser testing for IE11 and IE Edge on Mac for free</title><link>https://mirror.jenchan.biz/blog/cross-browser-testing-ie11-edge-for-free/</link><guid isPermaLink="true">https://mirror.jenchan.biz/blog/cross-browser-testing-ie11-edge-for-free/</guid><description>Looking for cheap options to support a crappy browser in a pay-to-play world</description><pubDate>Tue, 28 Apr 2020 00:00:00 GMT</pubDate></item><item><title>What is helpful, if you want to help</title><link>https://mirror.jenchan.biz/blog/what-is-helpful-if-you-want-to-help/</link><guid isPermaLink="true">https://mirror.jenchan.biz/blog/what-is-helpful-if-you-want-to-help/</guid><description>So you want to help? How?</description><pubDate>Sun, 08 Mar 2020 00:00:00 GMT</pubDate></item><item><title>Removing Accidentally Committed Files From Remote History</title><link>https://mirror.jenchan.biz/blog/removing-accidentally-committed-files-from-remote-history/</link><guid isPermaLink="true">https://mirror.jenchan.biz/blog/removing-accidentally-committed-files-from-remote-history/</guid><description>Oops, I did it again -_-</description><pubDate>Wed, 19 Feb 2020 00:00:00 GMT</pubDate></item><item><title>How To Plan Scalable CSS for Large Projects?</title><link>https://mirror.jenchan.biz/blog/how-to-plan-scalable-css-for-large-projects/</link><guid isPermaLink="true">https://mirror.jenchan.biz/blog/how-to-plan-scalable-css-for-large-projects/</guid><description>The options, oh the options!</description><pubDate>Mon, 10 Feb 2020 00:00:00 GMT</pubDate></item><item><title>First Impressions: learning Angular after React/Redux</title><link>https://mirror.jenchan.biz/blog/first-impressions-learning-angular-after-react-redux/</link><guid isPermaLink="true">https://mirror.jenchan.biz/blog/first-impressions-learning-angular-after-react-redux/</guid><description>Another this-vs-that post from a dev who got comfortable with React D:</description><pubDate>Tue, 17 Dec 2019 00:00:00 GMT</pubDate></item><item><title>How I Approach Whiteboard Interviews</title><link>https://mirror.jenchan.biz/blog/how-i-approach-whiteboarding/</link><guid isPermaLink="true">https://mirror.jenchan.biz/blog/how-i-approach-whiteboarding/</guid><description>From Imposter to Candidate</description><pubDate>Sat, 30 Nov 2019 00:00:00 GMT</pubDate></item><item><title>A laundry list of things I never heard of from bootcamp</title><link>https://mirror.jenchan.biz/blog/a-laundry-list-of-things-i-never-heard-from-bootcamp/</link><guid isPermaLink="true">https://mirror.jenchan.biz/blog/a-laundry-list-of-things-i-never-heard-from-bootcamp/</guid><description>Because it&apos;s just impossible to fit the dev ecosystem into a 10 week crash course</description><pubDate>Thu, 02 May 2019 00:00:00 GMT</pubDate></item><item><title>Watching the future of coding accelerate into a simulated black hole</title><link>https://mirror.jenchan.biz/blog/watching-the-future-of-code-accelerate-into-a-black-hole/</link><guid isPermaLink="true">https://mirror.jenchan.biz/blog/watching-the-future-of-code-accelerate-into-a-black-hole/</guid><description>The race to the bottom is here and I&apos;m scavenging.</description><pubDate>Sat, 09 Mar 2019 00:00:00 GMT</pubDate></item><item><title>What I Learned From Trying To Be a Team Player For 2 Years</title><link>https://mirror.jenchan.biz/blog/what-i-learned-from-trying-to-be-a-team-player-for-2-years/</link><guid isPermaLink="true">https://mirror.jenchan.biz/blog/what-i-learned-from-trying-to-be-a-team-player-for-2-years/</guid><description>Taking stock of being a millennial with a second career and two terminations in two years</description><pubDate>Tue, 26 Feb 2019 00:00:00 GMT</pubDate></item><item><title>Hastily Deploying a Node App on NearlyFreeSpeech.net (Mac OS)</title><link>https://mirror.jenchan.biz/blog/hastily-deploying-a-node-app-on-nearlyfreespeechnet/</link><guid isPermaLink="true">https://mirror.jenchan.biz/blog/hastily-deploying-a-node-app-on-nearlyfreespeechnet/</guid><description>Hack job on deploying a Node app</description><pubDate>Wed, 17 Oct 2018 00:00:00 GMT</pubDate></item><item><title>What I learned from only using Select in PostgreSQL</title><link>https://mirror.jenchan.biz/blog/what-i-learned-from-only-using-select-in-psql/</link><guid isPermaLink="true">https://mirror.jenchan.biz/blog/what-i-learned-from-only-using-select-in-psql/</guid><description>A month in queries</description><pubDate>Mon, 09 Apr 2018 00:00:00 GMT</pubDate></item><item><title>What I Learned From Not Planning A Web App (from start to finish)</title><link>https://mirror.jenchan.biz/blog/what-i-learned-from-not-planning-a-web-app-from-start-to-finish/</link><guid isPermaLink="true">https://mirror.jenchan.biz/blog/what-i-learned-from-not-planning-a-web-app-from-start-to-finish/</guid><pubDate>Tue, 12 Dec 2017 00:00:00 GMT</pubDate></item><item><title>A no-fail workflow for starting a Mongo App</title><link>https://mirror.jenchan.biz/blog/nofail-workflow-mongo/</link><guid isPermaLink="true">https://mirror.jenchan.biz/blog/nofail-workflow-mongo/</guid><pubDate>Tue, 17 Oct 2017 00:00:00 GMT</pubDate></item><item><title>Adapting Greensock (GSAP) SVGs for Firefox</title><link>https://mirror.jenchan.biz/blog/adapting-greensock-svgs-for-firefox/</link><guid isPermaLink="true">https://mirror.jenchan.biz/blog/adapting-greensock-svgs-for-firefox/</guid><description>Some things I discovered whilst debugging an ad banner for a code test.</description><pubDate>Wed, 06 Sep 2017 00:00:00 GMT</pubDate></item><item><title>Last Day on Termination Notice</title><link>https://mirror.jenchan.biz/blog/last-day-on-termination-notice/</link><guid isPermaLink="true">https://mirror.jenchan.biz/blog/last-day-on-termination-notice/</guid><pubDate>Mon, 14 Aug 2017 00:00:00 GMT</pubDate></item><item><title>Junior Dev Interview Questions</title><link>https://mirror.jenchan.biz/blog/junior-dev-interview-questions/</link><guid isPermaLink="true">https://mirror.jenchan.biz/blog/junior-dev-interview-questions/</guid><pubDate>Tue, 08 Aug 2017 00:00:00 GMT</pubDate></item><item><title>Fixing emails for Outlook 2007, 2013, 2016</title><link>https://mirror.jenchan.biz/blog/fixing-emails-for-outlook-2007-2013-2016/</link><guid isPermaLink="true">https://mirror.jenchan.biz/blog/fixing-emails-for-outlook-2007-2013-2016/</guid><description>Writing Markup Like it&apos;s 1996.</description><pubDate>Sat, 17 Jun 2017 00:00:00 GMT</pubDate></item></channel></rss>