<?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>Forem: 𝒮𝒶𝓇𝓉𝒽𝒶𝓀 📨</title>
    <description>The latest articles on Forem by 𝒮𝒶𝓇𝓉𝒽𝒶𝓀 📨 (@sarthaksavvy).</description>
    <link>https://forem.com/sarthaksavvy</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%2F382464%2Fd8be16f7-4aa7-4266-9f89-75e280d16579.png</url>
      <title>Forem: 𝒮𝒶𝓇𝓉𝒽𝒶𝓀 📨</title>
      <link>https://forem.com/sarthaksavvy</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/sarthaksavvy"/>
    <language>en</language>
    <item>
      <title>Is AI the Future of Code Editing? Let's Talk Cursor AI!</title>
      <dc:creator>𝒮𝒶𝓇𝓉𝒽𝒶𝓀 📨</dc:creator>
      <pubDate>Thu, 29 Aug 2024 07:49:06 +0000</pubDate>
      <link>https://forem.com/sarthaksavvy/is-ai-the-future-of-code-editing-lets-talk-cursor-ai-4anp</link>
      <guid>https://forem.com/sarthaksavvy/is-ai-the-future-of-code-editing-lets-talk-cursor-ai-4anp</guid>
      <description>&lt;p&gt;Imagine an editor that not only writes code for you but also understands the context of your project. That's what Cursor AI brings to the table. It’s more than just a code editor—it's a game-changer.&lt;/p&gt;

&lt;p&gt;Here’s what caught my eye:&lt;/p&gt;

&lt;p&gt;AI-Powered Coding: &lt;br&gt;
Cursor isn’t just another tool&lt;br&gt;
it’s an evolution in how we think about coding. From writing code to fixing bugs, it’s all about the prompts now.&lt;/p&gt;

&lt;p&gt;Multi-File Chatting: &lt;br&gt;
Want to discuss code across multiple files? Cursor lets you do that seamlessly.&lt;/p&gt;

&lt;p&gt;Cross-Language Conversion: Need to convert your Python script to Rust? Done with a single command.&lt;/p&gt;

&lt;p&gt;Intelligent Predictions: Cursor’s AI anticipates your next move, making coding faster and smarter.&lt;/p&gt;

&lt;p&gt;While GitHub Copilot has been a solid assistant, Cursor AI is pushing the boundaries. The integration of LLMs like Claude makes it a strong contender in the coding world.&lt;/p&gt;

&lt;p&gt;Sure, it’s priced at $20/month, but think about the time it can save you—time that can be translated into more innovation, more projects, or just more free time. In a world where every second counts, Cursor AI might just be worth the investment.&lt;/p&gt;

&lt;p&gt;Is it the end of GitHub Copilot? Only time will tell. But one thing's for sure—Cursor AI is here to stay, and it’s redefining what’s possible in coding.&lt;/p&gt;

&lt;p&gt;What do you think? Is Cursor AI the future of coding? Let’s discuss! &lt;/p&gt;

&lt;p&gt;💬Check out the full video here &lt;iframe width="710" height="399" src="https://www.youtube.com/embed/DZcHop5bOnI"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Also subscribe to my newsletter &lt;a href="https://bitfumes.com/newsletters" rel="noopener noreferrer"&gt;https://bitfumes.com/newsletters&lt;/a&gt;&lt;/p&gt;

</description>
      <category>vscode</category>
      <category>ai</category>
      <category>openai</category>
      <category>githubcopilot</category>
    </item>
    <item>
      <title>Exploring Hugging Face: The GitHub for the Machine Learning Community</title>
      <dc:creator>𝒮𝒶𝓇𝓉𝒽𝒶𝓀 📨</dc:creator>
      <pubDate>Mon, 26 Aug 2024 13:55:23 +0000</pubDate>
      <link>https://forem.com/sarthaksavvy/exploring-hugging-face-the-github-for-the-machine-learning-community-484g</link>
      <guid>https://forem.com/sarthaksavvy/exploring-hugging-face-the-github-for-the-machine-learning-community-484g</guid>
      <description>&lt;p&gt;Welcome to an exciting exploration of &lt;strong&gt;Hugging Face&lt;/strong&gt;—a platform that's rapidly becoming indispensable in the world of machine learning and AI. If you're eager to catch up with the latest advancements in technology, particularly in the AI space, understanding Hugging Face is crucial. Think of it as what GitHub is to the open-source software community—Hugging Face is doing the same for the machine learning community.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Hugging Face?
&lt;/h2&gt;

&lt;p&gt;Hugging Face started as a company back in 2016, founded by French entrepreneurs in New York City. Originally, it developed a chatbot application for teenagers. However, realizing the potential of open-sourcing their chatbot model, the founders decided to pivot their focus. This decision transformed Hugging Face into a hub for open-source machine learning models, datasets, and tools. &lt;/p&gt;

&lt;p&gt;Fast forward to 2021, Hugging Face raised $40 million in a Series B funding round, which catapulted the platform into becoming a powerhouse in the AI industry. Today, it’s used by over 50,000 organizations, including tech giants like Meta, Microsoft, AWS, Google, and Grammarly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Hugging Face is a Game-Changer
&lt;/h2&gt;

&lt;p&gt;Hugging Face offers a vast array of tools and resources that make it easier for developers, data scientists, and researchers to work with machine learning models. Here's a quick overview of what Hugging Face brings to the table:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Model Hub&lt;/strong&gt;: Hugging Face hosts over 780,000 open-source machine learning models. Whether you need a model for text classification, image generation, or natural language processing (NLP), you’ll find it here. The platform supports models from various categories, including multimodal models (image to text, text to image), computer vision models, and NLP models.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Datasets&lt;/strong&gt;: Alongside models, Hugging Face also provides access to over 180,000 datasets, covering a wide range of categories such as text, image, and audio. These datasets are invaluable for training and fine-tuning your own machine learning models.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Spaces&lt;/strong&gt;: Hugging Face Spaces allows you to host demo applications for free, making it an excellent tool for building and showcasing your machine learning portfolio. You can deploy your applications using Gradio, Streamlit, or even just static HTML files.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  The Power of Open Source
&lt;/h2&gt;

&lt;p&gt;One of the key strengths of Hugging Face is its commitment to open-source development. The platform has created a number of libraries that have become staples in the machine learning community, such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Transformers&lt;/strong&gt;: A library for state-of-the-art NLP models.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Diffusers&lt;/strong&gt;: A library focused on image generation models.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Datasets&lt;/strong&gt;: A library that simplifies the process of loading and using datasets for machine learning.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These libraries are all open-source and available on Hugging Face’s GitHub repository, making them accessible to anyone interested in machine learning.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Does Hugging Face Make Money?
&lt;/h2&gt;

&lt;p&gt;You might wonder how Hugging Face sustains itself while offering so many free resources. The answer lies in its cloud-based offerings. Hugging Face provides compute resources for AI and machine learning applications, catering to the compute-heavy needs of these models. They also offer enterprise-level plans that include features like single sign-on, private datasets, and priority support.&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting Started with Hugging Face
&lt;/h2&gt;

&lt;p&gt;If you’re new to Hugging Face, the best way to start is by exploring the &lt;strong&gt;Model Hub&lt;/strong&gt;. You can browse through various categories, try out models using the inference API, and even download models to use in your projects. &lt;/p&gt;

&lt;p&gt;For example, if you're interested in text-to-image models, you can search for models in this category, view their model cards (similar to README files), and experiment with them directly on the platform. Hugging Face also provides detailed documentation to help you integrate these models into your projects using libraries like Transformers and Diffusers.&lt;/p&gt;

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

&lt;p&gt;Hugging Face is more than just a repository of models and datasets—it's a thriving community that’s driving the future of AI. By making advanced machine learning models and tools accessible to everyone, Hugging Face is playing a pivotal role in democratizing AI and fostering innovation.&lt;/p&gt;

&lt;p&gt;Whether you're an AI enthusiast, a developer, or a researcher, Hugging Face is a resource you can't afford to miss. So dive in, explore the endless possibilities, and start building something amazing today!&lt;/p&gt;

&lt;p&gt;If you like my content then Subscribe to my newsletter &lt;a href="https://bitfumes.com/newsletters" rel="noopener noreferrer"&gt;https://bitfumes.com/newsletters&lt;/a&gt;&lt;/p&gt;

</description>
      <category>huggingface</category>
      <category>ai</category>
      <category>machinelearning</category>
      <category>llm</category>
    </item>
    <item>
      <title>How I Passed the AWS Developer Associate Exam (DVA-02): A Rollercoaster Ride of Challenges and Triumphs 🚀</title>
      <dc:creator>𝒮𝒶𝓇𝓉𝒽𝒶𝓀 📨</dc:creator>
      <pubDate>Tue, 18 Jun 2024 05:30:00 +0000</pubDate>
      <link>https://forem.com/sarthaksavvy/how-i-passed-the-aws-developer-associate-exam-dva-02-a-rollercoaster-ride-of-challenges-and-triumphs-6g2</link>
      <guid>https://forem.com/sarthaksavvy/how-i-passed-the-aws-developer-associate-exam-dva-02-a-rollercoaster-ride-of-challenges-and-triumphs-6g2</guid>
      <description>&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%2Ffkzan3a30foyypqhmxpl.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%2Ffkzan3a30foyypqhmxpl.png" alt="AWS DVA-02 exam badge" width="800" height="413"&gt;&lt;/a&gt;Ever wondered if practical knowledge is crucial for passing certification exams? Or if the AWS Developer Associate exam is hard or easy to crack? Here’s my story!&lt;/p&gt;

&lt;p&gt;After 3 months of dedicated preparation, diving into every important topic, I started with AWS SkillBuilder, the official AWS study portal. While SkillBuilder offers a comprehensive syllabus and sample exams, the limited number of full-length practice tests can be a drawback. Re-taking these exams might lead you to memorize answers rather than truly understand the material.&lt;/p&gt;

&lt;p&gt;To keep my preparation exciting and effective, I invested in Udemy's practice exam course for the DVA-02, which includes six challenging practice exams. Trust me, these are tougher than the actual exam! If you can pass the Udemy tests, your chances of acing the real DVA-02 exam are high.&lt;/p&gt;

&lt;p&gt;Choosing to take the exam online added another layer of adventure. On exam day, my internet connection slowed down, and I faced a 15-minute struggle to start the Pearson Vue app. Once connected, I had to wait in a queue for another 15 minutes, unable to move away from the webcam. Just when I thought things couldn't get worse, my internet issues pushed me into another 15-minute queue!&lt;/p&gt;

&lt;p&gt;Finally, the exam began, and the questions seemed harder than anticipated. I used a strategy of skipping long or unfamiliar questions, focusing on the ones I was confident about. This approach allowed me to tackle the last question within 50 minutes, having skipped 33 questions initially. I marked the unsure ones for review and managed to answer everything within the time limit.&lt;/p&gt;

&lt;p&gt;But the thrill didn’t end there. Unlike the usual instant results, my screen displayed a message saying my results would be available in 5 working days. Imagine the suspense! Thankfully, the same evening, I received an email announcing that I had passed the exam.&lt;/p&gt;

&lt;p&gt;My key takeaway? The more practical experience you gain, the better you learn and can relate to the questions. The exam questions are more tricky than tough, so thorough preparation is essential.&lt;/p&gt;

&lt;p&gt;Thinking about taking the AWS Developer Associate exam? Comment below if you’d like me to write another post on exam preparation tips. &lt;/p&gt;

&lt;p&gt;Thanks for reading! If you want to stay connected, subscribe to my newsletter at &lt;a href="https://bitfumes.com/newsletters"&gt;bitfumes.com/newsletters&lt;/a&gt;. For any questions, feel free to DM me. Let's ace those exams together! 💪&lt;/p&gt;

</description>
      <category>aws</category>
      <category>awschallenge</category>
      <category>certification</category>
    </item>
    <item>
      <title>Git Masterclass - Day 2</title>
      <dc:creator>𝒮𝒶𝓇𝓉𝒽𝒶𝓀 📨</dc:creator>
      <pubDate>Sat, 06 Apr 2024 05:51:32 +0000</pubDate>
      <link>https://forem.com/sarthaksavvy/git-masterclass-day-2-3581</link>
      <guid>https://forem.com/sarthaksavvy/git-masterclass-day-2-3581</guid>
      <description>&lt;p&gt;Welcome to Day 2 of Git Masterclass 💪&lt;/p&gt;

&lt;p&gt;Today, we will learn about the difference between &lt;code&gt;git pull&lt;/code&gt; and &lt;code&gt;git fetch&lt;/code&gt; - all in under 3 mins ⚡️&lt;/p&gt;

&lt;h2&gt;
  
  
  What is the difference between &lt;code&gt;git pull&lt;/code&gt; and &lt;code&gt;git fetch&lt;/code&gt;?
&lt;/h2&gt;

&lt;p&gt;This is one of the most commonly asked interview questions, and you need to learn this not just for interviews but for the effective use of Git in daily work. &lt;/p&gt;

&lt;h2&gt;
  
  
  What is &lt;code&gt;git fetch&lt;/code&gt;?
&lt;/h2&gt;

&lt;p&gt;Suppose you are working on a repository and there are changes made to the remote branch which you need to have in your local branch as well.&lt;/p&gt;

&lt;p&gt;Let's see what &lt;code&gt;git fetch&lt;/code&gt; does in this scenario - &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%2Fia8ohhi6vepsmvuy2xu5.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%2Fia8ohhi6vepsmvuy2xu5.png" alt="git fetch" width="800" height="156"&gt;&lt;/a&gt;&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%2Fix5ynyujrdgtaunkav08.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%2Fix5ynyujrdgtaunkav08.png" alt="git tracking log" width="546" height="378"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now you can see in the tracking log that the incoming changes mention the new changes brought in from the remote repository. &lt;/p&gt;

&lt;p&gt;But.. notice that these changes are simply visible in the log, but not yet MERGED with your local files.&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%2Fv7xzmmfa2lbutze9wt74.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%2Fv7xzmmfa2lbutze9wt74.png" alt="incoming changes" width="800" height="811"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What does this mean?&lt;/p&gt;

&lt;p&gt;This means that &lt;code&gt;git fetch&lt;/code&gt; only shows the incoming new changes from the remote repository and does not actually merge them with your local files.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to merge remote changes to local in Git?
&lt;/h2&gt;

&lt;p&gt;This is where we use the &lt;code&gt;git pull&lt;/code&gt; command - it executes two commands in one go, namely - &lt;code&gt;git fetch&lt;/code&gt; and &lt;code&gt;git merge&lt;/code&gt;.&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%2F48b6mehcj17ci3jvdhbw.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%2F48b6mehcj17ci3jvdhbw.png" alt="git pull" width="800" height="716"&gt;&lt;/a&gt;&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%2F3eb7hnf1foa9matingmu.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%2F3eb7hnf1foa9matingmu.png" alt="git merge" width="800" height="620"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can see here that all the remote changes are now merged with your local files. &lt;/p&gt;




&lt;p&gt;That concludes Day 2 of our Git Masterclass. If you found this helpful, then make sure to watch the video version of it right here - &lt;a href="https://www.youtube.com/shorts/i6Thn6AyNZ8"&gt;Day 2 of learning Git with Sarthak&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Also, don't forget to subscribe to our newsletter for weekly tips and insight into tech and development - &lt;a href="https://bitfumes.com/newsletters"&gt;Bitfumes Weekly&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;See you in the next one 🚀&lt;/p&gt;

</description>
      <category>git</category>
      <category>github</category>
      <category>programming</category>
    </item>
    <item>
      <title>Git Masterclass - Day 1</title>
      <dc:creator>𝒮𝒶𝓇𝓉𝒽𝒶𝓀 📨</dc:creator>
      <pubDate>Thu, 04 Apr 2024 06:27:21 +0000</pubDate>
      <link>https://forem.com/sarthaksavvy/git-masterclass-day-1-3i85</link>
      <guid>https://forem.com/sarthaksavvy/git-masterclass-day-1-3i85</guid>
      <description>&lt;p&gt;Welcome to this Masterclass of Learning Git With Sarthak!&lt;/p&gt;

&lt;p&gt;Git and its associated services need no introduction. You must have used Git on Day 1 of your work. In fact, the amazing thing about recent years is that students are taking massive interest in self-learning and are learning Git right from their school and college days. &lt;/p&gt;

&lt;p&gt;So if you have never touched Git before, or are struggling to learn its intricacies, fear not - this Git masterclass will teach you everything you need to know to use Git in your daily life. &lt;/p&gt;

&lt;p&gt;Let's Git going 🚀&lt;/p&gt;

&lt;h2&gt;
  
  
  How to change branch in Git?
&lt;/h2&gt;

&lt;p&gt;Well that's easy. Just use &lt;code&gt;git checkout branch_name&lt;/code&gt;. &lt;/p&gt;

&lt;p&gt;This is not wrong. But consider this scenario - you are working on a file, adding code, and suddenly your manager asks you to get on a call and discuss the code in some other branch. &lt;/p&gt;

&lt;p&gt;What do you do? If you type &lt;code&gt;git checkout branch_name&lt;/code&gt; in the terminal, then you get the following error - &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%2Fbli19xkxjkttz341yihx.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%2Fbli19xkxjkttz341yihx.png" alt="git checkout" width="742" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What does this mean?&lt;/p&gt;

&lt;p&gt;This error comes up because you tried to change your branch BEFORE committing or "saving" your ongoing work. And Git is smart enough to know and track unsaved changes across your entire file directory. &lt;/p&gt;

&lt;p&gt;This is a fool-proof system built into Git. Git was programmed this way to handle exactly this scenario. It warns the developer about unsaved commits and will not allow you to change branches before committing them. &lt;/p&gt;

&lt;p&gt;So, the answer? Just commit these changes before changing branches!&lt;/p&gt;

&lt;p&gt;NOPE.&lt;/p&gt;

&lt;p&gt;Consider this again - What if you frequently need to change branches throughout the day in between your ongoing work? &lt;/p&gt;

&lt;p&gt;Will you commit your unfinished work every single time? Multiple useless commit messages are not good practices. Even if you just commit and push them all later, they will still be logged in Git's commit history. &lt;/p&gt;

&lt;p&gt;This is where the command &lt;code&gt;git stash&lt;/code&gt; comes into play.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is git stash?
&lt;/h2&gt;

&lt;p&gt;As the word states, &lt;code&gt;stash&lt;/code&gt; means to simply "put" something in a place until you come back to retrieve it later. &lt;/p&gt;

&lt;p&gt;In the context of Git, we use &lt;code&gt;git stash&lt;/code&gt; to temporarily save the ongoing work/changes and come back to it later without having to worry about unnecessary commit messages. &lt;/p&gt;

&lt;p&gt;Let's type this in the terminal - &lt;code&gt;git stash&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Now, you should be able to see a message similar to the one 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%2F2vf80jf5fcbk422379p0.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%2F2vf80jf5fcbk422379p0.png" alt="git stash" width="730" height="462"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next, type in &lt;code&gt;git checkout branch_name&lt;/code&gt; - in this case I'm using a branch called &lt;code&gt;test&lt;/code&gt; - &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%2F7a4t5ppcb4dgqolvh7yl.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%2F7a4t5ppcb4dgqolvh7yl.png" alt="git checkout test" width="752" height="362"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Successfully switched to the desired branch!&lt;/p&gt;

&lt;p&gt;And if you notice in the working branch, there are no pending commits or unsaved changes anymore. How did this happen? &lt;/p&gt;

&lt;p&gt;Git used the &lt;code&gt;stash&lt;/code&gt; command to record the current state of the working directory and index. &lt;/p&gt;

&lt;p&gt;Now you can do your work in the changed branch, and later come back to the earlier working environment.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to get back to the stashed changes?
&lt;/h2&gt;

&lt;p&gt;Once you are done with your other work, you can revert to your earlier working directory with this command - &lt;code&gt;git checkout earlier_branch&lt;/code&gt;. &lt;/p&gt;

&lt;p&gt;And once you are checked back into the older working branch, you need to run this command - &lt;code&gt;git stash apply&lt;/code&gt;&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%2F949mny76x6z67lhqgg25.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%2F949mny76x6z67lhqgg25.png" alt="git stash apply" width="748" height="482"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As seen above, your uncommitted changes are back on track and  you can pick up from where you left off. &lt;/p&gt;




&lt;p&gt;That is it for Day 1! &lt;/p&gt;

&lt;p&gt;If you liked this blog post, and want to see the tutorial in action, head over to the video part here - &lt;a href="https://www.youtube.com/shorts/45alsf6Mq38"&gt;Git Masterclass | Day 1&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Don't forget to &lt;a href="https://bitfumes.com/newsletters"&gt;subscribe to my weekly newsletter&lt;/a&gt; where I share insights and tips about software development, technology in general, and much more ⚡️ &lt;/p&gt;

&lt;p&gt;Stay tuned for more Git tutorials coming your way 💪&lt;/p&gt;

</description>
      <category>git</category>
      <category>github</category>
      <category>programming</category>
    </item>
    <item>
      <title>#2 Rust - Cargo Package Manager</title>
      <dc:creator>𝒮𝒶𝓇𝓉𝒽𝒶𝓀 📨</dc:creator>
      <pubDate>Sun, 04 Feb 2024 14:09:34 +0000</pubDate>
      <link>https://forem.com/sarthaksavvy/2-rust-cargo-package-manager-5hnl</link>
      <guid>https://forem.com/sarthaksavvy/2-rust-cargo-package-manager-5hnl</guid>
      <description>&lt;h2&gt;
  
  
  Diving Into Rust - Understanding Cargo and Dependencies
&lt;/h2&gt;

&lt;p&gt;Hey there 👋&lt;/p&gt;

&lt;p&gt;In the &lt;a href="https://dev.to/sarthaksavvy/entering-the-rust-universe-396a"&gt;previous post&lt;/a&gt;, we got an introduction to Rust and how to install Rust in our system. &lt;/p&gt;

&lt;p&gt;We also saw that &lt;code&gt;cargo&lt;/code&gt; is at the core of setting up and managing a Rust project. In this post, we will dive deeper into &lt;code&gt;cargo&lt;/code&gt; and understand why we need dependencies for projects. &lt;/p&gt;

&lt;p&gt;Suppose you wanted to write a Rust program that would generate random numbers and then use these numbers for some subsequent functionality. &lt;/p&gt;

&lt;p&gt;There are two ways to go about this - write all the functions from scratch, and take longer time to ship a working project OR use pre-built functions and packages to make our work easier and save time.&lt;/p&gt;

&lt;p&gt;The second approach makes sense, doesn’t it? Because our core focus should be on building new functionalities, and not reinventing the wheel!&lt;/p&gt;

&lt;p&gt;And that’s exactly why we need dependencies in projects. &lt;/p&gt;

&lt;p&gt;Someone has already written the necessary functions and packaged it in an industry-standard manner, and it is only wise that we utilise these packages. &lt;/p&gt;

&lt;p&gt;Now, there has to be a place where all these packages come from. Similar to &lt;code&gt;npmjs&lt;/code&gt; registry, where all &lt;code&gt;node&lt;/code&gt; packages are registered, stored and retrieved, Rust also has something called &lt;a href="https://crates.io/"&gt;&lt;code&gt;crates.io&lt;/code&gt;&lt;/a&gt; where many helpful packages and dependencies are registered. &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%2F8wyigrxpqmzoq2g8qkd5.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%2F8wyigrxpqmzoq2g8qkd5.png" alt="Rust Cargo" width="800" height="591"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This registry is very useful, and as you can see, there are thousands of “crates” available. Crates are nothing but packages and dependencies. If you are familiar with other languages where such package management is used, then using &lt;code&gt;Crates.io&lt;/code&gt; should be fairly straightforward. &lt;/p&gt;

&lt;p&gt;Let us take an example package here. Following the Rust documentation site, we need to install a package called &lt;code&gt;ferris-says&lt;/code&gt;. Now, there are two ways to install packages to your Rust project -&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Using Cargo -
&lt;/h3&gt;

&lt;p&gt;Open the terminal in your project directory run the command &lt;code&gt;cargo add package_name&lt;/code&gt; where &lt;code&gt;package_name&lt;/code&gt; is the name of the package you need from Crates registry.&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%2Firodckm60r1mzznv23xh.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%2Firodckm60r1mzznv23xh.png" alt="Rust cargo" width="800" height="154"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Adding configuration line in &lt;code&gt;Cargo.toml&lt;/code&gt; -
&lt;/h3&gt;

&lt;p&gt;Under the &lt;code&gt;[dependencies]&lt;/code&gt; header, we just add the name of the package and specify the version number, like this on line number 9- &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%2Fwhtzkjr86ve15dbffvav.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%2Fwhtzkjr86ve15dbffvav.png" alt="Rust cargo" width="800" height="209"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For this example, let’s go with the command line option and see what happens - &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%2Fgqg65i8p1bgutm74s2n0.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%2Fgqg65i8p1bgutm74s2n0.png" alt="Rust Cargo" width="800" height="288"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In a flash of a second, the operation is done, and the package is added!&lt;/p&gt;

&lt;p&gt;The CLI gives a very crisp log of the sequence as the package installation happens. It first says that the &lt;code&gt;cargo&lt;/code&gt; is updating the &lt;code&gt;crates.io&lt;/code&gt; index (retrieval of package), and then adds &lt;code&gt;ferris-says&lt;/code&gt; to dependencies. In the middle of this, it also displays the Features that were added with the package - something called &lt;code&gt;clippy&lt;/code&gt; - which is a crate that contains a list of lints that are not available in the inbuilt Rust compiler lint list. These lints help improve our &lt;code&gt;cargo&lt;/code&gt;. &lt;/p&gt;

&lt;p&gt;And finally, it displays the final log that the &lt;code&gt;crates.io&lt;/code&gt; index has been updated and we can immediately see that in the &lt;code&gt;Cargo.toml&lt;/code&gt; file, under &lt;code&gt;[dependencies]&lt;/code&gt; header, the crate name with the version number is added. &lt;/p&gt;

&lt;h2&gt;
  
  
  What is Cargo.lock in Rust?
&lt;/h2&gt;

&lt;p&gt;As you can see in the file structure, as soon as you ran the project, Rust “builds” the project, indexing all the dependencies we just configured in &lt;code&gt;Cargo.toml&lt;/code&gt; file, and then generates a &lt;code&gt;Cargo.lock&lt;/code&gt; file. &lt;br&gt;
This file contains a more detailed version of the &lt;code&gt;Cargo.toml&lt;/code&gt; file and is meant to be used when we deploy our Rust app in different environments. &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%2F8bskerc6h70o8p5nf7u4.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%2F8bskerc6h70o8p5nf7u4.png" alt="Rust Cargo" width="800" height="668"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Few things to note about the &lt;code&gt;Cargo.lock&lt;/code&gt; file - &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;As it mentions at the top, this file is not intended for manual editing unless absolutely necessary and if you have enough knowledge to play around with it.&lt;/li&gt;
&lt;li&gt;Also, this file is automatically generated by Cargo, so even if you delete this file, there is nothing to worry; simply running the app again will ensure that this file is generated again. &lt;/li&gt;
&lt;li&gt;It can be seen that the file contains very detailed information about the app and various dependencies including names, version numbers, and checksum codes. This ensures that the app and its dependencies are secure and that it works seamlessly across different production environments as well. &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Advantage of manually adding the dependencies
&lt;/h2&gt;

&lt;p&gt;If you noticed, there is a tab in the Crates.io website in the &lt;code&gt;ferris-says&lt;/code&gt; package page, called “6 versions”. This means that from the time of its release in the Crates registry to the present moment, there have been 6 versions of the &lt;code&gt;ferris-says&lt;/code&gt; released. And when you install it using the &lt;code&gt;cargo add&lt;/code&gt; command, it adds the latest version by default. &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%2F9kilkqhnkorye9bm28h0.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%2F9kilkqhnkorye9bm28h0.png" alt="Rust Cargo" width="800" height="626"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In case you wanted to add a specific version or rollback to a previous version of the package for various reasons, you can do so by simply editing the package name in the &lt;code&gt;Cargo.toml&lt;/code&gt; file under &lt;code&gt;[dependencies]&lt;/code&gt; header. &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%2Fwigfgae1s408gloehnpu.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%2Fwigfgae1s408gloehnpu.png" alt="Rust Cargo" width="800" height="223"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This applies to not only editing the installed packages names, but also adding new packages manually with the desired version numbers, and running the app with the command &lt;code&gt;cargo run&lt;/code&gt;. This will ensure that new packages with the exact specified version are installed, and also modifies the versions for existing packages in the &lt;code&gt;Cargo.lock&lt;/code&gt; file as well, and then outputs the result - &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%2F93ppjsrphvv3t33tptrq.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%2F93ppjsrphvv3t33tptrq.png" alt="Rust Cargo" width="800" height="468"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can verify whether the version change has taken place by checking the &lt;code&gt;Cargo.lock&lt;/code&gt; file too - &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%2Fai9rhs53c70fwmg5ezy3.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%2Fai9rhs53c70fwmg5ezy3.png" alt="Rust Cargo" width="800" height="363"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can see here that the package version number has changed from &lt;code&gt;0.3.1&lt;/code&gt; to &lt;code&gt;0.2.1&lt;/code&gt; now. &lt;/p&gt;

&lt;h2&gt;
  
  
  How to use packages in Rust?
&lt;/h2&gt;

&lt;p&gt;Until now, we saw how to install or modify packages in Rust. Now to actually use them in our application code, we need to specify in our &lt;code&gt;main.rs&lt;/code&gt; file or any other Rust file that we intend to “use” the package, and also what functions specifically from the package we want to use. &lt;/p&gt;

&lt;p&gt;Since we are learning through the documentation, let’s go with the given example in the docs. And, remember, the docs use the latest versions so we have to change our &lt;code&gt;ferris_says&lt;/code&gt; version back to the latest one. &lt;/p&gt;

&lt;p&gt;This is the example code from the docs - &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%2Frqnz7ful826zmcejd2ab.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%2Frqnz7ful826zmcejd2ab.png" alt="Rust Cargo" width="800" height="301"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As you can see, the first line says &lt;code&gt;use ferris_says::say&lt;/code&gt; - where &lt;code&gt;use&lt;/code&gt; is the keyword to specify that we want to use a package, and then the package name &lt;code&gt;ferris_says&lt;/code&gt;, followed by the double colon &lt;code&gt;::&lt;/code&gt; which is also known as the “path separator” and finally the name of the function we want to use from the package, namely &lt;code&gt;say&lt;/code&gt;. When we run this program with &lt;code&gt;cargo run&lt;/code&gt;, we get the following beautiful output - &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%2Fnkc9ck815iyqfbuaam40.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%2Fnkc9ck815iyqfbuaam40.png" alt="Rust cargo" width="800" height="325"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;CLI outputs are so pleasing to look at, aren’t they 😁&lt;/p&gt;

&lt;p&gt;Do not worry about the syntax or many of the keywords yet! We are doing to dive into these things very soon. &lt;/p&gt;

&lt;p&gt;Until then, keep yourself Rusty 🦀&lt;/p&gt;

</description>
      <category>rust</category>
      <category>programming</category>
    </item>
    <item>
      <title>Entering The Rust Universe</title>
      <dc:creator>𝒮𝒶𝓇𝓉𝒽𝒶𝓀 📨</dc:creator>
      <pubDate>Sat, 03 Feb 2024 06:17:58 +0000</pubDate>
      <link>https://forem.com/sarthaksavvy/entering-the-rust-universe-396a</link>
      <guid>https://forem.com/sarthaksavvy/entering-the-rust-universe-396a</guid>
      <description>&lt;p&gt;Last week in my &lt;a href="https://bitfumes.com/newsletters"&gt;newsletter&lt;/a&gt;, I talked about the amazing language Rust - and why everyone needs to start learning it for 2024. &lt;/p&gt;

&lt;p&gt;If you missed reading it, you can catch up on it &lt;a href="https://bitfumes.com/newsletters"&gt;here&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;Rust is one of the fastest growing and highly performant languages of modern times. &lt;/p&gt;

&lt;p&gt;Launched in 2015 for the public, Rust was meant to be a replacement language for systems level programming languages, and it has not failed to live up to its expectations. &lt;/p&gt;

&lt;p&gt;So much so that Rust now has a fully thriving ecosystem built around it with many frameworks and libraries to support the development of apps across all platforms. &lt;/p&gt;

&lt;p&gt;Why wait then? Let’s get started with setting up our first Rust project 🚀&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%2Fhy8kinrzxrazsjmlfkc7.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%2Fhy8kinrzxrazsjmlfkc7.png" alt="Rust-1" width="800" height="455"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As we land on the &lt;a href="https://www.rust-lang.org/"&gt;Rust homepage&lt;/a&gt;, we see a compact, welcoming landing page with the latest release version mentioned on the right with the link to documentation in the Get Started button. &lt;/p&gt;

&lt;p&gt;Once we enter the documentation, we have many different options available to start implementing Rust. &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%2Fhltnihxhkzjyed4ebkyb.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%2Fhltnihxhkzjyed4ebkyb.png" alt="Rust-2" width="800" height="471"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can play around with Rust completely online with the &lt;a href="https://www.rust-lang.org/"&gt;Rust playground&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;Let’s install Rust on our system. Open up your terminal and run this curl command - &lt;/p&gt;

&lt;p&gt;&lt;code&gt;curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Once you run this command, you will be presented with a welcome message along with the location of where Rust toolchains and metadata, &lt;code&gt;cargo&lt;/code&gt; the package manager will be installed, and the information about the PATH variables added, like so - &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%2Fy840byc8vru60m7qeqwr.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%2Fy840byc8vru60m7qeqwr.png" alt="Rust-3" width="800" height="463"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once you ‘Enter’ to approve the installation, the process will be completed and you can test it by checking the cargo version - &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%2Fxnb24aqod85b9rx8i0oy.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%2Fxnb24aqod85b9rx8i0oy.png" alt="Rust-4" width="800" height="214"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Building the first Rust project -
&lt;/h2&gt;

&lt;p&gt;Now, as mentioned, &lt;code&gt;cargo&lt;/code&gt; is the official package manager for Rust and it is very handy. From accessing the documentation, help pages, to creating a new Rust project right from the CLI, cargo is very useful. Here are some quick commands for reference - &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%2Fdgyg1l9v2t6k8htbc4p3.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%2Fdgyg1l9v2t6k8htbc4p3.png" alt="Cargo run" width="800" height="293"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can also type &lt;code&gt;cargo –help&lt;/code&gt; to see a comprehensive list of commands that come with cargo for quick navigation - &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%2Fgu7qo6no6wr19vlx5lrh.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%2Fgu7qo6no6wr19vlx5lrh.png" alt="Cargo Help" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;With that done, let’s create our first Rust project - &lt;/p&gt;

&lt;p&gt;In your terminal, &lt;code&gt;cd&lt;/code&gt; into the folder/directory where you want to create your new Rust project and run the command - &lt;code&gt;cargo new learn-rust&lt;/code&gt; &lt;/p&gt;

&lt;p&gt;Open this project folder in your code editor. You can see that the project has a few starter files generated by &lt;code&gt;cargo&lt;/code&gt; command -&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%2Fep0u6k9jd2p88kh7rllh.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%2Fep0u6k9jd2p88kh7rllh.png" alt="Rust project structure" width="800" height="403"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Inside the &lt;code&gt;src&lt;/code&gt; folder, we have &lt;code&gt;main.rs&lt;/code&gt; file where &lt;code&gt;.rs&lt;/code&gt; is the extension for Rust files, and then a &lt;code&gt;Cargo.toml&lt;/code&gt; file which is the configuration file for the project. It is similar to YAML and JSON files, but just a bit easier to read due to its simpler semantics. This file is what we call the “manifest” file for Rust. It contains the metadata and dependencies for the entire project. This sounds similar to the &lt;code&gt;package.json&lt;/code&gt; file in ReactJS/NodeJS projects, doesn’t it? &lt;/p&gt;

&lt;p&gt;The main.rs file is where we write all our application code. Again, similar to index.js file.&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%2Fglh2nnfd5edha4wgb676.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%2Fglh2nnfd5edha4wgb676.png" alt="Cargo.toml" width="800" height="288"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We’ll come back to these lines of code and their meanings very soon. Let’s first run our project. &lt;/p&gt;

&lt;p&gt;We use the command &lt;code&gt;cargo run&lt;/code&gt; to generate the output of our &lt;code&gt;main.rs&lt;/code&gt; file above. Once we do, we get the following output - &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%2Fbkbhjyaocmlk26lpwxmo.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%2Fbkbhjyaocmlk26lpwxmo.png" alt="Main.rs file" width="800" height="200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can see the output “Hello, world!” in the terminal 🥳 Congratulations, you just ran your first Rust program 🚀&lt;/p&gt;

&lt;p&gt;You can notice that a new folder target has been created and this is where our debug files, logs, and output file will be stored. &lt;/p&gt;

&lt;p&gt;And that is it for this tutorial. In the next blog, we’ll learn more about &lt;code&gt;cargo&lt;/code&gt; package manager and the magic it weaves ✨&lt;/p&gt;

&lt;p&gt;I have also published a detailed video on this topic in my YouTube channel - &lt;a href="https://youtu.be/XBoggGeBWSA?si=8hA5dMjsoTEi306B"&gt;watch it here&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://youtu.be/XBoggGeBWSA?si=8hA5dMjsoTEi306B"&gt;Subscribe to my weekly newsletter&lt;/a&gt; on software development, my journey with code, and many other useful information to elevate your programming career.&lt;/p&gt;

</description>
      <category>rust</category>
      <category>programming</category>
    </item>
    <item>
      <title>Everything About Angular for 2024</title>
      <dc:creator>𝒮𝒶𝓇𝓉𝒽𝒶𝓀 📨</dc:creator>
      <pubDate>Sat, 27 Jan 2024 14:00:36 +0000</pubDate>
      <link>https://forem.com/sarthaksavvy/everything-about-angular-for-2024-2i1b</link>
      <guid>https://forem.com/sarthaksavvy/everything-about-angular-for-2024-2i1b</guid>
      <description>&lt;h2&gt;
  
  
  A New Framework a Day Keeps A Developer’s Sanity Away 🫠🥲
&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%2Fqqqhgkq1tlpjqu281eo9.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%2Fqqqhgkq1tlpjqu281eo9.png" alt="Everything About Angular for 2024" width="800" height="812"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When I look at this meme, it doesn’t hit a chord of nostalgia for me. You ask why?&lt;/p&gt;

&lt;p&gt;Well because unlike other memes which may fade out of trend, this particular meme never changes. Why??&lt;/p&gt;

&lt;p&gt;Because it’s not a meme, it’s fact 😭&lt;/p&gt;

&lt;p&gt;Every minute, day, week, month and year, it seems like new JavaScript frameworks are springing up out of nowhere. &lt;/p&gt;

&lt;p&gt;And while the developer community is showcasing its amazing talents with an outpour of support, creativity, and open-source, a framework is not a library - it is not something that can be fixed and internalised in an organisation. &lt;/p&gt;

&lt;p&gt;A framework needs stability, performance, and it needs to stay strong after many years and even hopefully, decades. &lt;/p&gt;

&lt;p&gt;This is why we see popular libraries and frameworks being backed by big-tech because they have seen what it can do and they have the bandwidth to support its life cycle. &lt;/p&gt;

&lt;p&gt;And what better choice than Angular which is a robust, highly scalable web framework - which is a favourite among enterprise app developers! &lt;/p&gt;

&lt;h2&gt;
  
  
  Where Angular stands amidst the war of frameworks
&lt;/h2&gt;

&lt;p&gt;Angular has been around for more than a decade now. Its first version, AngularJS was released in 2010, and was later completely rewritten in 2016 with TypeScript, making it the most favourable choice for all kinds of web apps. &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%2Ftm8ld1t6ss4i11ls8ai7.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%2Ftm8ld1t6ss4i11ls8ai7.png" alt="Everything About Angular for 2024" width="800" height="459"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As you can see, we do have quite a handful of frameworks available for frontend. Remember - it does not have to be huge and complicated to be called a framework! Anything that abstracts the complexities away from developers so that we can focus on building and deploying features is a framework. And even though there are many available, there are only a few that are considered popular and industry-standard - React, Vue, and Angular.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why do we need frameworks?
&lt;/h2&gt;

&lt;p&gt;Because they make building stuff easier - that’s the hard fact. Building frontend apps has always been hard. Today’s “sites” are no longer just static. Of course there are millions of static sites out there and they are needed for various purposes, but interactivity is at the core of modern frontend. That’s why they are called web “applications” and not just websites. &lt;/p&gt;

&lt;p&gt;With all this, imagine building a multi-layered, cross-functional application that has hundreds of thousands of internal web pages, apps, and tools built-in. &lt;/p&gt;

&lt;p&gt;Building this out in native JavaScript is a sure way to put ourselves into tech-debt. &lt;/p&gt;

&lt;p&gt;This is where frameworks come in - they come with a lot of batteries, functions, and features built into the package so that you can simply “import” these into your codebase, thereby building out components and segregating your application architecture in a neat way. &lt;/p&gt;

&lt;h2&gt;
  
  
  Why is Angular Thriving?
&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%2F20sqbh13kuzkket2bq1a.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%2F20sqbh13kuzkket2bq1a.png" alt="Everything About Angular for 2024" width="800" height="429"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Before we dive into this, the natural question arises - why not React or Vue? &lt;/p&gt;

&lt;p&gt;It is agreed that these two have had considerably high interest among the developer community recently, and React is backed by Facebook so it is a no-brainer choice among many. &lt;/p&gt;

&lt;p&gt;But the question is also about feasibility, stability, and robustness. While React and Vue are both debatably strong in these areas, one area where Vue ranks higher than React is the true community-led development. Vue comes with a sleek syntax, much more straightforward and easy to use than React and building both MVPs and long-term enterprise apps are easier. And Angular leaves these two in the dust with a lot of extra horsepower in its engine.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Choose Angular in 2024?
&lt;/h2&gt;

&lt;p&gt;There are a multitude of reasons to choose Angular and I’m listing them all here -&lt;/p&gt;

&lt;h3&gt;
  
  
  Strong Backing
&lt;/h3&gt;

&lt;p&gt;A framework is not just about syntax and concepts! Nope. There are also things like principles, thought process, and system-design-led development methodologies. This is where Angular is a solid go-to framework. Angular is backed by the OG big-tech of all tech companies - Google 😎&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%2F8poa9tf19v0fn0xqpcm6.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%2F8poa9tf19v0fn0xqpcm6.png" alt="Everything About Angular for 2024" width="800" height="392"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And if this hasn’t already convinced you to break into the world of Angular, let me convince you a bit more 😃&lt;/p&gt;

&lt;h3&gt;
  
  
  The Angular Iteration
&lt;/h3&gt;

&lt;p&gt;From AngularJS in 2010 to revamping itself as Angular 2.0 in 2017, today the latest stable version is now Angular 17 - released on December 13, 2023! Yep, just a few weeks ago. That means it has gone through a very speedy yet stable iteration, taking feedback and releasing more and more amazing features over the years.&lt;/p&gt;

&lt;p&gt;This speaks volumes about the vibrant community behind Angular. And it’s a hundred percent “mature” framework - something that I personally haven’t been able to say about any other framework yet.&lt;/p&gt;

&lt;h3&gt;
  
  
  The One Man Army Ecosystem
&lt;/h3&gt;

&lt;p&gt;Being a mature player in the field means that Angular comes with more than a decade of knowledge bases, forums, communities, blogs, documentations, tutorials, and much much more. And in this sense, Angular is a one-man army that takes on the enterprise web world with a sense of deadly calm.&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%2Fkidcl5psu8vo1lr9zadq.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%2Fkidcl5psu8vo1lr9zadq.png" alt="Everything About Angular for 2024" width="800" height="482"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Angular comes with its own CLI - a beautiful collection of nifty tools and scripts that get the ball rolling within no time.&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%2F4wv88j5u8t2b31o9ao47.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%2F4wv88j5u8t2b31o9ao47.png" alt="Everything About Angular for 2024" width="800" height="446"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This CLI includes creating a new app, testing entire components and modules, generating custom profiles, etc. No other framework or library comes close to the amount of in-built features available within Angular.&lt;/p&gt;

&lt;p&gt;This is in stark contrast to React and Vue which heavily depend on external libraries for testing. In fact, this external dependency has created the ground for many testing frameworks making these ecosystems ripe for instability and uncertainty.&lt;/p&gt;

&lt;h3&gt;
  
  
  Robust Two-Way Binding
&lt;/h3&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%2Ftf3h48mhsf9cd3erzicv.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%2Ftf3h48mhsf9cd3erzicv.png" alt="Everything About Angular for 2024" width="800" height="317"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Angular is the only framework to introduce and implement two-way data binding for its components. This means that whatever feature or data implementation occurs amongst the components is immediately communicated with the browser and the browser responds back too. This synchronisation with the “Model” and “View” components helps with seamless data sharing across components and browser environments. This also means that changes occur instantly without a complex need for data management or explicitly writing a separate &lt;code&gt;onChange&lt;/code&gt; function like we do in React.&lt;/p&gt;

&lt;h3&gt;
  
  
  File Based Component Architecture
&lt;/h3&gt;

&lt;p&gt;This feature, initially introduced by Angular is now remixed and refurbished across other libraries and frameworks as well. Dividing components into their own files makes it unbelievably easier to manage components even after years of deployment into production. &lt;/p&gt;

&lt;p&gt;This method also erases confusion and helps manage the entire codebase very easily.&lt;/p&gt;

&lt;h2&gt;
  
  
  Be wary - do not cut an apple with a sword!
&lt;/h2&gt;

&lt;p&gt;With all the positives going for Angular, it is definitely a wise choice for building modern apps in 2024. But a word of caution - a wise developer chooses the framework or library AFTER analysing the requirements for the app. There are a multitude of solutions available in the developer world but we must be the one to decide whether we need a kitchen knife or a Swiss army knife, or maybe a sword after all 😁&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%2Fsmfgfo97o6r37of33hhk.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%2Fsmfgfo97o6r37of33hhk.png" alt="Everything About Angular for 2024" width="800" height="771"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you liked reading this article, I have made a video on Angular to reflect this article. Watch it now&lt;br&gt;
&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/F-r-RlVvW3w"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Make sure to subscribe to my newsletter if you haven’t already, where I share a weekly dose of fun, developer insider stories from my experience, and many useful nuggets to make your next project/app amazing 💯&lt;/p&gt;

&lt;p&gt;&lt;a href="https://bitfumes.com/newsletters"&gt;https://bitfumes.com/newsletters&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;See you in the next one 👋&lt;/p&gt;

</description>
      <category>angular</category>
      <category>javascript</category>
      <category>frontend</category>
    </item>
    <item>
      <title>Docker Scout - Scouting The Security Seas</title>
      <dc:creator>𝒮𝒶𝓇𝓉𝒽𝒶𝓀 📨</dc:creator>
      <pubDate>Tue, 09 Jan 2024 07:10:58 +0000</pubDate>
      <link>https://forem.com/sarthaksavvy/docker-scout-scouting-the-security-seas-cga</link>
      <guid>https://forem.com/sarthaksavvy/docker-scout-scouting-the-security-seas-cga</guid>
      <description>&lt;p&gt;Ever wondered how to navigate the travesties of security pitfalls, package integrities, and protection of our Docker images? &lt;/p&gt;

&lt;p&gt;While Docker has made the developer’s life easy, there is still something crucial to take care of when we are dockerising our code.&lt;/p&gt;

&lt;p&gt;Why? Because our container images are made up of many different layers of softwares, packages, and potentially other images too. And just like any software, our images are vulnerable to potential security threats ranging from as simple as an outdated package to a major slip up in external images. &lt;/p&gt;

&lt;p&gt;Fortunately, Docker has released a scanning tool - &lt;strong&gt;Docker Scout&lt;/strong&gt; - that helps us gain insights into the contents of a container image and accordingly fix them. The best part is that it can integrate with any CI pipeline we have including GitHub actions, Circle CI, GitLab, etc&lt;/p&gt;

&lt;h2&gt;
  
  
  Let’s get started 🐳
&lt;/h2&gt;

&lt;p&gt;You can watch the video here about Docker Scout.&lt;br&gt;
&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/Dal3Nge32cU"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h3&gt;
  
  
  How to use Docker Scout with Docker CLI?
&lt;/h3&gt;

&lt;p&gt;Firstly, we need to have Docker installed on our system - that means installing the CLI for it and the Docker Desktop app for our OS. &lt;/p&gt;

&lt;p&gt;Confirm the installation with this command - &lt;code&gt;docker –version&lt;/code&gt;; if it returns a version number similar to the below image, we are good to go.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fzrl7ui9369sv47v85eec.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fzrl7ui9369sv47v85eec.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And make sure to have Docker Desktop up and running as well.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fpvwwitay23fmjjahq1r2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fpvwwitay23fmjjahq1r2.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now, check using the CLI, if Docker Scout is available in the list of commands - and it should be 🤓&lt;/p&gt;

&lt;p&gt;Type &lt;code&gt;docker scout –help&lt;/code&gt; and we should get the below help information - &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fa5vfogo2mtykzfhvelhg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fa5vfogo2mtykzfhvelhg.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As we can see, there are many commands available, but there are two very important commands worth noting, and which we will be using extensively -&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;docker scout quickview&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;docker scout cves&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As you might have guessed, CVE stands for Common Vulnerabilities and Exposures, and this command helps us identify or “scout” for issues in our images. It does this by comparing with the huge database of recorded vulnerabilities and security issues stored in Docker. We can see the complete list of these CVEs by visiting&lt;a href="https://dso.docker.com/explore" rel="noopener noreferrer"&gt;https://dso.docker.com/explore&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2F5kqkqbvwdo19egcwki5r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2F5kqkqbvwdo19egcwki5r.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We can filter these CVEs by Image or Package or Vulnerability name if we are aware of them.&lt;/p&gt;

&lt;p&gt;And as for the &lt;code&gt;quickview&lt;/code&gt; command, just like the name suggests, it helps us get details about an image or package.&lt;/p&gt;

&lt;p&gt;Let’s do a scout of the first most vulnerable image - &lt;code&gt;storm:latest&lt;/code&gt; (as can be seen in the right side of the above image). Run &lt;code&gt;docker scout quickview storm&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fo7s60ztyvqxmho6qhqtl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fo7s60ztyvqxmho6qhqtl.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We can see that the CLI returned a nice tabular view of the details of this Docker image. There are 55 “Critical” dependencies as marked in red colour, 123 “High”, 109 “Medium”, and 24 “Low” rankings of vulnerabilities. &lt;/p&gt;

&lt;p&gt;But it’s more fun to actually use Docker Scout on our own existing application isn’t it? Here, I have opened a project folder within VS Code with the necessary dockerfiles - &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2F2qrfdlh5mr4w61073uut.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2F2qrfdlh5mr4w61073uut.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So now that we have this basic setup ready, let us first build the project with Docker. &lt;/p&gt;

&lt;p&gt;Type the command &lt;code&gt;docker build -t image_name&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Replace &lt;code&gt;image_name&lt;/code&gt; with the name of your image; here I have used the name “mern”, as it can be seen below - &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fq4ncup7zkbhf2b23v4tk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fq4ncup7zkbhf2b23v4tk.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once the command is executed, we can see that all the steps we have defined in our Dockerfile will be followed exactly as it is - it installs Node v.18 along with the required dependencies, and once this image is available, we can check for the vulnerabilities. &lt;/p&gt;

&lt;p&gt;First, let’s run the command &lt;code&gt;docker images&lt;/code&gt; to list all the available images in our system - &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fw56fxmt3d3ng4bivtd7b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fw56fxmt3d3ng4bivtd7b.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here, we have the image “mern” available since we ran it just a moment ago. And now, let’s run the command &lt;code&gt;docker scout quickview mern&lt;/code&gt; on our image. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fhz9un5ef57h1paefspgi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fhz9un5ef57h1paefspgi.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Aaand.. Voila! There we have it. Docker Scout has detected 2 “Critical” vulnerabilities, 3 “High”, 14 “Medium”, and 89 “Low” ones. &lt;/p&gt;

&lt;p&gt;And now, we can run &lt;code&gt;docker scout cves mern&lt;/code&gt; to exactly see which package or layer created these vulnerabilities!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fdd58w8c61owe6nkbls0m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fdd58w8c61owe6nkbls0m.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2F8icivovwcyyvuezijipk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2F8icivovwcyyvuezijipk.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There we go! Now we have in-depth details about each vulnerability, sorted by package and layer according to the contents of our image. &lt;/p&gt;

&lt;p&gt;As you can see, the command not only gives the name of the package that has the vulnerability, but also the correct “fixed” version of the same to help us in updating to the latest stable, secure version. &lt;/p&gt;

&lt;p&gt;But there are also instances where many packages or images are not yet fixed even though they may have critical vulnerabilities, like so - &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fhimteggyeae9zmqto6v9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fhimteggyeae9zmqto6v9.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In such cases, rather than getting confused by the large list of vulnerabilities, we can use a flag &lt;code&gt;--only-fixed&lt;/code&gt; with the Docker Scout command to shorten the list to a more fixable list. Here’s how to do it - &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fedw7ee8cix6qn4j88bqs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fedw7ee8cix6qn4j88bqs.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This will ONLY list out the fixable vulnerabilities where a stable/fixed version of it is available. In our example, &lt;code&gt;openssh&lt;/code&gt;, &lt;code&gt;mongoose&lt;/code&gt;, etc all have “fixed” versions that are not vulnerable anymore so we can easily upgrade these in our project’s package manager. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Ff8wlh9n3985qst9fmirt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Ff8wlh9n3985qst9fmirt.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And here’s how I upgraded the mongoose package vulnerability easily - &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2F21d2vwdvnfg0phliw566.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2F21d2vwdvnfg0phliw566.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next, we can run the same command &lt;code&gt;docker build -t image_name_2&lt;/code&gt; to build a new image of the same project, and then run &lt;code&gt;docker scout cves image_name_2 –only-fixed&lt;/code&gt; and we will find that the list is considerably shorter than before! &lt;/p&gt;

&lt;h3&gt;
  
  
  How to use Docker Scout with Docker Desktop app?
&lt;/h3&gt;

&lt;p&gt;Since Docker desktop app provides a very fluid GUI, it is much more visually pleasing for those who prefer to not use the CLI. Open the Docker app and we should be able to see the local Docker images listed like so - &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fszxrl1in2zyriot700rj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fszxrl1in2zyriot700rj.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And once we click on the image, which is “mern” in this case, we can see the entire list of vulnerabilities presented similar to the CLI but more visual - &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Flmaab5w58ogwrscwc3bn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Flmaab5w58ogwrscwc3bn.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We can even filter the list by checking the checkbox labeled “Fixable packages” and this will function in a similar way to that of the flag we used earlier - &lt;code&gt;--only-fixed&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;There is an interesting option in the Docker app which is the “Recommended Fixes” option. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2F730zwfi5eatuo481phm3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2F730zwfi5eatuo481phm3.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once we click on the Recommended Fixes dropdown, we can see an option for “Recommendations for base image”. Click on that, and we will get this page where Docker recommends a fix for the base image node. As we can see, the current image node is 18, but the recommended options are 20, 21, etc. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fpweib4pp5cxlko2tpur5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fpweib4pp5cxlko2tpur5.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;How to use this recommendation?&lt;/p&gt;

&lt;p&gt;Well, it’s quite simple! Scroll down on that recommendation page in the app, and we will see this below line to be added in our Dockerfile. Just copy and paste it like so -&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fiezm0o1kbk7w9skipxjv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fiezm0o1kbk7w9skipxjv.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2F3yjh4o3qrtr6ke1g409q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2F3yjh4o3qrtr6ke1g409q.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And once we have updated the base image node, we can just run the command &lt;code&gt;docker build -t image new_image&lt;/code&gt; and now we will see the same image listed among the local images in Docker app. &lt;/p&gt;

&lt;p&gt;And here’s the magic of Docker Scout - the number of vulnerabilities came down from 100+ to just 24 🤩Yes, that’s the power of Docker Scout. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fpb2zvv5hbi1wc21cb373.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fpb2zvv5hbi1wc21cb373.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Your Docker image is now that much more secure, powerful, and vulnerable-free compared to your previous build!&lt;/p&gt;

&lt;p&gt;No more bumping the heads against the wall trying to track down which package is destroying your app or which version to fix; simply use Docker Scout and let the magic happen 🎉&lt;/p&gt;

&lt;p&gt;And in case you prefer watching this in video format, I have made a detailed video on Docker Scout and its usage on my channel here - &lt;a href="https://www.youtube.com/watch?v=Dal3Nge32cU&amp;amp;t=125s&amp;amp;ab_channel=Bitfumes" rel="noopener noreferrer"&gt;What is Docker Scout?&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Please subscribe to my newsletter &lt;a href="https://bitfumes.com/newsletters" rel="noopener noreferrer"&gt;https://bitfumes.com/newsletters&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>From Docker Enthusiast to Captain: My Journey with the Whale</title>
      <dc:creator>𝒮𝒶𝓇𝓉𝒽𝒶𝓀 📨</dc:creator>
      <pubDate>Thu, 04 Jan 2024 06:25:56 +0000</pubDate>
      <link>https://forem.com/sarthaksavvy/from-docker-enthusiast-to-captain-my-journey-with-the-whale-2fhp</link>
      <guid>https://forem.com/sarthaksavvy/from-docker-enthusiast-to-captain-my-journey-with-the-whale-2fhp</guid>
      <description>&lt;p&gt;Being recognized as a Docker Captain is a tremendous honour, especially considering it coincides with my increased focus on creating more Docker content. It truly feels like a dream come true.&lt;/p&gt;

&lt;h3&gt;
  
  
  What is Docker Captain?
&lt;/h3&gt;

&lt;p&gt;Docker captain are not just pirates steering container ship (though that imagery is pretty cool!).&lt;br&gt;
They translate complex concepts of Docker into digestible content.&lt;/p&gt;

&lt;p&gt;Docker Captain write blog posts, host webinars, organize meetups and most importantly share our passion for the technology that revolutionizes the software development.&lt;/p&gt;

&lt;h3&gt;
  
  
  My Inspiration: Why Learn Docker?
&lt;/h3&gt;

&lt;p&gt;While containerization is a crucial skill for any tech professional in today's world, that wasn't always my perspective. Two years ago, this thought would have been alien to me. So, what sparked my sudden interest in Docker and containerization?&lt;/p&gt;

&lt;p&gt;2 years ago, I joined a company Pfizer Inc. as a software engineer, and I found that the product I work with uses AWS ECS and Docker very much and that ignited spark on me to at least got to know what this Docker thing is?&lt;/p&gt;

&lt;p&gt;Another reason I looked Docker as amazing technology is because of a Francesco Ciulla (&lt;a class="mentioned-user" href="https://dev.to/francescoxx"&gt;@francescoxx&lt;/a&gt; He is one of my best friends from twitter(x))&lt;br&gt;
I followed him from the days when he has very less followers on X but now, he is a known tech person with 180K+ followers.&lt;/p&gt;

&lt;p&gt;He is also a Docker Captain and he often share content related to Docker and since I am his friend and follower I read or watch all his content which eventually leads to liking Docker.&lt;/p&gt;

&lt;h3&gt;
  
  
  How did I apply for Docker Captain program?
&lt;/h3&gt;

&lt;p&gt;Since I have a decent YouTube channel called Bitfumes, whatever I learn I create video tutorial about that and same I started doing with Docker too.&lt;/p&gt;

&lt;p&gt;I created a full Docker beginner course of around 2 hours 45 mins without knowing about that this video can help me in the future.&lt;br&gt;
At this time, I didn't know about the Docker Captain program.&lt;/p&gt;

&lt;p&gt;But then I got to know about Docker Captain program, and I started sharpening my Docker skills and created some more content around Docker.&lt;/p&gt;

&lt;p&gt;And one day while scrolling LinkedIn, I found one post from Harsh Manvar (&lt;a class="mentioned-user" href="https://dev.to/harsh_manvar"&gt;@harsh_manvar&lt;/a&gt; ) where there is a link to apply for Docker Captain program. I quickly jumped to the link and filled all the required details like my GitHub, twitter or LinkedIn profile and also which content I previously created related to Docker.&lt;/p&gt;

&lt;p&gt;As a precaution, I also reached out to Harsh and Francesco for potential recommendations. However, to my absolute delight, I received an interview call directly from the Docker team after a few days.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--so0liuMo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/egtd42nk3b54bkijsqpo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--so0liuMo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/egtd42nk3b54bkijsqpo.png" alt="Docker captain inteview invitation" width="800" height="321"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I was excited as well as nervous about what going to happen.&lt;/p&gt;

&lt;h3&gt;
  
  
  About the Docker Captain Interview!
&lt;/h3&gt;

&lt;p&gt;Okay, although we call it an interview, but I am not getting any kind of job hahah&lt;/p&gt;

&lt;p&gt;So, on the scheduled date and time I met with Eva who just asked me some questions like why I want to become docker captain and why I even started learning docker. &lt;br&gt;
I got really happy when she impressed with my YouTube channel and type of content I created.&lt;/p&gt;

&lt;p&gt;However, she suggested creating a video specifically focused on Docker Scout, the latest Docker feature, to provide the approval team with fresh content. I promptly created the video within 5–6 days and sent it to Eva via email.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Day I become Captain.
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--S0pb5XiO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/oucwd3v4gdkmtgxgy1ar.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--S0pb5XiO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/oucwd3v4gdkmtgxgy1ar.png" alt="Whalecome to Docker captain" width="800" height="326"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After a nervous wait, I finally received the invitation to sign the Docker Captain agreement on December 28, 2023. It felt like a perfect New Year's gift, and I couldn't have been happier.&lt;/p&gt;

&lt;p&gt;I owe immense gratitude to both the Pfizer team and Francesco for igniting the spark that led me here.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can you become Docker Captain?
&lt;/h3&gt;

&lt;p&gt;Absolutely! The program welcomes anyone passionate about creating quality Docker content and boasting a decent online presence. In my case, my YouTube channel and its Docker-related content played a pivotal role in my journey.&lt;/p&gt;

&lt;p&gt;So, if you share a passion for Docker and possess the drive to create informative content, the Docker Captain program awaits!&lt;/p&gt;

&lt;p&gt;Follow me on Twitter and subscribe to my newsletter &lt;a href="https://bitfumes.com/newsletters"&gt;https://bitfumes.com/newsletters&lt;/a&gt;&lt;/p&gt;

</description>
      <category>docker</category>
      <category>devops</category>
      <category>containers</category>
    </item>
    <item>
      <title>From Docker Enthusiast to Captain: My Journey with the Whale</title>
      <dc:creator>𝒮𝒶𝓇𝓉𝒽𝒶𝓀 📨</dc:creator>
      <pubDate>Thu, 04 Jan 2024 06:25:56 +0000</pubDate>
      <link>https://forem.com/sarthaksavvy/from-docker-enthusiast-to-captain-my-journey-with-the-whale-751</link>
      <guid>https://forem.com/sarthaksavvy/from-docker-enthusiast-to-captain-my-journey-with-the-whale-751</guid>
      <description>&lt;p&gt;Being recognized as a Docker Captain is a tremendous honour, especially considering it coincides with my increased focus on creating more Docker content. It truly feels like a dream come true.&lt;/p&gt;

&lt;h3&gt;
  
  
  What is Docker Captain?
&lt;/h3&gt;

&lt;p&gt;Docker captain are not just pirates steering container ship (though that imagery is pretty cool!).&lt;br&gt;
They translate complex concepts of Docker into digestible content.&lt;/p&gt;

&lt;p&gt;Docker Captain write blog posts, host webinars, organize meetups and most importantly share our passion for the technology that revolutionizes the software development.&lt;/p&gt;

&lt;h3&gt;
  
  
  My Inspiration: Why Learn Docker?
&lt;/h3&gt;

&lt;p&gt;While containerization is a crucial skill for any tech professional in today's world, that wasn't always my perspective. Two years ago, this thought would have been alien to me. So, what sparked my sudden interest in Docker and containerization?&lt;/p&gt;

&lt;p&gt;2 years ago, while working at Pfizer Inc. as a software engineer, and I found that the product I work with uses AWS ECS and Docker very much and that ignited spark on me to at least got to know what this Docker thing is?&lt;/p&gt;

&lt;p&gt;Another reason I looked Docker as amazing technology is because of a Francesco Ciulla (&lt;a class="mentioned-user" href="https://dev.to/francescoxx"&gt;@francescoxx&lt;/a&gt; He is one of my best friends from twitter(x))&lt;br&gt;
I followed him from the days when he has very less followers on X but now, he is a known tech person with 180K+ followers.&lt;/p&gt;

&lt;p&gt;He is also a Docker Captain and he often share content related to Docker and since I am his friend and follower I read or watch all his content which eventually leads to liking Docker.&lt;/p&gt;

&lt;h3&gt;
  
  
  How did I apply for Docker Captain program?
&lt;/h3&gt;

&lt;p&gt;Since I have a decent YouTube channel called Bitfumes, whatever I learn I create video tutorial about that and same I started doing with Docker too.&lt;/p&gt;

&lt;p&gt;I created a full Docker beginner course of around 2 hours 45 mins without knowing about that this video can help me in the future.&lt;br&gt;
At this time, I didn't know about the Docker Captain program.&lt;/p&gt;

&lt;p&gt;But then I got to know about Docker Captain program, and I started sharpening my Docker skills and created some more content around Docker.&lt;/p&gt;

&lt;p&gt;And one day while scrolling LinkedIn, I found one post from Harsh Manvar (&lt;a class="mentioned-user" href="https://dev.to/harsh_manvar"&gt;@harsh_manvar&lt;/a&gt; ) where there is a link to apply for Docker Captain program. I quickly jumped to the link and filled all the required details like my GitHub, twitter or LinkedIn profile and also which content I previously created related to Docker.&lt;/p&gt;

&lt;p&gt;As a precaution, I also reached out to Harsh and Francesco for potential recommendations. However, to my absolute delight, I received an interview call directly from the Docker team after a few days.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--so0liuMo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/egtd42nk3b54bkijsqpo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--so0liuMo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/egtd42nk3b54bkijsqpo.png" alt="Docker captain inteview invitation" width="800" height="321"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I was excited as well as nervous about what going to happen.&lt;/p&gt;

&lt;h3&gt;
  
  
  About the Docker Captain Interview!
&lt;/h3&gt;

&lt;p&gt;Okay, although we call it an interview, but I am not getting any kind of job hahah&lt;/p&gt;

&lt;p&gt;So, on the scheduled date and time I met with Eva who just asked me some questions like why I want to become docker captain and why I even started learning docker. &lt;br&gt;
I got really happy when she impressed with my YouTube channel and type of content I created.&lt;/p&gt;

&lt;p&gt;However, she suggested creating a video specifically focused on Docker Scout, the latest Docker feature, to provide the approval team with fresh content. I promptly created the video within 5–6 days and sent it to Eva via email.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Day I become Captain.
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--S0pb5XiO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/oucwd3v4gdkmtgxgy1ar.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--S0pb5XiO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/oucwd3v4gdkmtgxgy1ar.png" alt="Whalecome to Docker captain" width="800" height="326"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After a nervous wait, I finally received the invitation to sign the Docker Captain agreement on December 28, 2023. It felt like a perfect New Year's gift, and I couldn't have been happier.&lt;/p&gt;

&lt;p&gt;I owe immense gratitude to both the Pfizer team and Francesco for igniting the spark that led me here.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can you become Docker Captain?
&lt;/h3&gt;

&lt;p&gt;Absolutely! The program welcomes anyone passionate about creating quality Docker content and boasting a decent online presence. In my case, my YouTube channel and its Docker-related content played a pivotal role in my journey.&lt;/p&gt;

&lt;p&gt;So, if you share a passion for Docker and possess the drive to create informative content, the Docker Captain program awaits!&lt;/p&gt;

&lt;p&gt;Follow me on Twitter and subscribe to my newsletter &lt;a href="https://bitfumes.com/newsletters"&gt;https://bitfumes.com/newsletters&lt;/a&gt;&lt;/p&gt;

</description>
      <category>docker</category>
      <category>devops</category>
      <category>containers</category>
    </item>
    <item>
      <title>Unleash Your Coding Skills with the In Depth Laravel 2023 Course!</title>
      <dc:creator>𝒮𝒶𝓇𝓉𝒽𝒶𝓀 📨</dc:creator>
      <pubDate>Sat, 20 May 2023 04:40:00 +0000</pubDate>
      <link>https://forem.com/sarthaksavvy/unleash-your-coding-skills-with-the-in-depth-laravel-2023-course-5cei</link>
      <guid>https://forem.com/sarthaksavvy/unleash-your-coding-skills-with-the-in-depth-laravel-2023-course-5cei</guid>
      <description>&lt;p&gt;Are you ready to take your Laravel coding skills to new heights and unlock the full potential of this powerful PHP framework? Look no further than the highly anticipated launch of the In Depth Laravel 2023 course! &lt;/p&gt;

&lt;p&gt;In this comprehensive program, you'll delve deep into the intricacies of Laravel 10, gaining invaluable knowledge and hands-on experience that will propel you to the top of your game.&lt;/p&gt;

&lt;p&gt;Check the course landing page &lt;a href="https://indepthlaravel.com"&gt;In Depth Laravel Course 2023&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Mastering the Backend Skills:&lt;/strong&gt; &lt;br&gt;
To excel as a Laravel developer, you need more than just a surface-level understanding. &lt;br&gt;
This course is designed to equip you with the essential backend skills required for seamless development. &lt;br&gt;
From setting up CI/CD pipelines to mastering deployment strategies and testing techniques, you'll be well-prepared to tackle any project that comes your way.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--wmsEltKX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gox83uo2p8pwbbitdrjs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--wmsEltKX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gox83uo2p8pwbbitdrjs.png" alt="Image description" width="800" height="330"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;Enter the World of TALL Stack: *&lt;/em&gt;&lt;br&gt;
Get ready to revolutionize your development approach with the powerful TALL stack – a combination of Tailwind CSS, Alpine.js, Laravel, and Livewire.&lt;br&gt;
Discover how to create stunning Laravel applications that boast remarkable user interfaces without relying heavily on JavaScript. &lt;br&gt;
With TALL, you'll experience a whole new level of productivity and efficiency.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--xhUbZ-Nr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/e3c23bbc0r84cd854fbr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--xhUbZ-Nr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/e3c23bbc0r84cd854fbr.png" alt="Image description" width="800" height="407"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;Unleash the Potential of InertiaJS: *&lt;/em&gt;&lt;br&gt;
InertiaJS is the game-changer you've been waiting for! By seamlessly integrating Vue.js and Laravel, you can build lightning-fast single-page applications that impress users and developers alike. &lt;br&gt;
Learn how to harness the power of InertiaJS to create smooth, interactive interfaces that will keep your users engaged.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Continuous Integration and Deployment Made Simple:&lt;/strong&gt;&lt;br&gt;
Gone are the days of cumbersome deployment processes and long feedback loops. In this course, you'll discover the art of setting up CI/CD pipelines using GitHub Actions.&lt;br&gt;
Say goodbye to manual deployments and embrace a streamlined workflow that allows you to collaborate effectively in a team environment, deploy frequently, and progress faster than ever before.&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;Real-World Projects: *&lt;/em&gt;&lt;br&gt;
Theory is essential, but practice is where the real learning happens.&lt;br&gt;
That's why the In Depth Laravel 2023 course offers three exciting projects that will give you a holistic development experience.&lt;br&gt;
From integrating Vue 3 and React.js with Laravel to exploring the limitless possibilities of AI with Nuno Maduro's openai-laravel package, you'll be prepared to tackle diverse real-world challenges.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9MtsTn5V--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xvg2ftdktmqrifdugq0u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9MtsTn5V--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xvg2ftdktmqrifdugq0u.png" alt="Image description" width="800" height="409"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;Embrace Laravel Livewire: *&lt;/em&gt;&lt;br&gt;
Are you tired of juggling between frontend and backend technologies? Enter Laravel Livewire, a groundbreaking package that lets you build interactive user interfaces without relying heavily on JavaScript.&lt;br&gt;
Discover how to harness the power of Livewire to simplify frontend development and make your coding life easier.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Meet Your Expert Instructor, Sarthak Shrivastava:&lt;/strong&gt;&lt;br&gt;
Led by the brilliant mind of Sarthak Shrivastava, founder of Bitfumes, this course is a culmination of years of experience and expertise.&lt;br&gt;
With an impressive background in Laravel, Vue.js, React.js, and AWS, Sarthak brings a wealth of knowledge to the table. His engaging teaching style and passion for empowering developers have earned him a loyal following of over 120k subscribers on YouTube.&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;Conclusion: *&lt;/em&gt;&lt;br&gt;
Are you ready to become a professional Laravel Developer, equipped with a deep understanding of Laravel's ecosystem and integrations? &lt;br&gt;
The In Depth Laravel 2023 course will transform you into a coding virtuoso, ready to take on any challenge that comes your way.&lt;br&gt;
Whether you're a seasoned developer looking to expand your skill set or a beginner eager to dive into the world of Laravel, this course is your ticket to success.&lt;br&gt;
Don't miss out on this opportunity to unlock your coding potential and shape a bright future in web development. Enroll today and prepare to embark on an extraordinary coding journey!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://indepthlaravel.com"&gt;But Now&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Follow on &lt;a href="https://twitter.com/sarthaksavvy"&gt;Twitter &lt;/a&gt;&lt;/p&gt;

</description>
      <category>laravel</category>
      <category>php</category>
      <category>tutorial</category>
      <category>javascript</category>
    </item>
  </channel>
</rss>
