<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Shriya</title>
    <description>The latest articles on DEV Community by Shriya (@shriya_5).</description>
    <link>https://dev.to/shriya_5</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1761304%2Ff96d6a0b-17b3-4c0f-9024-5e65ba92a1e7.png</url>
      <title>DEV Community: Shriya</title>
      <link>https://dev.to/shriya_5</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/shriya_5"/>
    <language>en</language>
    <item>
      <title>Exploring 2024’s Top Software Market Trends</title>
      <dc:creator>Shriya</dc:creator>
      <pubDate>Sat, 27 Jul 2024 14:37:51 +0000</pubDate>
      <link>https://dev.to/shriya_5/exploring-2024s-top-software-market-trends-32o</link>
      <guid>https://dev.to/shriya_5/exploring-2024s-top-software-market-trends-32o</guid>
      <description>&lt;p&gt;Welcome to the ever-changing world of software, where the trends are hot, bugs are cold, and everyone’s trying to figure out how AI can do their laundry. As we progress through 2024, several key trends are shaping the software market, reflecting broader shifts in technology and user needs. &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;1. AI: The New Office Superstar&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftp51xlgxrlce81k0cg2t.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftp51xlgxrlce81k0cg2t.jpeg" alt="AI Image" width="800" height="457"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Artificial Intelligence is no longer just the quirky robot in sci-fi movies. It’s the office MVP, handling everything from crunching data to making sure you never forget a birthday (unless it’s your own). AI is everywhere, helping businesses to automate tasks, predict trends, and occasionally recommend that you order pizza for lunch because, well, it knows your monthly cravings better!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Trending Tools/Libraries:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://openai.com/research/gpt-4" rel="noopener noreferrer"&gt;OpenAI GPT-4&lt;/a&gt;&lt;/strong&gt;: The latest in conversational AI, perfect for creating chatbots that can actually hold a conversation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://www.tensorflow.org/" rel="noopener noreferrer"&gt;TensorFlow 2.0&lt;/a&gt;&lt;/strong&gt;: Google’s open-source library for machine learning and deep learning.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://huggingface.co/transformers/" rel="noopener noreferrer"&gt;Hugging Face Transformers&lt;/a&gt;&lt;/strong&gt;: For building state-of-the-art NLP models that can understand context better than ever.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://www.datarobot.com/" rel="noopener noreferrer"&gt;DataRobot&lt;/a&gt;&lt;/strong&gt;: A platform for automating machine learning and AI model deployment.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;2. No-Code and Low-Code: Dev for Everyone&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsohmkupnk5bdf7cg8jqe.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsohmkupnk5bdf7cg8jqe.jpeg" alt="No-Code Image" width="800" height="457"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Coding can often feel overwhelming, but no-code and low-code platforms are changing that. These tools enable users to create applications without extensive programming knowledge, making software development more accessible. Now, even those without a technical background can quickly build and deploy apps, simplifying the process and accelerating innovation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Trending Tools/Libraries:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://bubble.io/" rel="noopener noreferrer"&gt;Bubble&lt;/a&gt;&lt;/strong&gt;: A no-code platform for building complex web applications without writing code.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://www.outsystems.com/" rel="noopener noreferrer"&gt;OutSystems&lt;/a&gt;&lt;/strong&gt;: A leading low-code platform for enterprise-grade applications.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://www.adalo.com/" rel="noopener noreferrer"&gt;Adalo&lt;/a&gt;&lt;/strong&gt;: Create mobile apps without code using this intuitive drag-and-drop tool.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://airtable.com/" rel="noopener noreferrer"&gt;Airtable&lt;/a&gt;&lt;/strong&gt;: A no-code tool that combines the features of a database with a user-friendly interface.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;3. Cybersecurity: "Sniff Sniff.."&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo4aa79f3mhlfjchg2wxn.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo4aa79f3mhlfjchg2wxn.jpeg" alt="Cybersecurity Image" width="800" height="457"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Cybersecurity is the digital equivalent of putting bars on your windows and setting up a moat around your house. With new and increasingly sophisticated threats emerging all the time, businesses are investing in cutting-edge security tech. Think of it as hiring a virtual bouncer to keep your data from crashing the party uninvited.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Trending Tools/Libraries:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://www.splunk.com/" rel="noopener noreferrer"&gt;Splunk&lt;/a&gt;&lt;/strong&gt;: For advanced security information and event management (SIEM).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://www.okta.com/" rel="noopener noreferrer"&gt;Okta&lt;/a&gt;&lt;/strong&gt;: Identity and access management for secure single sign-on (SSO) and multi-factor authentication (MFA).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://snyk.io/" rel="noopener noreferrer"&gt;Snyk&lt;/a&gt;&lt;/strong&gt;: Focuses on identifying and fixing vulnerabilities in code, open-source libraries, and container images.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://www.darktrace.com/" rel="noopener noreferrer"&gt;Darktrace&lt;/a&gt;&lt;/strong&gt;: AI-powered cybersecurity to detect and respond to emerging threats.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;4. Edge Computing: Data’s New Neighborhood&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8j4q58y4uwa9puo4e3nc.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8j4q58y4uwa9puo4e3nc.jpeg" alt="Edge Computing Image" width="800" height="457"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Edge computing is like having a mini data center in your backyard. Instead of sending all your data to the cloud and waiting for it to come back like a boomerang, edge computing processes it closer to where it’s needed. Faster, smarter, and less chance of your data getting lost in the clouds—literally!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Trending Tools/Libraries:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://aws.amazon.com/greengrass/" rel="noopener noreferrer"&gt;AWS IoT Greengrass&lt;/a&gt;&lt;/strong&gt;: Extends AWS capabilities to edge devices for local data processing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://azure.microsoft.com/en-us/services/iot-edge/" rel="noopener noreferrer"&gt;Microsoft Azure IoT Edge&lt;/a&gt;&lt;/strong&gt;: A platform for deploying and managing containerized applications on edge devices.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://cloud.google.com/iot-edge" rel="noopener noreferrer"&gt;Google Cloud IoT Edge&lt;/a&gt;&lt;/strong&gt;: Brings Google Cloud’s AI and ML to edge devices for faster decision-making.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://www.edgexfoundry.org/" rel="noopener noreferrer"&gt;EdgeX Foundry&lt;/a&gt;&lt;/strong&gt;: Open-source platform for building edge computing solutions.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;5. Remote Work: Now with Extra Pajamas&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flr4t5b9wdqyh81vxzpo3.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flr4t5b9wdqyh81vxzpo3.jpeg" alt="Remote Work Image" width="800" height="457"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Remote work is here to stay, and so is the collection of pajamas you’ve been wearing on Zoom calls. Companies are doubling down on tools that make working from home easier and less like trying to juggle a million tasks while your cat walks across your keyboard. Cloud solutions and virtual collaboration tools are making it possible to work from anywhere.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Trending Tools/Libraries:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://www.microsoft.com/en-us/microsoft-teams/group-chat-software" rel="noopener noreferrer"&gt;Microsoft Teams&lt;/a&gt;&lt;/strong&gt;: Integrated collaboration platform with chat, video, and file sharing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://slack.com/" rel="noopener noreferrer"&gt;Slack&lt;/a&gt;&lt;/strong&gt;: For seamless team communication and collaboration.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://zoom.us/" rel="noopener noreferrer"&gt;Zoom&lt;/a&gt;&lt;/strong&gt;: Video conferencing with features like breakout rooms and virtual backgrounds.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://trello.com/" rel="noopener noreferrer"&gt;Trello&lt;/a&gt;&lt;/strong&gt;: Task management and project tracking with a visual board.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;6. Sustainable Tech: Saving the Planet, One Byte at a Time&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdaizxruwqgao6tbvtpk0.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdaizxruwqgao6tbvtpk0.jpeg" alt="Sustainable Tech Image" width="800" height="457"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Sustainability is the new black in tech. Companies are striving to make their software and operations greener, like trying to fit a solar panel onto your laptop. Expect more energy-efficient solutions and eco-friendly practices that make you feel a little better about that extra screen time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Trending Tools/Libraries:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://cloud.google.com/sustainability" rel="noopener noreferrer"&gt;Google Cloud Sustainability Tools&lt;/a&gt;&lt;/strong&gt;: Features for tracking and reducing carbon footprints.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://azure.microsoft.com/en-us/services/sustainability/calculator/" rel="noopener noreferrer"&gt;Microsoft Azure Sustainability Calculator&lt;/a&gt;&lt;/strong&gt;: Measures and helps reduce the environmental impact of cloud services.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://ecocloud.io/" rel="noopener noreferrer"&gt;EcoCloud&lt;/a&gt;&lt;/strong&gt;: Cloud computing services designed with sustainability in mind.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://greensoftware.foundation/" rel="noopener noreferrer"&gt;The Green Software Foundation&lt;/a&gt;&lt;/strong&gt;: Tools and guidelines for creating energy-efficient software.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;7. Personalization: Because You’re Special (Really!)&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F75tnnls3b3wn94n6blyg.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F75tnnls3b3wn94n6blyg.jpeg" alt="Personalization Image" width="800" height="457"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;User experience is getting a major upgrade. Thanks to AI, your software now knows what you like before you do—whether it’s recommending the perfect playlist for your mood or suggesting a new hobby based on your recent Google searches. It’s like having a personal assistant who actually listens.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Trending Tools/Libraries:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://segment.com/" rel="noopener noreferrer"&gt;Segment&lt;/a&gt;&lt;/strong&gt;: Customer data platform for personalizing user experiences.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://mixpanel.com/" rel="noopener noreferrer"&gt;Mixpanel&lt;/a&gt;&lt;/strong&gt;: Analytics tool for tracking user behavior and optimizing engagement.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://www.optimonk.com/" rel="noopener noreferrer"&gt;OptiMonk&lt;/a&gt;&lt;/strong&gt;: It focuses on creating personalized, targeted messages and pop-ups to engage visitors and drive desired actions. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://amplitude.com/" rel="noopener noreferrer"&gt;Amplitude&lt;/a&gt;&lt;/strong&gt;: Advanced product analytics for understanding user interactions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://www.dynamicyield.com/" rel="noopener noreferrer"&gt;Dynamic Yield&lt;/a&gt;&lt;/strong&gt;: Personalization platform that helps optimize content and experiences across channels.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;The software market in 2024 is a wild mix of futuristic AI, democratized development tools, and remote work. By staying on top of these trends, you might just find yourself ahead of the curve—or at least have a good laugh along the way.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Note: The images used in this blog are generated by image generation AI.&lt;/em&gt;&lt;/p&gt;




</description>
      <category>ai</category>
      <category>learning</category>
      <category>softwareengineering</category>
      <category>developer</category>
    </item>
    <item>
      <title>Building a VS Code Extension to Fetch and Display Content from an API</title>
      <dc:creator>Shriya</dc:creator>
      <pubDate>Fri, 12 Jul 2024 05:52:12 +0000</pubDate>
      <link>https://dev.to/shriya_5/building-a-vs-code-extension-to-fetch-and-display-content-from-an-api-31f1</link>
      <guid>https://dev.to/shriya_5/building-a-vs-code-extension-to-fetch-and-display-content-from-an-api-31f1</guid>
      <description>&lt;p&gt;This post deals with building a VS Code extension using React, Typescript and Tailwind CSS.&lt;/p&gt;

&lt;p&gt;So, you've decided to build a VS Code extension. Great choice! You want to fetch and display content from an API, because, let's face it, hardcoding stuff is so 90s. Buckle up, because we're about to embark on a journey that will involve code, APIs, and probably a few cups of coffee. Let's keep it fun and functional, shall we?&lt;/p&gt;




&lt;h2&gt;
  
  
  PAGE CONTENT
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Prerequisites&lt;/li&gt;
&lt;li&gt;Getting Started&lt;/li&gt;
&lt;li&gt;Setting Up Your Workspace&lt;/li&gt;
&lt;li&gt;Fetching Data from an API&lt;/li&gt;
&lt;li&gt;Displaying API Content&lt;/li&gt;
&lt;li&gt;Conclusion&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  PREREQUISITES &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Before we begin, make sure you have the following installed:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://nodejs.org/en" rel="noopener noreferrer"&gt;Node.js&lt;/a&gt; (for running JavaScript/TypeScript)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://code.visualstudio.com/" rel="noopener noreferrer"&gt;Visual Studio Code&lt;/a&gt; (your coding sanctuary)&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  STEP 1: GETTING STARTED &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;First things first, fire up VS Code and create a new project. If you're like me, you spend a good 10 minutes deciding on the project name - because naming things is the hardest part of programming, right?&lt;/p&gt;

&lt;h3&gt;
  
  
  Creating Your Project Directory
&lt;/h3&gt;

&lt;p&gt;Create a folder and open it with VS Code.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mkdir my-vscode-extension
cd my-vscode-extension
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You'll see the below:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnf7tm4k8pr3jdp4fcpvc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnf7tm4k8pr3jdp4fcpvc.png" alt="vscode folder creation" width="430" height="206"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Creating an Extension
&lt;/h3&gt;

&lt;p&gt;Now open the VS Code terminal. &lt;/p&gt;

&lt;h4&gt;
  
  
  Install &lt;code&gt;Yeoman&lt;/code&gt; and VS Code Extension Generator:
&lt;/h4&gt;

&lt;p&gt;If you haven't already installed Yeoman and the VS Code Extension Generator, do so globally using &lt;code&gt;npm&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install -g yo generator-code
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Generate Your Extension:
&lt;/h4&gt;

&lt;p&gt;Run the Yeoman generator to scaffold out your VS Code extension project:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;yo code
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdghysvdnf8tkzrc4xr8e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdghysvdnf8tkzrc4xr8e.png" alt="Yo code VS Code" width="734" height="576"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Select &lt;strong&gt;Typescript&lt;/strong&gt; and proceed.&lt;/p&gt;

&lt;h4&gt;
  
  
  Follow the prompts in the terminal:
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbvhhm5z9cd7d38jkg0hq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbvhhm5z9cd7d38jkg0hq.png" alt="VS Code extension" width="800" height="259"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This will create a basic structure for your VS Code extension project.&lt;br&gt;
Now select &lt;strong&gt;'Open with code'&lt;/strong&gt; and jump to the next step.&lt;/p&gt;
&lt;h4&gt;
  
  
  Explore Your Extension Structure:
&lt;/h4&gt;

&lt;p&gt;You should see something like the below:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fecgn1cyge6j4fae7dnsn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fecgn1cyge6j4fae7dnsn.png" alt="VS Code extension structure" width="467" height="976"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The generator sets up a basic folder structure and files including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;src/extension.ts&lt;/code&gt;: Entry point for your extension&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;package.json&lt;/code&gt;: Contains extension metadata and scripts&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;tsconfig.json&lt;/code&gt;: TypeScript configuration file&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;.vscode/&lt;/code&gt;: VS Code-specific configuration&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For more details on what each file is about, go to &lt;a href="https://code.visualstudio.com/api/get-started/extension-anatomy" rel="noopener noreferrer"&gt;anatomy&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;
  
  
  Creating Your React App
&lt;/h3&gt;

&lt;p&gt;For this and next step, I would highly recommend to go to &lt;a href="https://dev.to/rakshit47/create-vs-code-extension-with-react-typescript-tailwind-1ba6"&gt;BestAmazingPost&lt;/a&gt;&lt;br&gt;
although I have given an overview.&lt;/p&gt;

&lt;p&gt;Create a React app with typescript in the &lt;strong&gt;root&lt;/strong&gt; directory (in my case &lt;strong&gt;Quotebee&lt;/strong&gt;).&lt;br&gt;
Give any name you want. In this case, it is &lt;strong&gt;bee&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npx create-react-app bee --template typescript
cd bee
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So now your final project structure should look something like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2zkvto8ye37s70uvdynk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2zkvto8ye37s70uvdynk.png" alt="VS Code extension with react" width="452" height="984"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And yay! You are set to configure your workspace.&lt;/p&gt;




&lt;h2&gt;
  
  
  STEP 2: SET UP YOUR WORKSPACE &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Now, let's configure our workspace. In this section, we will make necessary changes to the following files and install dependencies to make a basic working extension.&lt;/p&gt;

&lt;h3&gt;
  
  
  Set up Tailwind:
&lt;/h3&gt;

&lt;p&gt;Inside react app &lt;strong&gt;bee&lt;/strong&gt;, set up tailwindcss&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm i -D tailwindcss postcss
npx tailwindcss init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This will generate a file &lt;code&gt;tailwind.config.js&lt;/code&gt; file in your project directory.&lt;/p&gt;

&lt;h3&gt;
  
  
  Edit &lt;code&gt;tailwind.config.js&lt;/code&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;module.exports = {
  content: ['./src/**/*.{js,jsx,ts,tsx}'],
  theme: {
    extend: {},
  },
  plugins: [],
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Edit &lt;code&gt;bee/src/index.css&lt;/code&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@tailwind base;
@tailwind components;
@tailwind utilities;

body {
  @apply p-0;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Create &lt;code&gt;postcss.config.js&lt;/code&gt; file:
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;module.exports = {
    plugins: {
      tailwindcss: {},
      autoprefixer: {},
    },
};
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Edit &lt;code&gt;App.tsx&lt;/code&gt; in &lt;code&gt;bee/src/App.tsx&lt;/code&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function App() {
  return (
    &amp;lt;div className="bg-gradient-to-r from-pink-700 to-blue-700 p-10"&amp;gt;
      &amp;lt;p className="text-white/80 text-xl font-semibold"&amp;gt;
        DEV
      &amp;lt;/p&amp;gt;
    &amp;lt;/div&amp;gt;
  );
}

export default App;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Set up Parcel
&lt;/h3&gt;

&lt;p&gt;You may use any bundler though!&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm i -D parcel
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Edit &lt;code&gt;package.json&lt;/code&gt; of react app directory
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;//bee/package.json
{
"source": "src/index.tsx",
"scripts": {
    "start": "parcel", 
    "build": "parcel build", 
    "test": "react-scripts test",
    "eject": "react-scripts eject"
  },
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Run Parcel
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm start
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Run &lt;code&gt;npm run compile&lt;/code&gt; in root directory.
&lt;/h3&gt;

&lt;p&gt;This should create an &lt;code&gt;out&lt;/code&gt; folder.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm run compile
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Edit &lt;code&gt;extension.ts&lt;/code&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import * as vscode from 'vscode';

export function activate(context: vscode.ExtensionContext) {

  let webview = vscode.commands.registerCommand('quotebee.helloWorld', () =&amp;gt; {

    let panel = vscode.window.createWebviewPanel("webview", "Quotebee", vscode.ViewColumn.Two, {
        enableScripts: true
    });

    // Paths to resources
    let scriptSrc = panel.webview.asWebviewUri(vscode.Uri.joinPath(context.extensionUri, "bee", "dist", "index.js"))
    let cssSrc = panel.webview.asWebviewUri(vscode.Uri.joinPath(context.extensionUri, "bee", "dist", "index.css"))

    const apiUrl = 'https://quotes-api-self.vercel.app/quote';

    panel.webview.html = `&amp;lt;!DOCTYPE html&amp;gt;
    &amp;lt;html lang="en"&amp;gt;
      &amp;lt;head&amp;gt;
        &amp;lt;link rel="stylesheet" href="${cssSrc}" /&amp;gt;
      &amp;lt;/head&amp;gt;
      &amp;lt;body&amp;gt;
        &amp;lt;noscript&amp;gt;You need to enable JavaScript to run this app.&amp;lt;/noscript&amp;gt;
        &amp;lt;div id="root" data-api-url="${apiUrl}"&amp;lt;/div&amp;gt;
        &amp;lt;script src="${scriptSrc}"&amp;gt;&amp;lt;/script&amp;gt;
      &amp;lt;/body&amp;gt;
    &amp;lt;/html&amp;gt;
    `;
});

  context.subscriptions.push(webview);
}

export function deactivate() { }

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;NOTE:&lt;/strong&gt; Make sure to edit your trigger command. In my case it is &lt;code&gt;quotebee.helloWorld&lt;/code&gt;. It should be consistent in package.json too!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NOTE AGAIN:&lt;/strong&gt; Make sure VScode version is same in &lt;code&gt;Help-&amp;gt;About&lt;/code&gt;, package.json and package-lock.json.&lt;/p&gt;

&lt;p&gt;Woohoo! Now grab a bucket (of enthusiasm) and go fetching! (from API)&lt;/p&gt;




&lt;h2&gt;
  
  
  FETCHING DATA FROM API &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;In modern web development, dynamic content is often fetched from APIs. APIs, or Application Programming Interfaces, provide a way for different software applications to communicate with each other. &lt;/p&gt;

&lt;p&gt;We'll use the &lt;a href="https://quotes-api-self.vercel.app/quote%20API" rel="noopener noreferrer"&gt;https://quotes-api-self.vercel.app/quote API&lt;/a&gt;, which generates random quotes. This simple API returns a JSON response with a quote and its author. Let's break down how to fetch and display this data in a React component.&lt;/p&gt;

&lt;h3&gt;
  
  
  API Working Diagram
&lt;/h3&gt;

&lt;p&gt;Before we charge ahead, let’s map out our journey with a simple diagram to understand how the API call works:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0566zfh8e9rrui7ij3jo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0566zfh8e9rrui7ij3jo.png" alt="Image description" width="600" height="309"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The React component sends a request to the wise Quotes API.&lt;/li&gt;
&lt;li&gt;The Quotes API responds with a JSON scroll containing a random quote and its author.&lt;/li&gt;
&lt;li&gt;The React component processes this data and updates the UI to display the quote and author.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;There are many functions used to fetch content from API and you can read them from &lt;a href="https://www.freecodecamp.org/news/how-to-fetch-api-data-in-react/" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  CODE OVERVIEW
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Setup React Component: We’ll use React's functional component and hooks (useState and useEffect) to manage the state and lifecycle of the component.&lt;/li&gt;
&lt;li&gt;State Management: We’ll define state variables to store the fetched quote and author.&lt;/li&gt;
&lt;li&gt;Fetch Data: We’ll use the fetch function inside a useEffect hook to make an API request when the component mounts.&lt;/li&gt;
&lt;li&gt;Display Data: We’ll display the fetched quote and author in the component's JSX.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  BUILDING THE CODE
&lt;/h3&gt;

&lt;p&gt;Imports: We import useState and useEffect from React to manage state and side effects.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import React, { useState, useEffect } from 'react';

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Component Definition: We define a functional component App.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function App() {

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;State Variables: We declare state variables quote and author using the useState hook.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const [quote, setQuote] = useState('');
const [author, setAuthor] = useState('');

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Fetching Data: Inside the useEffect hook, we define and call the fetchQuote function to fetch data from the API. The fetch function sends a GET request to the API, and we process the JSON response to update the state.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;useEffect(() =&amp;gt; {
  const fetchQuote = async () =&amp;gt; {
    try {
      const response = await fetch('https://quotes-api-self.vercel.app/quote');
      const data = await response.json();
      setQuote(data.quote); // Set the quote
      setAuthor(data.author); // Set the author
    } catch (error) {
      console.error('Error fetching quote:', error);
    }
  };

  fetchQuote();
}, []); // Empty dependency array means this effect runs once after the initial render

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Rendering Data: We use JSX to display the quote and author. If the quote is not yet fetched, we show a loading message. The author's name is displayed conditionally only if it's available.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;return (
  &amp;lt;div className="bg-gradient-to-r from-pink-700 to-blue-700 p-10"&amp;gt;
    &amp;lt;p className="text-white/80 text-xl font-semibold"&amp;gt;
      {quote ? `"${quote}"` : 'Loading...'}
    &amp;lt;/p&amp;gt;
    {author &amp;amp;&amp;amp; (
      &amp;lt;p className="text-white/60 text-lg font-medium"&amp;gt;
        - {author}
      &amp;lt;/p&amp;gt;
    )}
  &amp;lt;/div&amp;gt;
);

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Export Component: Finally, we export the App component.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;export default App;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  THE CODE
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import React, { useState, useEffect } from 'react';

function App() {
  const [quote, setQuote] = useState('');
  const [author, setAuthor] = useState('');

  useEffect(() =&amp;gt; {
    // Function to fetch data from the API
    const fetchQuote = async () =&amp;gt; {
      try {
        const response = await fetch('https://quotes-api-self.vercel.app/quote');
        const data = await response.json();
        setQuote(data.quote); // Set the quote
        setAuthor(data.author); // Set the author
      } catch (error) {
        console.error('Error fetching quote:', error);
      }
    };

    fetchQuote();
  }, []); // Empty dependency array means this effect runs once after the initial render

  return (
    &amp;lt;div className="bg-gradient-to-r from-pink-700 to-blue-700 p-10"&amp;gt;
      &amp;lt;p className="text-white/80 text-xl font-semibold"&amp;gt;
        {quote ? `"${quote}"` : 'Loading...'}
      &amp;lt;/p&amp;gt;
      {author &amp;amp;&amp;amp; (
        &amp;lt;p className="text-white/60 text-lg font-medium"&amp;gt;
          - {author}
        &amp;lt;/p&amp;gt;
      )}
    &amp;lt;/div&amp;gt;
  );
}

export default App;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  DISPLAYING THE CONTENT &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;The output of what we have made so far is this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzyi8yrfv91h3xlpalm5z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzyi8yrfv91h3xlpalm5z.png" alt="Image description" width="800" height="431"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Each time you open the extension, it will display a random quote.&lt;/p&gt;

&lt;p&gt;Is this the best UI we can make? Absolutely not! That depends on how much of a UI wizard you are! Explore the various panes of VS Code from &lt;a href="https://code.visualstudio.com/api/ux-guidelines/overview" rel="noopener noreferrer"&gt;here&lt;/a&gt; and decide on what's good for your purpose!&lt;/p&gt;




&lt;h2&gt;
  
  
  CONCLUSION &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;You've made it to the end, and that's no small feat! It's been amazing to have you here, and I hope you've enjoyed this coding journey as much as I have.&lt;/p&gt;

&lt;p&gt;In this blog, we learned how to fetch data from an API and display it in a React application. We used the fetch function to retrieve data from the Quotes API and employed React hooks to manage the state and lifecycle of our component. This approach can be extended to other APIs and data sources, making it a powerful tool for building dynamic, data-driven applications.&lt;/p&gt;

&lt;p&gt;By mastering the art of fetching and displaying data in React, you can create more interactive and engaging user experiences. Now, go forth and may your code be ever bug-free and your APIs responsive! Happy coding!😀&lt;/p&gt;

</description>
      <category>react</category>
      <category>typescript</category>
      <category>api</category>
      <category>vscode</category>
    </item>
  </channel>
</rss>
