<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Ty&#039;s Web Development Training Blog</title>
	<atom:link href="https://tyronneratcliff.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://tyronneratcliff.com/</link>
	<description></description>
	<lastBuildDate>Wed, 13 May 2026 15:21:38 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>
	<item>
		<title>Beyond Simple Objects: Mastering NestJS DTOs in 2026</title>
		<link>https://tyronneratcliff.com/mastering-nestjs-dtos-in-2026/</link>
					<comments>https://tyronneratcliff.com/mastering-nestjs-dtos-in-2026/#respond</comments>
		
		<dc:creator><![CDATA[Tyronne]]></dc:creator>
		<pubDate>Wed, 13 May 2026 15:21:38 +0000</pubDate>
				<category><![CDATA[NestJs]]></category>
		<category><![CDATA[DTO]]></category>
		<category><![CDATA[nestjs]]></category>
		<category><![CDATA[nestjs dto]]></category>
		<category><![CDATA[zod]]></category>
		<guid isPermaLink="false">https://tyronneratcliff.com/?p=3390</guid>

					<description><![CDATA[<p>In the world of NestJS, Data Transfer Objects (DTOs) are often treated as a boilerplate necessity—a simple class we create to satisfy the compiler. However, if you are building complex systems like multi-tenant e-commerce platforms or AI-integrated backends, your DTOs are actually the first line of defense for your application&#8217;s integrity. Why DTOs Matter More [&#8230;]</p>
<p>The post <a href="https://tyronneratcliff.com/mastering-nestjs-dtos-in-2026/">Beyond Simple Objects: Mastering NestJS DTOs in 2026</a> appeared first on <a href="https://tyronneratcliff.com">Ty&#039;s Web Development Training Blog</a>.</p>
]]></description>
		
					<wfw:commentRss>https://tyronneratcliff.com/mastering-nestjs-dtos-in-2026/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Beyond the Decorator: Building a Type-Safe CMS with Zod and NestJS</title>
		<link>https://tyronneratcliff.com/zod-and-nestjs-tips/</link>
					<comments>https://tyronneratcliff.com/zod-and-nestjs-tips/#respond</comments>
		
		<dc:creator><![CDATA[Tyronne]]></dc:creator>
		<pubDate>Tue, 12 May 2026 22:40:19 +0000</pubDate>
				<category><![CDATA[NestJs]]></category>
		<category><![CDATA[class validator]]></category>
		<category><![CDATA[nestjs]]></category>
		<category><![CDATA[zod]]></category>
		<category><![CDATA[zod first architecture]]></category>
		<guid isPermaLink="false">https://tyronneratcliff.com/?p=3384</guid>

					<description><![CDATA[<p>In the pursuit of technical mastery, we often find that the &#8220;standard&#8221; way of doing things eventually becomes the very thing holding us back. For those of us building complex, multi-tenant systems—platforms designed to challenge the status quo of content management—the traditional NestJS validation stack can start to feel like a collection of fragile abstractions. [&#8230;]</p>
<p>The post <a href="https://tyronneratcliff.com/zod-and-nestjs-tips/">Beyond the Decorator: Building a Type-Safe CMS with Zod and NestJS</a> appeared first on <a href="https://tyronneratcliff.com">Ty&#039;s Web Development Training Blog</a>.</p>
]]></description>
		
					<wfw:commentRss>https://tyronneratcliff.com/zod-and-nestjs-tips/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Navigating the Labyrinth: A Guide to Next.js Route Groups</title>
		<link>https://tyronneratcliff.com/nextjs-route-groups/</link>
					<comments>https://tyronneratcliff.com/nextjs-route-groups/#respond</comments>
		
		<dc:creator><![CDATA[Tyronne]]></dc:creator>
		<pubDate>Wed, 06 May 2026 15:39:51 +0000</pubDate>
				<category><![CDATA[Next.js]]></category>
		<category><![CDATA[nextjs route groups]]></category>
		<category><![CDATA[route groups]]></category>
		<guid isPermaLink="false">https://tyronneratcliff.com/?p=3375</guid>

					<description><![CDATA[<p>As your Next.js application scales, your app directory can quickly transform from a neat list of pages into a complex maze of folders. You might find yourself wanting to organize files by feature or intent—like grouping all &#8220;Auth&#8221; pages together—without those folder names actually appearing in your website’s URL. This is exactly where Route Groups [&#8230;]</p>
<p>The post <a href="https://tyronneratcliff.com/nextjs-route-groups/">Navigating the Labyrinth: A Guide to Next.js Route Groups</a> appeared first on <a href="https://tyronneratcliff.com">Ty&#039;s Web Development Training Blog</a>.</p>
]]></description>
		
					<wfw:commentRss>https://tyronneratcliff.com/nextjs-route-groups/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Mastering NestJS AuthGuards: The Backbone of Your API Security</title>
		<link>https://tyronneratcliff.com/mastering-nestjs-authguards/</link>
					<comments>https://tyronneratcliff.com/mastering-nestjs-authguards/#respond</comments>
		
		<dc:creator><![CDATA[Tyronne]]></dc:creator>
		<pubDate>Mon, 27 Apr 2026 23:42:20 +0000</pubDate>
				<category><![CDATA[NestJs]]></category>
		<category><![CDATA[auth]]></category>
		<category><![CDATA[authguard]]></category>
		<category><![CDATA[nestjs auth]]></category>
		<category><![CDATA[nestjs authguard]]></category>
		<guid isPermaLink="false">https://tyronneratcliff.com/?p=3360</guid>

					<description><![CDATA[<p>In a world where autonomous agents and multi-tenant platforms are becoming the standard, security can no longer be an afterthought—it must be the foundation. If you are building an API, you need a gatekeeper. In NestJS, that gatekeeper is the AuthGuard. This tutorial breaks down how to implement, scale, and secure your endpoints using Guards, [&#8230;]</p>
<p>The post <a href="https://tyronneratcliff.com/mastering-nestjs-authguards/">Mastering NestJS AuthGuards: The Backbone of Your API Security</a> appeared first on <a href="https://tyronneratcliff.com">Ty&#039;s Web Development Training Blog</a>.</p>
]]></description>
		
					<wfw:commentRss>https://tyronneratcliff.com/mastering-nestjs-authguards/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Building a Self-Correcting Inventory Agent with NestJS &#038; Gemini 1.5</title>
		<link>https://tyronneratcliff.com/building-a-self-correcting-inventory-agent-with-nestjs-gemini-1-5/</link>
					<comments>https://tyronneratcliff.com/building-a-self-correcting-inventory-agent-with-nestjs-gemini-1-5/#respond</comments>
		
		<dc:creator><![CDATA[Tyronne]]></dc:creator>
		<pubDate>Wed, 08 Apr 2026 14:39:53 +0000</pubDate>
				<category><![CDATA[NestJs]]></category>
		<category><![CDATA[agentic ai]]></category>
		<category><![CDATA[ai agent]]></category>
		<category><![CDATA[ai ecom]]></category>
		<category><![CDATA[ecom ai]]></category>
		<category><![CDATA[self correcting agent]]></category>
		<guid isPermaLink="false">https://tyronneratcliff.com/?p=3351</guid>

					<description><![CDATA[<p>This detailed tutorial bridges the gap between basic &#8220;Chatbot&#8221; development and true Agentic Engineering. We’re building a NestJS service that doesn&#8217;t just answer questions—it identifies problems in your data and fetches solutions autonomously. In 2026, the &#8220;Gold Standard&#8221; for AI engineering isn&#8217;t just sending a prompt to an LLM. It’s about giving that LLM tools [&#8230;]</p>
<p>The post <a href="https://tyronneratcliff.com/building-a-self-correcting-inventory-agent-with-nestjs-gemini-1-5/">Building a Self-Correcting Inventory Agent with NestJS &#038; Gemini 1.5</a> appeared first on <a href="https://tyronneratcliff.com">Ty&#039;s Web Development Training Blog</a>.</p>
]]></description>
		
					<wfw:commentRss>https://tyronneratcliff.com/building-a-self-correcting-inventory-agent-with-nestjs-gemini-1-5/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>3 Expensive NestJS Mistakes (And How to Prevent Them)</title>
		<link>https://tyronneratcliff.com/expensive-nestjs-mistakes-how-to-prevent/</link>
					<comments>https://tyronneratcliff.com/expensive-nestjs-mistakes-how-to-prevent/#respond</comments>
		
		<dc:creator><![CDATA[Tyronne]]></dc:creator>
		<pubDate>Tue, 07 Apr 2026 18:21:57 +0000</pubDate>
				<category><![CDATA[NestJs]]></category>
		<category><![CDATA[expensive nestjs mistakes]]></category>
		<category><![CDATA[nestjs errors]]></category>
		<category><![CDATA[nestjs mistakes]]></category>
		<guid isPermaLink="false">https://tyronneratcliff.com/?p=3341</guid>

					<description><![CDATA[<p>Building a NestJS application is easy; scaling one without a massive cloud bill or a weekend-long outage is the real challenge. If you’re moving an MVP toward a production-ready system, avoid these three architectural traps. 1. The &#8220;Request-Scoped&#8221; Performance Sinkhole NestJS makes it incredibly easy to use @Injectable({ scope: Scope.REQUEST }). While this is tempting [&#8230;]</p>
<p>The post <a href="https://tyronneratcliff.com/expensive-nestjs-mistakes-how-to-prevent/">3 Expensive NestJS Mistakes (And How to Prevent Them)</a> appeared first on <a href="https://tyronneratcliff.com">Ty&#039;s Web Development Training Blog</a>.</p>
]]></description>
		
					<wfw:commentRss>https://tyronneratcliff.com/expensive-nestjs-mistakes-how-to-prevent/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>The 10x Failure: Why AI Safety is the New Engineering Standard</title>
		<link>https://tyronneratcliff.com/why-ai-safety-is-the-new-engineering-standard/</link>
					<comments>https://tyronneratcliff.com/why-ai-safety-is-the-new-engineering-standard/#respond</comments>
		
		<dc:creator><![CDATA[Tyronne]]></dc:creator>
		<pubDate>Tue, 31 Mar 2026 22:18:03 +0000</pubDate>
				<category><![CDATA[AI Safety]]></category>
		<category><![CDATA[ai safety]]></category>
		<category><![CDATA[ai safety tips]]></category>
		<guid isPermaLink="false">https://tyronneratcliff.com/?p=3334</guid>

					<description><![CDATA[<p>The tech world recently buzzed with a cautionary tale that every engineer should pin to their desk. Alexey Grigorev shared a nightmare scenario: Claude Code wiped his production database. With a single, misunderstood Terraform command, a platform with years of student submissions and course data vanished in an instant. It’s a brutal reminder of a [&#8230;]</p>
<p>The post <a href="https://tyronneratcliff.com/why-ai-safety-is-the-new-engineering-standard/">The 10x Failure: Why AI Safety is the New Engineering Standard</a> appeared first on <a href="https://tyronneratcliff.com">Ty&#039;s Web Development Training Blog</a>.</p>
]]></description>
		
					<wfw:commentRss>https://tyronneratcliff.com/why-ai-safety-is-the-new-engineering-standard/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Crafting a Professional Pagination System: A Deep Dive into Vanilla JavaScript</title>
		<link>https://tyronneratcliff.com/pagination-system-in-html-css-javascript/</link>
					<comments>https://tyronneratcliff.com/pagination-system-in-html-css-javascript/#respond</comments>
		
		<dc:creator><![CDATA[Tyronne]]></dc:creator>
		<pubDate>Tue, 24 Mar 2026 23:28:50 +0000</pubDate>
				<category><![CDATA[App Building Tutorials]]></category>
		<category><![CDATA[pagination]]></category>
		<category><![CDATA[pagination system]]></category>
		<guid isPermaLink="false">https://tyronneratcliff.com/?p=3328</guid>

					<description><![CDATA[<p>Pagination is a cornerstone of modern web development. Whether you&#8217;re managing a sprawling e-commerce catalog or a simple list of blog posts, delivering data in bite-sized, navigable chunks is essential for both performance and user experience. In this guide, we will build a robust, state-managed pagination component from scratch using HTML5, CSS3, and Vanilla JavaScript. [&#8230;]</p>
<p>The post <a href="https://tyronneratcliff.com/pagination-system-in-html-css-javascript/">Crafting a Professional Pagination System: A Deep Dive into Vanilla JavaScript</a> appeared first on <a href="https://tyronneratcliff.com">Ty&#039;s Web Development Training Blog</a>.</p>
]]></description>
		
					<wfw:commentRss>https://tyronneratcliff.com/pagination-system-in-html-css-javascript/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>React Performance: How to Stop Unnecessary Re-Renders</title>
		<link>https://tyronneratcliff.com/stop-unnecessary-re-renders-in-react/</link>
					<comments>https://tyronneratcliff.com/stop-unnecessary-re-renders-in-react/#respond</comments>
		
		<dc:creator><![CDATA[Tyronne]]></dc:creator>
		<pubDate>Wed, 18 Mar 2026 13:34:04 +0000</pubDate>
				<category><![CDATA[React Interview Questions]]></category>
		<category><![CDATA[react performance]]></category>
		<category><![CDATA[react performance tips]]></category>
		<category><![CDATA[stop unwanted rerenders in react]]></category>
		<guid isPermaLink="false">https://tyronneratcliff.com/?p=3322</guid>

					<description><![CDATA[<p>In a React interview, there is one question that separates the juniors from the seniors: &#8220;How do you optimize a component that re-renders even when its props haven&#8217;t changed?&#8221; React is fast by default, but as your application grows, &#8220;ghost&#8221; renders—renders that happen for no functional reason—can lead to a sluggish UI and a poor [&#8230;]</p>
<p>The post <a href="https://tyronneratcliff.com/stop-unnecessary-re-renders-in-react/">React Performance: How to Stop Unnecessary Re-Renders</a> appeared first on <a href="https://tyronneratcliff.com">Ty&#039;s Web Development Training Blog</a>.</p>
]]></description>
		
					<wfw:commentRss>https://tyronneratcliff.com/stop-unnecessary-re-renders-in-react/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Tackling the Titan: Efficiently Rendering Large Lists in React</title>
		<link>https://tyronneratcliff.com/rendering-large-lists-in-react/</link>
					<comments>https://tyronneratcliff.com/rendering-large-lists-in-react/#respond</comments>
		
		<dc:creator><![CDATA[Tyronne]]></dc:creator>
		<pubDate>Mon, 16 Mar 2026 22:30:56 +0000</pubDate>
				<category><![CDATA[React Interview Questions]]></category>
		<category><![CDATA[react render list]]></category>
		<category><![CDATA[react render list tips]]></category>
		<category><![CDATA[ReactJS]]></category>
		<category><![CDATA[reactjs tips]]></category>
		<guid isPermaLink="false">https://tyronneratcliff.com/?p=3314</guid>

					<description><![CDATA[<p>As application developers, we&#8217;re often tasked with presenting data to our users. A dashboard, an infinite feed, an e-commerce catalog—all of these common UI components rely heavily on lists. And lists work beautifully&#8230; until they don&#8217;t. When your data scale hits 1,000, 10,000, or even 100,000 items, the standard data.map() approach turns your smooth application [&#8230;]</p>
<p>The post <a href="https://tyronneratcliff.com/rendering-large-lists-in-react/">Tackling the Titan: Efficiently Rendering Large Lists in React</a> appeared first on <a href="https://tyronneratcliff.com">Ty&#039;s Web Development Training Blog</a>.</p>
]]></description>
		
					<wfw:commentRss>https://tyronneratcliff.com/rendering-large-lists-in-react/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
