<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Tiny Tech]]></title><description><![CDATA[The Tiny Tech blog series are used to by the author to build the foundational concept.]]></description><link>https://yashdotrv.hashnode.dev</link><generator>RSS for Node</generator><lastBuildDate>Mon, 12 Oct 2026 13:28:37 GMT</lastBuildDate><atom:link href="https://yashdotrv.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Understanding The React Component Lifecycle Basics.]]></title><description><![CDATA[Imagine you're running Netflix, serving millions of users across the globe. Every time someone plays a video, pauses, or switches to another movie, React components work behind the scenes. But what if these components didn’t clean up properly? Memory...]]></description><link>https://yashdotrv.hashnode.dev/understanding-the-react-component-lifecycle-basics</link><guid isPermaLink="true">https://yashdotrv.hashnode.dev/understanding-the-react-component-lifecycle-basics</guid><dc:creator><![CDATA[Yash RV]]></dc:creator><pubDate>Thu, 06 Feb 2025 16:34:49 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1738859590489/7240de9b-d832-431d-a83a-bceabd98dcb8.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Imagine you're running <strong>Netflix</strong>, serving millions of users across the globe. Every time someone plays a video, pauses, or switches to another movie, React components work behind the scenes. But what if these components <strong>didn’t clean up</strong> properly? Memory leaks would <strong>crash</strong> devices. If updates were inefficient, users would see <strong>laggy interfaces</strong> instead of smooth transitions.</p>
<p>At scale, these issues <strong>multiply</strong>. A single inefficient React component on a <strong>personal blog</strong> might go unnoticed, but in a massive system like <strong>Facebook, Airbnb, or Amazon</strong>, it could degrade performance for <strong>millions</strong>.</p>
<p>This is where the <strong>React Component Lifecycle</strong> becomes crucial. Understanding it helps developers:</p>
<ul>
<li><p><strong>Optimize rendering</strong> to keep apps fast.</p>
</li>
<li><p><strong>Prevent memory leaks</strong> for better stability.</p>
</li>
<li><p><strong>Manage side effects</strong> (like API calls and event listeners) properly.</p>
</li>
</ul>
<p>A well-managed lifecycle ensures <strong>seamless, high-performance applications</strong> - whether you're handling <strong>thousands of stock updates per second on Robinhood</strong> or rendering <strong>millions of real-time messages on WhatsApp</strong>.</p>
<p>Now, let's break down <strong>how</strong> this lifecycle works.</p>
<h2 id="heading-react-component-lifecycle"><strong>React Component Lifecycle:</strong></h2>
<p><img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4nksao7unle59syrml60.png" alt /></p>
<p>React components behave like <strong>living things</strong>. They are <strong>born (mounted), evolve (update), and eventually die (unmount)</strong>.</p>
<h3 id="heading-phase-1-mounting-the-birth-of-a-component"><strong>Phase 1: Mounting – The Birth of a Component</strong></h3>
<p>When a React component <strong>mounts</strong>, it appears in the UI for the first time.</p>
<h4 id="heading-real-world-example"><strong>Real-World Example</strong></h4>
<p>Imagine an <strong>e-commerce site</strong> like Amazon. A user visits the homepage, and React <strong>mounts</strong> product components - each showing an image, title, and price.</p>
<h4 id="heading-what-happens-during-mounting"><strong>What Happens During Mounting?</strong></h4>
<ol>
<li><p><strong>Render Phase</strong> – React <strong>creates virtual elements</strong>.</p>
</li>
<li><p><strong>Insert DOM Nodes</strong> – React updates the <strong>real DOM</strong>.</p>
</li>
<li><p><strong>Set DOM Refs</strong> – If <code>useRef</code> is used, React <strong>stores references</strong> to DOM nodes.</p>
</li>
<li><p><strong>Run</strong> <code>useLayoutEffect</code> – UI changes <strong>before</strong> the user sees them.</p>
</li>
<li><p><strong>DOM Paint</strong> – The <strong>browser renders</strong> the page.</p>
</li>
<li><p><strong>Run</strong> <code>useEffect</code> – Side effects (e.g., fetching product details) execute.</p>
</li>
</ol>
<h3 id="heading-phase-2-updating-the-evolution-of-a-component"><strong>Phase 2: Updating – The Evolution of a Component</strong></h3>
<p>Updating happens <strong>whenever a component changes</strong>.</p>
<h4 id="heading-real-world-example-1"><strong>Real-World Example</strong></h4>
<p>A user on <strong>Instagram</strong> likes a post. The heart icon updates <strong>instantly</strong>. This is because the <strong>component re-renders</strong> based on the updated <strong>state</strong>.</p>
<h4 id="heading-what-triggers-updating"><strong>What Triggers Updating?</strong></h4>
<ul>
<li><p>A component’s <strong>state changes</strong> (e.g., toggling dark mode).</p>
</li>
<li><p>A <strong>parent component re-renders</strong>.</p>
</li>
<li><p>A <strong>context value updates</strong> (e.g., switching languages).</p>
</li>
</ul>
<h4 id="heading-what-happens-during-updating"><strong>What Happens During Updating?</strong></h4>
<ol>
<li><p><strong>Re-render:</strong> React recalculates the component’s output.</p>
</li>
<li><p><strong>Reconciliation:</strong> React compares the new and old DOM to find changes.</p>
</li>
<li><p><strong>Commit Changes:</strong> React updates the <strong>real DOM</strong>.</p>
</li>
<li><p><strong>Unset DOM Refs:</strong> If the referenced element changes, old refs are cleared.</p>
</li>
<li><p><strong>Cleanup</strong> <code>useLayoutEffect</code>: Removes previous side effects.</p>
</li>
<li><p><strong>Set DOM Refs:</strong> Updates refs for new elements.</p>
</li>
<li><p><strong>Run</strong> <code>useLayoutEffect</code>: Executes layout-related logic.</p>
</li>
<li><p><strong>Paint the DOM:</strong> The browser <strong>renders</strong> the updates.</p>
</li>
<li><p><strong>Cleanup</strong> <code>useEffect</code>: Clears old effects to prevent memory leaks.</p>
</li>
<li><p><strong>Run</strong> <code>useEffect</code>: Executes the new effect.</p>
</li>
</ol>
<p>🔹 <strong>At Scale:</strong> Without optimized updates, a simple UI change (like a new comment on YouTube) could trigger <strong>thousands of unnecessary re-renders</strong>.</p>
<h3 id="heading-phase-3-unmounting-the-death-of-a-component"><strong>Phase 3: Unmounting – The Death of a Component</strong></h3>
<p>Unmounting happens <strong>when a component is no longer needed</strong>.</p>
<h4 id="heading-real-world-example-2"><strong>Real-World Example</strong></h4>
<p>A user on <strong>Spotify</strong> switches to another song. The UI must <strong>remove old elements</strong> to free memory and load the new track.</p>
<h4 id="heading-what-triggers-unmounting"><strong>What Triggers Unmounting?</strong></h4>
<ul>
<li><p>A component <strong>leaves the JSX tree</strong>.</p>
</li>
<li><p>Its <strong>parent component unmounts</strong>.</p>
</li>
<li><p>Its <strong>key changes</strong> (forcing React to replace it).</p>
</li>
</ul>
<h4 id="heading-what-happens-during-unmounting"><strong>What Happens During Unmounting?</strong></h4>
<ol>
<li><p><strong>Run Cleanup Functions:</strong> React removes event listeners, API calls, and other effects.</p>
</li>
<li><p><strong>Unset DOM Refs:</strong> React nullifies <code>ref.current</code>.</p>
</li>
<li><p><strong>Remove DOM Nodes:</strong> The component disappears from the page.</p>
</li>
</ol>
<p>🔹 <strong>At Scale:</strong> If components don’t clean up properly, memory leaks can cause performance issues - leading to <strong>slow apps, browser crashes, or excessive server load</strong>.</p>
<h2 id="heading-why-the-react-lifecycle-is-essential-at-scale"><strong>Why the React Lifecycle is Essential at Scale</strong></h2>
<h3 id="heading-optimized-performance">✅ <strong>Optimized Performance</strong></h3>
<ul>
<li><p>Using <code>React.memo</code> prevents <strong>unnecessary re-renders</strong>.</p>
</li>
<li><p>Keeping track of dependencies in <code>useEffect</code> avoids <strong>excessive API calls</strong>.</p>
</li>
</ul>
<h3 id="heading-preventing-memory-leaks">✅ <strong>Preventing Memory Leaks</strong></h3>
<ul>
<li><p>Unmounting components properly <strong>frees up system resources</strong>.</p>
</li>
<li><p>Cleaning up event listeners prevents <strong>browser slowdowns</strong>.</p>
</li>
</ul>
<h3 id="heading-managing-side-effects">✅ <strong>Managing Side Effects</strong></h3>
<ul>
<li><p>Knowing <strong>when</strong> to fetch data prevents <strong>duplicate API requests</strong>.</p>
</li>
<li><p>Using <code>useLayoutEffect</code> ensures UI updates <strong>before the user sees them</strong>.</p>
</li>
</ul>
<h2 id="heading-final-thoughts"><strong>Final Thoughts</strong></h2>
<p>At scale, an unoptimized React component can cause <strong>delays, crashes, and wasted resources</strong>. By mastering the <strong>React component lifecycle</strong>, you can ensure smooth, efficient, and scalable applications - whether you're building for <strong>Netflix, Amazon, or your own startup</strong>.</p>
<h2 id="heading-additional-resources">Additional Resources:</h2>
<ul>
<li><p><a target="_blank" href="https://react.dev/learn/render-and-commit">https://react.dev/learn/render-and-commit</a></p>
</li>
<li><p><a target="_blank" href="https://react.dev/learn/lifecycle-of-reactive-effects">https://react.dev/learn/lifecycle-of-reactive-effects</a></p>
</li>
<li><p><a target="_blank" href="https://julesblom.com/writing/react-hook-component-timeline">https://julesblom.com/writing/react-hook-component-timeline</a></p>
</li>
<li><p><a target="_blank" href="https://blog.isquaredsoftware.com/2020/05/blogged-answers-a-mostly-complete-guide-to-react-rendering-behavior/">https://blog.isquaredsoftware.com/2020/05/blogged-answers-a-mostly-complete-guide-to-react-rendering-behavior/</a></p>
</li>
</ul>
<p>This article is for the sake of my collective learning on react topics, the link to the article <a target="_blank" href="https://www.frontendjoy.com/p/react-lifecycle-in-3-minutes">original article is here</a>.</p>
]]></content:encoded></item><item><title><![CDATA[Cloud Management: The Art of Keeping Your Head in the Clouds, Without Getting Lost.]]></title><description><![CDATA[Introduction
Let’s be real cloud computing is everywhere. It’s like Wi-Fi; we don’t always see it, but we panic when it stops working. Businesses big and small are shifting their operations to the cloud, making cloud management a crucial skill. But w...]]></description><link>https://yashdotrv.hashnode.dev/cloud-management-the-art-of-keeping-your-head-in-the-clouds-without-getting-lost</link><guid isPermaLink="true">https://yashdotrv.hashnode.dev/cloud-management-the-art-of-keeping-your-head-in-the-clouds-without-getting-lost</guid><category><![CDATA[Cloud Computing]]></category><category><![CDATA[#operations]]></category><dc:creator><![CDATA[Yash RV]]></dc:creator><pubDate>Wed, 26 Jun 2024 17:31:50 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1738757883808/7296e2ab-1ea7-4731-9134-a9c68487c33a.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2 id="heading-introduction">Introduction</h2>
<p>Let’s be real cloud computing is everywhere. It’s like Wi-Fi; we don’t always see it, but we panic when it stops working. Businesses big and small are shifting their operations to the cloud, making cloud management a crucial skill. But what exactly is cloud management? And how do you avoid burning a hole in your budget while keeping things running smoothly? Stick around - we’re going to break it down in a way that even your grandma (or at least your IT-enthusiast uncle) would understand.</p>
<h2 id="heading-what-is-cloud-management">What Is Cloud Management?</h2>
<p>Cloud management is basically the art (yes, art) of keeping your cloud-based resources organized, optimized, and secure. Think of it like managing a buffet - you don’t want to run out of food (resources), but you also don’t want to waste money piling up shrimp that no one eats (over-provisioning). It involves tasks like deploying applications, monitoring performance, keeping security tight, and ensuring compliance with regulations.</p>
<p>Good cloud management keeps everything running smoothly, saves money, and reduces the risk of waking up to a cybersecurity nightmare.</p>
<h2 id="heading-the-big-four-of-cloud-management">The Big Four of Cloud Management</h2>
<p>If cloud management had an Avengers team, it would consist of these four key players:</p>
<ul>
<li><p>Resource Allocation: Making sure your computing power goes where it’s needed most.</p>
</li>
<li><p>Monitoring and Analytics: Tracking what’s working, what’s failing, and what’s just taking up space.</p>
</li>
<li><p>Security and Compliance: Protecting your data from cyber villains and ensuring you don’t break any laws.</p>
</li>
<li><p>Automation: Letting machines handle the boring stuff so humans can do more important things (like coffee breaks and actual innovation).</p>
</li>
</ul>
<h2 id="heading-why-should-you-care-about-cloud-management">Why Should You Care About Cloud Management?</h2>
<p>Good cloud management isn’t just about keeping IT happy. It makes a real difference in:</p>
<ul>
<li><p>Cost Management: Nobody likes surprise bills. Smart cloud management ensures you don’t spend more than you need to.</p>
</li>
<li><p>Performance Optimization: Slow applications frustrate users. Proper management keeps everything running like a well-oiled machine.</p>
</li>
<li><p>Security and Compliance: A hacked system is bad for business (and worse for your reputation).</p>
</li>
<li><p>Scalability: Need more resources? No problem. Need less? Even better.</p>
</li>
</ul>
<h2 id="heading-cloud-management-services-whats-on-the-menu">Cloud Management Services: What’s on the Menu?</h2>
<p>Different organizations have different needs, and that’s where cloud management services come in. Let’s take a look at the options:</p>
<h3 id="heading-public-cloud-management">Public Cloud Management</h3>
<p>Managing resources from providers like AWS, Azure, or Google Cloud.</p>
<p>✅ Pros: Lower upfront costs, flexible, and easy to scale.</p>
<p>❌ Cons: Security concerns and potentially high long-term costs.</p>
<h3 id="heading-private-cloud-management">Private Cloud Management</h3>
<p>For those who want full control over their own cloud environment.</p>
<p>✅ Pros: Better security and compliance.</p>
<p>❌ Cons: More expensive and harder to manage.</p>
<h3 id="heading-hybrid-cloud-management">Hybrid Cloud Management</h3>
<p>A mix of public and private cloud - because why choose one when you can have both?</p>
<p>✅ Pros: Flexible and cost-effective.</p>
<p>❌ Cons: Managing both environments can be tricky.</p>
<h3 id="heading-cloud-management-as-a-service-cmaas">Cloud Management as a Service (CMaaS)</h3>
<p>Let someone else handle the heavy lifting while you focus on your business.</p>
<p>✅ Pros: Less hassle, more expertise.</p>
<p>❌ Cons: Less control over your own infrastructure.</p>
<h2 id="heading-the-best-cloud-management-tools-in-the-game">The Best Cloud Management Tools in the Game</h2>
<p>If cloud management were a video game, these tools would be your ultimate power-ups:</p>
<ul>
<li><p><strong>AWS Management Console</strong>: Your command center for AWS services.</p>
</li>
<li><p><strong>Azure Management Porta</strong>l: Microsoft’s answer to cloud control.</p>
</li>
<li><p><strong>Google Cloud Console</strong>: Keeping Google Cloud resources in check.</p>
</li>
<li><p><strong>OpenStack</strong>: The open-source hero of cloud management.</p>
</li>
</ul>
<h2 id="heading-best-practices-to-make-cloud-management-less-painful">Best Practices to Make Cloud Management Less Painful</h2>
<p>Want to be a cloud management pro? Follow these tips:</p>
<ol>
<li><h3 id="heading-monitor-like-a-hawk">Monitor Like a Hawk</h3>
<p> Use tools like AWS CloudWatch, Azure Monitor, or Google Stackdriver to track your system’s health. If something goes wrong, you’ll want to know before users start complaining.</p>
</li>
<li><h3 id="heading-automate-everything-or-as-much-as-possible">Automate Everything (Or as Much as Possible)</h3>
<p> Why waste time on tasks that can be automated? Tools like AWS Lambda, Azure Automation, and Google Cloud Functions can handle the boring stuff so you don’t have to.</p>
</li>
<li><h3 id="heading-optimize-resource-allocation">Optimize Resource Allocation</h3>
<p> Cloud resources aren’t free (unless you have some secret deal we don’t know about). Use AWS Trusted Advisor, Azure Cost Management, and Google Cloud Cost Management to avoid unnecessary expenses.</p>
</li>
<li><h3 id="heading-dont-skimp-on-security">Don’t Skimp on Security</h3>
<p> Hackers don’t take vacations. Tools like AWS IAM, Azure Security Center, and Google Cloud Security Command Center help keep your data safe.</p>
</li>
<li><h3 id="heading-use-a-centralized-management-console">Use a Centralized Management Console</h3>
<p> One dashboard to rule them all! AWS, Azure, and Google Cloud all offer centralized platforms to manage resources more effectively.</p>
</li>
</ol>
<h2 id="heading-practical-tips-for-beginners">Practical Tips for Beginners</h2>
<ul>
<li><p><strong>Start Small</strong>: Don’t go all-in at once. Begin with manageable resources and scale as needed.</p>
</li>
<li><p><strong>Experiment and Learn</strong>: Use free tiers and trial periods to test services without commitment.</p>
</li>
<li><p><strong>Stay Updated</strong>: Cloud tech evolves fast - stay ahead by reading blogs, attending webinars, and engaging with the community.</p>
</li>
</ul>
<h2 id="heading-wrapping-it-up">Wrapping It Up</h2>
<p>Cloud management is like maintaining a high-tech garden - you need to plant wisely, monitor growth, prune when necessary, and protect against pests (hackers, in this case). By following best practices and using the right tools, you can keep your cloud environment efficient, secure, and cost-effective.</p>
<p>So whether you’re running a startup or managing a massive enterprise, getting cloud management right will save you time, money, and many headaches. Now, go forth and manage that cloud like a boss!</p>
<ul>
<li><p>Further Resources Books: “Cloud Management for Dummies” by - Judith Hurwitz, “Architecting the Cloud” by Michael J. Kavis.</p>
</li>
<li><p>Tutorials &amp; Tools: AWS Cloud Management, Azure Management Tools, Google Cloud Management.</p>
</li>
</ul>
<p>Happy cloud managing! ☁️🚀</p>
]]></content:encoded></item><item><title><![CDATA[Discovering Software Success with DORA Metrics.]]></title><description><![CDATA[Let's start a fun adventure exploring DORA Metrics! Wait, DoraMetrics? Yes, I know what you're thinking. What on earth does this have to do with Dora the Explorer? Well, nothing at all, but just like Dora's expeditions, we're diving into the world of...]]></description><link>https://yashdotrv.hashnode.dev/discovering-software-success-with-dora-metrics</link><guid isPermaLink="true">https://yashdotrv.hashnode.dev/discovering-software-success-with-dora-metrics</guid><category><![CDATA[Software Engineering]]></category><category><![CDATA[developers]]></category><dc:creator><![CDATA[Yash RV]]></dc:creator><pubDate>Fri, 19 Apr 2024 22:02:09 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1719423236670/8b89bf09-4603-4c5c-b42b-8ab63f55663a.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Let's start a fun adventure exploring DORA Metrics! Wait, DoraMetrics? Yes, I know what you're thinking. What on earth does this have to do with Dora the Explorer? Well, nothing at all, but just like Dora's expeditions, we're diving into the world of software development metrics. So, grab your backpack and trusty map, because we're about to uncover the secrets of high-performing development teams.</p>
<p>For a moment, let's imagine a team of intrepid adventurers led by the enigmatic DoraMetrics. These metrics hail from an organization called DevOps Research and Assessment, a team assembled by Google to unravel the mysteries of team performance. Their quest? To survey thousands of development teams across various industries and distill their findings into four key metrics. And what are these mystical metrics, you ask? Let's unveil them, one by one.</p>
<p>First up is <strong>Deployment Frequency</strong>. This metric measures the speed at which changes journey to production. It's like the rhythm of a well-choreographed dance, with each change seamlessly gliding onto the stage of production. But why is deployment frequency so crucial, you wonder? Well, imagine you're baking a cake. The more often you check on it, adjusting the temperature or adding ingredients as needed, the better the final result. Similarly, by shipping code to production frequently, teams can catch issues early and ensure a smoother development process.</p>
<p>Next on our adventure is <strong>Change Lead Time</strong>. This metric tracks the time it takes for a change to journey from conception to completion. It's like charting a course through uncharted waters, with developers navigating the twists and turns of the development process. By breaking down this journey into manageable chunks, teams can identify bottlenecks and streamline their workflow. Developers can plot a course to faster change lead times.</p>
<p>But what about <strong>Change Failure Rate</strong>? This metric is the guardian of quality, ensuring that changes reach their destination unscathed. It's like having a vigilant watchdog, sniffing out any potential issues before they wreak havoc. By defining what constitutes a failure and focusing on the rate of failure per deployment, teams can maintain a high standard of quality while still delivering changes at speed.</p>
<p>Last but not least, we come to <strong>Mean Time to Recovery (MTTR)</strong>. This metric measures how swiftly a team can bounce back from adversity. It's like having a team of superheroes ready to swoop in and save the day at a moment's notice. By fostering a culture of rapid response and equipping teams with the tools to swiftly deploy fixes, organizations can minimize downtime and keep their systems running smoothly.</p>
<p>Now, you may be wondering, how do these metrics relate to Dora the Explorer? Well, they don't! But just like Dora embarks on exciting adventures with her trusty map and backpack, developers can navigate the complex landscape of software development armed with these invaluable metrics.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1714484010904/55f85445-0bbf-4968-a55e-9eadca401534.png" alt="State of DevOps Report 2022" class="image--center mx-auto" /></p>
<h3 id="heading-some-best-practices-in-the-devops-domain">Some best practices in the DevOps domain.</h3>
<p>DORA metrics are widely acknowledged as DevOps industry standards for assessing maturity. Yet, if we blur the line between metrics and targets, we risk misinterpreting project progress, fostering a disconnect between objectives and culture, and achieving releases that don't reach our team's full potential.</p>
<p>It's easy to slip into viewing DORA metrics as strict targets, inadvertently skewing our perception. To preempt this, focus on metric trends. Instead of fixating on fixed targets, track how your metrics evolve over time when adjusting your team's processes or practices. Relative changes offer more insightful feedback than static targets ever could, serving as a true measure of progress.</p>
<p>If your team feels constrained by targets, leading to counterproductive behaviors or demoralization, REASSESS! Explore what context might be missing and whether the targets address the root issue. Perhaps targets were set prematurely? Emphasize measurement before setting goals, steering clear of guesswork.</p>
<p>When wielded effectively, DORA metrics showcase your team's advancements and substantiate the business value of DevOps. They underscore the overarching benefits: enhanced velocity, agility, and resilience across development and release processes, fostering collaboration among developers, business stakeholders, and end users. By monitoring DORA metric trends, you're making informed decisions that empower your teams and deliver greater value to customers.</p>
<h3 id="heading-conclusion"><em>Conclusion</em></h3>
<p>Whether you're scaling the peaks of deployment frequency or charting the course of change lead time. <strong>It's not always just about the metrics, metrics and metrics. It's about the journey, it's about the developers</strong> who make it all possible.</p>
<hr />
]]></content:encoded></item></channel></rss>