<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[Should You Switch Over to Grok Bot?]]></title><link>https://www.thatsoftwaredude.com/content/15330/should-you-switch-over-to-grok-bot</link><description><![CDATA[<img src='https://www.thatsoftwaredude.com/images/post/titles/blog/thumbnails/15330-should-you-switch-over-to-grok-bot_EFGUeGXpe.png'> ...]]></description><pubDate>Tue, 08 Sep 2026 09:29:00 GMT</pubDate><guid>https://www.thatsoftwaredude.com/content/15330/should-you-switch-over-to-grok-bot</guid></item><item><title><![CDATA[Password Hashing in Node.js with Argon2id]]></title><link>https://www.thatsoftwaredude.com/content/15329/password-hashing-in-nodejs-with-argon2id</link><description><![CDATA[<img src='https://www.thatsoftwaredude.com/images/post/titles/blog/thumbnails/15329-password-hashing-in-nodejs-with-argon2id_xbDh6vJY4.jpg'> ...]]></description><pubDate>Tue, 01 Sep 2026 09:34:00 GMT</pubDate><guid>https://www.thatsoftwaredude.com/content/15329/password-hashing-in-nodejs-with-argon2id</guid></item><item><title><![CDATA[What My Monthly A.I. Bill Looks Like in 2026]]></title><link>https://www.thatsoftwaredude.com/content/15326/what-my-monthly-ai-bill-looks-like-in-2026</link><description><![CDATA[<img src='https://www.thatsoftwaredude.com/images/post/titles/blog/thumbnails/15326-what-my-monthly-ai-bill-looks-like-in-2026_V1K34_tM2.jpg'> ...]]></description><pubDate>Fri, 28 Aug 2026 10:58:00 GMT</pubDate><guid>https://www.thatsoftwaredude.com/content/15326/what-my-monthly-ai-bill-looks-like-in-2026</guid></item><item><title><![CDATA[The Unexpected Costs of Scaling a Startup]]></title><link>https://www.thatsoftwaredude.com/content/15320/the-unexpected-costs-of-scaling-a-startup</link><description><![CDATA[<img src='https://www.thatsoftwaredude.com/images/post/titles/blog/thumbnails/15320-the-unexpected-costs-of-scaling-a-startup_bkadygsc21.jpg'> ...]]></description><pubDate>Wed, 26 Aug 2026 14:00:00 GMT</pubDate><guid>https://www.thatsoftwaredude.com/content/15320/the-unexpected-costs-of-scaling-a-startup</guid></item><item><title><![CDATA[Godot Just Banned AI Contributions, and the Reason Isn't What You Think]]></title><link>https://www.thatsoftwaredude.com/content/15316/godot-just-banned-ai-contributions-and-the-reason-isnt-what-you-think</link><description><![CDATA[<img src='https://www.thatsoftwaredude.com/images/post/titles/blog/thumbnails/15316-godot-just-banned-ai-contributions-and-the-reason-_QXn0fq1-s.jpg'> ...]]></description><pubDate>Thu, 06 Aug 2026 13:20:00 GMT</pubDate><guid>https://www.thatsoftwaredude.com/content/15316/godot-just-banned-ai-contributions-and-the-reason-isnt-what-you-think</guid></item><item><title><![CDATA[Meta Finally Shows Up to the Terminal]]></title><link>https://www.thatsoftwaredude.com/content/15315/meta-finally-shows-up-to-the-terminal</link><description><![CDATA[<img src='https://www.thatsoftwaredude.com/images/post/titles/blog/thumbnails/15315-meta-finally-shows-up-to-the-terminal_NGw1Ty8CZ.jpg'> ...]]></description><pubDate>Wed, 05 Aug 2026 16:56:00 GMT</pubDate><guid>https://www.thatsoftwaredude.com/content/15315/meta-finally-shows-up-to-the-terminal</guid></item><item><title><![CDATA[wp2shell: The WordPress Core Bug That Let Strangers Run Code on Your Site]]></title><link>https://www.thatsoftwaredude.com/content/15313/wp2shell-the-wordpress-core-bug-that-let-strangers-run-code-on-your-site</link><description><![CDATA[<img src='https://www.thatsoftwaredude.com/images/post/titles/blog/thumbnails/15313-wp2shell-the-wordpress-core-bug-that-let-strangers_OGuHI4JIz.jpg'> ...]]></description><pubDate>Sat, 01 Aug 2026 16:59:00 GMT</pubDate><guid>https://www.thatsoftwaredude.com/content/15313/wp2shell-the-wordpress-core-bug-that-let-strangers-run-code-on-your-site</guid></item><item><title><![CDATA[GPT-5.6 Sol, Terra, and Luna: What’s the Difference?]]></title><link>https://www.thatsoftwaredude.com/content/15312/gpt-56-sol-terra-and-luna-whats-the-difference</link><description><![CDATA[<img src='https://www.thatsoftwaredude.com/images/post/titles/blog/thumbnails/15312-gpt-56-sol-terra-and-luna-whats-the-difference_qXPiB48RH.jpg'> Understand the differences between GPT-5.6 Sol, Terra, and Luna. Discover which model fits your needs based on intelligence, speed, and pricing....]]></description><pubDate>Thu, 09 Jul 2026 12:33:00 GMT</pubDate><guid>https://www.thatsoftwaredude.com/content/15312/gpt-56-sol-terra-and-luna-whats-the-difference</guid></item><item><title><![CDATA[What It Actually Costs to Build Your Own Custom Coding Model]]></title><link>https://www.thatsoftwaredude.com/content/15311/what-it-actually-costs-to-build-your-own-custom-coding-model</link><description><![CDATA[<img src='https://www.thatsoftwaredude.com/images/post/titles/blog/thumbnails/15311-what-it-actually-costs-to-build-your-own-custom-co_SkVj0qoBA.jpg'> ...]]></description><pubDate>Thu, 02 Jul 2026 08:43:00 GMT</pubDate><guid>https://www.thatsoftwaredude.com/content/15311/what-it-actually-costs-to-build-your-own-custom-coding-model</guid></item><item><title><![CDATA[The Phone Number Problem You Won't Catch With a Regex]]></title><link>https://www.thatsoftwaredude.com/content/15305/the-phone-number-problem-you-wont-catch-with-a-regex</link><description><![CDATA[<img src='https://www.thatsoftwaredude.com/images/post/titles/blog/thumbnails/15305-the-phone-number-problem-you-wont-catch-with-a-reg_Bngvd_udW.png'> ...]]></description><pubDate>Fri, 26 Jun 2026 14:10:00 GMT</pubDate><guid>https://www.thatsoftwaredude.com/content/15305/the-phone-number-problem-you-wont-catch-with-a-regex</guid></item><item><title><![CDATA[Developers Will Wait 15 Minutes to Avoid 10 Minutes of Typing]]></title><link>https://www.thatsoftwaredude.com/content/15304/developers-will-wait-15-minutes-to-avoid-10-minutes-of-typing</link><description><![CDATA[<img src='https://www.thatsoftwaredude.com/images/post/titles/blog/thumbnails/15304-developers-will-wait-15-minutes-to-avoid-10-minute_E-XUyTmeR.png'> Bigger context windows, more memory, larger models, tool calls, higher token costs, and extended reasoning modes all collide to increase latency. What used to take two or three minutes can now take ten, fifteen, or twenty....]]></description><pubDate>Mon, 22 Jun 2026 14:57:00 GMT</pubDate><guid>https://www.thatsoftwaredude.com/content/15304/developers-will-wait-15-minutes-to-avoid-10-minutes-of-typing</guid></item><item><title><![CDATA[How to Use package.json imports for Node Aliases]]></title><link>https://www.thatsoftwaredude.com/content/15298/how-to-use-packagejson-imports-for-node-aliases</link><description><![CDATA[<img src='https://www.thatsoftwaredude.com/images/post/titles/blog/thumbnails/15298-how-to-use-packagejson-imports-for-node-aliases_N8CVQeC8R.png'> Use Node's package.json imports field for small private aliases like #db, #http/*, and #config without relying on a bundler alias....]]></description><pubDate>Thu, 04 Jun 2026 10:17:00 GMT</pubDate><guid>https://www.thatsoftwaredude.com/content/15298/how-to-use-packagejson-imports-for-node-aliases</guid></item><item><title><![CDATA[How to Use the Cookie Store API]]></title><link>https://www.thatsoftwaredude.com/content/15294/how-to-use-the-cookie-store-api</link><description><![CDATA[<img src='https://www.thatsoftwaredude.com/images/post/titles/blog/thumbnails/15294-how-to-use-the-cookie-store-api_20qUt6r11.png'> The Cookie Store API is the cleaner way to work with script-visible browser cookies. It gives you promise-based reads, object-shaped writes, deletes, and change events instead of forcing you to parse and assign `document.cookie` strings. ...]]></description><pubDate>Mon, 01 Jun 2026 13:38:00 GMT</pubDate><guid>https://www.thatsoftwaredude.com/content/15294/how-to-use-the-cookie-store-api</guid></item><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></channel></rss>