<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
    <channel>
        <title><![CDATA[Dave Gray Teaches Code]]></title>
        <description><![CDATA[Dave Gray's Blog]]></description>
        <link>https://www.davegray.codes/</link>
        <generator>RSS for Node and Next.js</generator>
        <lastBuildDate>Mon, 01 Sep 2025 20:39:24 GMT</lastBuildDate>
        <atom:link href="https://www.davegray.codes/feed.xml" rel="self" type="application/rss+xml"/>
        <pubDate>Mon, 01 Sep 2025 20:39:24 GMT</pubDate>
        <copyright><![CDATA[Copyright 2025, Dave Gray]]></copyright>
        <language><![CDATA[en-US]]></language>
        <managingEditor><![CDATA[dave@davegray.codes (Dave Gray)]]></managingEditor>
        <webMaster><![CDATA[dave@davegray.codes (Dave Gray)]]></webMaster>
        <ttl>60</ttl>
        <item>
            <title><![CDATA[usePolling: Custom Hook for Auto-Fetching in Next.js]]></title>
            <description><![CDATA[Learn how to auto-refetch data in Next.js with a custom hook.]]></description>
            <link>https://www.davegray.codes/posts/usepolling-custom-hook-for-auto-fetching-in-nextjs</link>
            <guid isPermaLink="true">https://www.davegray.codes/posts/usepolling-custom-hook-for-auto-fetching-in-nextjs</guid>
            <category><![CDATA[fetch]]></category>
            <category><![CDATA[nextjs]]></category>
            <category><![CDATA[react]]></category>
            <category><![CDATA[hook]]></category>
            <category><![CDATA[polling]]></category>
            <dc:creator><![CDATA[Dave Gray]]></dc:creator>
            <pubDate>Wed, 18 Sep 2024 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[React Drag and Drop: The Missing Example]]></title>
            <description><![CDATA[Learn React drag and drop with the example missing from most tutorials.]]></description>
            <link>https://www.davegray.codes/posts/missing-example-for-react-drag-n-drop</link>
            <guid isPermaLink="true">https://www.davegray.codes/posts/missing-example-for-react-drag-n-drop</guid>
            <category><![CDATA[react]]></category>
            <category><![CDATA[dndkit]]></category>
            <category><![CDATA[draganddrop]]></category>
            <category><![CDATA[dragndrop]]></category>
            <dc:creator><![CDATA[Dave Gray]]></dc:creator>
            <pubDate>Wed, 28 Aug 2024 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Bye Copilot - How to Create a Local AI Coding Assistant for Free]]></title>
            <description><![CDATA[Create your own local AI Coding Assistant that integrates with VS Code.]]></description>
            <link>https://www.davegray.codes/posts/bye-copilot-how-to-create-a-local-ai-coding-assistant-for-free</link>
            <guid isPermaLink="true">https://www.davegray.codes/posts/bye-copilot-how-to-create-a-local-ai-coding-assistant-for-free</guid>
            <category><![CDATA[ai]]></category>
            <category><![CDATA[copilot]]></category>
            <category><![CDATA[codingassistant]]></category>
            <category><![CDATA[codeassistant]]></category>
            <dc:creator><![CDATA[Dave Gray]]></dc:creator>
            <pubDate>Mon, 24 Jun 2024 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Next.js Server Actions with next-safe-action]]></title>
            <description><![CDATA[The next-safe-action library handles server action type safety, input validation, errors and more.]]></description>
            <link>https://www.davegray.codes/posts/nextjs-server-actions-with-next-safe-action</link>
            <guid isPermaLink="true">https://www.davegray.codes/posts/nextjs-server-actions-with-next-safe-action</guid>
            <category><![CDATA[nextjs]]></category>
            <category><![CDATA[typesafety]]></category>
            <category><![CDATA[validation]]></category>
            <category><![CDATA[serveractions]]></category>
            <category><![CDATA[rsc]]></category>
            <dc:creator><![CDATA[Dave Gray]]></dc:creator>
            <pubDate>Tue, 18 Jun 2024 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[How to Create Excel Spreadsheets with Styling Options Using JavaScript]]></title>
            <description><![CDATA[Create MS Excel Spreadsheets with cell styling options.]]></description>
            <link>https://www.davegray.codes/posts/how-to-create-excel-spreadsheets-with-styling-options-using-javascript</link>
            <guid isPermaLink="true">https://www.davegray.codes/posts/how-to-create-excel-spreadsheets-with-styling-options-using-javascript</guid>
            <category><![CDATA[javascript]]></category>
            <category><![CDATA[js]]></category>
            <category><![CDATA[excel]]></category>
            <category><![CDATA[xlsx]]></category>
            <category><![CDATA[sheetjs]]></category>
            <category><![CDATA[react]]></category>
            <category><![CDATA[nextjs]]></category>
            <dc:creator><![CDATA[Dave Gray]]></dc:creator>
            <pubDate>Mon, 17 Jun 2024 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[FIX: Git Bash is Slow and has Strange Random Characters in VS Code]]></title>
            <description><![CDATA[This is how I fixed my VS Code git bash terminal when it became slow and started printing weird characters.]]></description>
            <link>https://www.davegray.codes/posts/git-bash-vs-code-slow-strange-random-characters</link>
            <guid isPermaLink="true">https://www.davegray.codes/posts/git-bash-vs-code-slow-strange-random-characters</guid>
            <category><![CDATA[gitbash]]></category>
            <category><![CDATA[vscode]]></category>
            <dc:creator><![CDATA[Dave Gray]]></dc:creator>
            <pubDate>Fri, 14 Jun 2024 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[How to Download xlsx Files from a Next.js Route Handler]]></title>
            <description><![CDATA[Make table exports in MS Excel and CSV formats available on demand.]]></description>
            <link>https://www.davegray.codes/posts/how-to-download-xlsx-files-from-a-nextjs-route-handler</link>
            <guid isPermaLink="true">https://www.davegray.codes/posts/how-to-download-xlsx-files-from-a-nextjs-route-handler</guid>
            <category><![CDATA[nextjs]]></category>
            <category><![CDATA[react]]></category>
            <category><![CDATA[excel]]></category>
            <category><![CDATA[xlsx]]></category>
            <dc:creator><![CDATA[Dave Gray]]></dc:creator>
            <pubDate>Sun, 18 Feb 2024 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[How to get an Accurate Column Item Count in React Table]]></title>
            <description><![CDATA[What I did when I needed an accurate column item count that did not include null values.]]></description>
            <link>https://www.davegray.codes/posts/how-to-get-an-accurate-column-item-count-in-react-table</link>
            <guid isPermaLink="true">https://www.davegray.codes/posts/how-to-get-an-accurate-column-item-count-in-react-table</guid>
            <category><![CDATA[react]]></category>
            <category><![CDATA[reacttable]]></category>
            <dc:creator><![CDATA[Dave Gray]]></dc:creator>
            <pubDate>Fri, 26 Jan 2024 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[How to Write a SQL Subquery with Drizzle ORM]]></title>
            <description><![CDATA[SQL subqueries in Drizzle ORM.]]></description>
            <link>https://www.davegray.codes/posts/how-to-write-a-sql-subquery-with-drizzle-orm</link>
            <guid isPermaLink="true">https://www.davegray.codes/posts/how-to-write-a-sql-subquery-with-drizzle-orm</guid>
            <category><![CDATA[sql]]></category>
            <category><![CDATA[drizzle]]></category>
            <category><![CDATA[orm]]></category>
            <category><![CDATA[mysql]]></category>
            <category><![CDATA[postgresql]]></category>
            <dc:creator><![CDATA[Dave Gray]]></dc:creator>
            <pubDate>Sun, 14 Jan 2024 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[How to Auto-Format Unwanted Python Line Indentations in VS Code]]></title>
            <description><![CDATA[VS Code can remove unwanted line indentations in a Python file.]]></description>
            <link>https://www.davegray.codes/posts/how-to-auto-format-unwanted-python-line-indents</link>
            <guid isPermaLink="true">https://www.davegray.codes/posts/how-to-auto-format-unwanted-python-line-indents</guid>
            <category><![CDATA[python]]></category>
            <category><![CDATA[vscode]]></category>
            <dc:creator><![CDATA[Dave Gray]]></dc:creator>
            <pubDate>Fri, 05 Jan 2024 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[My 2023 Wrapped and a Look at 2024]]></title>
            <description><![CDATA[What I accomplished in 2023 and what's in store for 2024]]></description>
            <link>https://www.davegray.codes/posts/2023-wrapped-next-2024</link>
            <guid isPermaLink="true">https://www.davegray.codes/posts/2023-wrapped-next-2024</guid>
            <category><![CDATA[webdev]]></category>
            <category><![CDATA[javascript]]></category>
            <category><![CDATA[python]]></category>
            <category><![CDATA[goals]]></category>
            <dc:creator><![CDATA[Dave Gray]]></dc:creator>
            <pubDate>Sat, 30 Dec 2023 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[What is the Yandex Verification meta tag?]]></title>
            <description><![CDATA[If you look at the metadata in websites, you may see a meta tag with the name yandex-verification. Here's what it means.]]></description>
            <link>https://www.davegray.codes/posts/what-is-yandex-verification-meta-tag</link>
            <guid isPermaLink="true">https://www.davegray.codes/posts/what-is-yandex-verification-meta-tag</guid>
            <category><![CDATA[seo]]></category>
            <category><![CDATA[webdev]]></category>
            <category><![CDATA[nextjs]]></category>
            <category><![CDATA[blog]]></category>
            <dc:creator><![CDATA[Dave Gray]]></dc:creator>
            <pubDate>Wed, 27 Dec 2023 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Robots.txt is NOT Robots meta]]></title>
            <description><![CDATA[Providing a robots.txt file is not the same as providing robots meta tags for your website.]]></description>
            <link>https://www.davegray.codes/posts/robots-txt-vs-robots-meta</link>
            <guid isPermaLink="true">https://www.davegray.codes/posts/robots-txt-vs-robots-meta</guid>
            <category><![CDATA[seo]]></category>
            <category><![CDATA[webdev]]></category>
            <category><![CDATA[nextjs]]></category>
            <category><![CDATA[blog]]></category>
            <dc:creator><![CDATA[Dave Gray]]></dc:creator>
            <pubDate>Sat, 16 Dec 2023 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Automate Open Graph Image Creation in Next.js]]></title>
            <description><![CDATA[You can dynamically generate open graph images in Next.js.]]></description>
            <link>https://www.davegray.codes/posts/automate-open-graph-images-nextjs</link>
            <guid isPermaLink="true">https://www.davegray.codes/posts/automate-open-graph-images-nextjs</guid>
            <category><![CDATA[nextjs]]></category>
            <category><![CDATA[webdev]]></category>
            <category><![CDATA[react]]></category>
            <category><![CDATA[seo]]></category>
            <category><![CDATA[blog]]></category>
            <dc:creator><![CDATA[Dave Gray]]></dc:creator>
            <pubDate>Sun, 10 Dec 2023 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Light & Dark Mode in Next.js App Router + Tailwind with No Flicker]]></title>
            <description><![CDATA[You can toggle light and dark mode themes in Next.js + TailwindCSS while avoiding a page flicker.]]></description>
            <link>https://www.davegray.codes/posts/light-dark-mode-nextjs-app-router-tailwind</link>
            <guid isPermaLink="true">https://www.davegray.codes/posts/light-dark-mode-nextjs-app-router-tailwind</guid>
            <category><![CDATA[webdev]]></category>
            <category><![CDATA[react]]></category>
            <category><![CDATA[nextjs]]></category>
            <category><![CDATA[tailwindcss]]></category>
            <category><![CDATA[blog]]></category>
            <dc:creator><![CDATA[Dave Gray]]></dc:creator>
            <pubDate>Mon, 04 Dec 2023 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Add Reading Time Estimates to Your Next.js Blog]]></title>
            <description><![CDATA[Learn how to add a reading time estimate to your  Next.js blog posts.]]></description>
            <link>https://www.davegray.codes/posts/add-reading-estimates-nextjs-blog</link>
            <guid isPermaLink="true">https://www.davegray.codes/posts/add-reading-estimates-nextjs-blog</guid>
            <category><![CDATA[nextjs]]></category>
            <category><![CDATA[blog]]></category>
            <category><![CDATA[webdev]]></category>
            <category><![CDATA[opensource]]></category>
            <dc:creator><![CDATA[Dave Gray]]></dc:creator>
            <pubDate>Wed, 29 Nov 2023 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[How to Add Google Analytics to Your Next.js Website]]></title>
            <description><![CDATA[Track the performance of your Next.js website with Google Analytics in a few simple steps.]]></description>
            <link>https://www.davegray.codes/posts/how-to-add-google-analytics-nextjs</link>
            <guid isPermaLink="true">https://www.davegray.codes/posts/how-to-add-google-analytics-nextjs</guid>
            <category><![CDATA[nextjs]]></category>
            <category><![CDATA[blog]]></category>
            <category><![CDATA[webdev]]></category>
            <category><![CDATA[seo]]></category>
            <dc:creator><![CDATA[Dave Gray]]></dc:creator>
            <pubDate>Tue, 28 Nov 2023 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Next.js: How to Submit Your Sitemap to Google]]></title>
            <description><![CDATA[After creating a sitemap for your Next.js website, you need to submit your sitemap to Google.]]></description>
            <link>https://www.davegray.codes/posts/nextjs-how-to-submit-your-sitemap</link>
            <guid isPermaLink="true">https://www.davegray.codes/posts/nextjs-how-to-submit-your-sitemap</guid>
            <category><![CDATA[nextjs]]></category>
            <category><![CDATA[blog]]></category>
            <category><![CDATA[webdev]]></category>
            <category><![CDATA[seo]]></category>
            <dc:creator><![CDATA[Dave Gray]]></dc:creator>
            <pubDate>Sun, 26 Nov 2023 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Next.js: How to Create Open Graph Social Media Cards]]></title>
            <description><![CDATA[Make your Next.js blog posts stand out with Open Graph Social Media Cards.]]></description>
            <link>https://www.davegray.codes/posts/nextjs-open-graph-social-media-cards</link>
            <guid isPermaLink="true">https://www.davegray.codes/posts/nextjs-open-graph-social-media-cards</guid>
            <category><![CDATA[nextjs]]></category>
            <category><![CDATA[blog]]></category>
            <category><![CDATA[seo]]></category>
            <category><![CDATA[webdev]]></category>
            <dc:creator><![CDATA[Dave Gray]]></dc:creator>
            <pubDate>Wed, 22 Nov 2023 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Next.js: How to Build an RSS Feed]]></title>
            <description><![CDATA[Your Next.js blog can benefit from providing an RSS feed.]]></description>
            <link>https://www.davegray.codes/posts/nextjs-how-to-build-an-rss-feed</link>
            <guid isPermaLink="true">https://www.davegray.codes/posts/nextjs-how-to-build-an-rss-feed</guid>
            <category><![CDATA[nextjs]]></category>
            <category><![CDATA[blog]]></category>
            <category><![CDATA[webdev]]></category>
            <category><![CDATA[seo]]></category>
            <dc:creator><![CDATA[Dave Gray]]></dc:creator>
            <pubDate>Tue, 21 Nov 2023 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Next.js: How to Build Sitemap and Robots.txt files]]></title>
            <description><![CDATA[Your Next.js blog or website should have sitemap and robots.txt files.]]></description>
            <link>https://www.davegray.codes/posts/nextjs-how-to-build-sitemap-robots-txt</link>
            <guid isPermaLink="true">https://www.davegray.codes/posts/nextjs-how-to-build-sitemap-robots-txt</guid>
            <category><![CDATA[nextjs]]></category>
            <category><![CDATA[blog]]></category>
            <category><![CDATA[webdev]]></category>
            <category><![CDATA[seo]]></category>
            <dc:creator><![CDATA[Dave Gray]]></dc:creator>
            <pubDate>Sun, 19 Nov 2023 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Does My Next.js Blog Need Canonical Links?]]></title>
            <description><![CDATA[A quick look at why I might want to use canonical links on my Next.js blog.]]></description>
            <link>https://www.davegray.codes/posts/does-my-nextjs-blog-need-canonical-links</link>
            <guid isPermaLink="true">https://www.davegray.codes/posts/does-my-nextjs-blog-need-canonical-links</guid>
            <category><![CDATA[nextjs]]></category>
            <category><![CDATA[blog]]></category>
            <category><![CDATA[webdev]]></category>
            <category><![CDATA[seo]]></category>
            <dc:creator><![CDATA[Dave Gray]]></dc:creator>
            <pubDate>Tue, 14 Nov 2023 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Next.js: favicon, SVG icon, Apple & Chrome icons]]></title>
            <description><![CDATA[Adding a favicon should be easy, right? Let's dive into adding favicons in Next.js.]]></description>
            <link>https://www.davegray.codes/posts/nextjs-favicon-svg-icon-apple-chrome</link>
            <guid isPermaLink="true">https://www.davegray.codes/posts/nextjs-favicon-svg-icon-apple-chrome</guid>
            <category><![CDATA[nextjs]]></category>
            <category><![CDATA[blog]]></category>
            <category><![CDATA[webdev]]></category>
            <dc:creator><![CDATA[Dave Gray]]></dc:creator>
            <pubDate>Mon, 13 Nov 2023 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Next.js: Ordering and Merging Metadata]]></title>
            <description><![CDATA[Discovering how much Next.js Metadata I need to provide for individual pages of my blog.]]></description>
            <link>https://www.davegray.codes/posts/nextjs-ordering-merging-metadata</link>
            <guid isPermaLink="true">https://www.davegray.codes/posts/nextjs-ordering-merging-metadata</guid>
            <category><![CDATA[nextjs]]></category>
            <category><![CDATA[blog]]></category>
            <category><![CDATA[webdev]]></category>
            <category><![CDATA[seo]]></category>
            <dc:creator><![CDATA[Dave Gray]]></dc:creator>
            <pubDate>Sun, 12 Nov 2023 00:00:00 GMT</pubDate>
        </item>
    </channel>
</rss>