<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Mukesh Kuiry</title>
    <description>The latest articles on DEV Community by Mukesh Kuiry (@mukeshkuiry).</description>
    <link>https://dev.to/mukeshkuiry</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%2F957542%2Fd7753070-d998-4b39-a31b-1d18a4a5e7ad.jpeg</url>
      <title>DEV Community: Mukesh Kuiry</title>
      <link>https://dev.to/mukeshkuiry</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mukeshkuiry"/>
    <language>en</language>
    <item>
      <title>Lets understand two phase commit of distributed system using Zomato's 10 minute food delivery.</title>
      <dc:creator>Mukesh Kuiry</dc:creator>
      <pubDate>Thu, 19 Sep 2024 20:24:33 +0000</pubDate>
      <link>https://dev.to/mukeshkuiry/lets-understand-two-phase-commit-of-distributed-system-using-zomatos-10-minute-food-delivery-19g9</link>
      <guid>https://dev.to/mukeshkuiry/lets-understand-two-phase-commit-of-distributed-system-using-zomatos-10-minute-food-delivery-19g9</guid>
      <description>&lt;p&gt;To achieve rapid delivery, quick-commerce companies such as Zomato rely on strategically located dark stores stocked with commonly ordered items. Orders are accepted only if the item is available in a nearby dark store. Zomato bulk-purchases commonly ordered food items and stores them in these dark locations, ensuring they are ready for quick delivery. Once an order is placed, the food is warmed and delivered quickly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Business Requirements
&lt;/h2&gt;

&lt;p&gt;In order to accept an order, Zomato needs two things:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Available food from the dark store.&lt;/li&gt;
&lt;li&gt;A delivery partner ready to deliver.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If either of these services fails, the order must be canceled.&lt;/p&gt;

&lt;h3&gt;
  
  
  Atomicity in DBMS (Database Management System)
&lt;/h3&gt;

&lt;p&gt;From a database perspective, ensuring atomicity means that both the food preparation and the delivery assignment must happen as one atomic transaction — meaning either both succeed, or neither does. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If the food is prepared but the delivery partner fails to show up, the food may spoil or need to be rewarmed.&lt;/li&gt;
&lt;li&gt;If the delivery partner is ready but the food is unavailable, the delivery partner will waste time, leading to poor user experience.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Two-Phase Commit (2PC) Protocol
&lt;/h3&gt;

&lt;p&gt;To handle this, both the food preparation and delivery service must be completed atomically, and this is where the &lt;strong&gt;Two-Phase Commit (2PC)&lt;/strong&gt; protocol comes into play. The 2PC protocol ensures that both services either succeed or fail together.&lt;/p&gt;

&lt;h4&gt;
  
  
  The Two-Phase Commit Protocol consists of two steps:
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Prepare Phase&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Commit Phase&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  How It Works:
&lt;/h3&gt;

&lt;p&gt;When an order is placed, Zomato reserves both the food packets and a delivery agent before confirming the order. This ensures that orders are only accepted when both the food and delivery partner are reserved.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Prepare Phase:&lt;/strong&gt;
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Both the food and delivery agent are reserved for a limited time (using a timeout to avoid deadlock).&lt;/li&gt;
&lt;li&gt;If both reservations succeed, the system moves to the commit phase.&lt;/li&gt;
&lt;li&gt;If either the reservation of food or the delivery agent fails, the transaction is canceled.&lt;/li&gt;
&lt;li&gt;If one succeeds but the other fails, the reservation is canceled and resources are released.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Commit Phase:&lt;/strong&gt;
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;If both the food and the delivery agent are successfully reserved, the order is committed.&lt;/li&gt;
&lt;li&gt;If either reservation fails, the order is canceled, and any held resources (food and delivery agent) are released.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Advantages:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Guaranteed Atomicity&lt;/strong&gt;: Ensures that either both the food and delivery are successfully reserved, or neither is.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Guaranteed Isolation&lt;/strong&gt;: Each transaction operates independently and doesn't interfere with other transactions.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Disadvantages:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Slower Processing&lt;/strong&gt;: Due to the steps required to ensure atomicity, the process may be slower than simpler approaches.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Potential for Deadlocks&lt;/strong&gt;: With multiple transactions attempting to reserve resources, deadlocks can occur unless managed carefully using timeouts and other safeguards.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Stay tuned for the code implementation blog!&lt;/p&gt;

&lt;p&gt;Thanks for reading.&lt;/p&gt;

</description>
      <category>systemdesign</category>
      <category>database</category>
      <category>distributedsystems</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Dragonfly DB: A Promising Alternative to Redis</title>
      <dc:creator>Mukesh Kuiry</dc:creator>
      <pubDate>Tue, 17 Sep 2024 09:34:14 +0000</pubDate>
      <link>https://dev.to/mukeshkuiry/dragonfly-db-a-promising-alternative-to-redis-10b4</link>
      <guid>https://dev.to/mukeshkuiry/dragonfly-db-a-promising-alternative-to-redis-10b4</guid>
      <description>&lt;p&gt;Dragonfly DB is a drop-in replacement for Redis.&lt;/p&gt;

&lt;p&gt;It's known for its high operation rate.&lt;/p&gt;

&lt;p&gt;Dragonfly DB is multi-threaded, and Redis is single-threaded, which makes it faster. For example, if your machine has 12 cores, Redis can only use 1 core, whereas Dragonfly DB is designed to use the maximum possible cores.&lt;/p&gt;

&lt;p&gt;To scale Redis, we need to create multiple copies of it and scale horizontally, whereas in the case of Dragonfly DB, we can scale it vertically.&lt;/p&gt;

&lt;p&gt;Dragonfly DB is written in C++ and uses the Boost.Fiber library to execute on multiple processes.&lt;/p&gt;

&lt;p&gt;The architecture that makes Dragonfly DB possible is the "share-nothing" architecture.&lt;/p&gt;

&lt;p&gt;In this architecture, the namespace is shared into n parts, where n is the number of logical CPU cores.&lt;/p&gt;

&lt;p&gt;Each data block gets its own set of heap data structures to execute separately. You can say it's an orchestrated group of multiple Redis processes.&lt;/p&gt;

&lt;p&gt;Now, in the case of multi-access architecture, the main problem is mutex locks. To solve this problem, they used a message bus where all the incoming connection requests are placed, and a connection pool is created. The message worker eventually picks the connections and pairs them with the suitable data block.&lt;/p&gt;

&lt;p&gt;This beautiful architecture makes Dragonfly DB faster and more efficient.&lt;/p&gt;

&lt;p&gt;Follow for upcoming posts to learn more!&lt;/p&gt;

</description>
      <category>systemdesign</category>
      <category>database</category>
      <category>webdev</category>
    </item>
    <item>
      <title>9 Free VS Code Extensions to Boost Your Productivity! 🚀</title>
      <dc:creator>Mukesh Kuiry</dc:creator>
      <pubDate>Sun, 21 Jan 2024 10:31:45 +0000</pubDate>
      <link>https://dev.to/mukeshkuiry/9-free-vs-code-extensions-to-boost-your-productivity-3nm4</link>
      <guid>https://dev.to/mukeshkuiry/9-free-vs-code-extensions-to-boost-your-productivity-3nm4</guid>
      <description>&lt;h2&gt;
  
  
  Hey DEV Fam! 🚀
&lt;/h2&gt;

&lt;p&gt;Let's dive into the fantastic world of VS Code extensions! 🎉 One of the coolest aspects of Visual Studio Code is its extensive collection of extensions that can supercharge your coding experience without denting your wallet.&lt;/p&gt;

&lt;p&gt;Today, I'm excited to share 10 incredible free extensions from the VS Code Marketplace to take your coding game to the next level. Let's jump right in!&lt;/p&gt;

&lt;h2&gt;
  
  
  1. VS Code Auto Rename Tag 🏷️
&lt;/h2&gt;

&lt;p&gt;Say goodbye to tag renaming headaches! This nifty extension takes care of both opening and closing tags automatically.&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%2Fyeirz1gx5oazkluaetya.gif" 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%2Fyeirz1gx5oazkluaetya.gif" alt="VS Code Auto Rename Tag" width="600" height="79"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Prettier in VS Code ✨
&lt;/h2&gt;

&lt;p&gt;Make your code sparkle with the Prettier extension. It beautifies your code, ensuring readability. Choose to format on save or paste.&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%2F5v04m62ktd9l168ww5ok.gif" 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%2F5v04m62ktd9l168ww5ok.gif" alt="Prettier" width="600" height="185"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Convert Pixels to Rem in VS Code 🔄
&lt;/h2&gt;

&lt;p&gt;No more unit conversion headaches! This extension effortlessly converts between pixels (px) and root em (rem). Just press alt + z to switch between the two.&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%2F6uy37gwqebliq5zfv5zh.gif" 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%2F6uy37gwqebliq5zfv5zh.gif" alt="Convert Pixels" width="594" height="112"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  4. VS Code Flexbox Cheatsheet 🤸‍♂️
&lt;/h2&gt;

&lt;p&gt;Master Flexbox with this handy cheatsheet. Access it through shortcuts or by hovering over a flex display.&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%2F3kwgwyuosrumxlnmuskj.gif" 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%2F3kwgwyuosrumxlnmuskj.gif" alt="VS Code Flexbox Cheatsheet" width="600" height="228"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Grid Snippets VS Code Extension 📐
&lt;/h2&gt;

&lt;p&gt;Level up your CSS Grid game with intuitive shortcuts for displaying grids and setting grid-template-columns.&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%2F7qjreueymmq0e119o8i7.gif" 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%2F7qjreueymmq0e119o8i7.gif" alt="Grid Snippets" width="600" height="215"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Bracket Pair Colorizer 🌈
&lt;/h2&gt;

&lt;p&gt;Eliminate brace confusion! This extension assigns vibrant colors to different types of braces, enhancing code clarity.&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%2Fo5tr2qam9jgulbnc8gnd.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%2Fo5tr2qam9jgulbnc8gnd.png" alt="Bracket Pair Colorizer" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  7. VS Code Icons 🖼️
&lt;/h2&gt;

&lt;p&gt;Aesthetics matter! Elevate your coding experience with file icons reflecting the language or framework you're working in.&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%2Flyb81f59herxx7qtp4mp.gif" 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%2Flyb81f59herxx7qtp4mp.gif" alt="VS Code Icons" width="516" height="206"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  8. Polacode 📸
&lt;/h2&gt;

&lt;p&gt;Capture the beauty of your code with Polacode. Take stunning screenshots effortlessly with a simple shortcut.&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%2Fqkqo71gu2a8kb7e9ilgm.gif" 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%2Fqkqo71gu2a8kb7e9ilgm.gif" alt="Polacode" width="600" height="375"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  9. Code Time ⏰
&lt;/h2&gt;

&lt;p&gt;Track your coding journey! Code Time provides insights into progress, metrics, and even team collaboration – all for free.&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%2Fbbcus1kny1lk34or1uwn.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%2Fbbcus1kny1lk34or1uwn.png" alt="Code Time" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thanks for exploring these awesome extensions with me!&lt;/p&gt;

&lt;p&gt;Happy coding! 🚀💻&lt;/p&gt;

</description>
      <category>programming</category>
      <category>beginners</category>
      <category>productivity</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Overview of Basic Docker Terminologies</title>
      <dc:creator>Mukesh Kuiry</dc:creator>
      <pubDate>Fri, 19 Jan 2024 00:29:46 +0000</pubDate>
      <link>https://dev.to/mukeshkuiry/overview-of-basic-docker-terminologies-1pn0</link>
      <guid>https://dev.to/mukeshkuiry/overview-of-basic-docker-terminologies-1pn0</guid>
      <description>&lt;p&gt;&lt;strong&gt;Hello Dev friends! 👋&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Welcome to the series of &lt;a href="https://dev.to/mukeshkuiry/series/25979"&gt;Beginner to Expert guide on Docker 🐋 &amp;amp; Kubernetes ☸️ &lt;/a&gt; 🚀&lt;/p&gt;

&lt;p&gt;From our &lt;a href="https://dev.to/mukeshkuiry/evolution-of-docker-kubernetes-virtualization-1a9f"&gt;previous blog&lt;/a&gt;, I hope you got the idea of how &lt;strong&gt;Docker&lt;/strong&gt; comes in the present. &lt;/p&gt;

&lt;p&gt;If you haven't read it, I recommend you to read it before you jump into this article; it will ease your &lt;strong&gt;Docker&lt;/strong&gt; journey.&lt;/p&gt;

&lt;p&gt;Now, from this article, we will truly dive into &lt;strong&gt;Docker&lt;/strong&gt; tutorials, not actually from this article, but from the next article 😁, in this article, we will know the terminologies involved in &lt;strong&gt;Docker&lt;/strong&gt; (which is important) for a better understanding of the whole &lt;strong&gt;Docker&lt;/strong&gt; article series.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Containerization&lt;/strong&gt; 🛡️
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Containerization&lt;/strong&gt; is a modern technology that allows us to bind the whole binaries/libraries and source code into a single pot to run into any infrastructure.&lt;/p&gt;

&lt;p&gt;For a practical example, we can say that we can deploy a &lt;strong&gt;node.js&lt;/strong&gt; backend API into &lt;strong&gt;AWS EC2&lt;/strong&gt; infrastructure.&lt;/p&gt;

&lt;p&gt;Here combining the &lt;strong&gt;node.js&lt;/strong&gt; code and packages into a single container is called &lt;strong&gt;containerization&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Docker&lt;/strong&gt; 🐳
&lt;/h2&gt;

&lt;p&gt;People usually interchange the terms &lt;strong&gt;Docker&lt;/strong&gt; and &lt;strong&gt;containerization&lt;/strong&gt;, but both have different perspectives and use cases. While &lt;strong&gt;containerization&lt;/strong&gt; is a technique, &lt;strong&gt;Docker&lt;/strong&gt; is the popular toolkit to container an application.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Docker&lt;/strong&gt; helps us to &lt;strong&gt;containerize&lt;/strong&gt; the application and use this &lt;strong&gt;Docker&lt;/strong&gt; container to deploy in any infrastructure efficiently.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Images&lt;/strong&gt; 🖼️
&lt;/h2&gt;

&lt;p&gt;I guess, you may often come across the term &lt;code&gt;**docker image**&lt;/code&gt;, yes that is the image. Basically, an &lt;strong&gt;image&lt;/strong&gt; is a file containing the information to build a container.&lt;/p&gt;

&lt;p&gt;We usually start with a &lt;strong&gt;base image&lt;/strong&gt; and modify it according to our project needs.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Container&lt;/strong&gt; 🚢
&lt;/h2&gt;

&lt;p&gt;A &lt;strong&gt;container&lt;/strong&gt; is a lightweight portable instance of an &lt;strong&gt;image&lt;/strong&gt;, which is usually deployed in any infrastructure to run any application.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Ports&lt;/strong&gt; 🌐
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Containers&lt;/strong&gt; are usually deployed on a remote server and to communicate with that &lt;strong&gt;container&lt;/strong&gt;, we need to define the &lt;strong&gt;port&lt;/strong&gt;. So, a &lt;strong&gt;port&lt;/strong&gt; is the &lt;strong&gt;container gateway&lt;/strong&gt; that helps us to talk and use the deployed &lt;strong&gt;containerized&lt;/strong&gt; application. 🚪&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Volumes&lt;/strong&gt; 💽
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Volumes&lt;/strong&gt; refer to the amount of disk storage allocated to the &lt;strong&gt;container&lt;/strong&gt; during deployment. This &lt;strong&gt;volume&lt;/strong&gt; helps us to run the application efficiently. Wisely calculating &lt;strong&gt;volume&lt;/strong&gt; is crucial for efficient resource management.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Registry&lt;/strong&gt; 📦
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Registry&lt;/strong&gt; refers to the store of different &lt;strong&gt;container images&lt;/strong&gt;. It allows us to store our &lt;strong&gt;container images&lt;/strong&gt; with versions. It stores each &lt;strong&gt;image&lt;/strong&gt; with a unique name.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Docker hub&lt;/strong&gt; is a popular &lt;strong&gt;Docker container registry&lt;/strong&gt; to store &lt;strong&gt;Docker container images&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I guess these are enough for now to know; from the next post, we will jump into installation and then start with the main concepts of &lt;strong&gt;Docker&lt;/strong&gt; and &lt;strong&gt;Kubernetes&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Till then see you Bye Bye! 👋&lt;/p&gt;

&lt;p&gt;Follow for more &lt;a class="mentioned-user" href="https://dev.to/mukeshkuiry"&gt;@mukeshkuiry&lt;/a&gt; !&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.linkedin.com/in/mukeshkuiry" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;&lt;br&gt;
&lt;a href="https://twitter.com/mukeshkuiry07" rel="noopener noreferrer"&gt;X-(Twitter)&lt;/a&gt;&lt;/p&gt;

</description>
      <category>docker</category>
      <category>kubernetes</category>
      <category>tutorial</category>
      <category>beginners</category>
    </item>
    <item>
      <title>🎉 Celebrating 5000+ followers on DEV</title>
      <dc:creator>Mukesh Kuiry</dc:creator>
      <pubDate>Mon, 15 Jan 2024 11:15:04 +0000</pubDate>
      <link>https://dev.to/mukeshkuiry/celebrating-5000-followers-on-dev-23k8</link>
      <guid>https://dev.to/mukeshkuiry/celebrating-5000-followers-on-dev-23k8</guid>
      <description>&lt;p&gt;Hey DEV friends and followers! 🙌&lt;/p&gt;

&lt;p&gt;I just wanted to take a moment to thank each and every one of you for being with me on this journey. 🎉&lt;/p&gt;

&lt;p&gt;It brings me so much joy to share that we've surpassed 5000 followers! Your support means the world to me, and I'm genuinely grateful for this fantastic community. 🧑‍💻&lt;/p&gt;

&lt;p&gt;Here's to more exciting times ahead! Cheers! 🍻🍺&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%2Frs59wvth187x449f38op.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%2Frs59wvth187x449f38op.png" alt="image" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>beginners</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
    <item>
      <title>How Docker Evolved | History of Containerization</title>
      <dc:creator>Mukesh Kuiry</dc:creator>
      <pubDate>Thu, 11 Jan 2024 01:04:21 +0000</pubDate>
      <link>https://dev.to/mukeshkuiry/evolution-of-docker-kubernetes-virtualization-1a9f</link>
      <guid>https://dev.to/mukeshkuiry/evolution-of-docker-kubernetes-virtualization-1a9f</guid>
      <description>&lt;p&gt;&lt;strong&gt;Hello, Dev Freinds! 💖&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Welcome to the series of &lt;a href="https://dev.to/mukeshkuiry/series/25979"&gt;Beginner to Expert guide on Docker 🐋 &amp;amp; Kubernetes ☸️&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;From our &lt;a href="https://dev.to/mukeshkuiry/why-you-should-learn-docker-kubernetes--2gim"&gt;previous blog&lt;/a&gt;, I hope you got the &lt;strong&gt;idea&lt;/strong&gt; of &lt;strong&gt;why containers are used&lt;/strong&gt;. If you haven't yet read it, do check it out before jumping here.&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%2Frq4kxbejvj6psj37oocg.gif" 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%2Frq4kxbejvj6psj37oocg.gif" alt="let us begin" width="432" height="300"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now let's go way back to the past and understand how we came up with this idea of containers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bare Metal System
&lt;/h2&gt;

&lt;p&gt;Before &lt;strong&gt;containerization&lt;/strong&gt;, or even before &lt;strong&gt;virtualization&lt;/strong&gt;, there is only one type of machine, which is usually called a bare-metal system.&lt;/p&gt;

&lt;p&gt;In a bare-metal system, we usually have a host machine where we need to install &lt;strong&gt;OS&lt;/strong&gt;, &lt;strong&gt;binaries&lt;/strong&gt;, &lt;strong&gt;libraries&lt;/strong&gt;, and &lt;strong&gt;dependencies&lt;/strong&gt;, and then run applications on top of that.&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%2Fyuuwgfw8lipicn78kx0k.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%2Fyuuwgfw8lipicn78kx0k.png" alt="bare-metal system" width="800" height="574"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But there are a lot of issues with this system.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Here in the figure, we can see the &lt;strong&gt;shared level&lt;/strong&gt; of &lt;strong&gt;binaries&lt;/strong&gt; and &lt;strong&gt;libraries&lt;/strong&gt;. And now imagine you have two applications that require the same library but a &lt;strong&gt;different version&lt;/strong&gt;. So, maintaining two versions of the same library is difficult. For that, we need to set different &lt;strong&gt;environment variables&lt;/strong&gt; for different processes.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Due to these dependency issues, it's harder to manage multiple applications on the same machine. Which ultimately leads to &lt;strong&gt;low utilization&lt;/strong&gt; of resources, which makes it an &lt;strong&gt;inefficient system&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;As all the applications are running on the same host machine, the failure of one system can lead to the &lt;strong&gt;failure of multiple applications&lt;/strong&gt; because they may &lt;strong&gt;share the same dependencies&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The &lt;strong&gt;start-up&lt;/strong&gt; and &lt;strong&gt;shut-down&lt;/strong&gt; times of these systems are &lt;strong&gt;usually high&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Provisioning&lt;/strong&gt; a new system and &lt;strong&gt;decommissioning&lt;/strong&gt; a system takes lots of time (&lt;strong&gt;hours&lt;/strong&gt;).&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Virtual Machine
&lt;/h2&gt;

&lt;p&gt;Then, around &lt;strong&gt;2000–2005&lt;/strong&gt;, a new concept of virtual machines emerged to solve some of these problems.&lt;/p&gt;

&lt;p&gt;In a virtual machine system, the system tries to divide the system resources into &lt;strong&gt;multiple parts&lt;/strong&gt; and use them to run any &lt;strong&gt;application independently&lt;/strong&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%2Fqrz48h0chc6qjdtdzmaw.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%2Fqrz48h0chc6qjdtdzmaw.png" alt="virtual machine system" width="800" height="708"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There are also two types of virtual machine concepts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Type 1&lt;/strong&gt; virtual machines are basically where there is &lt;strong&gt;no&lt;/strong&gt; underlying virtual machine, and in &lt;strong&gt;Type 2&lt;/strong&gt; virtual machines, there is an &lt;strong&gt;underlying operating system&lt;/strong&gt; for the host machine.&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%2F7fja8k2oyohco0flq7ky.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%2F7fja8k2oyohco0flq7ky.png" alt="types of virtual machine" width="616" height="541"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So the main benefits of using a virtual machine rather than bare machines are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No dependency conflict&lt;/li&gt;
&lt;li&gt;Better utilization of resources, i.e., more efficiency.&lt;/li&gt;
&lt;li&gt;Small bluster radius&lt;/li&gt;
&lt;li&gt;Fast start-up and shut-down times&lt;/li&gt;
&lt;li&gt;Fast provision and decommission time (&lt;strong&gt;minutes&lt;/strong&gt;).&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Container
&lt;/h2&gt;

&lt;p&gt;To take the concept of virtual machines to the next level, we came across the concept of containers.&lt;/p&gt;

&lt;p&gt;The main difference between a virtual machine and a container is that a virtual machine has its &lt;strong&gt;own kernel&lt;/strong&gt;, while a container &lt;strong&gt;shares the kernel of the host machine&lt;/strong&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%2F9b36ro6tvwgs3bizwhq9.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%2F9b36ro6tvwgs3bizwhq9.png" alt="container" width="800" height="673"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The advantages of containers are:&lt;/p&gt;

&lt;p&gt;It's &lt;strong&gt;taking advantage of virtual machines&lt;/strong&gt; with faster startup, shutdown, provision (seconds), and decommission times. And also, it's &lt;strong&gt;lightweight to use in development&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Virtual Machine + Container
&lt;/h2&gt;

&lt;p&gt;The most common configuration you can see in real-life applications is that it &lt;strong&gt;combines&lt;/strong&gt; the concept of a virtual machine with containers for &lt;strong&gt;better performance&lt;/strong&gt; and &lt;strong&gt;isolation&lt;/strong&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%2Fz7zkiimwag8sv76gofb9.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%2Fz7zkiimwag8sv76gofb9.png" alt="Virtual Machine + Container" width="800" height="513"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Container Orchestration
&lt;/h2&gt;

&lt;p&gt;To take it one step further, Container Orchestration like &lt;strong&gt;Kubernetes&lt;/strong&gt; is used to manage multiple containers.&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%2Fk6y8y1jo1daz1mdajjfl.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%2Fk6y8y1jo1daz1mdajjfl.png" alt="kub" width="594" height="346"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here Node defines each independent container.&lt;/p&gt;

&lt;h2&gt;
  
  
  Trade-Off
&lt;/h2&gt;

&lt;p&gt;To summarize them all, I've prepared a chart that shows the benefits and difficulties of all the types of systems mentioned.&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%2Fwrl3kkgfcf88kgn212xz.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%2Fwrl3kkgfcf88kgn212xz.png" alt="Trade-Off" width="800" height="495"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I hope you liked the explanation of the history and evolution of virtualization.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;So, buckle up and go through this series to understand better. 🚀&lt;/p&gt;

&lt;p&gt;See you soon in the next blog. 👋&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Connect with me on &lt;a href="https://www.linkedin.com/in/mukeshkuiry" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt; and &lt;a href="https://twitter.com/mukeshkuiry7" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt; for more. 🌐👩‍💻&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>docker</category>
      <category>kubernetes</category>
      <category>devops</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Why You Should Learn Docker 🐋 &amp; Kubernetes ☸️?</title>
      <dc:creator>Mukesh Kuiry</dc:creator>
      <pubDate>Sun, 07 Jan 2024 00:01:22 +0000</pubDate>
      <link>https://dev.to/mukeshkuiry/why-you-should-learn-docker-kubernetes--2gim</link>
      <guid>https://dev.to/mukeshkuiry/why-you-should-learn-docker-kubernetes--2gim</guid>
      <description>&lt;p&gt;If you are a developer, I'm sure you must have heard this phrase: &lt;strong&gt;"It works on my machine."&lt;/strong&gt; It's heartbreaking when our code runs on your machine but behaves undesirable on a friend's machine.&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%2Fif42243sze1ehj0qhk4d.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%2Fif42243sze1ehj0qhk4d.png" alt="It works on my machine meme" width="480" height="313"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;There are multiple reasons for that.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It may happen because of a &lt;strong&gt;package error&lt;/strong&gt;, like when you use a &lt;strong&gt;different version&lt;/strong&gt; of a package and your friend is using an old version, so a feature is not accessible for your friend.&lt;/p&gt;

&lt;p&gt;Or may happen due to the operating system. like you have &lt;strong&gt;MacOS&lt;/strong&gt; but your friend has &lt;strong&gt;Windows OS&lt;/strong&gt;, and the library or package you are using &lt;strong&gt;may not be present&lt;/strong&gt; on your friend's operating system. blah blah blah!!&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Docker?
&lt;/h2&gt;

&lt;p&gt;Lemme give you some practical examples of what docker tries to solve. Surely this is going to blow 🤯 your mind.&lt;/p&gt;

&lt;h3&gt;
  
  
  Development
&lt;/h3&gt;

&lt;p&gt;Install Postgres, MongoDB, Node.js, run multiple scripts, etc. Oh, wait, you are on &lt;strong&gt;macOS&lt;/strong&gt;? Also, change these &lt;strong&gt;configurations&lt;/strong&gt;. It sounds familiar, naa. Yeah, these are the steps involved in setting up the development environment.&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%2F2krc5x2plnv3ofm3kfa8.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%2F2krc5x2plnv3ofm3kfa8.png" alt="Development" width="800" height="248"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What if I told you that you could do it in one step? Yes, you need to run the &lt;code&gt;docker compose up&lt;/code&gt; command. Easy pisy.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It makes the development environment setup so easy. &lt;/p&gt;

&lt;h3&gt;
  
  
  Deployment
&lt;/h3&gt;

&lt;p&gt;For deploying any project, you need to create a cloud instance, install OS, install libraries, install dependencies, copy binaries, and then run it with these options.&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%2Fj29rujo33fzrod3l9sls.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%2Fj29rujo33fzrod3l9sls.png" alt="deployment" width="400" height="300"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;But wait, there is a simple process: just run the container image with options. Deployed 🎉&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;So now deployment process is no longer complex, docker solves this problem by creating easy-to-use portable containers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Kubernetes?
&lt;/h2&gt;

&lt;p&gt;Now you may ask, if docker solves this problem then, what Kubernetes does?&lt;/p&gt;

&lt;p&gt;Imagine you have a web application that has &lt;strong&gt;gained popularity rapidly&lt;/strong&gt;. Initially, running a &lt;strong&gt;single instance&lt;/strong&gt; of your application on a server was sufficient. &lt;/p&gt;

&lt;p&gt;However, as user traffic grows, a single server becomes &lt;strong&gt;insufficient to handle the load efficiently&lt;/strong&gt;. Without Kubernetes, scaling your application manually would involve setting up additional servers, configuring load balancing, and managing traffic distribution a complex and time-consuming process.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Kubernetes helps here to automatically provision and remove server instances according to the load. It efficiently manages load balancers, ensures high availability, and seamlessly handles failures&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;So, I hope you now have the motivation to learn Docker and Kubernetes.&lt;/p&gt;

&lt;p&gt;Believe me, it is going to help a lot in your development process. and also give you an &lt;strong&gt;edge&lt;/strong&gt; over the &lt;strong&gt;hiring process&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;So, &lt;strong&gt;buckle up and go through this series&lt;/strong&gt; to understand better. 🚀&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;See you soon in the next blog. 👋&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Connect with me on &lt;a href="https://www.linkedin.com/in/mukeshkuiry" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt; and &lt;a href="https://twitter.com/mukeshkuiry07" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt; for more. 🌐👩‍💻&lt;/p&gt;

</description>
      <category>docker</category>
      <category>kubernetes</category>
      <category>beginners</category>
      <category>devops</category>
    </item>
    <item>
      <title>Beginner to Expert guide on Docker 🐋 &amp; Kubernetes ☸️ | Series</title>
      <dc:creator>Mukesh Kuiry</dc:creator>
      <pubDate>Sat, 06 Jan 2024 23:02:20 +0000</pubDate>
      <link>https://dev.to/mukeshkuiry/beginner-to-expert-guide-on-docker-kubernetes-series-2p3o</link>
      <guid>https://dev.to/mukeshkuiry/beginner-to-expert-guide-on-docker-kubernetes-series-2p3o</guid>
      <description>&lt;p&gt;Hello, techno-travelers! 🌐🚀&lt;/p&gt;

&lt;p&gt;Welcome to the new blog series on &lt;strong&gt;Docker 🐋 &amp;amp; Kubernetes ☸️&lt;/strong&gt;, where I'm going to unveil the mysterious power of containerization based on my 2 years of experience in developing containerized applications.&lt;/p&gt;

&lt;p&gt;I'm confident that by the end of this series, you will be able to easily containerize and deploy 🎉 your projects.&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%2F0w6zg8abcm9icqlwswzr.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%2F0w6zg8abcm9icqlwswzr.png" alt="docker" width="600" height="428"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now, let's quickly provide you with an overview of what I'm going to teach you.&lt;/p&gt;

&lt;h2&gt;
  
  
  Table of blogs ✍️
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Docker 🐋 Dive:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://dev.to/mukeshkuiry/why-you-should-learn-docker-kubernetes--2gim"&gt;Motivation behind Containers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/mukeshkuiry/evolution-of-docker-kubernetes-virtualization-1a9f"&gt;Docker's Evolution&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Decoding Docker Terms&lt;/li&gt;
&lt;li&gt;Setting Up Docker &amp;amp; Hello World&lt;/li&gt;
&lt;li&gt;Navigating 3rd Party Containers&lt;/li&gt;
&lt;li&gt;Creating a Demo with Docker&lt;/li&gt;
&lt;li&gt;Building Docker Images 101&lt;/li&gt;
&lt;li&gt;Understanding Container Registries&lt;/li&gt;
&lt;li&gt;Running and Managing Containers&lt;/li&gt;
&lt;li&gt;Container Security Essentials&lt;/li&gt;
&lt;li&gt;Interacting with Docker Objects&lt;/li&gt;
&lt;li&gt;Optimizing Development Workflow&lt;/li&gt;
&lt;li&gt;Code to Cloud: Deploying Containers&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Kubernetes ☸️ Journey:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Kubernetes Essentials&lt;/li&gt;
&lt;li&gt;Building a Local Kubernetes Cluster&lt;/li&gt;
&lt;li&gt;Creating and Scaling Deployments&lt;/li&gt;
&lt;li&gt;Services and Deployments with YAML&lt;/li&gt;
&lt;li&gt;Connecting Deployments&lt;/li&gt;
&lt;li&gt;Switching Runtimes: Docker to CRI-O &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Connect with me on &lt;a href="https://www.linkedin.com/in/mukeshkuiry" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt; and &lt;a href="https://twitter.com/mukeshkuiry07" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt; for more. 🌐👩‍💻&lt;/p&gt;

&lt;p&gt;Stay tuned for upcoming blogs!&lt;/p&gt;

&lt;p&gt;Till them keep coding! Bye 👋&lt;/p&gt;

</description>
      <category>docker</category>
      <category>kubernetes</category>
      <category>devops</category>
      <category>beginners</category>
    </item>
    <item>
      <title>10 Must-Know Git Commands for Every Developer</title>
      <dc:creator>Mukesh Kuiry</dc:creator>
      <pubDate>Fri, 05 Jan 2024 19:20:41 +0000</pubDate>
      <link>https://dev.to/mukeshkuiry/10-must-know-git-commands-for-software-engineers-3733</link>
      <guid>https://dev.to/mukeshkuiry/10-must-know-git-commands-for-software-engineers-3733</guid>
      <description>&lt;p&gt;Understanding Git and GitHub is crucial for any developer, providing effective version control and code management. Proficiency in these tools sets you apart and enhances your productivity. In this blog post, we will explore a set of Git commands to kickstart your journey into software development.&lt;/p&gt;

&lt;h2&gt;
  
  
  Git Vocabulary
&lt;/h2&gt;

&lt;p&gt;Before delving into the commands, let's acquaint ourselves with some Git terminologies. This understanding will not only help you grasp Git better but also provide a foundation for your overall comprehension.&lt;/p&gt;

&lt;h3&gt;
  
  
  Repository
&lt;/h3&gt;

&lt;p&gt;A repository, or repo, serves as a storage space where your project's source code and its version history are stored.&lt;/p&gt;

&lt;h3&gt;
  
  
  Working Directory
&lt;/h3&gt;

&lt;p&gt;The working directory is where you currently make changes to your project, housing the files you are actively working on.&lt;/p&gt;

&lt;h3&gt;
  
  
  Staging
&lt;/h3&gt;

&lt;p&gt;Staging acts as an intermediate area between the repository and your working directory. It's where you add changes before committing them to the main repository.&lt;/p&gt;

&lt;h3&gt;
  
  
  Commit
&lt;/h3&gt;

&lt;p&gt;A commit is a snapshot of proposed changes to the stage, identified by a unique identifier (SHA-1 hash) and accompanied by a commit message.&lt;/p&gt;

&lt;h3&gt;
  
  
  Branch
&lt;/h3&gt;

&lt;p&gt;A branch represents a parallel version of your repository, facilitating work on different features or bug fixes independently.&lt;/p&gt;

&lt;h3&gt;
  
  
  Merge
&lt;/h3&gt;

&lt;p&gt;Merging involves combining proposed changes into the main repository, often utilized to integrate new features into the main project.&lt;/p&gt;

&lt;h3&gt;
  
  
  Pull
&lt;/h3&gt;

&lt;p&gt;Pulling refers to fetching code from any remote repository and merging it into your local repository, i.e., working directory.&lt;/p&gt;

&lt;h3&gt;
  
  
  Push
&lt;/h3&gt;

&lt;p&gt;Pushing involves sending your local changes to any remote branch of any repository.&lt;/p&gt;

&lt;h3&gt;
  
  
  Clone
&lt;/h3&gt;

&lt;p&gt;Cloning is the process of creating a local copy of the main repository, establishing a connection for efficient pull and push.&lt;/p&gt;

&lt;h3&gt;
  
  
  Fetch
&lt;/h3&gt;

&lt;p&gt;Fetching downloads changes from any remote repository to the local repository, without directly merging them into your local repository. It is useful for reviewing changes before merging.&lt;/p&gt;

&lt;h3&gt;
  
  
  Fork
&lt;/h3&gt;

&lt;p&gt;Forking creates a personal copy of someone else's repository on your GitHub account, enabling changes without affecting the original repository.&lt;/p&gt;

&lt;h3&gt;
  
  
  Conflict
&lt;/h3&gt;

&lt;p&gt;A conflict arises when two or more branches have changes in the same part of the code, and Git cannot directly merge them.&lt;/p&gt;

&lt;h3&gt;
  
  
  Head
&lt;/h3&gt;

&lt;p&gt;In Git, HEAD is a pointer/reference always pointing to your latest commit in the current branch. When you make a new commit, HEAD moves to the top of your commit.&lt;br&gt;
 &lt;/p&gt;

&lt;p&gt;Now, let's explore the 10 Git commands one by one.&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%2Fs5zias7tsgsdjokp5g9p.gif" 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%2Fs5zias7tsgsdjokp5g9p.gif" alt="begin meme"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  1 - Adding and Committing Files Together
&lt;/h2&gt;

&lt;p&gt;Traditionally, in Git, we use the &lt;code&gt;git add *&lt;/code&gt; command to stage all modified files for a subsequent commit. Subsequently, we use the &lt;code&gt;git commit -m "commitMessage"&lt;/code&gt; command to commit these changes. However, a more streamlined command exists, achieving both tasks in a single step:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;

git commit &lt;span class="nt"&gt;-am&lt;/span&gt; &lt;span class="s2"&gt;"commitMessage"&lt;/span&gt;


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

&lt;/div&gt;

&lt;p&gt;The &lt;code&gt;-am&lt;/code&gt; flag allows us to stage these changes and commit them in one efficient operation.&lt;/p&gt;

&lt;h2&gt;
  
  
  2 - Creating and Switching to a Git Branch
&lt;/h2&gt;

&lt;p&gt;Similar to the previous scenario, another command combines the functionality of two commands. Instead of using separate commands, use &lt;code&gt;git branch branchName&lt;/code&gt; to create a branch and &lt;code&gt;git checkout branchName&lt;/code&gt; to switch to it. Achieve both tasks in a single step with the following command:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;

git checkout &lt;span class="nt"&gt;-b&lt;/span&gt; branchName


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

&lt;/div&gt;

&lt;p&gt;The &lt;code&gt;-b&lt;/code&gt; flag with the &lt;code&gt;git checkout&lt;/code&gt; command allows us to create a new branch and immediately switch to it.&lt;/p&gt;

&lt;h2&gt;
  
  
  3 - Delete a Git Branch
&lt;/h2&gt;

&lt;p&gt;To delete a branch in Git, use the &lt;code&gt;git branch -d&lt;/code&gt; or &lt;code&gt;git branch -D&lt;/code&gt; command. The &lt;code&gt;-d&lt;/code&gt; option is for a safe deletion, only deleting the branch if fully merged into the current branch. The &lt;code&gt;-D&lt;/code&gt; option is for forceful deletion, regardless of whether it's fully merged. Here are the commands:&lt;/p&gt;

&lt;p&gt;Safe deletion (checks for merge):&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;

git branch &lt;span class="nt"&gt;-d&lt;/span&gt; branchName


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

&lt;/div&gt;

&lt;p&gt;Forceful deletion (doesn’t check for merge):&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;

git branch &lt;span class="nt"&gt;-D&lt;/span&gt; branchName


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

&lt;/div&gt;
&lt;h2&gt;
  
  
  4 - Renaming a Git Branch
&lt;/h2&gt;

&lt;p&gt;To rename a branch, use the &lt;code&gt;git branch -m&lt;/code&gt; command followed by the current branch name and the new desired branch name. For example, to rename a branch called &lt;code&gt;oldBranch&lt;/code&gt; to &lt;code&gt;newBranch&lt;/code&gt;, run:&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;

git branch &lt;span class="nt"&gt;-m&lt;/span&gt; oldBranch newBranch


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

&lt;/div&gt;

&lt;p&gt;If you want to rename the current branch where you are working, without specifying the old name, use the following command:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;

git branch &lt;span class="nt"&gt;-m&lt;/span&gt; newBranchName


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

&lt;/div&gt;

&lt;p&gt;Here, you don’t need to specify the old branch name because Git will assume you want to rename the current branch to the new name.&lt;/p&gt;

&lt;h2&gt;
  
  
  5 - Unstaging a Specific File
&lt;/h2&gt;

&lt;p&gt;Occasionally, you may want to remove a particular file from the staging area, allowing additional modifications before committing. Use:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;

git reset filename


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

&lt;/div&gt;

&lt;p&gt;This will un-stage that file while keeping your changes intact.&lt;/p&gt;

&lt;h2&gt;
  
  
  6 - Discarding Changes to a Specific File
&lt;/h2&gt;

&lt;p&gt;To completely discard changes made to a specific file and revert it to its last committed state, use:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;

git checkout &lt;span class="nt"&gt;--&lt;/span&gt; filename


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

&lt;/div&gt;

&lt;p&gt;This command ensures the file returns to its previous state, undoing recent modifications. It’s a helpful way to start fresh on a particular file without affecting the rest of your changes.&lt;/p&gt;

&lt;h2&gt;
  
  
  7 - Updating Your Last Git Commit
&lt;/h2&gt;

&lt;p&gt;Imagine you’ve just made a commit in your Git repository, but then you realize that you forgot to include a change in that commit, or perhaps you want to fix the commit message itself. You don’t want to create a whole new commit for this small change. Instead, you want to add it to the previous commit. This is where you can use the command:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;

git commit &lt;span class="nt"&gt;--amend&lt;/span&gt; &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s1"&gt;'message'&lt;/span&gt;


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

&lt;/div&gt;

&lt;p&gt;This command modifies the most recent commit you made, combining any staged changes with your new comment to create an updated commit.&lt;/p&gt;

&lt;p&gt;A thing to remember is that if you have already pushed the commit to a remote repository, you will need to force push the changes using &lt;code&gt;git push --force&lt;/code&gt; to update the remote branch. A standard &lt;code&gt;git push&lt;/code&gt; operation appends a new commit to your remote repository rather than modifying the last commit.&lt;/p&gt;

&lt;h2&gt;
  
  
  8 - Stashing Changes
&lt;/h2&gt;

&lt;p&gt;Imagine you’re working on two different branches, A and B. While making changes in branch A, your team asks you to fix a bug in branch B. When you attempt to switch to branch B using &lt;code&gt;git checkout B&lt;/code&gt;, Git prevents it, displaying an error:&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%2Fmiro.medium.com%2Fv2%2Fresize%3Afit%3A809%2F1%2ASAEI_fhVWNDX-3FKtQG3SQ.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%2Fmiro.medium.com%2Fv2%2Fresize%3Afit%3A809%2F1%2ASAEI_fhVWNDX-3FKtQG3SQ.png" alt="Unable to change branch"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We can commit our changes as suggested by the error message. But committing is&lt;/p&gt;

&lt;p&gt;more like a fixed point in time, not an ongoing work in progress. This is where we can apply the error message’s second suggestion and use the stash feature. Use this command for stashing your changes:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;

git stash


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

&lt;/div&gt;

&lt;p&gt;&lt;code&gt;git stash&lt;/code&gt; temporarily saves changes that you're not ready to commit, allowing you to switch branches or work on other tasks without committing incomplete work.&lt;/p&gt;

&lt;p&gt;To reapply stashed changes in your branch, use &lt;code&gt;git stash apply&lt;/code&gt; or &lt;code&gt;git stash pop&lt;/code&gt;. Both commands restore the latest stashed changes. Stash applying simply restores the changes, while popping restores the changes and removes them from the stash. You can read more about stashing &lt;a href="https://opensource.com/article/21/4/git-stash" rel="noopener noreferrer"&gt;over here&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  9 - Reverting Git Commits
&lt;/h2&gt;

&lt;p&gt;Imagine you’re working on a Git project, and you discover that a particular commit introduced some undesirable changes. You need to reverse those changes without erasing the commit from history. Use the following command to undo that particular commit:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;

git revert commitHash


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

&lt;/div&gt;

&lt;p&gt;It’s a safe and non-destructive way to correct errors or unwanted alterations in your project.&lt;/p&gt;

&lt;p&gt;For instance, let’s say you have a series of commits:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Commit A&lt;/li&gt;
&lt;li&gt;Commit B (undesirable changes introduced here)&lt;/li&gt;
&lt;li&gt;Commit C&lt;/li&gt;
&lt;li&gt;Commit D&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To reverse the effects of Commit B, run:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;

git revert commitHashOfB


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

&lt;/div&gt;

&lt;p&gt;Git will create a new commit, let’s call it Commit E, which negates the changes introduced by Commit B. Commit E becomes the latest commit in your branch, and the project now reflects the state it would have been in if Commit B had never happened.&lt;/p&gt;

&lt;p&gt;If you’re wondering how to retrieve a commit hash, it’s straightforward using &lt;code&gt;git reflog&lt;/code&gt;. In the screenshot below, the highlighted portions represent the commit hashes that you can easily copy:&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%2Fmiro.medium.com%2Fv2%2Fresize%3Afit%3A809%2F1%2ATabzdwhXojmOg7uviZdKQA.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%2Fmiro.medium.com%2Fv2%2Fresize%3Afit%3A809%2F1%2ATabzdwhXojmOg7uviZdKQA.png" alt="Commit Hashes"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  10 - Resetting Git Commits
&lt;/h2&gt;

&lt;p&gt;Let’s assume you’ve made a commit to your project. However, upon inspection, you realize that you need to adjust or completely undo your last commit. For such a scenario, Git provides these powerful commands:&lt;/p&gt;

&lt;h3&gt;
  
  
  Soft reset
&lt;/h3&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;

git reset &lt;span class="nt"&gt;--soft&lt;/span&gt; HEAD^


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

&lt;/div&gt;

&lt;p&gt;When you use &lt;code&gt;git reset --soft HEAD^&lt;/code&gt;, you are performing a soft reset. This command allows you to backtrack on your last commit while preserving all your changes in the staging area. In simple words, you can easily uncommit while retaining your code changes, using this command. It is handy when you need to revise the last commit, perhaps to add more changes before committing again.&lt;/p&gt;

&lt;h3&gt;
  
  
  Mixed reset
&lt;/h3&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;

git reset &lt;span class="nt"&gt;--mixed&lt;/span&gt; HEAD^


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

&lt;/div&gt;

&lt;p&gt;This is the default behavior when you use &lt;code&gt;git reset HEAD^&lt;/code&gt; without specifying &lt;code&gt;--soft&lt;/code&gt; or &lt;code&gt;--hard&lt;/code&gt;. It un-commits the last commit and removes its changes from the staging area. However, it keeps these changes in your working directory. It is helpful when you want to un-commit the last commit and make changes from scratch while keeping the changes in your working directory before re-committing.&lt;/p&gt;

&lt;h3&gt;
  
  
  Hard reset
&lt;/h3&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;

git reset &lt;span class="nt"&gt;--hard&lt;/span&gt; HEAD^


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

&lt;/div&gt;

&lt;p&gt;Now, let’s talk about &lt;code&gt;git reset --hard HEAD^&lt;/code&gt;. It completely erases the last commit along with all the associated changes from your Git history. When you use &lt;code&gt;--hard&lt;/code&gt; flag, there's no going back. So use this with extreme caution when you want to discard the last commit and all its changes permanently.&lt;/p&gt;

&lt;p&gt;Thank you for reading. I hope this post is helpful, and you learned some new commands. If you have any further questions, don’t hesitate to reach out. Feel free to share any Git commands you tend to use in your daily routine and find super handy. :)&lt;/p&gt;

&lt;p&gt;Connect with me&lt;br&gt;
&lt;a href="https://www.linkedin.com/in/mukeshkuiry" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;&lt;br&gt;
&lt;a href="https://twitter.com/mukeshkuiry7" rel="noopener noreferrer"&gt;X (formerly Twitter)&lt;/a&gt;&lt;/p&gt;

</description>
      <category>git</category>
      <category>github</category>
      <category>softwareengineering</category>
      <category>programming</category>
    </item>
    <item>
      <title>GO vs RUST speed test | Which one to choose in 2024</title>
      <dc:creator>Mukesh Kuiry</dc:creator>
      <pubDate>Tue, 02 Jan 2024 20:58:46 +0000</pubDate>
      <link>https://dev.to/mukeshkuiry/go-vs-rust-speed-test-which-one-to-choose-in-2024-1ck</link>
      <guid>https://dev.to/mukeshkuiry/go-vs-rust-speed-test-which-one-to-choose-in-2024-1ck</guid>
      <description>&lt;h2&gt;
  
  
  &lt;strong&gt;TL;DR:&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Go, developed by Google, is simple and readable, excelling in concurrency. Rust, from Mozilla, prioritizes memory safety and performance, making it great for systems programming. Go is simpler, Rust offers more control.&lt;/p&gt;

&lt;p&gt;In performance, Go is efficient; Rust balances memory safety and performance.&lt;/p&gt;

&lt;p&gt;According to Stack Overflow, 13.24% use Go, while 84.66% admire Rust.&lt;/p&gt;

&lt;p&gt;Average salary: Golang - $92,760, Rust - $87,012.&lt;/p&gt;

&lt;p&gt;Recommendation: Go is beginner-friendly, Rust for advanced control. Choose based on familiarity and project complexity.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Introduction&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Go&lt;/strong&gt;, &lt;strong&gt;developed by&lt;/strong&gt; &lt;strong&gt;Google&lt;/strong&gt; in &lt;code&gt;2007&lt;/code&gt;, emphasizes simplicity, efficiency, and readability. It excels in concurrent programming and scalability, with a straightforward syntax, making it popular for building distributed systems and web servers.&lt;/p&gt;

&lt;p&gt;In contrast, &lt;strong&gt;Rust&lt;/strong&gt;, &lt;strong&gt;introduced by **&lt;/strong&gt;Mozilla** around &lt;code&gt;2010&lt;/code&gt;, prioritizes memory safety and performance. Ideal for systems programming, Rust's ownership system ensures memory safety without compromising performance, making it a powerful choice for building reliable and efficient systems.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Features&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt; &lt;br&gt;
&lt;strong&gt;Go:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Simplicity and Readability:&lt;/strong&gt; Go is designed with a straightforward and readable syntax, prioritizing ease of understanding and code maintenance.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Efficiency:&lt;/strong&gt; Go achieves efficiency through a garbage collector, managing memory automatically to optimize resource utilization.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Concurrency:&lt;/strong&gt; Go stands out for its built-in support for concurrent programming, offering goroutines and channels that simplify the development of scalable applications.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Rust:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Memory Safety:&lt;/strong&gt; Rust places a robust emphasis on memory safety, incorporating features such as ownership and borrowing alongside a borrow checker to prevent common memory management errors.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Performance:&lt;/strong&gt; Rust focuses on performance with zero-cost abstractions and low-level control, making it suitable for high-performance applications without compromising safety.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fearless Concurrency:&lt;/strong&gt; Rust provides a system for fearless concurrency, ensuring thread safety and empowering developers to write reliable and efficient concurrent code, particularly beneficial in systems programming scenarios.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In comparison, while Go excels in simplicity, readability, and efficient concurrency, Rust distinguishes itself with a strong commitment to memory safety, high performance, and a fearless approach to concurrency in the context of systems programming.&lt;/p&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;Performance&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;In the ever-evolving landscape of programming languages, developers often seek the right balance between simplicity, efficiency, and performance. In this exploration, we'll compare the performance of Go and Rust by measuring the time it takes to execute a seemingly simple task: printing numbers from &lt;code&gt;1&lt;/code&gt; to &lt;code&gt;1 million&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Go: A Symphony of Simplicity and Concurrency&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight go"&gt;&lt;code&gt;

&lt;span class="k"&gt;package&lt;/span&gt; &lt;span class="n"&gt;main&lt;/span&gt;

&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="s"&gt;"fmt"&lt;/span&gt;
    &lt;span class="s"&gt;"time"&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;func&lt;/span&gt; &lt;span class="n"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;startTime&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="n"&gt;time&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Now&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="m"&gt;1000000&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;fmt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Println&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="n"&gt;duration&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="n"&gt;time&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Since&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;startTime&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;fmt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Println&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Execution time:"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;duration&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;


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

&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Execution time: &lt;code&gt;240.3113184s&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Rust: A Dance of Safety and Performance&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight rust"&gt;&lt;code&gt;

&lt;span class="k"&gt;use&lt;/span&gt; &lt;span class="nn"&gt;std&lt;/span&gt;&lt;span class="p"&gt;::&lt;/span&gt;&lt;span class="nn"&gt;time&lt;/span&gt;&lt;span class="p"&gt;::&lt;/span&gt;&lt;span class="n"&gt;Instant&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;fn&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;let&lt;/span&gt; &lt;span class="n"&gt;start_time&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nn"&gt;Instant&lt;/span&gt;&lt;span class="p"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;now&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;..=&lt;/span&gt;&lt;span class="mi"&gt;1000000&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nd"&gt;println!&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"{}"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="k"&gt;let&lt;/span&gt; &lt;span class="n"&gt;duration&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;start_time&lt;/span&gt;&lt;span class="nf"&gt;.elapsed&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="nd"&gt;println!&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Execution time: {:?}"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;duration&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;


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

&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Execution time: &lt;code&gt;313.9177696s&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;After running these programs separately, we observed the execution times. While the specific times may &lt;strong&gt;vary based on the environment and hardware&lt;/strong&gt;, this simple experiment provides a glimpse into the relative performance of Go and Rust for a basic task.&lt;/p&gt;

&lt;p&gt;In our test, &lt;strong&gt;Go demonstrated its efficiency in handling the task&lt;/strong&gt;, leveraging its simplicity and built-in concurrency support. &lt;strong&gt;Rust, with its strong focus on memory safety and performance,&lt;/strong&gt; showcased its capabilities even in a seemingly straightforward scenario.&lt;/p&gt;

&lt;p&gt;It's important to note that performance considerations extend beyond a single task, and the choice between Go and Rust should be based on the specific requirements of your project. Whether you lean towards the &lt;strong&gt;simplicity of Go or the power of Rust&lt;/strong&gt;, these languages offer unique advantages that cater to diverse programming needs.&lt;/p&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;Developer Opinion&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt; &lt;br&gt;
In May &lt;code&gt;2023&lt;/code&gt;, more than &lt;code&gt;90,000&lt;/code&gt; developers participated in Stack Overflow's annual survey, sharing insights into their learning methods, skill enhancement strategies, and tool preferences. &lt;/p&gt;

&lt;p&gt;Among the &lt;code&gt;87,585&lt;/code&gt; responses analyzed, &lt;code&gt;11,596&lt;/code&gt; individuals, representing 13.24% of the respondents, reported using Go in the past year. &lt;/p&gt;

&lt;p&gt;And, &lt;code&gt;11,429&lt;/code&gt; participants, equivalent to &lt;code&gt;13.05%&lt;/code&gt;, indicated their usage of Rust over the same period.&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%2Fouqs1gg2c52jkw1r5vvr.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%2Fouqs1gg2c52jkw1r5vvr.png" alt="Go and Rust uses" width="800" height="617"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Apart from documenting the technologies developers utilized&lt;/strong&gt; in the past year, the survey also delves into the tools currently in use and those &lt;strong&gt;developers aspire to continue using&lt;/strong&gt; in the future.&lt;/p&gt;

&lt;p&gt;According to the survey findings, Rust is highly favored, with &lt;code&gt;84.66%&lt;/code&gt; of developers expressing admiration for the language, and &lt;code&gt;30.56%&lt;/code&gt; expressing a desire to continue using it. Go, while still popular, shows slightly lower figures, with &lt;code&gt;62.45%&lt;/code&gt; admiration and &lt;code&gt;20.59%&lt;/code&gt; expressing a desire to use it further.&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%2Frwy0rgj9cjwasj73rbxv.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%2Frwy0rgj9cjwasj73rbxv.png" alt="Admire" width="800" height="352"&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%2Fgpzh9ywhj6qksy04e4ff.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%2Fgpzh9ywhj6qksy04e4ff.png" alt="Admire" width="800" height="303"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As per the survey results, the average salary for a Golang developer is reported to be &lt;code&gt;$92,760&lt;/code&gt;, while Rust developers have an average salary of &lt;code&gt;$87,012&lt;/code&gt;. These figures provide insights into the compensation trends within the respective developer communities, with Golang developers commanding a slightly higher average salary compared to their Rust counterparts.&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%2F1r5oqh00m2vbij7l0j71.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%2F1r5oqh00m2vbij7l0j71.png" alt="Salary" width="800" height="346"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Read the whole survey here -&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;
&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
      &lt;div class="c-embed__cover"&gt;
        &lt;a href="https://survey.stackoverflow.co/2023/" class="c-link s:max-w-50 align-middle" rel="noopener noreferrer"&gt;
          &lt;img alt="" src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fsurvey.stackoverflow.co%2F2023%2Fup_%2Fsrc%2Fimg%2Fdev-survey-2023.png" height="420" class="m-0" width="800"&gt;
        &lt;/a&gt;
      &lt;/div&gt;
    &lt;div class="c-embed__body"&gt;
      &lt;h2 class="fs-xl lh-tight"&gt;
        &lt;a href="https://survey.stackoverflow.co/2023/" rel="noopener noreferrer" class="c-link"&gt;
          Stack Overflow Developer Survey 2023
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;p class="truncate-at-3"&gt;
          In May 2023 over 90,000 developers responded to our annual survey about how they learn and level up, which tools they're using, and which ones they want.
        &lt;/p&gt;
      &lt;div class="color-secondary fs-s flex items-center"&gt;
          &lt;img alt="favicon" class="c-embed__favicon m-0 mr-2 radius-0" src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fsurvey.stackoverflow.co%2F2023%2Ffavicon.a00ae1f1.ico" width="800" height="400"&gt;
        survey.stackoverflow.co
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  &lt;strong&gt;My Recommendation&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt; &lt;br&gt;
If you're new to coding, &lt;strong&gt;Go is a great pick with its simple and beginner-friendly features.&lt;/strong&gt; Its clear syntax makes learning the basics a breeze, making it an ideal choice for those starting their programming journey.&lt;/p&gt;

&lt;p&gt;On the flip side, if you're looking for a &lt;strong&gt;more advanced language that provides better control and performance, Rust&lt;/strong&gt; is a compelling option. Despite a steeper learning curve, Rust's emphasis on memory safety and concurrency offers a powerful toolkit for experienced developers tackling complex projects.&lt;/p&gt;

&lt;p&gt;Ultimately, the choice between Go and Rust hinges on your familiarity with coding and the complexity of the projects you aim to undertake. Go offers simplicity, while Rust provides a deeper understanding and greater control for those ready for a more advanced coding experience.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Follow for more such content. &lt;a class="mentioned-user" href="https://dev.to/mukeshkuiry"&gt;@mukeshkuiry&lt;/a&gt; :)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Do let me know your favorite programming language in the comment below.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>go</category>
      <category>rust</category>
      <category>webdev</category>
      <category>programming</category>
    </item>
    <item>
      <title>Top 8 Tech Skills You Must Learn in 2024 to Get a Job in Today's Dynamic Job Market</title>
      <dc:creator>Mukesh Kuiry</dc:creator>
      <pubDate>Sun, 31 Dec 2023 10:38:33 +0000</pubDate>
      <link>https://dev.to/mukeshkuiry/top-8-tech-skills-you-must-learn-in-2024-to-get-a-job-in-todays-dynamic-job-market-55pf</link>
      <guid>https://dev.to/mukeshkuiry/top-8-tech-skills-you-must-learn-in-2024-to-get-a-job-in-todays-dynamic-job-market-55pf</guid>
      <description>&lt;p&gt;The world of work is changing rapidly, and with it, the skills that employers are looking for. To stay ahead of the curve and land your dream job in 2024, it's essential to identify the hottest tech skills in demand.&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%2Ffmtuvxx3buzsg3k13eu1.jpeg" 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%2Ffmtuvxx3buzsg3k13eu1.jpeg" alt="main image streal"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Leadership with Empathy:&lt;/strong&gt; Forget the old-school, authoritarian leader. Today's successful leaders prioritize empathy, strategic thinking, and employee development. As AI and other disruptive technologies reshape the workplace, the ability to guide teams through change with compassion and understanding is crucial.&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%2Fur307u2cuz6lm34cvbyu.jpeg" 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%2Fur307u2cuz6lm34cvbyu.jpeg" alt="leader"&gt;&lt;/a&gt;&lt;br&gt;
 &lt;br&gt;
&lt;strong&gt;2. Artificial Intelligence (AI) Everywhere:&lt;/strong&gt; AI is no longer science fiction; it's rapidly transforming every industry. Coursera saw a whopping 6.8 million enrollments in AI-related courses this year, with "Generative AI for Everyone" becoming the fastest-growing course ever. Mastering AI fundamentals will give you a significant edge in the job market.&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%2Fg3esyshdi0x5x9vr3qcq.jpeg" 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%2Fg3esyshdi0x5x9vr3qcq.jpeg" alt="ai"&gt;&lt;/a&gt;&lt;br&gt;
 &lt;br&gt;
&lt;strong&gt;3. Cybersecurity Fortress:&lt;/strong&gt; With cyberattacks on the rise, cybersecurity skills are in high demand. Half of the top tech skills listed in the report are cybersecurity-related, and there's a global shortage of nearly 3.5 million cybersecurity professionals. Investing in these skills will open doors to exciting and well-paying opportunities.&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%2F20864v9e02a75rlj0c1r.jpeg" 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%2F20864v9e02a75rlj0c1r.jpeg" alt="cyber"&gt;&lt;/a&gt;&lt;br&gt;
 &lt;br&gt;
&lt;strong&gt;4. Business Savvy in the Digital Age:&lt;/strong&gt; The ability to navigate the digital landscape is essential for success in any field. Business skills, particularly in digital marketing and customer experience, are seeing explosive growth. Mastering these skills will make you a valuable asset to any organization.&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%2Fd3ima4bqa2xvcvwwbs20.jpeg" 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%2Fd3ima4bqa2xvcvwwbs20.jpeg" alt="business"&gt;&lt;/a&gt;&lt;br&gt;
 &lt;br&gt;
&lt;strong&gt;5. Data Whisperer:&lt;/strong&gt; Data is the new oil, and the ability to understand and communicate it effectively is a superpower. Data visualization, data analysis, and data storytelling are all top-growing skills. By investing in data literacy, you'll be able to unlock insights and make informed decisions, propelling yourself and your organization forward.&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%2Fjv1jlwi8dz6h3uaboqn8.jpeg" 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%2Fjv1jlwi8dz6h3uaboqn8.jpeg" alt="data"&gt;&lt;/a&gt;&lt;br&gt;
 &lt;br&gt;
&lt;strong&gt;6. Web Development Prowess:&lt;/strong&gt; The web is still the backbone of the digital world, and web development skills remain highly sought-after. Expertise in web frameworks like React and Angular, along with cloud computing skills, will keep you in demand across industries.&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%2F0le71bqufw7eqpnegxbz.jpeg" 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%2F0le71bqufw7eqpnegxbz.jpeg" alt="Web Development"&gt;&lt;/a&gt;&lt;br&gt;
 &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;7. Compliance Captain:&lt;/strong&gt; As AI raises new questions about data privacy and copyright, skills in audit and compliance are becoming increasingly important. This is particularly true for government institutions and organizations grappling with the ethical implications of emerging technologies.&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%2Ff9c5zphh27if9ovngoef.jpeg" 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%2Ff9c5zphh27if9ovngoef.jpeg" alt="compliance"&gt;&lt;/a&gt;&lt;br&gt;
 &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;8. Curated Learning Pathways:&lt;/strong&gt; Forget about piecemeal learning. Professional Certificates and Specializations, which offer structured learning paths, are driving significant skill rank changes. These programs not only enhance your skills but also boost your employability and internal mobility, making you a more attractive candidate to employers.&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%2F9m8d8fh377tl82gxgeey.jpeg" 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%2F9m8d8fh377tl82gxgeey.jpeg" alt="curated"&gt;&lt;/a&gt;&lt;br&gt;
 &lt;br&gt;
By focusing on these eight in-demand skills, you'll be well-positioned to thrive in the ever-evolving job market of 2024. Remember, staying ahead of the curve requires continuous learning and upskilling. Embrace the exciting tech landscape, invest in your skillset, and watch your career skyrocket!&lt;/p&gt;

&lt;p&gt;This blog post is just a starting point. Feel free to expand on each skill, provide specific learning resources, and share inspiring success stories to make your blog even more engaging and informative. Good luck!&lt;/p&gt;

</description>
      <category>programming</category>
      <category>job</category>
      <category>webdev</category>
      <category>interview</category>
    </item>
    <item>
      <title>What I'll be learning in 2024</title>
      <dc:creator>Mukesh Kuiry</dc:creator>
      <pubDate>Fri, 29 Dec 2023 20:28:30 +0000</pubDate>
      <link>https://dev.to/mukeshkuiry/what-ill-be-leaning-in-2024-1n9i</link>
      <guid>https://dev.to/mukeshkuiry/what-ill-be-leaning-in-2024-1n9i</guid>
      <description>&lt;p&gt;&lt;strong&gt;Hey fellow tech explorers!  Buckle up, because I'm about to blast off on a journey through my coding adventures in 2023 and the exciting roadmap I've charted for 2024.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2023: Building a Solid Foundation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In 2023, I dove headfirst into the vibrant world of frontend development, mastering the art of crafting dynamic and interactive interfaces with &lt;strong&gt;React JS ⚛️&lt;/strong&gt;, the king of component-based architecture.  &lt;/p&gt;

&lt;p&gt;To turbocharge my workflow, I embraced &lt;strong&gt;Next.js ⚡️&lt;/strong&gt;, its superpowered framework that brought server-side rendering and static site generation to the party.  &lt;/p&gt;

&lt;p&gt;And to add some pizazz to my interfaces, I sprinkled in the magic of &lt;strong&gt;Tailwind CSS ✨&lt;/strong&gt;, a utility-first approach to styling that let me whip up beautiful and responsive UIs in a flash.  &lt;/p&gt;

&lt;p&gt;To ensure my code stayed sparkling clean, I adopted &lt;strong&gt;TypeScript ️&lt;/strong&gt;, adding a layer of type safety and sanity to my projects. &lt;/p&gt;

&lt;p&gt;But the frontend was just the launchpad.  &lt;/p&gt;

&lt;p&gt;I craved the power of the backend, so I plunged into the world of &lt;strong&gt;Golang ⚡️&lt;/strong&gt;. This versatile language, with its lightning-fast performance and concurrency magic, quickly became my go-to weapon for tackling everything from web development to system programming. &lt;/p&gt;

&lt;p&gt;I also explored the vast realm of cloud computing with &lt;strong&gt;AWS ☁️&lt;/strong&gt;. From storage with S3 to serverless magic with Lambda, I learned to build scalable and cost-effective solutions that could handle anything the digital universe threw at them. ✨ &lt;/p&gt;

&lt;p&gt;To keep things spicy, I sprinkled in some &lt;strong&gt;Firebase&lt;/strong&gt; goodness, a one-stop shop for backend development and user authentication that made my life a breeze.  &lt;/p&gt;

&lt;p&gt;Finally, I rounded out my 2023 skillset with the ever-reliable &lt;strong&gt;MongoDB&lt;/strong&gt;, a NoSQL database that became my trusty sidekick for managing all sorts of data beasts. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2024: Diving Deeper and Exploring New Horizons&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In 2024, I'm gearing up for a full-fledged tech feast!  Here's a taste of what's cooking:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Going Deep in Familiar Waters&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Golang (Deep Dive) :&lt;/strong&gt; Time to unlock the hidden potential of Go! I'm diving deep into its concurrency model, memory management, and advanced features to unleash its full power on even the most complex projects. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;AWS (Deep Dive) ☁️:&lt;/strong&gt; The cloud is vast, and I'm not done exploring! I'm gearing up to master advanced AWS services for networking, security, and containerization, building an even more robust and adaptable cloud toolkit. &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Venturing into New Horizons&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Rust :&lt;/strong&gt; The whispers of Rust's memory safety and performance have been irresistible. In 2024, I'm taking the plunge to learn to build robust and reliable systems with this promising language. ️&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;AI/ML Integration :&lt;/strong&gt; The future is AI, and I'm ready to join the party! I'm excited to explore how I can integrate AI and machine learning into my projects, adding intelligence and personalization to user experiences. ✨&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Monorepos ️:&lt;/strong&gt; Managing multiple projects can be a tangled mess. I'm intrigued by the potential of monorepos to streamline my development workflow and foster collaboration. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Prompt Engineering 🪄:&lt;/strong&gt; The world of large language models is fascinating, and I'm curious to unlock their full potential. I'm diving into the art of crafting effective prompts to guide these AI beasts towards creative text generation and task completion. ✨&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So, there you have it! &lt;/p&gt;

&lt;p&gt;My tech odyssey continues, and I'm more excited than ever to explore the uncharted territories that 2024 holds.  &lt;/p&gt;

&lt;p&gt;Stay tuned as I document my journey, share insights, and hopefully inspire you to join me on this incredible adventure!  &lt;/p&gt;

&lt;p&gt;Remember, the only limit is your imagination (and maybe a few lines of code ).  &lt;/p&gt;

&lt;p&gt;Let's keep coding, keep learning, and keep pushing the boundaries of what's possible!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>beginners</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
