<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0"
    xmlns:atom="http://www.w3.org/2005/Atom"
    xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:media="http://search.yahoo.com/mrss/">
<channel>
    <title>thucde.dev</title>
    <link>https://thucde.dev/en</link>
    <description>Dev blog and snippets by thucde.dev</description>
    <language>en</language>
    <lastBuildDate>Wed, 01 Jul 2026 19:08:21 GMT</lastBuildDate>
    <atom:link href="https://thucde.dev/en/feed.xml" rel="self" type="application/rss+xml" />
    <item>
        <title>Thucde.dev now speaks two languages</title>
        <link>https://thucde.dev/en/thucde-dev-now-speaks-two-languages</link>
        <guid isPermaLink="true">https://thucde.dev/en/thucde-dev-now-speaks-two-languages</guid>
        <pubDate>Tue, 30 Jun 2026 17:52:29 GMT</pubDate>
        <description>A very real Thucde.dev upgrade: i18n, Next.js, TypeScript, SEO, RSS, sitemap, feedback, and a production journey with plot twists.</description>
        <content:encoded><![CDATA[<p>A very real Thucde.dev upgrade: i18n, Next.js, TypeScript, SEO, RSS, sitemap, feedback, and a production journey with plot twists.</p>
<p>Sometimes I start with something that sounds tiny, and somehow it turns into a whole renovation.

This time, it was Thucde.dev.</p>]]></content:encoded>
        <author>Thức Trần</author>
        <category>Blog</category>
        <category>thucde.dev</category>
        <category>blog</category>
        <category>i18n</category>
        <category>upgrade</category>
        <category>post</category>
        <enclosure url="http://res.cloudinary.com/katyperrycbt/image/upload/v1782841210/thucde.dev/yategf4ttybithsehige.jpg" type="image/jpeg" length="0" />
        <media:content url="http://res.cloudinary.com/katyperrycbt/image/upload/v1782841210/thucde.dev/yategf4ttybithsehige.jpg" medium="image" />
        <media:thumbnail url="http://res.cloudinary.com/katyperrycbt/image/upload/v1782841210/thucde.dev/yategf4ttybithsehige.jpg" />
    </item>
    <item>
        <title>thucde.dev changed more than it looks</title>
        <link>https://thucde.dev/en/thucde-dev-major-changes-june-2026</link>
        <guid isPermaLink="true">https://thucde.dev/en/thucde-dev-major-changes-june-2026</guid>
        <pubDate>Mon, 15 Jun 2026 17:38:26 GMT</pubDate>
        <description>thucde.dev isn’t just more polished: it has a cleaner frontend, stronger editor, better security, and a more reliable deploy flow.</description>
        <content:encoded><![CDATA[<p>thucde.dev isn’t just more polished: it has a cleaner frontend, stronger editor, better security, and a more reliable deploy flow.</p>
<p>If you only glance at the homepage or a couple of dashboard screens, the easy reaction is probably: “ Looks like some nice UI polish. ”

One of the biggest shifts is that the frontend no longer feels like a codebase living between two eras. Over just a few days, thucde.dev went through a pretty substantial set of changes:</p>]]></content:encoded>
        <author>Thức Trần</author>
        <category>Engineering</category>
        <category>thucde.dev</category>
        <category>Next.js 15</category>
        <category>TypeScript</category>
        <category>shadcn</category>
        <category>SWR</category>
        <enclosure url="http://res.cloudinary.com/katyperrycbt/image/upload/v1781542871/thucde.dev/mni1eeyrg2hlevndh1mj.jpg" type="image/jpeg" length="0" />
        <media:content url="http://res.cloudinary.com/katyperrycbt/image/upload/v1781542871/thucde.dev/mni1eeyrg2hlevndh1mj.jpg" medium="image" />
        <media:thumbnail url="http://res.cloudinary.com/katyperrycbt/image/upload/v1781542871/thucde.dev/mni1eeyrg2hlevndh1mj.jpg" />
    </item>
    <item>
        <title>Why does useEffect keep running even when dependencies don’t change?</title>
        <link>https://thucde.dev/en/why-does-useeffect-keep-running-even-when-dependencies</link>
        <guid isPermaLink="true">https://thucde.dev/en/why-does-useeffect-keep-running-even-when-dependencies</guid>
        <pubDate>Mon, 02 Mar 2026 17:03:01 GMT</pubDate>
        <description>Why does useEffect keep running even when values don’t change? (React explained)</description>
        <content:encoded><![CDATA[<p>Why does useEffect keep running even when values don’t change? (React explained)</p>
<p>There’s a subtle React bug many developers run into without realizing why.

Looks completely harmless.</p>]]></content:encoded>
        <author>Thức Trần</author>
        <category>Programming</category>
        <category>react</category>
        <category>reactjs</category>
        <category>code</category>
        <category>frontend</category>
        <category>dependencies</category>
        <enclosure url="http://res.cloudinary.com/katyperrycbt/image/upload/v1772470945/thucde.dev/zepcojvfemzt9mzeecum.jpg" type="image/jpeg" length="0" />
        <media:content url="http://res.cloudinary.com/katyperrycbt/image/upload/v1772470945/thucde.dev/zepcojvfemzt9mzeecum.jpg" medium="image" />
        <media:thumbnail url="http://res.cloudinary.com/katyperrycbt/image/upload/v1772470945/thucde.dev/zepcojvfemzt9mzeecum.jpg" />
    </item>
    <item>
        <title>How to Fix Node.js &quot;Application Error&quot; on Azure when using GitHub Actions</title>
        <link>https://thucde.dev/en/fix-nodejs-application-error-on-azure-github-actions</link>
        <guid isPermaLink="true">https://thucde.dev/en/fix-nodejs-application-error-on-azure-github-actions</guid>
        <pubDate>Wed, 14 Jan 2026 04:10:15 GMT</pubDate>
        <description>Node.js app not working on Azure? The issue might be your start script. See how to override the startup command in GitHub Actions and fix it for good.</description>
        <content:encoded><![CDATA[<p>Node.js app not working on Azure? The issue might be your start script. See how to override the startup command in GitHub Actions and fix it for good.</p>
<p>I avoided using GitHub Actions to deploy Node.js apps to Azure for years. Why? Because I simply couldn&apos;t get them to work. I would see &quot;Build Succeeded&quot; and &quot;Deployment Successful&quot; messages, yet the actual application would crash immediately upon launch.

Today, I faced the same issue again. However, this time I had my AI companion to help debug. After several prompts and failed attempts, I finally found the root cause and a permanent fix. I’m sharing it here to save you the headache.</p>]]></content:encoded>
        <author>Thức Trần</author>
        <category>Azure</category>
        <category>programming</category>
        <category>code</category>
        <category>nodejs</category>
        <category>cloud</category>
        <category>deployment</category>
        <enclosure url="http://res.cloudinary.com/katyperrycbt/image/upload/v1768363776/thucde.dev/qvywmfodoxxqflui0ltd.jpg" type="image/jpeg" length="0" />
        <media:content url="http://res.cloudinary.com/katyperrycbt/image/upload/v1768363776/thucde.dev/qvywmfodoxxqflui0ltd.jpg" medium="image" />
        <media:thumbnail url="http://res.cloudinary.com/katyperrycbt/image/upload/v1768363776/thucde.dev/qvywmfodoxxqflui0ltd.jpg" />
    </item>
    <item>
        <title>reverse() in React can surprise you — here’s why (and how to fix it)</title>
        <link>https://thucde.dev/en/reverse-in-react-can-surprise-you</link>
        <guid isPermaLink="true">https://thucde.dev/en/reverse-in-react-can-surprise-you</guid>
        <pubDate>Thu, 21 Aug 2025 05:39:28 GMT</pubDate>
        <description>Array.prototype.reverse() mutates the original array. That’s fine in isolated scripts, but inside a React render it can lead to surprising UI,... Learn more.</description>
        <content:encoded><![CDATA[<p>Array.prototype.reverse() mutates the original array. That’s fine in isolated scripts, but inside a React render it can lead to surprising UI,... Learn more.</p>
<p>Array.prototype.reverse() mutates the original array. That’s fine in isolated scripts, but inside a React render it can lead to surprising UI, especially in React 18 Strict Mode (development) where React intentionally invokes render twice to surface side effects.

Consider a parent passing an array as props:</p>]]></content:encoded>
        <author>Thức Trần</author>
        <category>Programming</category>
        <category>javascript</category>
        <category>reverse</category>
        <category>react</category>
        <category>code</category>
        <enclosure url="http://res.cloudinary.com/katyperrycbt/image/upload/v1755754720/thucde.dev/v7usytakg1rmbji9a3v5.jpg" type="image/jpeg" length="0" />
        <media:content url="http://res.cloudinary.com/katyperrycbt/image/upload/v1755754720/thucde.dev/v7usytakg1rmbji9a3v5.jpg" medium="image" />
        <media:thumbnail url="http://res.cloudinary.com/katyperrycbt/image/upload/v1755754720/thucde.dev/v7usytakg1rmbji9a3v5.jpg" />
    </item>
    <item>
        <title>MongoDB returns results in different order each time, why?</title>
        <link>https://thucde.dev/en/mongodb-returns-results-in-different-order-each-time</link>
        <guid isPermaLink="true">https://thucde.dev/en/mongodb-returns-results-in-different-order-each-time</guid>
        <pubDate>Thu, 07 Aug 2025 04:30:51 GMT</pubDate>
        <description>Discover how MongoDB may return results in different order when sorting with sort(), and/or skip(), limit()</description>
        <content:encoded><![CDATA[<p>Discover how MongoDB may return results in different order when sorting with sort(), and/or skip(), limit()</p>
<p>I recently ran into an issue with MongoDB query that I took ~30 mins to figuring out - so I am sharing in case you are facing this at a time - because I didn&apos;t notice this, had this issue before even though I have been using MongoDB for a long time.

--</p>]]></content:encoded>
        <author>Thức Trần</author>
        <category>Programming</category>
        <category>mongodb</category>
        <category>sort</category>
        <category>code</category>
        <category>mongoose</category>
        <category>database</category>
        <enclosure url="http://res.cloudinary.com/katyperrycbt/image/upload/v1754541150/thucde.dev/tuzwgavxkm35pvoqhfaj.jpg" type="image/jpeg" length="0" />
        <media:content url="http://res.cloudinary.com/katyperrycbt/image/upload/v1754541150/thucde.dev/tuzwgavxkm35pvoqhfaj.jpg" medium="image" />
        <media:thumbnail url="http://res.cloudinary.com/katyperrycbt/image/upload/v1754541150/thucde.dev/tuzwgavxkm35pvoqhfaj.jpg" />
    </item>
    <item>
        <title>Authorize your requests to secured endpoints in Postman programmatically!</title>
        <link>https://thucde.dev/en/authorize-your-requests-to-secured-endpoints-in-postman</link>
        <guid isPermaLink="true">https://thucde.dev/en/authorize-your-requests-to-secured-endpoints-in-postman</guid>
        <pubDate>Sat, 12 Jul 2025 09:50:29 GMT</pubDate>
        <description>This script runs before the request, automatically updating your authorization token to ensure it&apos;s always valid.</description>
        <content:encoded><![CDATA[<p>This script runs before the request, automatically updating your authorization token to ensure it&apos;s always valid.</p>
<p>As a software engineer in web development, how usually have you been using Postman for testing API endpoints? In my case, I use it sometimes, but Postman is a very strong tool to play with the APIs.&amp;nbsp;

So, do you use secured endpoints that require some sort of authorization? How do you do on that?</p>]]></content:encoded>
        <author>Thức Trần</author>
        <category>Programming</category>
        <category>postman</category>
        <category>authorization</category>
        <category>script</category>
        <category>code</category>
        <category>tech</category>
        <enclosure url="http://res.cloudinary.com/katyperrycbt/image/upload/v1752313799/thucde.dev/vllcuiyjtov3ofgwuxlt.jpg" type="image/jpeg" length="0" />
        <media:content url="http://res.cloudinary.com/katyperrycbt/image/upload/v1752313799/thucde.dev/vllcuiyjtov3ofgwuxlt.jpg" medium="image" />
        <media:thumbnail url="http://res.cloudinary.com/katyperrycbt/image/upload/v1752313799/thucde.dev/vllcuiyjtov3ofgwuxlt.jpg" />
    </item>
    <item>
        <title>Create aliases for commands on MacOS</title>
        <link>https://thucde.dev/en/create-aliases-for-commands-on-macos</link>
        <guid isPermaLink="true">https://thucde.dev/en/create-aliases-for-commands-on-macos</guid>
        <pubDate>Sun, 15 Jun 2025 17:04:05 GMT</pubDate>
        <description>In MacOS, you can create alias for long command for better typing and developing purposes!</description>
        <content:encoded><![CDATA[<p>In MacOS, you can create alias for long command for better typing and developing purposes!</p>
<p>In MacOS, you can create alias for long command for better typing and developing purposes!

In this post, you&apos;ll know how. In this instruction, we will do &quot;pn&quot; for &quot;pnpm&quot; command.</p>]]></content:encoded>
        <author>Thức Trần</author>
        <category>Programming</category>
        <category>macos</category>
        <category>alias</category>
        <category>short command</category>
        <category>code</category>
        <enclosure url="http://res.cloudinary.com/katyperrycbt/image/upload/v1750007018/thucde.dev/phir0bflfyr1t5lk22vb.jpg" type="image/jpeg" length="0" />
        <media:content url="http://res.cloudinary.com/katyperrycbt/image/upload/v1750007018/thucde.dev/phir0bflfyr1t5lk22vb.jpg" medium="image" />
        <media:thumbnail url="http://res.cloudinary.com/katyperrycbt/image/upload/v1750007018/thucde.dev/phir0bflfyr1t5lk22vb.jpg" />
    </item>
    <item>
        <title>Dynamic Preview Image | Every URL Deserves a Beautiful Preview</title>
        <link>https://thucde.dev/en/dynamic-preview-image</link>
        <guid isPermaLink="true">https://thucde.dev/en/dynamic-preview-image</guid>
        <pubDate>Mon, 26 May 2025 17:08:24 GMT</pubDate>
        <description>Dynamic Open Graph images create beautiful, real-time preview cards for your links — designed to catch attention and increase engagement.</description>
        <content:encoded><![CDATA[<p>Dynamic Open Graph images create beautiful, real-time preview cards for your links — designed to catch attention and increase engagement.</p>
<p>You’ve Probably Seen Dynamic Images—You Just Didn’t Know It

You might have come across dynamic images before without realizing that’s what they were.</p>]]></content:encoded>
        <author>Thức Trần</author>
        <category>SEO</category>
        <category>programming</category>
        <category>preview image</category>
        <category>tech</category>
        <category>code</category>
        <category>UI/UX</category>
        <enclosure url="http://res.cloudinary.com/katyperrycbt/image/upload/v1748356874/thucde.dev/grb4bfh9tz9bocigsqe6.jpg" type="image/jpeg" length="0" />
        <media:content url="http://res.cloudinary.com/katyperrycbt/image/upload/v1748356874/thucde.dev/grb4bfh9tz9bocigsqe6.jpg" medium="image" />
        <media:thumbnail url="http://res.cloudinary.com/katyperrycbt/image/upload/v1748356874/thucde.dev/grb4bfh9tz9bocigsqe6.jpg" />
    </item>
    <item>
        <title>TypeScript + Google Places API (Text Search)</title>
        <link>https://thucde.dev/en/bypassing-the-outdated-sdk-typescript-google-places</link>
        <guid isPermaLink="true">https://thucde.dev/en/bypassing-the-outdated-sdk-typescript-google-places</guid>
        <pubDate>Sun, 25 May 2025 08:01:40 GMT</pubDate>
        <description>If you&apos;ve used the @googlemaps/places Node.js client library recently, you may have noticed it’s not keeping up with the latest Google Places API... Learn more.</description>
        <content:encoded><![CDATA[<p>If you&apos;ve used the @googlemaps/places Node.js client library recently, you may have noticed it’s not keeping up with the latest Google Places API... Learn more.</p>
<p>If you&apos;ve used the @googlemaps/places Node.js client library recently, you may have noticed it’s not keeping up with the latest Google Places API features—particularly the Text Search endpoint. While it’s convenient to rely on official libraries, sometimes they lag behind the actual REST API (Web Service). That’s exactly what happened to me.

Rather than wait for updates or work around limitations, I decided to go straight to the source: the REST API&amp;nbsp;&amp;nbsp;(Web Service)&amp;nbsp;itself. In this post, I’ll show you how to build a TypeScript class that makes direct HTTP requests to the Google Places Text Search endpoint. By using REST, we get full access to the latest features, more control over the requests and responses, and a better understanding of how the API really works.</p>]]></content:encoded>
        <author>Thức Trần</author>
        <category>Programming</category>
        <category>google places api</category>
        <category>search text</category>
        <category>typescript</category>
        <category>code</category>
        <category>react</category>
        <enclosure url="http://res.cloudinary.com/katyperrycbt/image/upload/v1748161765/thucde.dev/ovqr8veehxeg4r9e6m6q.jpg" type="image/jpeg" length="0" />
        <media:content url="http://res.cloudinary.com/katyperrycbt/image/upload/v1748161765/thucde.dev/ovqr8veehxeg4r9e6m6q.jpg" medium="image" />
        <media:thumbnail url="http://res.cloudinary.com/katyperrycbt/image/upload/v1748161765/thucde.dev/ovqr8veehxeg4r9e6m6q.jpg" />
    </item>
    <item>
        <title>How to Detect macOS in JavaScript or React Applications</title>
        <link>https://thucde.dev/en/how-to-detect-macos-in-javascript-or-react-applications</link>
        <guid isPermaLink="true">https://thucde.dev/en/how-to-detect-macos-in-javascript-or-react-applications</guid>
        <pubDate>Mon, 05 May 2025 07:53:06 GMT</pubDate>
        <description>Detect macOS in JavaScript or React using reliable user agent checks and platform detection methods.</description>
        <content:encoded><![CDATA[<p>Detect macOS in JavaScript or React using reliable user agent checks and platform detection methods.</p>
<p>A compact example on how to detect if the OS is MacOS or others, which help for cases like to create shortcuts for web applications.

&amp;nbsp; In React, since window is not available during server-side rendering or the initial render, it&apos;s important to access it inside a useEffect to ensure it&apos;s defined.&amp;nbsp;&amp;nbsp;</p>]]></content:encoded>
        <author>Thức Trần</author>
        <category>Programming</category>
        <category>react</category>
        <category>nextjs</category>
        <category>macos</category>
        <category>os</category>
        <category>code</category>
        <enclosure url="http://res.cloudinary.com/katyperrycbt/image/upload/v1746431553/thucde.dev/qnusqcsfom96k0yl4qio.jpg" type="image/jpeg" length="0" />
        <media:content url="http://res.cloudinary.com/katyperrycbt/image/upload/v1746431553/thucde.dev/qnusqcsfom96k0yl4qio.jpg" medium="image" />
        <media:thumbnail url="http://res.cloudinary.com/katyperrycbt/image/upload/v1746431553/thucde.dev/qnusqcsfom96k0yl4qio.jpg" />
    </item>
    <item>
        <title>IndexedDB vs. localStorage: The Best Way to Store Large Data in the Browser</title>
        <link>https://thucde.dev/en/indexeddb-vs-localstorage-the-best-way-to-store-large</link>
        <guid isPermaLink="true">https://thucde.dev/en/indexeddb-vs-localstorage-the-best-way-to-store-large</guid>
        <pubDate>Sat, 19 Apr 2025 09:11:21 GMT</pubDate>
        <description>While IndexedDB isn’t always the first thing people reach for, it&apos;s super useful in specific situations. Learn more.</description>
        <content:encoded><![CDATA[<p>While IndexedDB isn’t always the first thing people reach for, it&apos;s super useful in specific situations. Learn more.</p>
<p>While working on a feature that caches image data for the user&apos;s last searches, I ran into a limitation: localStorage caps out at around 5MB (and only stores strings). Not ideal when you&apos;re dealing with images or structured data.

That’s when I turned to IndexedDB — the browser’s built-in, asynchronous, low-level NoSQL database.</p>]]></content:encoded>
        <author>Thức Trần</author>
        <category>Programming</category>
        <category>IndexedDB</category>
        <category>storage</category>
        <category>code</category>
        <category>front-end</category>
        <category>react</category>
        <enclosure url="http://res.cloudinary.com/katyperrycbt/image/upload/v1745053775/thucde.dev/k51gxmhzt6v8iay5onfq.jpg" type="image/jpeg" length="0" />
        <media:content url="http://res.cloudinary.com/katyperrycbt/image/upload/v1745053775/thucde.dev/k51gxmhzt6v8iay5onfq.jpg" medium="image" />
        <media:thumbnail url="http://res.cloudinary.com/katyperrycbt/image/upload/v1745053775/thucde.dev/k51gxmhzt6v8iay5onfq.jpg" />
    </item>
    <item>
        <title>I did not know this from React until now</title>
        <link>https://thucde.dev/en/i-did-not-know-this-from-react-until-now</link>
        <guid isPermaLink="true">https://thucde.dev/en/i-did-not-know-this-from-react-until-now</guid>
        <pubDate>Fri, 04 Apr 2025 06:46:12 GMT</pubDate>
        <description>I&apos;m excited to share with you the new thing that I have just learned, after about 2 years.</description>
        <content:encoded><![CDATA[<p>I&apos;m excited to share with you the new thing that I have just learned, after about 2 years.</p>
<p>I&apos;ve been working with React for about 2 professional years but have never known about this until recent. Since I had a chance to apply this &apos;new&apos; thing, I&apos;m sharing now with you.

I was trying to fix a defect that I was so unsure about how to fix it with the current implementation. That is, some of the inner components were not working as expected.</p>]]></content:encoded>
        <author>Thức Trần</author>
        <category>Programming</category>
        <category>react</category>
        <category>work</category>
        <category>it</category>
        <category>front-end</category>
        <enclosure url="http://res.cloudinary.com/katyperrycbt/image/upload/v1743749056/thucde.dev/mr3lbpsvtbve65ny1byl.jpg" type="image/jpeg" length="0" />
        <media:content url="http://res.cloudinary.com/katyperrycbt/image/upload/v1743749056/thucde.dev/mr3lbpsvtbve65ny1byl.jpg" medium="image" />
        <media:thumbnail url="http://res.cloudinary.com/katyperrycbt/image/upload/v1743749056/thucde.dev/mr3lbpsvtbve65ny1byl.jpg" />
    </item>
    <item>
        <title>A solution that saves me a LOT of time - work smarter not harder</title>
        <link>https://thucde.dev/en/a-solution-that-saves-me-a-lot-of-time-work-smarter-not</link>
        <guid isPermaLink="true">https://thucde.dev/en/a-solution-that-saves-me-a-lot-of-time-work-smarter-not</guid>
        <pubDate>Fri, 14 Mar 2025 11:32:58 GMT</pubDate>
        <description>While I&apos;m doing an extremely boring task, is not too complicated, but it repetitive and I have to do the same thing for many many of times. It... Learn more.</description>
        <content:encoded><![CDATA[<p>While I&apos;m doing an extremely boring task, is not too complicated, but it repetitive and I have to do the same thing for many many of times. It... Learn more.</p>
<p>While I&apos;m doing an extremely boring task, is not too complicated, but it repetitive and I have to do the same thing for many many of times. It took me a day to get half the work done. And it&apos;s... even prone to error .

I&apos;m implementing a feature that would change the whole Help page of an application. It is estimated (by me) to have almost 6 mds (man-days) for all the changes needed.&amp;nbsp;</p>]]></content:encoded>
        <author>Thức Trần</author>
        <category>Perspectives</category>
        <category>programming</category>
        <category>code</category>
        <category>advice</category>
        <category>life</category>
        <category>work</category>
        <enclosure url="http://res.cloudinary.com/katyperrycbt/image/upload/v1741951938/thucde.dev/icctgkw4le7veaguqiu1.jpg" type="image/jpeg" length="0" />
        <media:content url="http://res.cloudinary.com/katyperrycbt/image/upload/v1741951938/thucde.dev/icctgkw4le7veaguqiu1.jpg" medium="image" />
        <media:thumbnail url="http://res.cloudinary.com/katyperrycbt/image/upload/v1741951938/thucde.dev/icctgkw4le7veaguqiu1.jpg" />
    </item>
    <item>
        <title>Use Lodash&apos;s debounce in React applications</title>
        <link>https://thucde.dev/en/use-lodashs-debounce-in-react-applications</link>
        <guid isPermaLink="true">https://thucde.dev/en/use-lodashs-debounce-in-react-applications</guid>
        <pubDate>Sun, 02 Mar 2025 10:23:59 GMT</pubDate>
        <description>Understanding useMemo, useCallback with debounce: Avoiding Unnecessary Function Re-Creations</description>
        <content:encoded><![CDATA[<p>Understanding useMemo, useCallback with debounce: Avoiding Unnecessary Function Re-Creations</p>
<p>In this short blog, you&apos;ll know how to use debounce lodash in React or Next.js applications.

When handling user input in React, especially in scenarios like search bars or real-time form validation, it&apos;s common to run a function every time the user types. However, this can lead to excessive function executions, causing performance issues and unnecessary re-renders.</p>]]></content:encoded>
        <author>Thức Trần</author>
        <category>Programming</category>
        <category>debounce</category>
        <category>lodash</category>
        <category>react</category>
        <category>code</category>
        <category>useCallback</category>
        <category>useMemo</category>
        <enclosure url="http://res.cloudinary.com/katyperrycbt/image/upload/v1740911011/thucde.dev/ij1gzwty8xns8kewvmgm.jpg" type="image/jpeg" length="0" />
        <media:content url="http://res.cloudinary.com/katyperrycbt/image/upload/v1740911011/thucde.dev/ij1gzwty8xns8kewvmgm.jpg" medium="image" />
        <media:thumbnail url="http://res.cloudinary.com/katyperrycbt/image/upload/v1740911011/thucde.dev/ij1gzwty8xns8kewvmgm.jpg" />
    </item>
    <item>
        <title>Why there is a small space at the bottom of an img tag?</title>
        <link>https://thucde.dev/en/why-there-is-a-small-space-at-the-bottom-of-an-img-tag</link>
        <guid isPermaLink="true">https://thucde.dev/en/why-there-is-a-small-space-at-the-bottom-of-an-img-tag</guid>
        <pubDate>Wed, 26 Feb 2025 07:49:42 GMT</pubDate>
        <description>I think this is a small tip that could help you out when developing websites.</description>
        <content:encoded><![CDATA[<p>I think this is a small tip that could help you out when developing websites.</p>
<p>I think this is a small tip but would help you out when developing websites. I just faced it recently and it took me a while to figure out the issue. So, I hope this will save you some time next time when you see it.

In case you haven&apos;t noticed, the space appears at the bottom of the image tag. If your image has the size of 200x200, then you, in some cases, may see that the actual frame that covers the image has the size of 200x2 XX - which XX is bigger than 0. And this number depends on several factors, it maybe the font size, font family, lineheight.</p>]]></content:encoded>
        <author>Thức Trần</author>
        <category>Programming</category>
        <category>code</category>
        <category>tech</category>
        <category>frontend</category>
        <category>react</category>
        <category>it</category>
        <enclosure url="http://res.cloudinary.com/katyperrycbt/image/upload/v1740556139/thucde.dev/ehrihnhbcribzxzxezme.jpg" type="image/jpeg" length="0" />
        <media:content url="http://res.cloudinary.com/katyperrycbt/image/upload/v1740556139/thucde.dev/ehrihnhbcribzxzxezme.jpg" medium="image" />
        <media:thumbnail url="http://res.cloudinary.com/katyperrycbt/image/upload/v1740556139/thucde.dev/ehrihnhbcribzxzxezme.jpg" />
    </item>
    <item>
        <title>Build a Folder Tree in CSS for Nested Lists (No JavaScript Required)</title>
        <link>https://thucde.dev/en/build-a-folder-tree-in-css-for-nested-lists-no</link>
        <guid isPermaLink="true">https://thucde.dev/en/build-a-folder-tree-in-css-for-nested-lists-no</guid>
        <pubDate>Fri, 07 Feb 2025 02:45:05 GMT</pubDate>
        <description>Have you ever wondered how to create a Tree Structure by CSS for some nested lists?</description>
        <content:encoded><![CDATA[<p>Have you ever wondered how to create a Tree Structure by CSS for some nested lists?</p>
<p>Learn how to create a folder tree structure in CSS with connected lines for nested lists. This step-by-step guide shows you how to style hierarchical lists using only CSS—no JavaScript needed!

You&apos;ll know how to do it in 3 mins.</p>]]></content:encoded>
        <author>Thức Trần</author>
        <category>Programming</category>
        <category>folder tree</category>
        <category>css</category>
        <category>code</category>
        <category>html</category>
        <category>frontend</category>
        <enclosure url="http://res.cloudinary.com/katyperrycbt/image/upload/v1738896105/thucde.dev/fneh96v8lxmup6xlejyl.jpg" type="image/jpeg" length="0" />
        <media:content url="http://res.cloudinary.com/katyperrycbt/image/upload/v1738896105/thucde.dev/fneh96v8lxmup6xlejyl.jpg" medium="image" />
        <media:thumbnail url="http://res.cloudinary.com/katyperrycbt/image/upload/v1738896105/thucde.dev/fneh96v8lxmup6xlejyl.jpg" />
    </item>
    <item>
        <title>MUI-like Circular Progress with TailwindCSS</title>
        <link>https://thucde.dev/en/mui-like-circular-progress-with-tailwindcss</link>
        <guid isPermaLink="true">https://thucde.dev/en/mui-like-circular-progress-with-tailwindcss</guid>
        <pubDate>Mon, 27 Jan 2025 03:27:08 GMT</pubDate>
        <description>I&apos;ll show you a MUI-like circular progress React component with just TailwindCSS.</description>
        <content:encoded><![CDATA[<p>I&apos;ll show you a MUI-like circular progress React component with just TailwindCSS.</p>
<p>I&apos;ll show you a MUI-like circular progress with just TailwindCSS.

In this tutorial, we&apos;ll show you how to create a sleek, Material-UI-inspired circular progress indicator using only TailwindCSS. Say goodbye to additional libraries and dependencies! We&apos;ll guide you through the process step-by-step, ensuring your progress indicator is not only visually appealing but also highly customizable. Whether you&apos;re a seasoned developer or just starting out, this guide will help you enhance your web projects with a modern, minimalist touch. Let&apos;s dive in!</p>]]></content:encoded>
        <author>Thức Trần</author>
        <category>Programming</category>
        <category>circular progress</category>
        <category>mui</category>
        <category>tailwindcss</category>
        <category>react</category>
        <category>nextjs</category>
        <enclosure url="http://res.cloudinary.com/katyperrycbt/image/upload/v1737948376/thucde.dev/nlvz7bppoiigcfozl3ka.jpg" type="image/jpeg" length="0" />
        <media:content url="http://res.cloudinary.com/katyperrycbt/image/upload/v1737948376/thucde.dev/nlvz7bppoiigcfozl3ka.jpg" medium="image" />
        <media:thumbnail url="http://res.cloudinary.com/katyperrycbt/image/upload/v1737948376/thucde.dev/nlvz7bppoiigcfozl3ka.jpg" />
    </item>
    <item>
        <title>closeOnSelect false not working in react-select v1.2.x</title>
        <link>https://thucde.dev/en/closeonselect-false-not-working-in-react-select-v12x</link>
        <guid isPermaLink="true">https://thucde.dev/en/closeonselect-false-not-working-in-react-select-v12x</guid>
        <pubDate>Fri, 17 Jan 2025 17:01:53 GMT</pubDate>
        <description>How to fix closeOnSelect false not working in react-select AsyncCreatable v1.2.1</description>
        <content:encoded><![CDATA[<p>How to fix closeOnSelect false not working in react-select AsyncCreatable v1.2.1</p>
<p>If you find yourself in a situation where you&apos;ve been tasked with building a change request, analyzed, estimated, and started working on it, only to realize afterward that it doesn&apos;t work as expected because what you&apos;re building relies on an outdated library that doesn&apos;t support upgrades and has many bugs, here&apos;s what you could consider:

1. Upgrade the library: Assess if upgrading the library to a newer version that supports the features you need and fixes existing bugs is feasible. This could potentially solve the issues you&apos;re encountering.</p>]]></content:encoded>
        <author>Thức Trần</author>
        <category>Programming</category>
        <category>npm</category>
        <category>upgrade</category>
        <category>code</category>
        <category>tech</category>
        <category>tips</category>
        <enclosure url="http://res.cloudinary.com/katyperrycbt/image/upload/v1737133288/thucde.dev/cjbbnidy3ycppihvvqb1.jpg" type="image/jpeg" length="0" />
        <media:content url="http://res.cloudinary.com/katyperrycbt/image/upload/v1737133288/thucde.dev/cjbbnidy3ycppihvvqb1.jpg" medium="image" />
        <media:thumbnail url="http://res.cloudinary.com/katyperrycbt/image/upload/v1737133288/thucde.dev/cjbbnidy3ycppihvvqb1.jpg" />
    </item>
    <item>
        <title>Redirect POST route handler to a page in Next.js</title>
        <link>https://thucde.dev/en/redirect-post-route-handler-to-a-page-in-nextjs</link>
        <guid isPermaLink="true">https://thucde.dev/en/redirect-post-route-handler-to-a-page-in-nextjs</guid>
        <pubDate>Sat, 04 Jan 2025 16:26:45 GMT</pubDate>
        <description>How to redirect to a page from Next.js POST router handler.</description>
        <content:encoded><![CDATA[<p>How to redirect to a page from Next.js POST router handler.</p>
<p>How to redirect to a page from Next.js POST router handler.

Ok so I was struggling around this afternoon trying to figure out how can I handle the log-in callback from Google Identity for my next personal web application.</p>]]></content:encoded>
        <author>Thức Trần</author>
        <category>Programming</category>
        <category>next.js</category>
        <category>redirect</category>
        <category>route handler</category>
        <category>POST</category>
        <enclosure url="http://res.cloudinary.com/katyperrycbt/image/upload/v1736007966/thucde.dev/r1kqbzzuamq7bokm9o58.jpg" type="image/jpeg" length="0" />
        <media:content url="http://res.cloudinary.com/katyperrycbt/image/upload/v1736007966/thucde.dev/r1kqbzzuamq7bokm9o58.jpg" medium="image" />
        <media:thumbnail url="http://res.cloudinary.com/katyperrycbt/image/upload/v1736007966/thucde.dev/r1kqbzzuamq7bokm9o58.jpg" />
    </item>
    <item>
        <title>Ensuring You’re Always Getting the Latest Data from Browser Storage</title>
        <link>https://thucde.dev/en/getting-latest-data-from-the-browsers-storage</link>
        <guid isPermaLink="true">https://thucde.dev/en/getting-latest-data-from-the-browsers-storage</guid>
        <pubDate>Thu, 31 Oct 2024 08:08:56 GMT</pubDate>
        <description>Let&apos;s say, you&apos;re implementing a feature that functions based on the browser&apos;s storage, such as local storage or session storage.</description>
        <content:encoded><![CDATA[<p>Let&apos;s say, you&apos;re implementing a feature that functions based on the browser&apos;s storage, such as local storage or session storage.</p>
<p>Let&apos;s say, you&apos;re implementing a feature that functions based on the browser&apos;s storage, such as local storage &amp;nbsp;or session storage .

You manipulate the storage programmatically based on the feature&apos;s events and use that data in the storage to do something. However, you might run into an issue which you&apos;re not getting the correct storage data - in other words - you&apos;re getting outdated information.&amp;nbsp;</p>]]></content:encoded>
        <author>Thức Trần</author>
        <category>Programming</category>
        <category>session storage</category>
        <category>local storage</category>
        <category>javascript</category>
        <category>code</category>
        <category>react</category>
        <enclosure url="http://res.cloudinary.com/katyperrycbt/image/upload/v1730362052/thucde.dev/kk3eersydfzidbb0rgl2.jpg" type="image/jpeg" length="0" />
        <media:content url="http://res.cloudinary.com/katyperrycbt/image/upload/v1730362052/thucde.dev/kk3eersydfzidbb0rgl2.jpg" medium="image" />
        <media:thumbnail url="http://res.cloudinary.com/katyperrycbt/image/upload/v1730362052/thucde.dev/kk3eersydfzidbb0rgl2.jpg" />
    </item>
    <item>
        <title>Next.is is amazing! - P3</title>
        <link>https://thucde.dev/en/nextis-is-amazing-p3</link>
        <guid isPermaLink="true">https://thucde.dev/en/nextis-is-amazing-p3</guid>
        <pubDate>Fri, 13 Sep 2024 13:45:12 GMT</pubDate>
        <description>As React developers, we typically don’t need to worry about implementing web APIs, since this is usually handled by the backend team. However,... Learn more.</description>
        <content:encoded><![CDATA[<p>As React developers, we typically don’t need to worry about implementing web APIs, since this is usually handled by the backend team. However,... Learn more.</p>
<p>As React developers, we typically don’t need to worry about implementing web APIs, since this is usually handled by the backend team. However, there are occasions where it becomes necessary for us to take on this task as well. These situations may include:

• Setting up an intermediary server</p>]]></content:encoded>
        <author>Thức Trần</author>
        <category>Next.js</category>
        <category>tech</category>
        <category>programming</category>
        <category>api</category>
        <category>server</category>
        <enclosure url="http://res.cloudinary.com/katyperrycbt/image/upload/v1726235077/thucde.dev/hpjbwpkqedggrux8mt8d.jpg" type="image/jpeg" length="0" />
        <media:content url="http://res.cloudinary.com/katyperrycbt/image/upload/v1726235077/thucde.dev/hpjbwpkqedggrux8mt8d.jpg" medium="image" />
        <media:thumbnail url="http://res.cloudinary.com/katyperrycbt/image/upload/v1726235077/thucde.dev/hpjbwpkqedggrux8mt8d.jpg" />
    </item>
    <item>
        <title>Next.js is amazing! - P2</title>
        <link>https://thucde.dev/en/nextjs-is-amazing-p2</link>
        <guid isPermaLink="true">https://thucde.dev/en/nextjs-is-amazing-p2</guid>
        <pubDate>Sun, 18 Aug 2024 08:05:31 GMT</pubDate>
        <description>Routing is one of the biggest differences between Next.js and others.</description>
        <content:encoded><![CDATA[<p>Routing is one of the biggest differences between Next.js and others.</p>
<p>In React, as far as I know, we use a library to facilitate navigation between routes. This practice has been in place for a long time, even before I was familiar with React, and continues to this day, demonstrating its effectiveness and the benefits it offers.

With React Router DOM, having around 9 million weekly downloads on NPM (including both existing and newly built websites) is a strong indicator of its quality and widespread adoption.</p>]]></content:encoded>
        <author>Thức Trần</author>
        <category>Next.js</category>
        <category>tech</category>
        <category>programming</category>
        <category>react</category>
        <category>javascript</category>
        <category>code</category>
        <enclosure url="http://res.cloudinary.com/katyperrycbt/image/upload/v1723968295/thucde.dev/cdi8usmzeevpqyfsdjqx.jpg" type="image/jpeg" length="0" />
        <media:content url="http://res.cloudinary.com/katyperrycbt/image/upload/v1723968295/thucde.dev/cdi8usmzeevpqyfsdjqx.jpg" medium="image" />
        <media:thumbnail url="http://res.cloudinary.com/katyperrycbt/image/upload/v1723968295/thucde.dev/cdi8usmzeevpqyfsdjqx.jpg" />
    </item>
    <item>
        <title>Next.js is amazing! - P1</title>
        <link>https://thucde.dev/en/nextjs-is-amazing-p1</link>
        <guid isPermaLink="true">https://thucde.dev/en/nextjs-is-amazing-p1</guid>
        <pubDate>Wed, 14 Aug 2024 17:39:45 GMT</pubDate>
        <description>Open Graph image is a vital part of an attractive webpage. It is configurable, both statically and dynamically based on the data - managed by,... Learn more.</description>
        <content:encoded><![CDATA[<p>Open Graph image is a vital part of an attractive webpage. It is configurable, both statically and dynamically based on the data - managed by,... Learn more.</p>
<p>An Open Graph image is crucial for creating an appealing webpage. It can be configured both statically and dynamically based on data managed by tools like a CMS.&amp;nbsp; But with Next.js, you can push this dynamic capability even further.

In older Next.js versions, it supports via a tag imported from next/head .</p>]]></content:encoded>
        <author>Thức Trần</author>
        <category>Next.js</category>
        <category>Programming</category>
        <category>SEO</category>
        <category>tech</category>
        <category>metadata</category>
        <enclosure url="http://res.cloudinary.com/katyperrycbt/image/upload/v1723702991/thucde.dev/cdep6brhbjwsz4rdqw80.jpg" type="image/jpeg" length="0" />
        <media:content url="http://res.cloudinary.com/katyperrycbt/image/upload/v1723702991/thucde.dev/cdep6brhbjwsz4rdqw80.jpg" medium="image" />
        <media:thumbnail url="http://res.cloudinary.com/katyperrycbt/image/upload/v1723702991/thucde.dev/cdep6brhbjwsz4rdqw80.jpg" />
    </item>
    <item>
        <title>How to implement a Markdown editor in React?</title>
        <link>https://thucde.dev/en/how-to-implement-a-markdown-editor-in-react</link>
        <guid isPermaLink="true">https://thucde.dev/en/how-to-implement-a-markdown-editor-in-react</guid>
        <pubDate>Fri, 09 Aug 2024 11:36:20 GMT</pubDate>
        <description>Markdown is a lightweight markup language used to format plain text. It was created by John Gruber in 2004 with the goal of making it easy for... Learn more.</description>
        <content:encoded><![CDATA[<p>Markdown is a lightweight markup language used to format plain text. It was created by John Gruber in 2004 with the goal of making it easy for... Learn more.</p>
<p>Markdown is a lightweight markup language used to format plain text. It was created by John Gruber in 2004 with the goal of making it easy for writers to create web content that is both human-readable in its raw form and easily converted into HTML.

ChatGPT -&amp;nbsp; &quot;what is markdown&quot;</p>]]></content:encoded>
        <author>Thức Trần</author>
        <category>Programming</category>
        <category>markdown</category>
        <category>code</category>
        <category>tech</category>
        <category>next.js</category>
        <category>react</category>
        <enclosure url="http://res.cloudinary.com/katyperrycbt/image/upload/v1723203353/thucde.dev/wizhhcjy5qcpvzgr9glb.jpg" type="image/jpeg" length="0" />
        <media:content url="http://res.cloudinary.com/katyperrycbt/image/upload/v1723203353/thucde.dev/wizhhcjy5qcpvzgr9glb.jpg" medium="image" />
        <media:thumbnail url="http://res.cloudinary.com/katyperrycbt/image/upload/v1723203353/thucde.dev/wizhhcjy5qcpvzgr9glb.jpg" />
    </item>
    <item>
        <title>How to test a React component</title>
        <link>https://thucde.dev/en/how-to-test-a-react-component</link>
        <guid isPermaLink="true">https://thucde.dev/en/how-to-test-a-react-component</guid>
        <pubDate>Thu, 01 Aug 2024 05:46:50 GMT</pubDate>
        <description>Let&apos;s see how we can work this out.</description>
        <content:encoded><![CDATA[<p>Let&apos;s see how we can work this out.</p>
<p>Let&apos;s get straight to the point right now - no more beating around the bush.

To test React components with unit tests, we can use some popular tools that give you pretty handy ways to deal with.</p>]]></content:encoded>
        <author>Thức Trần</author>
        <category>Programming</category>
        <category>tech</category>
        <category>unit test</category>
        <category>react</category>
        <category>jest</category>
        <enclosure url="http://res.cloudinary.com/katyperrycbt/image/upload/v1722491201/thucde.dev/ijgkqqptnjfqexnzizrn.jpg" type="image/jpeg" length="0" />
        <media:content url="http://res.cloudinary.com/katyperrycbt/image/upload/v1722491201/thucde.dev/ijgkqqptnjfqexnzizrn.jpg" medium="image" />
        <media:thumbnail url="http://res.cloudinary.com/katyperrycbt/image/upload/v1722491201/thucde.dev/ijgkqqptnjfqexnzizrn.jpg" />
    </item>
    <item>
        <title>Are you struggling with writing unit tests for React components?</title>
        <link>https://thucde.dev/en/are-you-struggling-with-writing-unit-tests-for-react</link>
        <guid isPermaLink="true">https://thucde.dev/en/are-you-struggling-with-writing-unit-tests-for-react</guid>
        <pubDate>Wed, 31 Jul 2024 16:09:20 GMT</pubDate>
        <description>If you&apos;re a developer, or a software engineer, or you just simply.. code, you probably have heard or been working on Unit Tests.</description>
        <content:encoded><![CDATA[<p>If you&apos;re a developer, or a software engineer, or you just simply.. code, you probably have heard or been working on Unit Tests.</p>
<p>If you&apos;re a developer, or a software engineer, or you just simply.. code, you probably have heard or been working on Unit Tests.&amp;nbsp;

In the real-world case, if you work in IT field and you are the one who writes code, you may have to also write unit tests (UTs) for what you&apos;ve done. There&apos;s a lot of tools, libraries that are helping us to write UTs, however, for some specific domains such as React components testing, it&apos;s still, be tricky 😭</p>]]></content:encoded>
        <author>Thức Trần</author>
        <category>Programming</category>
        <category>React</category>
        <category>unit test</category>
        <category>jest</category>
        <category>tech</category>
        <category>code</category>
        <enclosure url="http://res.cloudinary.com/katyperrycbt/image/upload/v1722442157/thucde.dev/xnoxtxncelgkzmvscpcu.jpg" type="image/jpeg" length="0" />
        <media:content url="http://res.cloudinary.com/katyperrycbt/image/upload/v1722442157/thucde.dev/xnoxtxncelgkzmvscpcu.jpg" medium="image" />
        <media:thumbnail url="http://res.cloudinary.com/katyperrycbt/image/upload/v1722442157/thucde.dev/xnoxtxncelgkzmvscpcu.jpg" />
    </item>
    <item>
        <title>Test _app.tsx file in Next.js</title>
        <link>https://thucde.dev/en/test-app-tsx-file-in-nextjs</link>
        <guid isPermaLink="true">https://thucde.dev/en/test-app-tsx-file-in-nextjs</guid>
        <pubDate>Wed, 17 Jul 2024 04:30:57 GMT</pubDate>
        <description>If you&apos;re new to unit tests with Jest, especially in Next.js, and haven&apos;t figured out how to test the _app.tsx or _app.jsx file yet. I&apos;ll show... Learn more.</description>
        <content:encoded><![CDATA[<p>If you&apos;re new to unit tests with Jest, especially in Next.js, and haven&apos;t figured out how to test the _app.tsx or _app.jsx file yet. I&apos;ll show... Learn more.</p>
<p>If you&apos;re new to unit tests with Jest, especially in Next.js, and haven&apos;t figured out how to test the _app.tsx &amp;nbsp;or _app.jsx file yet. I&apos;ll show you a way.

As we&apos;re using one of the features of a library called @testing-library/react - a very famous one with over 7M weekly downloads.</p>]]></content:encoded>
        <author>Thức Trần</author>
        <category>Programming</category>
        <category>unit test</category>
        <category>nextjs</category>
        <category>jest</category>
        <category>_app</category>
        <enclosure url="http://res.cloudinary.com/katyperrycbt/image/upload/v1721190632/thucde.dev/jy3ugybl0wjkz9syvzmh.jpg" type="image/jpeg" length="0" />
        <media:content url="http://res.cloudinary.com/katyperrycbt/image/upload/v1721190632/thucde.dev/jy3ugybl0wjkz9syvzmh.jpg" medium="image" />
        <media:thumbnail url="http://res.cloudinary.com/katyperrycbt/image/upload/v1721190632/thucde.dev/jy3ugybl0wjkz9syvzmh.jpg" />
    </item>
    <item>
        <title>Integrate Unsplash API to Next.js applications</title>
        <link>https://thucde.dev/en/integrate-unsplash-api-to-nextjs-applications</link>
        <guid isPermaLink="true">https://thucde.dev/en/integrate-unsplash-api-to-nextjs-applications</guid>
        <pubDate>Thu, 27 Jun 2024 10:56:21 GMT</pubDate>
        <description>If you&apos;re really into Unsplash community, like photography and have something to do with React/Next.js, you may, sometimes, wish to have Unsplash... Learn more.</description>
        <content:encoded><![CDATA[<p>If you&apos;re really into Unsplash community, like photography and have something to do with React/Next.js, you may, sometimes, wish to have Unsplash... Learn more.</p>
<p>If you&apos;re really into Unsplash community, like photography and have something to do with React/Next.js, you may, sometimes, wish to have Unsplash photos integrated into your products/applications.

Unsplash Developers API got your back! And it&apos;s FREE.&amp;nbsp;</p>]]></content:encoded>
        <author>Thức Trần</author>
        <category>Programming</category>
        <category>unsplash</category>
        <category>photography</category>
        <category>next.js</category>
        <category>code</category>
        <category>technology</category>
        <enclosure url="http://res.cloudinary.com/katyperrycbt/image/upload/v1719638993/thucde.dev/cqoywzm4rjotzewau0bm.jpg" type="image/jpeg" length="0" />
        <media:content url="http://res.cloudinary.com/katyperrycbt/image/upload/v1719638993/thucde.dev/cqoywzm4rjotzewau0bm.jpg" medium="image" />
        <media:thumbnail url="http://res.cloudinary.com/katyperrycbt/image/upload/v1719638993/thucde.dev/cqoywzm4rjotzewau0bm.jpg" />
    </item>
    <item>
        <title>How to publish Next.js components to NPM</title>
        <link>https://thucde.dev/en/how-to-publish-nextjs-components-to-npm</link>
        <guid isPermaLink="true">https://thucde.dev/en/how-to-publish-nextjs-components-to-npm</guid>
        <pubDate>Thu, 27 Jun 2024 08:09:25 GMT</pubDate>
        <description>Have you ever been thinking about how to publish a React Component to a registry such as NPM so that it can be installed and used by several React applications?</description>
        <content:encoded><![CDATA[<p>Have you ever been thinking about how to publish a React Component to a registry such as NPM so that it can be installed and used by several React applications?</p>
<p>Have you ever been thinking about how to publish a React Component to a registry such as NPM so that it can be installed and used by several projects but don&apos;t know how?

I feel you, there were several attempts that I&apos;ve been through this, but there was no luck. I was able to publish a component to NPM, but the component is not working properly.</p>]]></content:encoded>
        <author>Thức Trần</author>
        <category>Programming</category>
        <category>npm</category>
        <category>react</category>
        <category>next.js</category>
        <category>code</category>
        <category>technology</category>
        <enclosure url="http://res.cloudinary.com/katyperrycbt/image/upload/v1719475938/thucde.dev/nvc52puqpyjco71pahsn.jpg" type="image/jpeg" length="0" />
        <media:content url="http://res.cloudinary.com/katyperrycbt/image/upload/v1719475938/thucde.dev/nvc52puqpyjco71pahsn.jpg" medium="image" />
        <media:thumbnail url="http://res.cloudinary.com/katyperrycbt/image/upload/v1719475938/thucde.dev/nvc52puqpyjco71pahsn.jpg" />
    </item>
    <item>
        <title>How to use BlurHash strings in React, Next.js</title>
        <link>https://thucde.dev/en/how-to-use-blurhash-strings-in-react-n-nextjs</link>
        <guid isPermaLink="true">https://thucde.dev/en/how-to-use-blurhash-strings-in-react-n-nextjs</guid>
        <pubDate>Sat, 22 Jun 2024 16:51:43 GMT</pubDate>
        <description>BlurHash strings benefit the web performance. But it may not work if we don&apos;t know how to use them. Let me show you how.</description>
        <content:encoded><![CDATA[<p>BlurHash strings benefit the web performance. But it may not work if we don&apos;t know how to use them. Let me show you how.</p>
<p>While developing a new cool application, I figured out how to deal with BlurHash strings. If you have heard about this before, you may notice that passing the BlurHash string won&apos;t help with your image loadings. See below:

In this example, we fetch the image data from Unsplash, with then Unsplash returns an object with images (including a blur_hash string for each), this app then decodes those blur_hash strings into image data (in base64 format), then shows them immediately in prior to the real image that still being loaded.</p>]]></content:encoded>
        <author>Thức Trần</author>
        <category>Programming</category>
        <category>react</category>
        <category>code</category>
        <category>tips</category>
        <category>blurhash</category>
        <category>nextjs</category>
        <enclosure url="http://res.cloudinary.com/katyperrycbt/image/upload/v1719141566/thucde.dev/yk1zaalb6i6l8a2bnefz.jpg" type="image/jpeg" length="0" />
        <media:content url="http://res.cloudinary.com/katyperrycbt/image/upload/v1719141566/thucde.dev/yk1zaalb6i6l8a2bnefz.jpg" medium="image" />
        <media:thumbnail url="http://res.cloudinary.com/katyperrycbt/image/upload/v1719141566/thucde.dev/yk1zaalb6i6l8a2bnefz.jpg" />
    </item>
    <item>
        <title>Fix React Strict Mode renders twice in development</title>
        <link>https://thucde.dev/en/fix-react-strict-mode-renders-twice-in-development</link>
        <guid isPermaLink="true">https://thucde.dev/en/fix-react-strict-mode-renders-twice-in-development</guid>
        <pubDate>Thu, 20 Jun 2024 04:07:13 GMT</pubDate>
        <description>If React Strict Mode in development gets you into trouble in some cases, for example. you need a specific action to run only just once, but also... Learn more.</description>
        <content:encoded><![CDATA[<p>If React Strict Mode in development gets you into trouble in some cases, for example. you need a specific action to run only just once, but also... Learn more.</p>
<p>If React Strict Mode in development gets you into trouble in some cases, for example, you need a specific action to run only just once, but also don&apos;t want to lose the benefits of running the app in Strict Mode, I&apos;ll show you a way out!

First, you may need to check whether the environment your app is running on, like so:</p>]]></content:encoded>
        <author>Thức Trần</author>
        <category>Programming</category>
        <category>react</category>
        <category>strict mode</category>
        <category>code</category>
        <category>tech</category>
        <category>IT</category>
        <enclosure url="http://res.cloudinary.com/katyperrycbt/image/upload/v1718867157/thucde.dev/wbtpubn2h5g9a2m7sfs0.jpg" type="image/jpeg" length="0" />
        <media:content url="http://res.cloudinary.com/katyperrycbt/image/upload/v1718867157/thucde.dev/wbtpubn2h5g9a2m7sfs0.jpg" medium="image" />
        <media:thumbnail url="http://res.cloudinary.com/katyperrycbt/image/upload/v1718867157/thucde.dev/wbtpubn2h5g9a2m7sfs0.jpg" />
    </item>
    <item>
        <title>What is Next.js?</title>
        <link>https://thucde.dev/en/what-is-nextjs</link>
        <guid isPermaLink="true">https://thucde.dev/en/what-is-nextjs</guid>
        <pubDate>Mon, 17 Jun 2024 04:37:43 GMT</pubDate>
        <description>Next.js is full stack React framework that built on top of React. It makes building full stack web applications with React much more easier!</description>
        <content:encoded><![CDATA[<p>Next.js is full stack React framework that built on top of React. It makes building full stack web applications with React much more easier!</p>
<p>Next.js is full stack React framework that built on top of React. It makes building full stack web applications with React much more easier!

Some features such as routing, route handling, data fetching... might be tricky with React. Next.js helps with those and more in a really simple manner.</p>]]></content:encoded>
        <author>Thức Trần</author>
        <category>Next.js</category>
        <category>front end</category>
        <category>react</category>
        <category>programming</category>
        <category>code</category>
        <category>tech</category>
        <enclosure url="http://res.cloudinary.com/katyperrycbt/image/upload/v1718599015/thucde.dev/hobarkmt2v8p9xykbt4v.png" type="image/jpeg" length="0" />
        <media:content url="http://res.cloudinary.com/katyperrycbt/image/upload/v1718599015/thucde.dev/hobarkmt2v8p9xykbt4v.png" medium="image" />
        <media:thumbnail url="http://res.cloudinary.com/katyperrycbt/image/upload/v1718599015/thucde.dev/hobarkmt2v8p9xykbt4v.png" />
    </item>
    <item>
        <title>Fix Husky Precommit issue on GitHub Desktop on Windows</title>
        <link>https://thucde.dev/en/fix-husky-precommit-issue-on-github-desktop-on-windows</link>
        <guid isPermaLink="true">https://thucde.dev/en/fix-husky-precommit-issue-on-github-desktop-on-windows</guid>
        <pubDate>Wed, 22 May 2024 04:41:40 GMT</pubDate>
        <description>Let&apos;s fix the Husky Git pre-commit hook failures on GitHub Desktop on Windows!</description>
        <content:encoded><![CDATA[<p>Let&apos;s fix the Husky Git pre-commit hook failures on GitHub Desktop on Windows!</p>
<p>Let&apos;s fix the Husky Git pre-commit hook failures on GitHub Desktop on Windows!

First, if you are facing the same issue as mine, please try the following steps:</p>]]></content:encoded>
        <author>Thức Trần</author>
        <category>Programming</category>
        <category>git</category>
        <category>husky</category>
        <category>precommit</category>
        <category>tips</category>
        <category>code</category>
        <enclosure url="http://res.cloudinary.com/katyperrycbt/image/upload/v1716352795/thucde.dev/m1b588jmcgwzdqncl1ku.jpg" type="image/jpeg" length="0" />
        <media:content url="http://res.cloudinary.com/katyperrycbt/image/upload/v1716352795/thucde.dev/m1b588jmcgwzdqncl1ku.jpg" medium="image" />
        <media:thumbnail url="http://res.cloudinary.com/katyperrycbt/image/upload/v1716352795/thucde.dev/m1b588jmcgwzdqncl1ku.jpg" />
    </item>
    <item>
        <title>Test your GraphQL endpoints with Apollo playground</title>
        <link>https://thucde.dev/en/test-your-graphql-endpoints-with-apollo-playground</link>
        <guid isPermaLink="true">https://thucde.dev/en/test-your-graphql-endpoints-with-apollo-playground</guid>
        <pubDate>Wed, 08 May 2024 04:52:17 GMT</pubDate>
        <description>GraphiQL is boring? Here&apos;s the alternative.</description>
        <content:encoded><![CDATA[<p>GraphiQL is boring? Here&apos;s the alternative.</p>
<p>GraphiQL is boring? Here&apos;s the alternative.

With this new tool, we no longer need to install additional package to display the GrapQL interactive playground, but we do it directly on the browser.</p>]]></content:encoded>
        <author>Thức Trần</author>
        <category>Programming</category>
        <category>graphql</category>
        <category>code</category>
        <category>tips</category>
        <category>apollo</category>
        <enclosure url="http://res.cloudinary.com/katyperrycbt/image/upload/v1715143925/thucde.dev/ij1658o1by3dgjxifkwj.jpg" type="image/jpeg" length="0" />
        <media:content url="http://res.cloudinary.com/katyperrycbt/image/upload/v1715143925/thucde.dev/ij1658o1by3dgjxifkwj.jpg" medium="image" />
        <media:thumbnail url="http://res.cloudinary.com/katyperrycbt/image/upload/v1715143925/thucde.dev/ij1658o1by3dgjxifkwj.jpg" />
    </item>
    <item>
        <title>I just received my certificate of completion for a React course on Udemy</title>
        <link>https://thucde.dev/en/i-just-received-my-certificate-of-completion-for-a-react</link>
        <guid isPermaLink="true">https://thucde.dev/en/i-just-received-my-certificate-of-completion-for-a-react</guid>
        <pubDate>Tue, 07 May 2024 12:49:20 GMT</pubDate>
        <description>Hey, I just earned another React certificate on Udemy. It&apos;s for a course called &quot;The Ultimate React Course 2024: React, Redux, and More&quot; by Jonas... Learn more.</description>
        <content:encoded><![CDATA[<p>Hey, I just earned another React certificate on Udemy. It&apos;s for a course called &quot;The Ultimate React Course 2024: React, Redux, and More&quot; by Jonas... Learn more.</p>
<p>Hey, I just earned another React certificate of completetion on Udemy. It&apos;s for a course called &quot; The Ultimate React Course 2024: React, Redux, and More &quot; by Jonas Schmedtmann.

This course covers a lot of practical information, from the basics to advanced topics. Although I had some prior experience with React, I found this course extremely useful. There&apos;s a bunch of stuff that you can&apos;t easily figure out through self-learning.</p>]]></content:encoded>
        <author>Thức Trần</author>
        <category>certificate</category>
        <category>react</category>
        <category>udemy</category>
        <category>redux</category>
        <category>programming</category>
        <category>frontend</category>
        <enclosure url="http://res.cloudinary.com/katyperrycbt/image/upload/v1715086113/thucde.dev/qc9i7dkdktn40kxtfwiu.jpg" type="image/jpeg" length="0" />
        <media:content url="http://res.cloudinary.com/katyperrycbt/image/upload/v1715086113/thucde.dev/qc9i7dkdktn40kxtfwiu.jpg" medium="image" />
        <media:thumbnail url="http://res.cloudinary.com/katyperrycbt/image/upload/v1715086113/thucde.dev/qc9i7dkdktn40kxtfwiu.jpg" />
    </item>
    <item>
        <title>When to use Redux and SWR</title>
        <link>https://thucde.dev/en/when-to-use-redux-and-swr</link>
        <guid isPermaLink="true">https://thucde.dev/en/when-to-use-redux-and-swr</guid>
        <pubDate>Wed, 01 May 2024 14:51:54 GMT</pubDate>
        <description>In the past, Redux was widely used. However, in today&apos;s world, it&apos;s not always the most suitable choice. SWR is a good candidate.</description>
        <content:encoded><![CDATA[<p>In the past, Redux was widely used. However, in today&apos;s world, it&apos;s not always the most suitable choice. SWR is a good candidate.</p>
<p>Redux has gained a reputation as a powerful state management tool for React and many other UI applications. While its popularity is undeniable, it&apos;s crucial to approach its usage with a discerning eye. Overuse or inappropriate application of Redux can lead to unnecessary complexity and hinder code maintainability.

To ensure effective state management, it&apos;s essential to identify the appropriate scenarios for incorporating Redux. Here&apos;s a comprehensive guide to help you determine when Redux is the right choice for your project:</p>]]></content:encoded>
        <author>Thức Trần</author>
        <category>Programming</category>
        <category>redux</category>
        <category>react</category>
        <category>state management</category>
        <category>code</category>
        <category>js</category>
        <enclosure url="http://res.cloudinary.com/katyperrycbt/image/upload/v1714575051/thucde.dev/p18ybvwot3sp6hruckom.jpg" type="image/jpeg" length="0" />
        <media:content url="http://res.cloudinary.com/katyperrycbt/image/upload/v1714575051/thucde.dev/p18ybvwot3sp6hruckom.jpg" medium="image" />
        <media:thumbnail url="http://res.cloudinary.com/katyperrycbt/image/upload/v1714575051/thucde.dev/p18ybvwot3sp6hruckom.jpg" />
    </item>
    <item>
        <title>Timeout requests in JavaScript</title>
        <link>https://thucde.dev/en/timeout-requests-in-javascript</link>
        <guid isPermaLink="true">https://thucde.dev/en/timeout-requests-in-javascript</guid>
        <pubDate>Wed, 01 May 2024 08:28:08 GMT</pubDate>
        <description>While JS continuing to evolve, there are several built-in support methods that we can easily signal a timeout for a long-run request.</description>
        <content:encoded><![CDATA[<p>While JS continuing to evolve, there are several built-in support methods that we can easily signal a timeout for a long-run request.</p>
<p>Have you ever faced an issue that your webpage fails to finish a request due to backend crashing or it&apos;s too long to respond, and the app just waits for it - which seems to take forever.&amp;nbsp;

In JavaScript, from ES6 and later*, there is a built-in method that we can use to implement the timeout feature very easily, called Promise.race . Let me show you how.</p>]]></content:encoded>
        <author>Thức Trần</author>
        <category>Programming</category>
        <category>js</category>
        <category>code</category>
        <category>javascript</category>
        <enclosure url="http://res.cloudinary.com/katyperrycbt/image/upload/v1714551981/thucde.dev/bwh7709onradbjsjbnpc.jpg" type="image/jpeg" length="0" />
        <media:content url="http://res.cloudinary.com/katyperrycbt/image/upload/v1714551981/thucde.dev/bwh7709onradbjsjbnpc.jpg" medium="image" />
        <media:thumbnail url="http://res.cloudinary.com/katyperrycbt/image/upload/v1714551981/thucde.dev/bwh7709onradbjsjbnpc.jpg" />
    </item>
    <item>
        <title>How to automatically rename ending tags of HTML/XML on typing in VS Code</title>
        <link>https://thucde.dev/en/automatically-rename-ending-tags-of-html-n-xml-in-vs-code</link>
        <guid isPermaLink="true">https://thucde.dev/en/automatically-rename-ending-tags-of-html-n-xml-in-vs-code</guid>
        <pubDate>Mon, 22 Apr 2024 06:14:25 GMT</pubDate>
        <description>Cách để đổi đầu và đuôi tên thẻ HTML/XML một cách đồng thời trong VS Code</description>
        <content:encoded><![CDATA[<p>Cách để đổi đầu và đuôi tên thẻ HTML/XML một cách đồng thời trong VS Code</p>
<p>How to automatically rename the ending HTML/XML tags on typing in VS Code.

Cách để chỉnh sửa đầu và đuôi tên thẻ HTML/XML một cách đồng thời trong VS Code.</p>]]></content:encoded>
        <author>Thức Trần</author>
        <category>Programming</category>
        <category>tips</category>
        <category>code</category>
        <category>vs code</category>
        <category>auto rename</category>
        <enclosure url="http://res.cloudinary.com/katyperrycbt/image/upload/v1713869700/thucde.dev/o9bqkluhw7kenoppla0z.jpg" type="image/jpeg" length="0" />
        <media:content url="http://res.cloudinary.com/katyperrycbt/image/upload/v1713869700/thucde.dev/o9bqkluhw7kenoppla0z.jpg" medium="image" />
        <media:thumbnail url="http://res.cloudinary.com/katyperrycbt/image/upload/v1713869700/thucde.dev/o9bqkluhw7kenoppla0z.jpg" />
    </item>
    <item>
        <title>I&apos;ve just got another certificate on Udemy - Understanding TypeScript</title>
        <link>https://thucde.dev/en/ive-just-got-another-certificate-on-udemy</link>
        <guid isPermaLink="true">https://thucde.dev/en/ive-just-got-another-certificate-on-udemy</guid>
        <pubDate>Wed, 10 Apr 2024 07:11:19 GMT</pubDate>
        <description>Guess what?? My next certificate on Udemy - Understanding TypeScript!</description>
        <content:encoded><![CDATA[<p>Guess what?? My next certificate on Udemy - Understanding TypeScript!</p>
<p>Shout out for my next certificate on Udemy - Understanding TypeScript!

For a long time, I had solely been using JavaScript in my projects and practices, and it was just fine. However, it&apos;s time for me to learn and practice TypeScript (JavaScript, but typed 😄). It&apos;s amazing how it eliminates predictions and uncertainty.</p>]]></content:encoded>
        <author>Thức Trần</author>
        <category>Certificate</category>
        <category>ts</category>
        <category>typescript</category>
        <category>udemy</category>
        <category>programming</category>
        <category>work</category>
        <enclosure url="http://res.cloudinary.com/katyperrycbt/image/upload/v1712733026/thucde.dev/wnz89mtyjyndepsnozd3.jpg" type="image/jpeg" length="0" />
        <media:content url="http://res.cloudinary.com/katyperrycbt/image/upload/v1712733026/thucde.dev/wnz89mtyjyndepsnozd3.jpg" medium="image" />
        <media:thumbnail url="http://res.cloudinary.com/katyperrycbt/image/upload/v1712733026/thucde.dev/wnz89mtyjyndepsnozd3.jpg" />
    </item>
    <item>
        <title>I just got the JavaScript certificate of completion on Udemy!</title>
        <link>https://thucde.dev/en/i-just-got-the-javascript-certificate-of-completion</link>
        <guid isPermaLink="true">https://thucde.dev/en/i-just-got-the-javascript-certificate-of-completion</guid>
        <pubDate>Mon, 08 Apr 2024 04:24:04 GMT</pubDate>
        <description>I&apos;ve just completed the course about JS on Udemy - The Complete JavaScript Course 2024: From Zero to Expert!</description>
        <content:encoded><![CDATA[<p>I&apos;ve just completed the course about JS on Udemy - The Complete JavaScript Course 2024: From Zero to Expert!</p>
<p>I&apos;ve just completed the course about JS on Udemy -&amp;nbsp; The Complete JavaScript Course 2024: From Zero to Expert!

When I first learned JS, I didn&apos;t learn it correctly, just searched for it online, learned from several sources... This ended up I could do things, but not to do it with good practices and know why it is what it is.</p>]]></content:encoded>
        <author>Thức Trần</author>
        <category>Certificate</category>
        <category>work</category>
        <category>js</category>
        <category>udemy</category>
        <category>javascript</category>
        <enclosure url="http://res.cloudinary.com/katyperrycbt/image/upload/v1712550188/thucde.dev/bvpmj6jqguxoz9kbvi8u.jpg" type="image/jpeg" length="0" />
        <media:content url="http://res.cloudinary.com/katyperrycbt/image/upload/v1712550188/thucde.dev/bvpmj6jqguxoz9kbvi8u.jpg" medium="image" />
        <media:thumbnail url="http://res.cloudinary.com/katyperrycbt/image/upload/v1712550188/thucde.dev/bvpmj6jqguxoz9kbvi8u.jpg" />
    </item>
    <item>
        <title>Build a dictionary app with Next.js and Free Dictionary API</title>
        <link>https://thucde.dev/en/build-a-dictionary-app-with-nextjs-and-free-dictionary</link>
        <guid isPermaLink="true">https://thucde.dev/en/build-a-dictionary-app-with-nextjs-and-free-dictionary</guid>
        <pubDate>Fri, 05 Apr 2024 10:55:46 GMT</pubDate>
        <description>Lightweight dictionary app built with Next.js to learn &amp; explore words. Clean UI, best practices code, Free Dictionary API.</description>
        <content:encoded><![CDATA[<p>Lightweight dictionary app built with Next.js to learn &amp; explore words. Clean UI, best practices code, Free Dictionary API.</p>
<p>While enhancing my capabilities in JavaScript/TypeScript and React. I has been practicing what I learned as an effective way to memorize things and how it could be used to solve the practical problems.&amp;nbsp;

It is a next.js application, pretty small, but I think it&apos;s good enough to apply the advanced knowledge in it.</p>]]></content:encoded>
        <author>Thức Trần</author>
        <category>Next.js</category>
        <category>programming</category>
        <category>code</category>
        <category>javascript</category>
        <category>typescript</category>
        <enclosure url="http://res.cloudinary.com/katyperrycbt/image/upload/v1712314415/thucde.dev/rfq5va9id0kgwvvx7oim.jpg" type="image/jpeg" length="0" />
        <media:content url="http://res.cloudinary.com/katyperrycbt/image/upload/v1712314415/thucde.dev/rfq5va9id0kgwvvx7oim.jpg" medium="image" />
        <media:thumbnail url="http://res.cloudinary.com/katyperrycbt/image/upload/v1712314415/thucde.dev/rfq5va9id0kgwvvx7oim.jpg" />
    </item>
    <item>
        <title>Verify Browser Compatibility: HTML5, CSS3, JS</title>
        <link>https://thucde.dev/en/verify-browser-compatibility%3A-html5-css3-js</link>
        <guid isPermaLink="true">https://thucde.dev/en/verify-browser-compatibility%3A-html5-css3-js</guid>
        <pubDate>Mon, 25 Mar 2024 10:08:36 GMT</pubDate>
        <description>Have you ever wondered if you could or should use a JavaScript syntax that you think might break on older browsers? Well, worry no more!</description>
        <content:encoded><![CDATA[<p>Have you ever wondered if you could or should use a JavaScript syntax that you think might break on older browsers? Well, worry no more!</p>
<p>Have you ever wondered if you could or should use a JavaScript syntax that you think might break on older browsers? Well, worry no more!

Whenever you want to verify if you can or should write something that you believe is not fully supported, you can head over to the Can I Use website. It helps developers see if a specific web technology is supported by different web browsers.</p>]]></content:encoded>
        <author>Thức Trần</author>
        <category>Programming</category>
        <category>css</category>
        <category>js</category>
        <category>html</category>
        <category>browser support</category>
        <category>code</category>
        <enclosure url="http://res.cloudinary.com/katyperrycbt/image/upload/v1711361254/thucde.dev/n7qudi0hdptw7dlscsd1.jpg" type="image/jpeg" length="0" />
        <media:content url="http://res.cloudinary.com/katyperrycbt/image/upload/v1711361254/thucde.dev/n7qudi0hdptw7dlscsd1.jpg" medium="image" />
        <media:thumbnail url="http://res.cloudinary.com/katyperrycbt/image/upload/v1711361254/thucde.dev/n7qudi0hdptw7dlscsd1.jpg" />
    </item>
    <item>
        <title>Create an array with n elements in JS</title>
        <link>https://thucde.dev/en/create-an-array-with-n-elements-in-js</link>
        <guid isPermaLink="true">https://thucde.dev/en/create-an-array-with-n-elements-in-js</guid>
        <pubDate>Fri, 22 Mar 2024 07:44:03 GMT</pubDate>
        <description>Create an array with n elements in JS. Create an array with n elements filled with zeros in JS.</description>
        <content:encoded><![CDATA[<p>Create an array with n elements in JS. Create an array with n elements filled with zeros in JS.</p>
<p>Create an array with n elements in JS.

Create an array with n elements filled with zeros in JS</p>]]></content:encoded>
        <author>Thức Trần</author>
        <category>Programming</category>
        <category>js</category>
        <category>javascript</category>
        <category>code</category>
        <category>array</category>
        <category>ES6</category>
        <enclosure url="http://res.cloudinary.com/katyperrycbt/image/upload/v1711093309/thucde.dev/lbs9ox9p8wid2ll1iin7.jpg" type="image/jpeg" length="0" />
        <media:content url="http://res.cloudinary.com/katyperrycbt/image/upload/v1711093309/thucde.dev/lbs9ox9p8wid2ll1iin7.jpg" medium="image" />
        <media:thumbnail url="http://res.cloudinary.com/katyperrycbt/image/upload/v1711093309/thucde.dev/lbs9ox9p8wid2ll1iin7.jpg" />
    </item>
    <item>
        <title>Primitive types in JavaScript</title>
        <link>https://thucde.dev/en/primitive-types-in-javascript</link>
        <guid isPermaLink="true">https://thucde.dev/en/primitive-types-in-javascript</guid>
        <pubDate>Fri, 15 Mar 2024 10:04:32 GMT</pubDate>
        <description>There are seven primitive data types in JavaScript</description>
        <content:encoded><![CDATA[<p>There are seven primitive data types in JavaScript</p>
<p>There are seven primitive data types in JavaScript :

1. Number :&amp;nbsp; Floating point numbers, such as let price = 10; . Integers like 10 can actually be 10.0, so they are so-called floating-point numbers instead of just number.</p>]]></content:encoded>
        <author>Thức Trần</author>
        <category>Programming</category>
        <category>JS</category>
        <category>primitive types</category>
        <category>javascript</category>
        <enclosure url="http://res.cloudinary.com/katyperrycbt/image/upload/v1710496512/thucde.dev/qxubxhgldahsnclcs1nz.jpg" type="image/jpeg" length="0" />
        <media:content url="http://res.cloudinary.com/katyperrycbt/image/upload/v1710496512/thucde.dev/qxubxhgldahsnclcs1nz.jpg" medium="image" />
        <media:thumbnail url="http://res.cloudinary.com/katyperrycbt/image/upload/v1710496512/thucde.dev/qxubxhgldahsnclcs1nz.jpg" />
    </item>
    <item>
        <title>Update preview image when sharing URLs on social media</title>
        <link>https://thucde.dev/en/update-preview-image-when-sharing-urls-on-social-media</link>
        <guid isPermaLink="true">https://thucde.dev/en/update-preview-image-when-sharing-urls-on-social-media</guid>
        <pubDate>Wed, 13 Mar 2024 17:31:25 GMT</pubDate>
        <description>Have you ever spent ages crafting the perfect blog post, only to see it shared on social media with a blurry thumbnail or completely the wrong... Learn more.</description>
        <content:encoded><![CDATA[<p>Have you ever spent ages crafting the perfect blog post, only to see it shared on social media with a blurry thumbnail or completely the wrong... Learn more.</p>
<p>Have you ever spent ages crafting the perfect blog post, only to see it shared on social media with a blurry thumbnail or completely the wrong image? We&apos;ve all been there. Those tiny previews can make a huge difference in click-through rates, and a bad one can leave your amazing content hidden in the social media abyss.

But fear not, content warriors! Today we&apos;re diving into the world of social media debugging tools. These handy helpers will ensure your carefully chosen visuals shine through on every platform, from Facebook to Pinterest. Get ready to transform your social shares and watch those clicks soar!</p>]]></content:encoded>
        <author>Thức Trần</author>
        <category>SEO</category>
        <category>preview image</category>
        <category>debug</category>
        <category>open graph</category>
        <category>twitter card</category>
        <category>linkedin</category>
        <enclosure url="http://res.cloudinary.com/katyperrycbt/image/upload/v1710351013/thucde.dev/had7qat07asrx9rk9qix.jpg" type="image/jpeg" length="0" />
        <media:content url="http://res.cloudinary.com/katyperrycbt/image/upload/v1710351013/thucde.dev/had7qat07asrx9rk9qix.jpg" medium="image" />
        <media:thumbnail url="http://res.cloudinary.com/katyperrycbt/image/upload/v1710351013/thucde.dev/had7qat07asrx9rk9qix.jpg" />
    </item>
    <item>
        <title>Database Design [Incomplete]</title>
        <link>https://thucde.dev/en/database-design-incomplete</link>
        <guid isPermaLink="true">https://thucde.dev/en/database-design-incomplete</guid>
        <pubDate>Wed, 13 Mar 2024 16:42:45 GMT</pubDate>
        <description>In database terms, a transaction is a collection of database operations that represents a unit of work.</description>
        <content:encoded><![CDATA[<p>In database terms, a transaction is a collection of database operations that represents a unit of work.</p>
<p>In database terms, a transaction is a collection of database operations that represents a unit of work.

A transaction lifespan refers to the period of its initiation and completion, and includes the entire sequence of operations that make up the unit of work:</p>]]></content:encoded>
        <author>Thức Trần</author>
        <category>Uncategorized</category>
        <enclosure url="http://res.cloudinary.com/katyperrycbt/image/upload/v1710348129/thucde.dev/dov7qsa2imizckydjadr.jpg" type="image/jpeg" length="0" />
        <media:content url="http://res.cloudinary.com/katyperrycbt/image/upload/v1710348129/thucde.dev/dov7qsa2imizckydjadr.jpg" medium="image" />
        <media:thumbnail url="http://res.cloudinary.com/katyperrycbt/image/upload/v1710348129/thucde.dev/dov7qsa2imizckydjadr.jpg" />
    </item>
    <item>
        <title>Three common normal forms in a nutshell</title>
        <link>https://thucde.dev/en/three-common-normal-forms-in-a-nutshell</link>
        <guid isPermaLink="true">https://thucde.dev/en/three-common-normal-forms-in-a-nutshell</guid>
        <pubDate>Mon, 11 Mar 2024 11:54:27 GMT</pubDate>
        <description>Normalization is the process of converting a database design into a standard format. The conversion is done into a normal form - which is the... Learn more.</description>
        <content:encoded><![CDATA[<p>Normalization is the process of converting a database design into a standard format. The conversion is done into a normal form - which is the... Learn more.</p>
<p>Normalization is the process of converting a database design into a standard format. The conversion is done into a normal form - which is the standard of designing a database.

Designing database following the normalization could help with some benefits:</p>]]></content:encoded>
        <author>Thức Trần</author>
        <category>Database</category>
        <category>Programming</category>
        <category>code</category>
        <category>design</category>
        <category>erd</category>
        <enclosure url="http://res.cloudinary.com/katyperrycbt/image/upload/v1710347557/thucde.dev/hxrb0vljugckq9rcualo.jpg" type="image/jpeg" length="0" />
        <media:content url="http://res.cloudinary.com/katyperrycbt/image/upload/v1710347557/thucde.dev/hxrb0vljugckq9rcualo.jpg" medium="image" />
        <media:thumbnail url="http://res.cloudinary.com/katyperrycbt/image/upload/v1710347557/thucde.dev/hxrb0vljugckq9rcualo.jpg" />
    </item>
    <item>
        <title>How to embed Youtube Shorts with embed code snippet?</title>
        <link>https://thucde.dev/en/how-to-embed-youtube-shorts-with-embed-code-snippet</link>
        <guid isPermaLink="true">https://thucde.dev/en/how-to-embed-youtube-shorts-with-embed-code-snippet</guid>
        <pubDate>Mon, 04 Mar 2024 11:00:28 GMT</pubDate>
        <description>When you click the share button for YouTube Shorts, there isn&apos;t currently an option to get the embed snippet. But that doesn&apos;t mean there&apos;s no way!</description>
        <content:encoded><![CDATA[<p>When you click the share button for YouTube Shorts, there isn&apos;t currently an option to get the embed snippet. But that doesn&apos;t mean there&apos;s no way!</p>
<p>First, you need to get the ID of your to be embedded short video, this is what you can easily extract from the sharable URL from Youtube, for example&amp;nbsp;

Then, replace your video&apos;s id inside the below snippet, feel free to update the title as well.</p>]]></content:encoded>
        <author>Thức Trần</author>
        <category>Programming</category>
        <category>code</category>
        <category>embed</category>
        <category>youtube shorts</category>
        <category>html</category>
        <category>snippet</category>
        <enclosure url="http://res.cloudinary.com/katyperrycbt/image/upload/v1709549984/thucde.dev/imttn9p44ox2024z2jb8.jpg" type="image/jpeg" length="0" />
        <media:content url="http://res.cloudinary.com/katyperrycbt/image/upload/v1709549984/thucde.dev/imttn9p44ox2024z2jb8.jpg" medium="image" />
        <media:thumbnail url="http://res.cloudinary.com/katyperrycbt/image/upload/v1709549984/thucde.dev/imttn9p44ox2024z2jb8.jpg" />
    </item>
    <item>
        <title>Some photos from the New Year Update 2024</title>
        <link>https://thucde.dev/en/some-photos-from-the-new-year-update-2024</link>
        <guid isPermaLink="true">https://thucde.dev/en/some-photos-from-the-new-year-update-2024</guid>
        <pubDate>Fri, 23 Feb 2024 14:44:08 GMT</pubDate>
        <description>Some photos taken at the company new year update 2024.</description>
        <content:encoded><![CDATA[<p>Some photos taken at the company new year update 2024.</p>
<p>Some photos taken at the company new year update 2024.

It was great attending the quarterly update at the New World Saigon Hotel today, my second time there this year. Looking back on the company&apos;s progress, new initiatives, and upcoming events was truly inspiring. Excited for what&apos;s ahead!</p>]]></content:encoded>
        <author>Thức Trần</author>
        <category>Work</category>
        <category>company update</category>
        <category>work</category>
        <category>business</category>
        <category>new world hotel</category>
        <category>event</category>
        <enclosure url="http://res.cloudinary.com/katyperrycbt/image/upload/v1708699351/thucde.dev/bpusvt09nofzegi9hpnl.jpg" type="image/jpeg" length="0" />
        <media:content url="http://res.cloudinary.com/katyperrycbt/image/upload/v1708699351/thucde.dev/bpusvt09nofzegi9hpnl.jpg" medium="image" />
        <media:thumbnail url="http://res.cloudinary.com/katyperrycbt/image/upload/v1708699351/thucde.dev/bpusvt09nofzegi9hpnl.jpg" />
    </item>
</channel>
</rss>