<rss version="2.0"><channel><title>ThatSoftwareDude.com</title><link>https://www.thatsoftwaredude.com/</link><image><title>ThatSoftwareDude.com</title><link>https://www.thatsoftwaredude.com/</link><url>https://www.thatsoftwaredude.com/images/design/softwaredude-02.png</url></image><language>en-us</language><description>ThatSoftwareDude.com News RSS Feed</description><ttl>60</ttl><item><title><![CDATA[How to Use Uint8Array Base64 Helpers in JavaScript]]></title><link>https://www.thatsoftwaredude.com/content/15283/how-to-use-uint8array-base64-helpers-in-javascript</link><description><![CDATA[<img src='https://www.thatsoftwaredude.com/images/post/titles/blog/thumbnails/15283-how-to-use-uint8array-base64-helpers-in-javascript_Hfa-Tlcg1.png'> JavaScript now has native `Uint8Array` helpers for converting bytes to and from Base64 and hex. Use them when your data is actually bytes: file chunks, image payloads, cryptographic output, compact URL tokens, or binary API responses. They are cleaner than `atob()` and `btoa()` because they work with `Uint8Array` directly....]]></description><pubDate>Thu, 28 May 2026 09:19:00 GMT</pubDate><guid>https://www.thatsoftwaredude.com/content/15283/how-to-use-uint8array-base64-helpers-in-javascript</guid></item><item><title><![CDATA[Why HTML-in-Canvas Is Big News]]></title><link>https://www.thatsoftwaredude.com/content/15284/why-html-in-canvas-is-big-news</link><description><![CDATA[<img src='https://www.thatsoftwaredude.com/images/post/titles/blog/thumbnails/15284-why-html-in-canvas-is-big-news_s90Uz1ust.png'> HTML-in-Canvas is big news because it targets one of the worst tradeoffs in web development: canvas gives you powerful rendering, but once you draw your UI there, you lose a lot of normal browser behavior. 

Chrome's experimental origin trial points toward a better model where a canvas app can draw real HTML while keeping browser-managed text, controls, focus, accessibility, and interaction....]]></description><pubDate>Tue, 26 May 2026 12:09:00 GMT</pubDate><guid>https://www.thatsoftwaredude.com/content/15284/why-html-in-canvas-is-big-news</guid></item><item><title><![CDATA[How to Use Vite Environment Variables Without Leaking Secrets]]></title><link>https://www.thatsoftwaredude.com/content/15279/how-to-use-vite-environment-variables-without-leaking-secrets</link><description><![CDATA[<img src='https://www.thatsoftwaredude.com/images/post/titles/blog/thumbnails/15279-how-to-use-vite-environment-variables-without-leak_ui5gLxcyy.png'> In Vite, a variable that starts with `VITE_` is public browser configuration, not a secret. Vite exposes it through `import.meta.env` and bundles it into client-side code at build time, so use `VITE_` for values like API base URLs, keep real secrets on the server, and only use `loadEnv()` when `.env` values need to shape `vite.config.*`....]]></description><pubDate>Fri, 22 May 2026 10:04:00 GMT</pubDate><guid>https://www.thatsoftwaredude.com/content/15279/how-to-use-vite-environment-variables-without-leaking-secrets</guid></item><item><title><![CDATA[How to Use the Web Locks API to Stop Duplicate Browser Jobs]]></title><link>https://www.thatsoftwaredude.com/content/15277/how-to-use-the-web-locks-api-to-stop-duplicate-browser-jobs</link><description><![CDATA[<img src='https://www.thatsoftwaredude.com/images/post/titles/blog/thumbnails/15277-web-locks-api_gDlxc-ujL.png'> Use the Web Locks API when the same web app can be open in multiple tabs and only one tab or worker should run a browser-side job at a time. It is a clean fit for sync jobs, cache refreshes, IndexedDB maintenance, and polling loops that should not stampede just because the user opened your app twice....]]></description><pubDate>Thu, 21 May 2026 17:18:00 GMT</pubDate><guid>https://www.thatsoftwaredude.com/content/15277/how-to-use-the-web-locks-api-to-stop-duplicate-browser-jobs</guid></item><item><title><![CDATA[How to Use Intl.DurationFormat]]></title><link>https://www.thatsoftwaredude.com/content/15278/how-to-use-intldurationformat</link><description><![CDATA[<img src='https://www.thatsoftwaredude.com/images/post/titles/blog/thumbnails/15278-how-to-use-intldurationformat-instead-of-hand-roll_HXgcgw6-D.png'> Use `Intl.DurationFormat` when your app needs labels like `1 hr, 4 min`, `1:04:09`, or localized equivalents. Keep the duration math in your code, pass a plain duration object to `new Intl.DurationFormat(locale, options).format(duration)`, and stop maintaining English-only string helpers for timers, dashboards, media lengths, and elapsed-time UI....]]></description><pubDate>Thu, 21 May 2026 08:25:00 GMT</pubDate><guid>https://www.thatsoftwaredude.com/content/15278/how-to-use-intldurationformat</guid></item><item><title><![CDATA[How to Set Up Fathom Analytics in Your Web Apps]]></title><link>https://www.thatsoftwaredude.com/content/15275/how-to-set-up-fathom-analytics-in-your-web-apps</link><description><![CDATA[<img src='https://www.thatsoftwaredude.com/images/post/titles/blog/thumbnails/15275-how-to-set-up-fathom-analytics-in-a-web-app_pxUo-h-hN.png'> Fathom Analytics can start with one script tag. That is part of its charm. But a useful analytics setup still needs engineering judgment: where the script loads, how client-side routes become pageviews, which actions deserve events, and how to keep your own staging traffic out of production reports....]]></description><pubDate>Tue, 19 May 2026 10:48:00 GMT</pubDate><guid>https://www.thatsoftwaredude.com/content/15275/how-to-set-up-fathom-analytics-in-your-web-apps</guid></item><item><title><![CDATA[Use Node's Built-In SQLite For Local App Features]]></title><link>https://www.thatsoftwaredude.com/content/15273/use-nodes-built-in-sqlite-for-local-app-features</link><description><![CDATA[<img src='https://www.thatsoftwaredude.com/images/post/titles/blog/thumbnails/15273-use-nodes-built-in-sqlite-for-local-app-features_jYVD19Yzo.png'> Not every database problem deserves a robust database server.

Sometimes you just need a small, durable place to put local state: saved links, CLI cache rows, sync checkpoints, desktop app preferences, integration-test fixtures, or a tiny job queue that only one process owns....]]></description><pubDate>Fri, 15 May 2026 19:00:00 GMT</pubDate><guid>https://www.thatsoftwaredude.com/content/15273/use-nodes-built-in-sqlite-for-local-app-features</guid></item><item><title><![CDATA[Build a Chrome Extension That Saves Text Snippets From Any Page]]></title><link>https://www.thatsoftwaredude.com/content/15272/build-a-chrome-extension-that-saves-text-snippets-from-any-page</link><description><![CDATA[<img src='https://www.thatsoftwaredude.com/images/post/titles/blog/thumbnails/15272-build-a-chrome-extension-that-saves-text-snippets-_XmVrAmAQR.png'> The fastest way to misunderstand Chrome extensions is to build one that only says "hello world" and calls it a day.

You learn that extensions have a manifest and a popup pretty much. Fine. But the first useful extension you build immediately asks better questions. ...]]></description><pubDate>Wed, 13 May 2026 14:35:00 GMT</pubDate><guid>https://www.thatsoftwaredude.com/content/15272/build-a-chrome-extension-that-saves-text-snippets-from-any-page</guid></item><item><title><![CDATA[How to Use UUIDv7 in PostgreSQL 18]]></title><link>https://www.thatsoftwaredude.com/content/15271/how-to-use-uuidv7-in-postgresql-18</link><description><![CDATA[<img src='https://www.thatsoftwaredude.com/images/post/titles/blog/thumbnails/15271-how-to-use-uuidv7-in-postgresql-18_g16lCKnYv.png'> ...]]></description><pubDate>Tue, 12 May 2026 16:09:00 GMT</pubDate><guid>https://www.thatsoftwaredude.com/content/15271/how-to-use-uuidv7-in-postgresql-18</guid></item><item><title><![CDATA[How To Prepare Your Web App For Chrome’s Two-Week Release Cycle]]></title><link>https://www.thatsoftwaredude.com/content/15269/how-to-prepare-your-web-app-for-chromes-two-week-release-cycle</link><description><![CDATA[<img src='https://www.thatsoftwaredude.com/images/post/titles/blog/thumbnails/15269-how-to-prepare-your-web-app-for-chromes-two-week-r_VatQUmNQm.png'> ...]]></description><pubDate>Fri, 08 May 2026 12:50:00 GMT</pubDate><guid>https://www.thatsoftwaredude.com/content/15269/how-to-prepare-your-web-app-for-chromes-two-week-release-cycle</guid></item><item><title><![CDATA[How To Try Node.js 26 Temporal Without Breaking Your Date Code]]></title><link>https://www.thatsoftwaredude.com/content/15268/how-to-try-nodejs-26-temporal-without-breaking-your-date-code</link><description><![CDATA[<img src='https://www.thatsoftwaredude.com/images/post/titles/blog/thumbnails/15268-how-to-try-nodejs-26-temporal-without-breaking-you_oIPno1Fs2.png'> ...]]></description><pubDate>Thu, 07 May 2026 12:25:00 GMT</pubDate><guid>https://www.thatsoftwaredude.com/content/15268/how-to-try-nodejs-26-temporal-without-breaking-your-date-code</guid></item><item><title><![CDATA[IBM launches an AI platform called Bob]]></title><link>https://www.thatsoftwaredude.com/content/15267/ibm-launches-an-ai-platform-called-bob</link><description><![CDATA[<img src='https://www.thatsoftwaredude.com/images/post/titles/blog/thumbnails/15267-ibm-bob-is-really-an-ai-assisted-delivery-play_58Vo7rFcH.png'> ...]]></description><pubDate>Wed, 29 Apr 2026 07:40:00 GMT</pubDate><guid>https://www.thatsoftwaredude.com/content/15267/ibm-launches-an-ai-platform-called-bob</guid></item><item><title><![CDATA[GitHub Copilot's New Pricing Model Has Got Some Developers Worried]]></title><link>https://www.thatsoftwaredude.com/content/15266/github-copilots-new-pricing-model-has-got-some-developers-worried</link><description><![CDATA[<img src='https://www.thatsoftwaredude.com/images/post/titles/blog/thumbnails/15266-github-copilot-is-becoming-a-seat-plus-usage-produ_921I_sN_D.png'> ...]]></description><pubDate>Tue, 28 Apr 2026 11:21:00 GMT</pubDate><guid>https://www.thatsoftwaredude.com/content/15266/github-copilots-new-pricing-model-has-got-some-developers-worried</guid></item><item><title><![CDATA[Why AI-Assisted Development Needs Video Receipts]]></title><link>https://www.thatsoftwaredude.com/content/15265/why-ai-assisted-development-needs-video-receipts</link><description><![CDATA[<img src='https://www.thatsoftwaredude.com/images/post/titles/blog/thumbnails/15265-sfsf_DTcSLyi7_.png'> ...]]></description><pubDate>Tue, 28 Apr 2026 08:03:00 GMT</pubDate><guid>https://www.thatsoftwaredude.com/content/15265/why-ai-assisted-development-needs-video-receipts</guid></item><item><title><![CDATA[What actually went down with Claude Mythos]]></title><link>https://www.thatsoftwaredude.com/content/15264/what-actually-went-down-with-claude-mythos</link><description><![CDATA[<img src='https://www.thatsoftwaredude.com/images/post/titles/blog/thumbnails/15264-what-actually-went-down-with-claude-mythos_x59XFb54o.png'> ...]]></description><pubDate>Mon, 13 Apr 2026 11:22:00 GMT</pubDate><guid>https://www.thatsoftwaredude.com/content/15264/what-actually-went-down-with-claude-mythos</guid></item><item><title><![CDATA[GitHub Copilot vs Claude Code: Which Is Right for You?]]></title><link>https://www.thatsoftwaredude.com/content/15260/github-copilot-vs-claude-code-which-is-right-for-you</link><description><![CDATA[<img src='https://www.thatsoftwaredude.com/images/post/titles/blog/thumbnails/15260-github-copilot-vs-claude-code-which-is-right-for-y_UakH7wfeX.png'> Two very different philosophies for AI-assisted coding. One stays in your editor and whispers. The other rolls up its sleeves and gets to work....]]></description><pubDate>Wed, 01 Apr 2026 14:33:00 GMT</pubDate><guid>https://www.thatsoftwaredude.com/content/15260/github-copilot-vs-claude-code-which-is-right-for-you</guid></item><item><title><![CDATA[The 3D Web That Never Happened]]></title><link>https://www.thatsoftwaredude.com/content/15257/the-3d-web-that-never-happened</link><description><![CDATA[<img src='https://www.thatsoftwaredude.com/images/post/titles/blog/thumbnails/15257-whatever-happened-to-the-3d-web_BhKcRH1Ss.jpeg'> The 3D web never arrived. Most users never consciously encountered a WebGL experience when casually web surfing. And yet today, WebGL is quietly running inside some of the most-used applications on the planet....]]></description><pubDate>Wed, 25 Mar 2026 16:08:00 GMT</pubDate><guid>https://www.thatsoftwaredude.com/content/15257/the-3d-web-that-never-happened</guid></item><item><title><![CDATA[Why developers can't get interviews in 2026]]></title><link>https://www.thatsoftwaredude.com/content/14252/why-developers-cant-get-interviews-in-2026</link><description><![CDATA[<img src='https://www.thatsoftwaredude.com/images/post/titles/blog/thumbnails/14252-why-developers-cant-get-interviews-in-2026_yvHHsvqxm.jpeg'> A story about a market that is drowning in noise. Noise created by large layoffs, vast automation, career pivots, and tools that have made applying for a job as frictionless as ordering takeout....]]></description><pubDate>Thu, 12 Mar 2026 10:45:00 GMT</pubDate><guid>https://www.thatsoftwaredude.com/content/14252/why-developers-cant-get-interviews-in-2026</guid></item><item><title><![CDATA[Nobody Told the Security Team About the AI Code]]></title><link>https://www.thatsoftwaredude.com/content/15256/nobody-told-the-security-team-about-the-ai-code</link><description><![CDATA[<img src='https://www.thatsoftwaredude.com/images/post/titles/blog/thumbnails/15256-nobody-told-the-security-team-about-the-ai-code_eOYFZu-DK.jpg'> Here's a scenario playing out in engineering teams right now. A developer uses Claude Code or Copilot to ship a feature in two hours instead of two days. It works. Tests pass. It gets merged. Nobody looks too closely, because it looks fine, the code is clean, it's readable, it does what it's supposed to do....]]></description><pubDate>Wed, 04 Mar 2026 07:31:00 GMT</pubDate><guid>https://www.thatsoftwaredude.com/content/15256/nobody-told-the-security-team-about-the-ai-code</guid></item><item><title><![CDATA[The Zeigarnik Effect: The "Cliffhanger" Design Pattern]]></title><link>https://www.thatsoftwaredude.com/content/14248/the-zeigarnik-effect-the-cliffhanger-design-pattern</link><description><![CDATA[<img src='https://www.thatsoftwaredude.com/images/post/titles/blog/thumbnails/14248-the-zeigarnik-effect-the-cliffhanger-design-patter_uy47c8F76u.png'> The Zeigarnik Effect states that people remember uncompleted or interrupted tasks better than completed ones. An "open loop" creates a specific kind of cognitive tension. The human brain hates ambiguity and it wants to close the loop....]]></description><pubDate>Thu, 12 Feb 2026 11:05:00 GMT</pubDate><guid>https://www.thatsoftwaredude.com/content/14248/the-zeigarnik-effect-the-cliffhanger-design-pattern</guid></item><item><title><![CDATA[Quitting .NET after 22 years]]></title><link>https://www.thatsoftwaredude.com/content/14253/quitting-net-after-22-years</link><description><![CDATA[<img src='https://www.thatsoftwaredude.com/images/post/titles/blog/thumbnails/14253-why-im-switching-from-google-analytics-to-fathom-in-2025_jZ_hOaFr1.png'> After 22 years, I'm packing up and saying goodbye to the framework that kickstarted my entire career as a software engineer....]]></description><pubDate>Tue, 10 Feb 2026 10:46:00 GMT</pubDate><guid>https://www.thatsoftwaredude.com/content/14253/quitting-net-after-22-years</guid></item><item><title><![CDATA[A Deep Dive into Web Design Dark Patterns]]></title><link>https://www.thatsoftwaredude.com/content/14244/a-deep-dive-into-web-design-dark-patterns</link><description><![CDATA[<img src='https://www.thatsoftwaredude.com/images/post/titles/blog/thumbnails/14244-a-deep-dive-into-web-design-dark-patterns_GX5NvXPed.png'> Have you ever tried to cancel a subscription and felt like you needed a map, a compass, and a PhD in linguistics just to find the "Yes, I really want to leave" button? ...]]></description><pubDate>Thu, 05 Feb 2026 13:26:00 GMT</pubDate><guid>https://www.thatsoftwaredude.com/content/14244/a-deep-dive-into-web-design-dark-patterns</guid></item><item><title><![CDATA[What is TRAIGA? The New Texas AI Law Explained]]></title><link>https://www.thatsoftwaredude.com/content/14240/what-is-traiga-the-new-texas-ai-law-explained</link><description><![CDATA[<img src='https://www.thatsoftwaredude.com/images/post/titles/blog/thumbnails/14240-what-is-traiga-the-new-texas-ai-law-explained_rqkT6ee5l.png'> Even if you aren’t sitting in a coffee shop in Austin, this matters. The law applies to anyone who "produces a product or service used by residents of Texas."...]]></description><pubDate>Tue, 03 Feb 2026 23:57:00 GMT</pubDate><guid>https://www.thatsoftwaredude.com/content/14240/what-is-traiga-the-new-texas-ai-law-explained</guid></item><item><title><![CDATA[Where did my entire work portfolio go?]]></title><link>https://www.thatsoftwaredude.com/content/14236/where-did-my-entire-work-portfolio-go</link><description><![CDATA[<img src='https://www.thatsoftwaredude.com/images/post/titles/blog/thumbnails/14236-where-did-my-entire-work-portfolio-go_I9vSV65i9.png'> Not long ago I was cleaning up my personal portfolio website as I hadn't made any meaningful updates in a long time, and I realized just how many of the projects that I've worked on no longer exist on the internet....]]></description><pubDate>Wed, 28 Jan 2026 09:40:00 GMT</pubDate><guid>https://www.thatsoftwaredude.com/content/14236/where-did-my-entire-work-portfolio-go</guid></item><item><title><![CDATA[What is AB 316? (And Why it Matters to Developers)]]></title><link>https://www.thatsoftwaredude.com/content/14241/what-is-ab-316-and-why-it-matters-to-developers</link><description><![CDATA[<img src='https://www.thatsoftwaredude.com/images/post/titles/blog/thumbnails/14241-what-is-ab-316-and-why-it-matters-to-devs_1cfj6o8Qq.png'> ...]]></description><pubDate>Tue, 27 Jan 2026 08:09:00 GMT</pubDate><guid>https://www.thatsoftwaredude.com/content/14241/what-is-ab-316-and-why-it-matters-to-developers</guid></item><item><title><![CDATA[Can an AI Agent Actually Replace a Mid-Level Developer?]]></title><link>https://www.thatsoftwaredude.com/content/14238/can-an-ai-agent-actually-replace-a-mid-level-developer</link><description><![CDATA[<img src='https://www.thatsoftwaredude.com/images/post/titles/blog/thumbnails/14238-can-an-ai-agent-actually-replace-a-mid-level-devel_BVyI8PZ6d.png'> One of the most important roles that a mid-level developer has at a company, has less to do with code and more to do with understanding context....]]></description><pubDate>Mon, 12 Jan 2026 11:52:00 GMT</pubDate><guid>https://www.thatsoftwaredude.com/content/14238/can-an-ai-agent-actually-replace-a-mid-level-developer</guid></item><item><title><![CDATA[The Tailwind Dilemma: What Developers Need to Know]]></title><link>https://www.thatsoftwaredude.com/content/14237/the-tailwind-dilemma-what-developers-need-to-know</link><description><![CDATA[<img src='https://www.thatsoftwaredude.com/images/post/titles/blog/thumbnails/14237-the-tailwind-dilemma-what-developers-need-to-know_DXd9OTyY_.png'> The developer community woke up this week to shocking news: Tailwind Labs has laid off 75% of its software engineers....]]></description><pubDate>Thu, 08 Jan 2026 17:07:00 GMT</pubDate><guid>https://www.thatsoftwaredude.com/content/14237/the-tailwind-dilemma-what-developers-need-to-know</guid></item><item><title><![CDATA[That Fancy Hamburger Menu? It's Going to Cost You]]></title><link>https://www.thatsoftwaredude.com/content/14197/that-fancy-hamburger-menu-its-going-to-cost-you</link><description><![CDATA[<img src='https://www.thatsoftwaredude.com/images/post/titles/blog/thumbnails/14197-that-menu-is-going-to-cost-you_2cqwqiXpb.png'> That beautiful, buttery-smooth, multi-level animated dropdown menu your designer just handed you? The one with the custom illustrations, morphing icons, and parallax backgrounds? Yeah, that one's going to cost you....]]></description><pubDate>Thu, 08 Jan 2026 11:43:00 GMT</pubDate><guid>https://www.thatsoftwaredude.com/content/14197/that-fancy-hamburger-menu-its-going-to-cost-you</guid></item><item><title><![CDATA[What's the State of jQuery in 2026?]]></title><link>https://www.thatsoftwaredude.com/content/14228/whats-the-state-of-jquery-in-2026</link><description><![CDATA[<img src='https://www.thatsoftwaredude.com/images/post/titles/blog/thumbnails/14228-whats-the-status-of-jquery-in-2026_gEiEPY2Sg.png'> So here's a question that frequently pops up in dev circles: is jQuery dead, dying, or just... there lingering in old codebases? ...]]></description><pubDate>Mon, 05 Jan 2026 13:08:00 GMT</pubDate><guid>https://www.thatsoftwaredude.com/content/14228/whats-the-state-of-jquery-in-2026</guid></item><item><title><![CDATA[How to Actually Use AI as a Developer in 2026]]></title><link>https://www.thatsoftwaredude.com/content/14227/how-to-actually-use-ai-as-a-developer-in-2026</link><description><![CDATA[<img src='https://www.thatsoftwaredude.com/images/post/titles/d4e18621-3325-47c0-bad6-36de76d3cd84.png'> Despite the bold predictions from late 2024 that human software development would be dead by 2026, programmers still have jobs, companies st...]]></description><pubDate>Tue, 30 Dec 2025 16:22:15 GMT</pubDate><guid>https://www.thatsoftwaredude.com/content/14227/how-to-actually-use-ai-as-a-developer-in-2026</guid></item></channel></rss>