<?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/">
  <channel>
    <title>TienNg21 Blog</title>
    <link>https://tienng21.com</link>
    <description>Personal blog about technology, programming, and life experiences</description>
    <language>en-us</language>
    <lastBuildDate>Thu, 04 Jun 2026 00:13:08 GMT</lastBuildDate>
    <atom:link href="https://tienng21.com/feed.xml" rel="self" type="application/rss+xml" />
    <copyright>Copyright 2026 TienNg21</copyright>
    <managingEditor>contact@tienng21.com (TienNg21)</managingEditor>
    <webMaster>contact@tienng21.com (TienNg21)</webMaster>
    <image>
      <url>https://tienng21.com/images/avatar.png</url>
      <title>TienNg21 Blog</title>
      <link>https://tienng21.com</link>
    </image>
    <item>
      <title>Stale Closures in React: The Real Problem (and Real Fixes)</title>
      <link>https://tienng21.com/blog/stale-closures-in-react-the-real-problem-and-real-fixes</link>
      <guid isPermaLink="true">https://tienng21.com/blog/stale-closures-in-react-the-real-problem-and-real-fixes</guid>
      <description><![CDATA[Master React stale closures by understanding the real problem. Learn why useEffect captures old values, and discover the real fixes that actually work.]]></description>
      <pubDate>Wed, 04 Feb 2026 17:15:07 GMT</pubDate>
      <category>React</category>
      <author>contact@tienng21.com (TienNg21)</author>
      <enclosure url="https://tienng21.com/images/avatar.png" type="image/jpeg" />
    </item>
    <item>
      <title>Closures Are Easy — Scope Chains Are Not</title>
      <link>https://tienng21.com/blog/closures-are-easy-scope-chains-are-not</link>
      <guid isPermaLink="true">https://tienng21.com/blog/closures-are-easy-scope-chains-are-not</guid>
      <description><![CDATA[Understand JavaScript closures by mastering scope chains. Learn how lexical scope works, why closures capture variables, and debug common beginner mistakes.]]></description>
      <pubDate>Wed, 04 Feb 2026 16:57:15 GMT</pubDate>
      <category>JavaScript</category>
      <author>contact@tienng21.com (TienNg21)</author>
      <enclosure url="https://tienng21.com/images/avatar.png" type="image/jpeg" />
    </item>
    <item>
      <title>Git Is a Content-Addressable Database (Not a Version Control Tool)</title>
      <link>https://tienng21.com/blog/git-content-addressable-database</link>
      <guid isPermaLink="true">https://tienng21.com/blog/git-content-addressable-database</guid>
      <description><![CDATA[Discover how Git's content-addressable object storage model works under the hood. Learn about blobs, trees, commits, and tags to master Git internals and understand why Git is fundamentally a database.]]></description>
      <pubDate>Wed, 04 Feb 2026 16:33:41 GMT</pubDate>
      <category>Git</category>
      <author>contact@tienng21.com (TienNg21)</author>
      <enclosure url="https://tienng21.com/images/avatar.png" type="image/jpeg" />
    </item>
    <item>
      <title>Understanding Git&apos;s Directed Acyclic Graph</title>
      <link>https://tienng21.com/blog/understanding-git-dag</link>
      <guid isPermaLink="true">https://tienng21.com/blog/understanding-git-dag</guid>
      <description><![CDATA[Master Git's internal structure by understanding its Directed Acyclic Graph. Learn how commits, branches, and refs work together to power version control.]]></description>
      <pubDate>Tue, 03 Feb 2026 17:08:19 GMT</pubDate>
      <category>Git</category>
      <author>contact@tienng21.com (TienNg21)</author>
      <enclosure url="https://tienng21.com/images/avatar.png" type="image/jpeg" />
    </item>
    <item>
      <title>Using git commit fixup to simplifying commit squashing</title>
      <link>https://tienng21.com/blog/using-git-commit-fixup-to-simplify-commit-squashing</link>
      <guid isPermaLink="true">https://tienng21.com/blog/using-git-commit-fixup-to-simplify-commit-squashing</guid>
      <description><![CDATA[Learn how to use git commit --fixup with interactive rebase to automatically squash commits and clean up your commit history with real-world examples.]]></description>
      <pubDate>Tue, 03 Feb 2026 16:14:54 GMT</pubDate>
      <category>Tutorial</category>
      <author>contact@tienng21.com (TienNg21)</author>
      <enclosure url="https://tienng21.com/images/avatar.png" type="image/jpeg" />
    </item>
  </channel>
</rss>