<?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: Utkarsh Chourasia</title>
    <description>The latest articles on DEV Community by Utkarsh Chourasia (@jammutkarsh).</description>
    <link>https://dev.to/jammutkarsh</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%2F875559%2F01c69264-fda0-49be-a6a9-140f0df27981.png</url>
      <title>DEV Community: Utkarsh Chourasia</title>
      <link>https://dev.to/jammutkarsh</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jammutkarsh"/>
    <language>en</language>
    <item>
      <title>DevOps In Daily Life: Part 2</title>
      <dc:creator>Utkarsh Chourasia</dc:creator>
      <pubDate>Wed, 05 Oct 2022 13:47:44 +0000</pubDate>
      <link>https://dev.to/jammutkarsh/devops-in-daily-life-part-2-3bm5</link>
      <guid>https://dev.to/jammutkarsh/devops-in-daily-life-part-2-3bm5</guid>
      <description>&lt;p&gt;In &lt;a href="https://dev.to/jammutkarsh/devops-in-daily-life-part-1-57hj"&gt;part 1&lt;/a&gt;  we learnt about a workflow problem. In this, the 2nd part we are going to solve it, using some JavaScript code!&lt;/p&gt;

&lt;h2&gt;
  
  
  App Script
&lt;/h2&gt;

&lt;p&gt;You can find the whole overview &lt;a href="https://developers.google.com/apps-script/overview" rel="noopener noreferrer"&gt;here&lt;/a&gt;. In short it is Google's flavour of JavaScript and a low-code platform to programmatically automate Google Suite line of products.&lt;/p&gt;

&lt;p&gt;A few things which I discovered are&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Notify us is someone accesses our document.&lt;/li&gt;
&lt;li&gt;Send messages using 3rd party integration to Discord or Slack channels when an event is triggered. (say a Google Form is submitted.)&lt;/li&gt;
&lt;li&gt;Export PDF and send mail of some reports.&lt;/li&gt;
&lt;li&gt;Upload data and use the template of a Google Sheet to automatically populate it.&lt;/li&gt;
&lt;li&gt;Export Resume and Cover Letter to PDF.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The list is only limited by your creativity. In the end, it comes down to programming!&lt;/p&gt;

&lt;p&gt;&lt;em&gt;PS:Additionally, you gained a basic understanding of continuous integration and delivery (CI/CD). Continuously integrating changes to the pro-docs; continuously delivering pro-docs to various platforms.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Technical Overview
&lt;/h3&gt;

&lt;p&gt;It's time to start writing some code now. Here is what we are going to do in our code.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Delete all the files in the folder.&lt;/li&gt;
&lt;li&gt;Generate a new Resume.PDF&lt;/li&gt;
&lt;li&gt;Generate a new CoverLetter.PDF&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Steps
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;STEP 1:&lt;/strong&gt; Open &lt;a href="https://script.google.com/home" rel="noopener noreferrer"&gt;App Script&lt;/a&gt; and start a new project. Maybe rename it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;STEP 2:&lt;/strong&gt; Remove the boiler plate code from the project&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;STEP 3:&lt;/strong&gt; Paste the following code
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;resumeID&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;DriveApp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getFileById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Your Resume Doc ID&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;coverLetterID&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;DriveApp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getFileById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Your Cover Letter Doc ID&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;exportFolderID&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Your Folder ID&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;

&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;myFunction&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;files&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;DriveApp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getFolderById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;exportFolderID&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;getFiles&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
  &lt;span class="k"&gt;while &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;files&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;hasNext&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;files&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;next&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;setTrashed&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="nf"&gt;generateResume&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
  &lt;span class="nf"&gt;generateCoverLetter&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;generateResume&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;blob&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;resumeID&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getAs&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;application/pdf&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="nx"&gt;DriveApp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getFolderById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;exportFolderID&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;createFile&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;blob&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;setName&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Resume&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;generateCoverLetter&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;blob&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;coverLetterID&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getAs&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;application/pdf&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="nx"&gt;DriveApp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getFolderById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;exportFolderID&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;createFile&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;blob&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;setName&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;General Cover Letter&lt;/span&gt;&lt;span class="dl"&gt;'&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;ul&gt;
&lt;li&gt;
&lt;strong&gt;STEP 4:&lt;/strong&gt; Replace the &lt;code&gt;coverLetterID&lt;/code&gt;, &lt;code&gt;resumeID&lt;/code&gt; and &lt;code&gt;exportFolderID&lt;/code&gt; with your specific document IDs.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These ID are present in the URL when you open the document in a tab.&lt;/p&gt;

&lt;p&gt;For example, &lt;code&gt;https://docs.google.com/document/d/HelloThisIsTheIDOverHereAbCdEfGh123456/edit&lt;/code&gt;, we need the portion after &lt;code&gt;d/&lt;/code&gt; and before &lt;code&gt;/edit&lt;/code&gt;. (This is what we require; &lt;code&gt;HelloThisIsTheIDOverHereAbCdEfGh123456&lt;/code&gt;)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fbusy-in-life%2FBlog-Image%2Fmain%2FDevOpsInDailyLife%2FDocID.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fbusy-in-life%2FBlog-Image%2Fmain%2FDevOpsInDailyLife%2FDocID.png" alt="Document ID Extraction" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The folderID will be something like &lt;code&gt;https://drive.google.com/drive/u/0/folders/HereIsTheFolderIDYouMustBeLookingFor&lt;/code&gt; the last section after &lt;code&gt;folders/&lt;/code&gt;. (This is what we require;&lt;code&gt;HereIsTheFolderIDYouMustBeLookingFor&lt;/code&gt;)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fbusy-in-life%2FBlog-Image%2Fmain%2FDevOpsInDailyLife%2FFolderID.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fbusy-in-life%2FBlog-Image%2Fmain%2FDevOpsInDailyLife%2FFolderID.png" alt="Folder ID Extraction" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;STEP 5:&lt;/strong&gt; Save the script, &lt;code&gt;ctrl/cmd + s&lt;/code&gt; or you will see a save icon&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;STEP 6:&lt;/strong&gt; Run it! &lt;code&gt;ctrl/cmd + r&lt;/code&gt; or you will see a play icon&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;On the first run, you will be asked for permission. Allow them and you will be good to go.&lt;br&gt;
&lt;em&gt;Here is some pictorial flow!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fbusy-in-life%2FBlog-Image%2Fmain%2FDevOpsInDailyLife%2FAuth1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fbusy-in-life%2FBlog-Image%2Fmain%2FDevOpsInDailyLife%2FAuth1.png" alt="1" width="800" height="400"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fbusy-in-life%2FBlog-Image%2Fmain%2FDevOpsInDailyLife%2FAuth2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fbusy-in-life%2FBlog-Image%2Fmain%2FDevOpsInDailyLife%2FAuth2.png" alt="2" width="800" height="400"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fbusy-in-life%2FBlog-Image%2Fmain%2FDevOpsInDailyLife%2FAuth3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fbusy-in-life%2FBlog-Image%2Fmain%2FDevOpsInDailyLife%2FAuth3.png" alt="3" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;No errors in the execution log? Yes? Check the folder and you will have your PDF versions of the pro-docs.&lt;/p&gt;

&lt;p&gt;Here, we end our automation. In the last and 3rd part(coming soon), we take a deeper dive into the code and try to understand what it means.&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>cloud</category>
      <category>tooling</category>
      <category>devops</category>
    </item>
    <item>
      <title>DevOps In Daily Life: Part 1</title>
      <dc:creator>Utkarsh Chourasia</dc:creator>
      <pubDate>Wed, 05 Oct 2022 13:42:07 +0000</pubDate>
      <link>https://dev.to/jammutkarsh/devops-in-daily-life-part-1-57hj</link>
      <guid>https://dev.to/jammutkarsh/devops-in-daily-life-part-1-57hj</guid>
      <description>&lt;p&gt;The time of year when I am applying to several internships. I'm browsing several blogs, YouTube videos, and feedback from various sources. To get the perfect output of "How to create the ideal resume and cover letter?" This is not a blog where I teach you how to write the perfect the professional documents(&lt;strong&gt;pro-docs&lt;/strong&gt; like resumes and cover-letters). Instead I will help you save some time&lt;/p&gt;

&lt;p&gt;I usually spend an hour or so researching and developing pro-docs rather than spending a whole day on it. Since, I improvise on almost daily basis, the pro-docs needs to be exported into PDF format. My preferred tool for creating pro-docs is Google Docs (&lt;strong&gt;G-Docs&lt;/strong&gt;), which is a part of G-Suite. The PDF are then uploaded to a publicly available folder (Google Drive's Folder) so that I may distribute them on GitHub, LinkedIn, and other sites.&lt;/p&gt;

&lt;p&gt;It becomes monotonous, dull, burdensome, boring, tedious to&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Make a few changes everyday(until the pro-docs are prefect).&lt;/li&gt;
&lt;li&gt;Download the updated pro-docs.&lt;/li&gt;
&lt;li&gt;Delete the old ones from the folder.&lt;/li&gt;
&lt;li&gt;Upload the updated pro-docs.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;One strategy would be to distribute the pro-docs directly as a Google Doc's link rather than the PDF.&lt;br&gt;
The above tedious and repetitive tasks are all over! Right? No, this creates a new set of issues.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Need for PDF&lt;/strong&gt;: The majority of employment sites demand that you submit your professional documents in PDF format. The process of opening the link and exporting to PDF is still included.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;50% Complete&lt;/strong&gt;: If I haven't finalised all of the revisions, this document will be available online in a partially finished state.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Streaming mistakes live&lt;/strong&gt;: If you are revising the pro-docs and someone is looking at your resume, in G-Docs, at the same time. They may watch mistakes and advancements being made in real time. It can occasionally be a little humiliating.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The monotonous, dull, burdensome, boring, tedious tasks that I mentioned, these can be automated!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fbusy-in-life%2FBlog-Image%2Fmain%2FDevOpsInDailyLife%2FMentoLife.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fbusy-in-life%2FBlog-Image%2Fmain%2FDevOpsInDailyLife%2FMentoLife.jpeg" alt="Mentos Life" width="800" height="400"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;DevOps Zindagi*&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;See &lt;a href="https://dev.to/jammutkarsh/devops-in-daily-life-part-2-3bm5"&gt;Part 2&lt;/a&gt;&lt;/p&gt;

</description>
      <category>programming</category>
      <category>productivity</category>
      <category>tooling</category>
      <category>career</category>
    </item>
    <item>
      <title>3 ways Docker changed my life!</title>
      <dc:creator>Utkarsh Chourasia</dc:creator>
      <pubDate>Sun, 12 Jun 2022 14:39:24 +0000</pubDate>
      <link>https://dev.to/jammutkarsh/3-ways-docker-changed-my-life-42g5</link>
      <guid>https://dev.to/jammutkarsh/3-ways-docker-changed-my-life-42g5</guid>
      <description>&lt;p&gt;My goal with this article is to motivate you to try a new technology or maybe use it in a more personal way(than the usual 'this will get me a job' way).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Article TLDR;&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Much more organized.&lt;/li&gt;
&lt;li&gt;Zero-breaking packages.&lt;/li&gt;
&lt;li&gt;Testing and learning made easy.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;The Story&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;One of the steps to becoming a 'DevOps Engineer' I had to be comfortable with GNU/Linux and &lt;a href="https://www.docker.com/" rel="noopener noreferrer"&gt;Docker&lt;/a&gt;. I was amazed by the concept of containerization. This solved a few problems, or I should say improved, the way I organized my files, programs, software, and the way I worked. Less clutter(at least I experienced it).&lt;/p&gt;

&lt;p&gt;I liked the methodology so much that I format my mac, and&lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1463160276828700685-582" src="https://platform.twitter.com/embed/Tweet.html?id=1463160276828700685"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1463160276828700685-582');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1463160276828700685&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;p&gt;So let's get started 🏁🏁🏁&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Side Note: I am gonna use the word *&lt;/em&gt;'package'** for development kits like go, python, JDK, etc.*&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Install and track.
&lt;/h3&gt;

&lt;p&gt;If I wanted to learn something, the very first thing I needed to do was to install its package.&lt;br&gt;
Here is the step count of the process.&lt;br&gt;
&lt;code&gt;Visit their website -&amp;gt; Download the package -&amp;gt; Install it -&amp;gt; Open IDE and try it.&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6w2ym1x82d1d1qvlpgv7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6w2ym1x82d1d1qvlpgv7.png" alt="https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6w2ym1x82d1d1qvlpgv7.png" width="800" height="246"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This whole one-time process takes up a lot of time. Especially installation if you are on a slow laptop and here comes the baggage:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Now I have to keep track of a package on my laptop.&lt;/li&gt;
&lt;li&gt;Search how to uninstall it &lt;em&gt;( because every package has a different method and is sometimes difficult too)&lt;/em&gt; and make sure there are no files left in my limited storage space.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;With Docker, it's as easy as:&lt;br&gt;
&lt;code&gt;Find the docker image to run -&amp;gt; docker run -d -it  IMG-name -&amp;gt; Open IDE and try it.&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhowpil0r1o0ecvavswf5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhowpil0r1o0ecvavswf5.png" alt="https://dev-to-uploads.s3.amazonaws.com/uploads/articles/howpil0r1o0ecvavswf5.png" width="800" height="246"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Not to mention, I am doing this with just a terminal and sometimes a&lt;/p&gt;

&lt;p&gt;&lt;a href="http://hub.docker.com/" rel="noopener noreferrer"&gt;hub.docker.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;tab. Now,&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;docker image ls&lt;/code&gt; and here is the list of things I was working on.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;docker remove IMG-name(s)&lt;/code&gt; and it's gone.&lt;/li&gt;
&lt;li&gt;With containerization technology, it is taking up less space.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  2. Possibility of software breaking or interference.
&lt;/h3&gt;

&lt;p&gt;This might be a small issue, possibly you or I might never encounter it but now, I have a package installed on my machine which can intervene with other packages or software.&lt;/p&gt;

&lt;p&gt;The best real-life example that I have been in is python.&lt;br&gt;
&lt;code&gt;brew install python@3&lt;/code&gt; and boom I have python3 installed but there is a program that runs on python2. So I have to install and change the default python version.&lt;br&gt;
This is annoying. What if I have a project in py3, &lt;code&gt;python main.py&lt;/code&gt;, and throws an error or something.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Learning GNU/Linux.
&lt;/h3&gt;

&lt;p&gt;I advocate for everyone on learning Linux, and the best way to learn Linux is by getting their hands dirty. After convincing one to understand, the question of where is the dirt?&lt;/p&gt;

&lt;p&gt;Earlier, my most straightforward recommendation was&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;WSL/WSL2 for windows &lt;em&gt;(Medium Difficulty)&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;Using a VM &lt;em&gt;(Fairly Difficult)&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;Native Install &lt;em&gt;(Fairly Difficult)&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;Using Cloud &lt;em&gt;(Expensive and a little complex)&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All these come with their level of difficulty and challenge, which might be fun if you are interested or just 'don't want to learn Linux' pain.&lt;/p&gt;

&lt;p&gt;Docker is easy to recommend because:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Easy to install&lt;/li&gt;
&lt;li&gt;Easy to manage&lt;/li&gt;
&lt;li&gt;I could give predefined commands to enter the shell.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Hold up!
&lt;/h2&gt;

&lt;p&gt;Let's be real, there are some downsides to it&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;No GUI interaction&lt;/strong&gt;: You will only be learning Linux in the shell (Although that's where you will be working in production).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bandwidth Consumption&lt;/strong&gt;: downloading a docker image and installing the remote server in VSCode consumes a lot of bandwidth. When there is no internet, even if you have an image downloaded, you can't open and run on an IDE. You can't even use vim.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Processing Power&lt;/strong&gt;: You do need a good workstation to run docker, which consumes a significant amount of power, memory, and CPU on Mac and windows especially.&lt;/li&gt;
&lt;/ol&gt;




&lt;p&gt;You might be overwhelmed or confused or wondering about a lot of terms used here like, containerization, images(docker and !whale.png), and Linux maybe. You will see them in upcoming blogs. (Also open to correction if any, just send me a mail @&lt;a href="mailto:5.utkarshc@gmail.com"&gt;5.utkarshc@gmail.com&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;That's all from my side, see you in the next one 🚀!&lt;/p&gt;

</description>
      <category>docker</category>
      <category>linux</category>
      <category>beginners</category>
      <category>writing</category>
    </item>
  </channel>
</rss>
