<?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[yoursandeshshrestha]]></title><description><![CDATA[yoursandeshshrestha]]></description><link>https://sandeshblog.hashnode.dev</link><generator>RSS for Node</generator><lastBuildDate>Mon, 21 Sep 2026 23:48:01 GMT</lastBuildDate><atom:link href="https://sandeshblog.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Next.js vs React.js: When to Use Each Framework]]></title><description><![CDATA[Next.js is built on top of React, which means it shares many of React's benefits but offers additional features that make it more powerful for certain types of applications. Here's why Next.js is considered better than React.js in some cases:
1. Serv...]]></description><link>https://sandeshblog.hashnode.dev/nextjs-vs-reactjs-when-to-use-each-framework</link><guid isPermaLink="true">https://sandeshblog.hashnode.dev/nextjs-vs-reactjs-when-to-use-each-framework</guid><category><![CDATA[Next.js]]></category><category><![CDATA[React]]></category><dc:creator><![CDATA[Sandesh Shrestha]]></dc:creator><pubDate>Fri, 27 Sep 2024 09:27:35 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1727429188789/ce48d0f4-81eb-470b-ae58-ee741f923b9a.avif" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Next.js is built on top of React, which means it shares many of React's benefits but offers additional features that make it more powerful for certain types of applications. Here's why Next.js is considered better than React.js in some cases:</p>
<h3 id="heading-1-server-side-rendering-ssr-amp-static-site-generation-ssg">1. <strong>Server-Side Rendering (SSR) &amp; Static Site Generation (SSG)</strong></h3>
<ul>
<li><p><strong>Next.js</strong>: It offers both Server-Side Rendering (SSR) and Static Site Generation (SSG) out of the box. This allows your pages to be pre-rendered on the server, which results in faster load times and better SEO.</p>
</li>
<li><p><strong>React.js</strong>: React by itself is a client-side library, meaning everything is rendered in the browser. You would need additional tools or frameworks (like Gatsby or custom SSR setups) to achieve SSR or SSG with React.</p>
</li>
</ul>
<h3 id="heading-2-file-based-routing">2. <strong>File-Based Routing</strong></h3>
<ul>
<li><p><strong>Next.js</strong>: It uses file-based routing, which means your folder structure determines your routes. For example, creating a file <code>pages/about.js</code> automatically creates a route at <code>/about</code>.</p>
</li>
<li><p><strong>React.js</strong>: Routing in React requires additional libraries like <code>react-router</code> and manual configuration of routes.</p>
</li>
</ul>
<h3 id="heading-3-api-routes">3. <strong>API Routes</strong></h3>
<ul>
<li><p><strong>Next.js</strong>: It allows you to create API routes within the same project. This means you can build your frontend and backend in a single Next.js application, making it a full-stack framework.</p>
</li>
<li><p><strong>React.js</strong>: You need to set up a separate backend (like Express or Node.js) to handle API calls.</p>
</li>
</ul>
<h3 id="heading-4-optimized-performance">4. <strong>Optimized Performance</strong></h3>
<ul>
<li><p><strong>Next.js</strong>: It has automatic code splitting, image optimization, and caching mechanisms built in. This results in smaller bundle sizes and faster load times.</p>
</li>
<li><p><strong>React.js</strong>: React apps need manual setup to implement advanced performance optimizations like code splitting and image optimization.</p>
</li>
</ul>
<h3 id="heading-5-seo-benefits">5. <strong>SEO Benefits</strong></h3>
<ul>
<li><p><strong>Next.js</strong>: With SSR and SSG, content is pre-rendered, making it easily crawlable by search engines, improving SEO.</p>
</li>
<li><p><strong>React.js</strong>: Since React renders on the client side, content might not be indexed properly unless you use SSR tools or libraries.</p>
</li>
</ul>
<h3 id="heading-6-zero-config-deployment">6. <strong>Zero Config Deployment</strong></h3>
<ul>
<li><p><strong>Next.js</strong>: It's designed for seamless deployment on platforms like Vercel (the company behind Next.js), with features like serverless functions and automatic optimizations.</p>
</li>
<li><p><strong>React.js</strong>: Deploying React apps requires more configuration, and additional setup is needed for SSR or API integrations.</p>
</li>
</ul>
<h3 id="heading-7-incremental-static-regeneration-isr">7. <strong>Incremental Static Regeneration (ISR)</strong></h3>
<ul>
<li><p><strong>Next.js</strong>: It supports ISR, which allows you to update static content after the site has been deployed, without needing a full rebuild.</p>
</li>
<li><p><strong>React.js</strong>: React itself does not offer any static regeneration capabilities. You would need a framework like Next.js or Gatsby for that.</p>
</li>
</ul>
<h3 id="heading-8-built-in-typescript-support">8. <strong>Built-in TypeScript Support</strong></h3>
<ul>
<li><p><strong>Next.js</strong>: It comes with TypeScript support out of the box, simplifying the process of setting up TypeScript in your projects.</p>
</li>
<li><p><strong>React.js</strong>: TypeScript can be used with React, but you have to manually configure it, requiring more effort.</p>
</li>
</ul>
<h3 id="heading-9-automatic-routing-and-code-splitting">9. <strong>Automatic Routing and Code Splitting</strong></h3>
<ul>
<li><p><strong>Next.js</strong>: Every page in the <code>pages</code> directory is automatically code-split and only loads the required code when visiting that page, improving performance.</p>
</li>
<li><p><strong>React.js</strong>: Code splitting has to be set up manually with tools like <code>react-loadable</code> or <code>React.lazy</code>.</p>
</li>
</ul>
<h3 id="heading-10-community-and-ecosystem">10. <strong>Community and Ecosystem</strong></h3>
<ul>
<li><p><strong>Next.js</strong>: The Next.js ecosystem has grown significantly and now offers a variety of plugins and tools tailored for SSR, SSG, and full-stack development.</p>
</li>
<li><p><strong>React.js</strong>: React has a broader and more flexible ecosystem but requires more effort to integrate the additional features Next.js provides natively.</p>
</li>
</ul>
<h3 id="heading-when-to-use-each">When to Use Each:</h3>
<ul>
<li><p><strong>Use React.js</strong> if you're building small to medium-sized client-side rendered applications or need a flexible library for custom solutions.</p>
</li>
<li><p><strong>Use Next.js</strong> if you're building dynamic, performant web applications, care about SEO, need SSR/SSG, or want a full-stack solution with API routes.</p>
</li>
</ul>
]]></content:encoded></item><item><title><![CDATA[bad API fetch VS good API fetch in JavaScript.]]></title><description><![CDATA[Bad API Fetch

No error handling

No timeout for long requests

Poor readability

No handling of response status codes


// Bad API fetch example
fetch('https://api.example.com/data')
  .then(response => response.json())
  .then(data => {
    console...]]></description><link>https://sandeshblog.hashnode.dev/bad-api-fetch-vs-good-api-fetch-in-javascript</link><guid isPermaLink="true">https://sandeshblog.hashnode.dev/bad-api-fetch-vs-good-api-fetch-in-javascript</guid><category><![CDATA[programming]]></category><category><![CDATA[programing]]></category><category><![CDATA[programming languages]]></category><category><![CDATA[JavaScript]]></category><category><![CDATA[APIs]]></category><category><![CDATA[API Gateway]]></category><dc:creator><![CDATA[Sandesh Shrestha]]></dc:creator><pubDate>Tue, 24 Sep 2024 15:08:02 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1727190617301/ac2c0391-0268-45c9-b79c-b82503d3b8ec.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h3 id="heading-bad-api-fetch">Bad API Fetch</h3>
<ul>
<li><p>No error handling</p>
</li>
<li><p>No timeout for long requests</p>
</li>
<li><p>Poor readability</p>
</li>
<li><p>No handling of response status codes</p>
</li>
</ul>
<pre><code class="lang-javascript"><span class="hljs-comment">// Bad API fetch example</span>
fetch(<span class="hljs-string">'https://api.example.com/data'</span>)
  .then(<span class="hljs-function"><span class="hljs-params">response</span> =&gt;</span> response.json())
  .then(<span class="hljs-function"><span class="hljs-params">data</span> =&gt;</span> {
    <span class="hljs-built_in">console</span>.log(<span class="hljs-string">'Data:'</span>, data);
  });
</code></pre>
<h3 id="heading-issues-with-this-code">Issues with this code:</h3>
<ol>
<li><p><strong>No error handling</strong>: If the network request fails, there is no way to catch and manage the error.</p>
</li>
<li><p><strong>No status code handling</strong>: Even if the API responds, it might not be a <code>200</code> OK response (like <code>404</code> or <code>500</code>), but there's no way to handle that.</p>
</li>
<li><p><strong>No timeout mechanism</strong>: The request may hang indefinitely if there are connectivity issues.</p>
</li>
<li><p><strong>Readability</strong>: If there are multiple <code>.then()</code> chains, the code can quickly become difficult to follow.</p>
</li>
</ol>
<h3 id="heading-good-api-fetch">Good API Fetch</h3>
<ul>
<li><p>Error handling for network and status issues</p>
</li>
<li><p>Timeout mechanism for long requests</p>
</li>
<li><p>Improved readability using <code>async/await</code></p>
</li>
</ul>
<pre><code class="lang-javascript"><span class="hljs-comment">// Good API fetch example with proper handling</span>
<span class="hljs-keyword">async</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">fetchData</span>(<span class="hljs-params">url</span>) </span>{
  <span class="hljs-keyword">const</span> controller = <span class="hljs-keyword">new</span> AbortController();
  <span class="hljs-keyword">const</span> timeoutId = <span class="hljs-built_in">setTimeout</span>(<span class="hljs-function">() =&gt;</span> controller.abort(), <span class="hljs-number">5000</span>); <span class="hljs-comment">// Set timeout of 5 seconds</span>

  <span class="hljs-keyword">try</span> {
    <span class="hljs-keyword">const</span> response = <span class="hljs-keyword">await</span> fetch(url, { <span class="hljs-attr">signal</span>: controller.signal });
    <span class="hljs-built_in">clearTimeout</span>(timeoutId);

    <span class="hljs-keyword">if</span> (!response.ok) {
      <span class="hljs-keyword">throw</span> <span class="hljs-keyword">new</span> <span class="hljs-built_in">Error</span>(<span class="hljs-string">`HTTP error! Status: <span class="hljs-subst">${response.status}</span>`</span>);
    }

    <span class="hljs-keyword">const</span> data = <span class="hljs-keyword">await</span> response.json();
    <span class="hljs-built_in">console</span>.log(<span class="hljs-string">'Data:'</span>, data);
    <span class="hljs-keyword">return</span> data;

  } <span class="hljs-keyword">catch</span> (error) {
    <span class="hljs-keyword">if</span> (error.name === <span class="hljs-string">'AbortError'</span>) {
      <span class="hljs-built_in">console</span>.error(<span class="hljs-string">'Fetch aborted due to timeout'</span>);
    } <span class="hljs-keyword">else</span> {
      <span class="hljs-built_in">console</span>.error(<span class="hljs-string">'Fetch error:'</span>, error.message);
    }
  }
}

<span class="hljs-comment">// Usage</span>
fetchData(<span class="hljs-string">'https://api.example.com/data'</span>);
</code></pre>
<h3 id="heading-improvements-in-this-code">Improvements in this code:</h3>
<ol>
<li><p><strong>Error handling</strong>: Catches network errors and logs them.</p>
</li>
<li><p><strong>Status code handling</strong>: Checks for <code>response.ok</code> to ensure the request was successful, otherwise throws an error.</p>
</li>
<li><p><strong>Timeout mechanism</strong>: Uses <code>AbortController</code> to abort the request after 5 seconds if it takes too long.</p>
</li>
<li><p><strong>Readability</strong>: Using <code>async/await</code> makes the code more readable and easier to maintain.</p>
</li>
</ol>
]]></content:encoded></item><item><title><![CDATA[CAP Theorem to SQL databases and MongoDB]]></title><description><![CDATA[apply the CAP Theorem to SQL databases and MongoDB to understand how each handles consistency, availability, and partition tolerance:
SQL Databases
SQL databases (like MySQL, PostgreSQL) are traditionally designed with strong consistency in mind. Her...]]></description><link>https://sandeshblog.hashnode.dev/cap-theorem-to-sql-databases-and-mongodb-1</link><guid isPermaLink="true">https://sandeshblog.hashnode.dev/cap-theorem-to-sql-databases-and-mongodb-1</guid><category><![CDATA[MongoDB]]></category><category><![CDATA[SQL]]></category><category><![CDATA[#CAPTheorem ]]></category><dc:creator><![CDATA[Sandesh Shrestha]]></dc:creator><pubDate>Thu, 19 Sep 2024 09:11:51 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1726737068183/9f2e590f-88e6-4d15-b528-eb7bf1d9bc45.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>apply the CAP Theorem to SQL databases and MongoDB to understand how each handles consistency, availability, and partition tolerance:</p>
<h3 id="heading-sql-databases">SQL Databases</h3>
<p><strong>SQL databases</strong> (like MySQL, PostgreSQL) are traditionally designed with strong consistency in mind. Here’s how they generally align with the CAP Theorem:</p>
<ol>
<li><p><strong>Consistency</strong>: SQL databases ensure strong consistency by using ACID (Atomicity, Consistency, Isolation, Durability) properties. Transactions are handled in a way that guarantees that once a write is made, all reads will see the updated data, as long as the transaction completes successfully.</p>
</li>
<li><p><strong>Availability</strong>: Traditional SQL databases might sacrifice some degree of availability in favor of consistency, especially in scenarios involving network partitions. During network issues or server failures, ensuring that all nodes see the same data can result in some requests being denied or not processed.</p>
</li>
<li><p><strong>Partition Tolerance</strong>: SQL databases are typically designed for single-node or vertical scaling, which can make partition tolerance challenging. In practice, achieving partition tolerance often involves complex clustering or sharding solutions that can impact consistency and availability.</p>
</li>
</ol>
<p><strong>In Summary</strong>: SQL databases generally focus on consistency and may sacrifice availability and partition tolerance, particularly in the presence of network partitions.</p>
<h3 id="heading-mongodb">MongoDB</h3>
<p><strong>MongoDB</strong> is a NoSQL database designed with different trade-offs in mind:</p>
<ol>
<li><p><strong>Consistency</strong>: MongoDB provides eventual consistency by default, meaning that while it ensures data consistency eventually, it might not be immediately consistent across all nodes. However, MongoDB allows for configuration to prioritize consistency in some setups (e.g., using replica sets with write concerns).</p>
</li>
<li><p><strong>Availability</strong>: MongoDB is designed to be highly available. It provides mechanisms like replica sets, where data is replicated across multiple nodes, ensuring that if one node fails, others can still serve requests. This allows MongoDB to continue functioning even if some nodes are unavailable.</p>
</li>
<li><p><strong>Partition Tolerance</strong>: MongoDB is designed with partition tolerance in mind. It can handle network partitions and continue operating, although this may impact consistency temporarily. MongoDB's sharding and replica set features help maintain operation even in the face of network failures.</p>
</li>
</ol>
<p><strong>In Summary</strong>: MongoDB typically prioritizes availability and partition tolerance over immediate consistency. It is designed to continue functioning and serving requests even during network partitions, with eventual consistency as a trade-off.</p>
<h3 id="heading-comparative-summary">Comparative Summary</h3>
<ul>
<li><p><strong>SQL Databases</strong>: Focus on consistency and often struggle with availability and partition tolerance. They are more likely to be consistent but may experience downtime or reduced availability during network issues.</p>
</li>
<li><p><strong>MongoDB</strong>: Focuses on availability and partition tolerance, with eventual consistency. It ensures that the system remains operational and responsive even during network partitions, but data consistency might be delayed.</p>
</li>
</ul>
]]></content:encoded></item><item><title><![CDATA[Making the Most of ChatGPT]]></title><description><![CDATA[Welcome, fellow developer! Today, we're diving into the world of ChatGPT and exploring how you can leverage its capabilities to enhance your projects and streamline your workflow. Whether you're building apps, websites, or anything in between, ChatGP...]]></description><link>https://sandeshblog.hashnode.dev/making-the-most-of-chatgpt</link><guid isPermaLink="true">https://sandeshblog.hashnode.dev/making-the-most-of-chatgpt</guid><category><![CDATA[chatgpt]]></category><category><![CDATA[AI]]></category><dc:creator><![CDATA[Sandesh Shrestha]]></dc:creator><pubDate>Sat, 04 May 2024 14:45:33 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1714833882290/e934118d-0d6a-46cb-833b-20c1175fe10c.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Welcome, fellow developer! Today, we're diving into the world of ChatGPT and exploring how you can leverage its capabilities to enhance your projects and streamline your workflow. Whether you're building apps, websites, or anything in between, ChatGPT can be a valuable addition to your toolkit. So, let's roll up our sleeves and get started!</p>
<h3 id="heading-understanding-chatgpt">Understanding ChatGPT</h3>
<p>First things first, let's get acquainted with ChatGPT. Developed by OpenAI, ChatGPT is an AI model trained on vast amounts of text data. It excels at understanding and generating human-like text based on the context provided to it. Powered by the latest advancements in natural language processing (NLP), ChatGPT can carry on conversations, answer questions, generate content, and much more.</p>
<h3 id="heading-integrating-chatgpt-into-your-projects">Integrating ChatGPT into Your Projects</h3>
<p>Now that we know what ChatGPT is capable of, let's explore how you can integrate it into your projects:</p>
<ol>
<li><p><strong>Chatbots</strong>: One of the most common applications of ChatGPT is building chatbots. By integrating ChatGPT into your chatbot framework, you can create conversational interfaces that interact with users in a natural and intuitive manner.</p>
</li>
<li><p><strong>Content Generation</strong>: Need to generate text for articles, product descriptions, or social media posts? ChatGPT can help automate the content generation process, saving you time and effort.</p>
</li>
<li><p><strong>Customer Support</strong>: Enhance your customer support systems by incorporating ChatGPT-powered assistants. These assistants can provide instant responses to common queries, freeing up human agents to handle more complex issues.</p>
</li>
<li><p><strong>Code Generation</strong>: Surprisingly, ChatGPT can even assist you with coding tasks! Whether you need help writing code snippets, debugging, or exploring new programming concepts, ChatGPT has your back.</p>
</li>
<li><p><strong>Language Translation</strong>: Leveraging its natural language understanding capabilities, ChatGPT can also be used for language translation tasks. Simply feed it text in one language, and it can generate translations in another language.</p>
</li>
</ol>
<h3 id="heading-best-practices-for-working-with-chatgpt">Best Practices for Working with ChatGPT</h3>
<p>While integrating ChatGPT into your projects, here are some best practices to keep in mind:</p>
<ul>
<li><p><strong>Provide Clear Context</strong>: To get the most accurate and relevant responses from ChatGPT, be sure to provide clear context and instructions.</p>
</li>
<li><p><strong>Filter Outputs</strong>: Depending on your application, you may need to filter or sanitize the outputs generated by ChatGPT to ensure they meet your quality standards and adhere to any guidelines or regulations.</p>
</li>
<li><p><strong>Monitor Performance</strong>: Continuously monitor the performance of your ChatGPT-powered features and make adjustments as needed to improve accuracy and user experience.</p>
</li>
</ul>
<h3 id="heading-conclusion">Conclusion</h3>
<p>With its powerful natural language processing capabilities, ChatGPT opens up a world of possibilities for developers. By integrating ChatGPT into your projects, you can create smarter, more intuitive applications that delight users and streamline workflows. So why not harness the power of ChatGPT and take your projects to the next level? The possibilities are endless!</p>
]]></content:encoded></item><item><title><![CDATA[Understanding JavaScript Execution Order 🤯]]></title><description><![CDATA[Have you ever wondered how JavaScript manages to handle multiple tasks at once, despite being a single-threaded language? Let's embark on a journey to understand the inner workings of JavaScript's asynchronous nature by examining a curious code snipp...]]></description><link>https://sandeshblog.hashnode.dev/understandingjavascript</link><guid isPermaLink="true">https://sandeshblog.hashnode.dev/understandingjavascript</guid><category><![CDATA[JavaScript]]></category><dc:creator><![CDATA[Sandesh Shrestha]]></dc:creator><pubDate>Thu, 02 May 2024 15:30:04 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1714663629551/adcc78cf-2ab8-4aeb-98aa-c4d2ae9fab0d.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Have you ever wondered how JavaScript manages to handle multiple tasks at once, despite being a single-threaded language? Let's embark on a journey to understand the inner workings of JavaScript's asynchronous nature by examining a curious code snippet.</p>
<p>Take a look at this piece of JavaScript code:</p>
<pre><code class="lang-javascript"><span class="hljs-built_in">Promise</span>.resolve()
    .then(<span class="hljs-function">() =&gt;</span> <span class="hljs-built_in">console</span>.log(<span class="hljs-number">1</span>));

<span class="hljs-built_in">setTimeout</span>(<span class="hljs-function">() =&gt;</span> <span class="hljs-built_in">console</span>.log(<span class="hljs-number">2</span>), <span class="hljs-number">10</span>);

queueMicrotask(<span class="hljs-function">() =&gt;</span> {
    <span class="hljs-built_in">console</span>.log(<span class="hljs-number">3</span>);
    queueMicrotask(<span class="hljs-function">() =&gt;</span> <span class="hljs-built_in">console</span>.log(<span class="hljs-number">4</span>));
});

<span class="hljs-built_in">console</span>.log(<span class="hljs-number">5</span>);
</code></pre>
<p>At first glance, it might seem like a jumble of functions and numbers, but fear not! Let's break it down together.</p>
<p><strong>1. Promise.resolve() - Printing 1:</strong> When we encounter <code>Promise.resolve()</code>, JavaScript quickly resolves the promise and schedules the execution of its <code>.then()</code> callback. Since this is placed in the microtask queue, it takes priority over other tasks. So, <code>console.log(1)</code> cheerfully appears on our console first.</p>
<p><strong>2. setTimeout() - Printing 2:</strong> Next up, we have a <code>setTimeout()</code> function, which schedules the execution of its callback after a minimum delay of 10 milliseconds. So, <code>console.log(2)</code> patiently waits on the callback queue until its time arrives.</p>
<p><strong>3. queueMicrotask() - Printing 3 and 4:</strong> Ah, the microtasks! When we call <code>queueMicrotask()</code>, we're essentially saying, "Hey JavaScript, here's something important, please do it as soon as you can!" So, both <code>console.log(3)</code> and <code>console.log(4)</code> are placed in the microtask queue. Since microtasks are prioritized over macrotasks, they're executed promptly and in order. First, we get <code>3</code>, followed by <code>4</code>, just as we expected.</p>
<p><strong>4. console.log(5) - Printing 5:</strong> Finally, we have a simple synchronous statement, <code>console.log(5)</code>, which prints immediately without any fuss. After all, it's not asynchronous like our other friends.</p>
<p>So, when we put it all together, the output looks like this:</p>
<pre><code class="lang-javascript"><span class="hljs-number">5</span>
<span class="hljs-number">1</span>
<span class="hljs-number">3</span>
<span class="hljs-number">4</span>
<span class="hljs-number">2</span>
</code></pre>
<p>And there you have it! By understanding the core of JavaScript's event loop and task queues, we can better appreciate its asynchronous magic. So, next time you encounter asynchronous JavaScript, don't be afraid! You're equipped to decode the order of execution like a pro.</p>
<p>Keep coding and exploring the wonders of JavaScript! ❤️</p>
<p>Thanks to @LydiaHallie for explaining this topic on her youtube channel, Here is the link to her video.</p>
<p><a target="_blank" href="https://www.youtube.com/watch?v=eiC58R16hb8">https://www.youtube.com/watch?v=eiC58R16hb8</a></p>
]]></content:encoded></item></channel></rss>