<?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: Altaf Shaikh</title>
    <description>The latest articles on DEV Community by Altaf Shaikh (@ialtafshaikh).</description>
    <link>https://dev.to/ialtafshaikh</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%2F420769%2F1f907763-ee48-4a32-8d87-cf5c27effb60.jpeg</url>
      <title>DEV Community: Altaf Shaikh</title>
      <link>https://dev.to/ialtafshaikh</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ialtafshaikh"/>
    <language>en</language>
    <item>
      <title>How Building A Full Stack Application Helped me gained Industry Level Experience.</title>
      <dc:creator>Altaf Shaikh</dc:creator>
      <pubDate>Sat, 07 Aug 2021 04:36:51 +0000</pubDate>
      <link>https://dev.to/ialtafshaikh/how-building-a-full-stack-application-helped-me-gained-industry-level-experience-3fgl</link>
      <guid>https://dev.to/ialtafshaikh/how-building-a-full-stack-application-helped-me-gained-industry-level-experience-3fgl</guid>
      <description>&lt;p&gt;Hello Folks👋,&lt;/p&gt;

&lt;p&gt;I Recently got Graduated🎓 in 2020, yep in the Pandemic. We all hit very hard by this Corona Pandemic and we all got stuck at home for very long. We all realize the Importance of Socializing, Fitness (Physically as well Mentally), Diet of course.&lt;/p&gt;

&lt;p&gt;The Motive of writing ✍️ this article is to share the knowledge and skills I developed So Far during this Pandemic, which was a very great opportunity for me as well as for all of you to Use this time to become more productive like never before, tell me your story in the comment section, I will love to hear from you. Moving on When I was in the Final Semester of my college which generally runs between &lt;strong&gt;Nov 2019&lt;/strong&gt; To** June 2020**. I Got placed in the Tech Company from College Campus and that was my biggest achievement so far after getting rejected from Interviews and Aptitude Rounds.&lt;/p&gt;

&lt;p&gt;So after that, I had nothing to do except my college Curriculum, and deep inside my mind I always wanted to do something like a startup, following my passion, or something out of the box. But I nor Find my passion nor I got any idea to start the Startup.&lt;/p&gt;

&lt;p&gt;"One thing About me: So far from my 2nd semester to my 7th Semester, I Choose Python as my primary language in my sem 4 and I continue to use it to explore the Web Fundamentals, and From that, I developed strong technical skills in me, but there is always a scope for improvement"&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%2F3zrey65nxynj7dhczs1l.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%2F3zrey65nxynj7dhczs1l.png" alt="no-exp-meme.png" width="500" height="564"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Especially in India, We all have heard that our Computer Science and IT Engineering graduates don't have the right skills set and are not fit for the Job. And This taught was always in my mind and we have to do something to stand out from the crowd and become the best in our field. &lt;/p&gt;

&lt;p&gt;But the question was How?? How we are going to get the right industry skills without really working on it. As our Curriculum is mostly theory Based so students have to put extra effort to work on their skills. &lt;/p&gt;

&lt;p&gt;But there is one more problem that most students are willing to put effort into building their skills but they don't have the right guidance/mentorship. Because you can't learn something if you don't know what to learn and for self-learner, they have to put a lot of effort in research and after lots of trial and error they understand and figure out whats will be good for them, but not everyone can put so much of time and efforts, right?? &lt;/p&gt;

&lt;p&gt;Things are not clear when you are starting, you don't know what is right or what is wrong the only way to know is to try it out.&lt;/p&gt;

&lt;p&gt;With all that said, We all know that we are living in the age of Google, what is not available on the internet, everything is available and that too for &lt;strong&gt;free&lt;/strong&gt;. &lt;em&gt;I repeat, For free&lt;/em&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%2Fznjvzhm3pbd650vfbj5c.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fznjvzhm3pbd650vfbj5c.jpeg" alt="elon-musk-everything-is-free.jpg" width="637" height="640"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;You don't believe, right!! See this Website &lt;a href="https://teachmebro.com" rel="noopener noreferrer"&gt;Teach Me Bro&lt;/a&gt;. I build this with a cost of Just Rs 95 that too with GST, As I wanted &lt;code&gt;.com&lt;/code&gt; domain else that too I could get it for &lt;code&gt;free&lt;/code&gt;. Spectacular right !!&lt;/p&gt;

&lt;p&gt;If you still think, you have an Idea and you wanted to showcase that to the world but you don't have enough money to build the Website or Mobile App well, then I am sorry to say that you have not explored the internet very well.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Thank you so much if you are still reading the Post. Trust me your time will worth spending here. Let move ahead with ado.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://www.teachmebro.com" rel="noopener noreferrer"&gt;TeachMeBro&lt;/a&gt; 🧑‍💻
&lt;/h2&gt;

&lt;p&gt;With a mindset to get highly skilled at Web Development Skills, I thought to build a Blogging Platform where I will share my Knowledge and expose to the technologies to my juniors in their early stages with proper guidance &amp;amp; direction. Initially, my Only aim was this but later With Pandemic gave me to open up my wings more, lets discuss them later in the post.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.youtube.com/watch?v=1CTSqc8XNsc" rel="noopener noreferrer"&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%2Fpbb15e4zvjqyantq5owa.jpg" alt="IMAGE ALT TEXT HERE" width="480" height="360"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But Hold on!! You were thinking there are a lot of platforms available to do blogging, why you are re-inventing the wheel and not reusing the existing Websites like&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Blogger&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Medium&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dev.to&lt;/strong&gt; (I was not aware of such a site early)&lt;/li&gt;
&lt;li&gt;*&lt;em&gt;Hashnode *&lt;/em&gt;(I was not aware of such a site early)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But My Aim was to hone my Developing and Programming skills and I wanted to explore how these things are made and How one I can build the same.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I wanted to become an expert in Django Framework for that I need to explore the framework in-depth&lt;/li&gt;
&lt;li&gt;I wanted to Get the Whole Idea of Developing a web application locally and with Continuous Integration and Continuous Deployment how I can seamlessly push code to production.&lt;/li&gt;
&lt;li&gt;Wanted to Learn How to Rank The Website on google, how to optimized web pages for SEO&lt;/li&gt;
&lt;li&gt;How to Architect and Design the Web App to Serve the Clients.&lt;/li&gt;
&lt;li&gt;To Design Frontend UI to understand the Frontend Technologies better&lt;/li&gt;
&lt;li&gt;To Get the 360 View of the application development, which will help me to become a better developer and problem solver, and System Designer.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So that's why I Decide to Build things from scratch to gain the fundamentals knowledge of web development not only theoretically but to experience it practically in a real-world scenario before working formally in any company. And Trust Me this helped he a lot in my JOB training, It made my foundation strong and I was able to Grasp thing quickly and this helps me to understand web fundamentals better and made me dive deep into it.&lt;/p&gt;

&lt;h2&gt;
  
  
  How did I Achieve All this?🤔
&lt;/h2&gt;

&lt;h3&gt;
  
  
  I Used ** &lt;a href="https://education.github.com/pack" rel="noopener noreferrer"&gt;Github Education Pack&lt;/a&gt; ** to build the TeachMeBro Project
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;What is Github Education Pack ?&lt;/strong&gt; 👀&lt;/p&gt;

&lt;p&gt;Github Education Pack is the most significant set of free tools and services brought to you by &lt;strong&gt;GitHub&lt;/strong&gt; and its partners across the globe to the student at &lt;strong&gt;zero cost&lt;/strong&gt;. From &lt;strong&gt;coding boot camps&lt;/strong&gt;, &lt;strong&gt;logging service&lt;/strong&gt;, &lt;strong&gt;code checkers&lt;/strong&gt;, &lt;strong&gt;online IDEs&lt;/strong&gt;, &lt;strong&gt;mass email&lt;/strong&gt; service -- everything is available to students at no cost. Yes, you heard that right. Any student who is 13 or above years of age and enrolled in a school or college (institution) can get this. Sounds awesome right? Read on!&lt;/p&gt;

&lt;p&gt;You can get a free domain with &lt;strong&gt;SSL&lt;/strong&gt; enabled and host your &lt;code&gt;websites/apps&lt;/code&gt; on the servers provided by &lt;strong&gt;AWS&lt;/strong&gt;, &lt;strong&gt;Azure&lt;/strong&gt;, or &lt;strong&gt;DigitalOcean&lt;/strong&gt;. You can also launch your great application on the cloud using Bitnami. You can use Visual Studio from Microsoft for programming and host your servers using Windows Server.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;How to get it?&lt;/strong&gt;
&lt;/h4&gt;

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

&lt;ul&gt;
&lt;li&gt;  Age: You need to be at least 13 years of age.&lt;/li&gt;
&lt;li&gt;  Email address: College-issued email address to verify your academic status.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; If you don't have access to a college email address, you can still verify yourself as a student by uploading a picture of your college id card, report card, and issued a certificate.&lt;/p&gt;

&lt;h4&gt;
  
  
  How to apply 🚀
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt; Register for an account on &lt;a href="https://github.com/" rel="noopener noreferrer"&gt;Github&lt;/a&gt; if not already registered.&lt;/li&gt;
&lt;li&gt; If you have already registered for an account previously just add your institution-issued email address in the &lt;a href="https://github.com/settings/emails" rel="noopener noreferrer"&gt;Email settings&lt;/a&gt; section of your account.&lt;/li&gt;
&lt;li&gt; Go to &lt;a href="https://education.github.com/pack" rel="noopener noreferrer"&gt;the Education Pack&lt;/a&gt; Section and log in with your GitHub account.&lt;/li&gt;
&lt;li&gt; Click on Get My pack and fill in all the details as required about your usage of GitHub and your school/college details&lt;/li&gt;
&lt;li&gt; Click on Submit My Application and wait for approval from the Github team. Approval duration is generally around 2-3 weeks.&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;
  
  
  What are the Benefits of the Github Education Pack? 🤑
&lt;/h4&gt;

&lt;p&gt;Github Education Pack provides a variety of benefits from its partnerships with software companies across the globe. The pack offers almost &lt;strong&gt;&amp;gt;$200k&lt;/strong&gt; worth of products and licenses for free to students. They are listed below:-&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; &lt;strong&gt;DataCamp:&lt;/strong&gt; learn from the world’s top data scientists&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MongoDB:&lt;/strong&gt;  $200 in MongoDB Atlas Credits, plus access to MongoDB Compass and MongoDB University including free certification.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Better Code Hub&lt;/strong&gt;: Online source code analysis service which allows you to check your code with 10 software development guidelines and get immediate reviews and required improvements&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Canva:&lt;/strong&gt; With Canva, anyone can create professional-looking graphics and designs. Featuring thousands of templates and an easy-to-use editor. Free for 1 year.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;ConfigCat:&lt;/strong&gt; A feature flag and configuration management service where you can push releases to users without deploying new code. It is best suited for alpha-beta testing or soft launches.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Cryptolens:&lt;/strong&gt; A cloud-based software licensing platform&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Gitpod:&lt;/strong&gt; It provides an automated and fast online IDE for GitHub&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Frontend Masters:&lt;/strong&gt; In-depth JavaScript, Node.js, and front-end engineering courses&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Educative:&lt;/strong&gt; Level up on trending coding skills at your own pace with interactive, text-based courses.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Icons8:&lt;/strong&gt; Design resources including icons, UI illustrations, photos, and more&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;LogDNA:&lt;/strong&gt; A log management platform having seamless integration with your platform and providing live monitoring and log tailing.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Name.com:&lt;/strong&gt; A domain name registrar and web host providing one free domain to students with Privacy Protection and SSL certificate&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Next.tech:&lt;/strong&gt; Browser-based computing environments having no annoying IDE setup or building from prerequisite software&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Phrase:&lt;/strong&gt; A cloud-based localization service for translation APIs and enabling localization in your apps&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;PushBots:&lt;/strong&gt; Scalable push notification system for mobile applications&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;SQL Smash:&lt;/strong&gt; A better productivity plugin for SQL Server Management Studio&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;.TECH:&lt;/strong&gt; It provides domains for your tech startup, business, event, community, or publication. Best suited for tech-based companies, providing them with a unique TLD suited for their purpose.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;One Month:&lt;/strong&gt; Learn HTML, CSS, JavaScript, and Python in just 30 days!&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Termius:&lt;/strong&gt; A cross-platform SSH client for desktop(Win, Linux, and macOS and mobile(iOS and Android).&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;TransloadIt&lt;/strong&gt;: A file uploading and processing service to convert files from any type to any required format, be it images, videos, audios or text/docs.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Bootstrap Studio:&lt;/strong&gt; A desktop app for creating responsive websites using the Bootstrap framework&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Microsoft Azure:&lt;/strong&gt; A set of cloud services by Microsoft to help you build, manage, and deploy applications by giving free credit to students to leverage the power of the cloud to run their development workloads&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;PomoDone:&lt;/strong&gt; A Pomodoro time-tracking application to eliminate distraction, sharpen focus, and prevent burnout during your work-intensive hours using the Pomodoro Technique.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;SymfonyCasts:&lt;/strong&gt; Symfony and PHP video tutorials and code challenges&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Algolia:&lt;/strong&gt; A hosted search API that provides support for front-end and back-end frameworks and libraries&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;AWS Educate Program:&lt;/strong&gt; A reliable, scalable, and inexpensive cloud computing service brought to you by Amazon Web Services plus free training, and collaboration resources&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Datadog:&lt;/strong&gt; cloud-based infrastructure monitoring&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;DigitalOcean:&lt;/strong&gt; Simple cloud hosting built for developers with virtual private servers starting from as low as $5/month.Also has support for Kubernetes clusters.&lt;/li&gt;
&lt;li&gt;  Flatiron School: Web coding Bootcamp for launching developers&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Heroku:&lt;/strong&gt; A flexible, easy-to-use platform to deploy, run, and manage your apps with one-click deployment options for any framework plus integration with famous repository hosting services.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;LambdaTest:&lt;/strong&gt; An automated, live, and interactive cross-browser testing on 2,000+ real browsers and operating systems&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Jetbrains:&lt;/strong&gt; Student Licenses of professional desktop IDEs such as IntelliJ IDEA, &lt;a href="https://hackr.io/blog/python-ide#Pycharm" rel="noopener noreferrer"&gt;PyCharm&lt;/a&gt;, and more.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Namecheap:&lt;/strong&gt; Affordable domain registration, hosting, and management&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Sendgrid:&lt;/strong&gt; The world's largest cloud-based email delivery platform to attach to your applications&lt;/li&gt;
&lt;li&gt; ** Stripe:** A web and mobile payment APIs, built for developers&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Thinkful:&lt;/strong&gt; courseware and mentoring to launch your career as a developer&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Travis CI:&lt;/strong&gt; a continuous integration platform for open source and private projects&lt;/li&gt;
&lt;li&gt;And Many More!!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Start your developer journey by exploring the pack here: &lt;a href="https://education.github.com/pack" rel="noopener noreferrer"&gt;https://education.github.com/pack&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  How long will it take to get my application reviewed?
&lt;/h4&gt;

&lt;p&gt;The Github team manually reviews every request so that only genuine applicants get their packs. This process takes time, that's why it might be long before you get a response. If you have a college email which is already whitelisted by them, you can get it instantly.&lt;/p&gt;

&lt;p&gt;If you have queries regarding their process or problem redeeming any benefits, you can contact them on their support email.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;GitHub Education Pack Will give you everything you need to build a scalable application with the best standards.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  What things I used From this pack ✨
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Heroku&lt;/strong&gt; - I used Heroku to host my application and the pack includes a Hobby Dyno which is enough to handle application load.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Godaddy:&lt;/strong&gt; I used Godaddy to purchase the &lt;code&gt;.com&lt;/code&gt; domain as in the pack no tool was offering a &lt;code&gt;.com&lt;/code&gt; domain and which is fine.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;NameCheap&lt;/strong&gt; - provides free domain&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;DataCamp&lt;/strong&gt; - to learn Shell Scripting and other courses.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Canva&lt;/strong&gt; - I manage the Instagram page where I share tech posts, so for creating posts I used Canva&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Bootstrap Studio&lt;/strong&gt; - I learned this tool but never used it as I prefer to code.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;And Other tools which provide learning content.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  How I Applied SEO to the Website 🔍
&lt;/h3&gt;

&lt;p&gt;Applying the best Search Engine Optimization (SEO) strategy was difficult with a lack of knowledge. I used the following sites and random searches on google to get things done.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;a href="https://moz.com/learn/seo" rel="noopener noreferrer"&gt;Moz SEO Learning&lt;/a&gt; &lt;/li&gt;
&lt;li&gt; &lt;a href="https://learndigital.withgoogle.com/digitalgarage/course/digital-marketing" rel="noopener noreferrer"&gt;Digital Marketing Course By Google
&lt;/a&gt; - I didn't complete the whole course&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Free Tools I used for SEO Analysis:&lt;/strong&gt; 🔥&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; &lt;a href="https://www.seoptimer.com/" rel="noopener noreferrer"&gt;SEO Optimizer&lt;/a&gt; &lt;/li&gt;
&lt;li&gt; &lt;a href="https://neilpatel.com/seo-analyzer/" rel="noopener noreferrer"&gt;Neil Patel&lt;/a&gt; &lt;/li&gt;
&lt;li&gt; &lt;a href="https://seositecheckup.com/" rel="noopener noreferrer"&gt;SEO Site Check&lt;/a&gt; &lt;/li&gt;
&lt;/ul&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%2Fxfsgq2tzu438v1i702cx.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxfsgq2tzu438v1i702cx.jpeg" alt="teachmebro seo ranks" width="800" height="174"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;💡TIP: I think the best way to learn and apply SEO skills is to use the above tools and see the SEO report and from there you will know exactly whats needs to be done to fix the SEO of your Website.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  My Learnings 🧠
&lt;/h2&gt;

&lt;p&gt;Got Experienced in building &lt;em&gt;responsive websites&lt;/em&gt;, &lt;em&gt;Ranking web pages&lt;/em&gt;, &lt;em&gt;SEO&lt;/em&gt;, &lt;em&gt;Domain Ranking&lt;/em&gt;, &lt;em&gt;User Authentication&lt;/em&gt;, &lt;em&gt;Hosting the App with CI, CD process&lt;/em&gt;, &lt;em&gt;Monitoring the Web app&lt;/em&gt;, &lt;em&gt;Maintaining the App In Production&lt;/em&gt;, &lt;em&gt;used Google Analytics&lt;/em&gt;, &lt;em&gt;Adsense&lt;/em&gt;, &lt;em&gt;Disqus&lt;/em&gt; &amp;amp; I learned to &lt;em&gt;optimize static files&lt;/em&gt; for better user experience and also this project helped me to understand the core of &lt;em&gt;CMS&lt;/em&gt; (Content Management System) system. Libraries used &lt;strong&gt;CK-Editor&lt;/strong&gt;, &lt;strong&gt;Prism&lt;/strong&gt;, &lt;strong&gt;Data Tables&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;Also, I trained Students on Web Fundamentals by giving Internships under the community which I formed during the lockdown 🔒. &lt;/p&gt;

&lt;h2&gt;
  
  
  Takeaways🏆
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;You can take up any project and target the skills you want to build/improve&lt;/li&gt;
&lt;li&gt;Googling is an Art. Asking the right set of questions will get you closer to what you want.&lt;/li&gt;
&lt;li&gt;You can learn anything you want to learn, just use the Internet wisely.&lt;/li&gt;
&lt;li&gt;Keep Learning and Keep Exploring.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Thanks to Github💯
&lt;/h2&gt;

&lt;p&gt;I would like to thanks Github for providing free access to the best developer tools in one place so we can learn by doing and get hands-on experience with real-world tools&lt;/p&gt;

&lt;p&gt;Github Education Pack helped me a lot in building the skills that I wanted to. And I hope with this blog you got aware of such opportunity. &lt;/p&gt;

</description>
      <category>beginners</category>
      <category>django</category>
    </item>
    <item>
      <title>Building A CRUD Application Using Node JS And MongoDB Atlas</title>
      <dc:creator>Altaf Shaikh</dc:creator>
      <pubDate>Sun, 18 Apr 2021 06:41:01 +0000</pubDate>
      <link>https://dev.to/ialtafshaikh/building-a-crud-application-using-node-js-and-mongodb-atlas-2df5</link>
      <guid>https://dev.to/ialtafshaikh/building-a-crud-application-using-node-js-and-mongodb-atlas-2df5</guid>
      <description>&lt;p&gt;Hello Folks!!&lt;/p&gt;

&lt;p&gt;In this article, we will learn how we can use &lt;code&gt;MongoDB&lt;/code&gt; database in &lt;code&gt;Node JS&lt;/code&gt; using &lt;code&gt;Mogoose&lt;/code&gt; library, which is a very popular library widely used in the Industries.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;In this article we had used the &lt;code&gt;MongoDB Cloud&lt;/code&gt; service called &lt;a href="https://www.mongodb.com/cloud" rel="noopener noreferrer"&gt;MongoDB Atlas&lt;/a&gt;, you can also use the MongoDB server running &lt;code&gt;locally&lt;/code&gt;, the process remains the same.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  What is Mongoose?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://mongoosejs.com" rel="noopener noreferrer"&gt;Mongoose&lt;/a&gt; is an &lt;code&gt;Object Data Modeling (ODM)&lt;/code&gt; library for MongoDB and Node.js. It manages relationships between data, provides schema validation, and is used to translate between &lt;code&gt;objects in code&lt;/code&gt; and the representation of those &lt;code&gt;objects in MongoDB&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh4.googleusercontent.com%2F_aGYeBYNDs0M62mntcMkPM8noSGEEkWnGLbeKXSQH5F8aaySZ7EtY-EctZ3l7b315KnpCPs9_5eCf-MZ4w4pVz0p3jm6Ban9YI_i1tntnqO9mdUtjfE6UyweGEOSBBTzkJVK0RYc" 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%2Flh4.googleusercontent.com%2F_aGYeBYNDs0M62mntcMkPM8noSGEEkWnGLbeKXSQH5F8aaySZ7EtY-EctZ3l7b315KnpCPs9_5eCf-MZ4w4pVz0p3jm6Ban9YI_i1tntnqO9mdUtjfE6UyweGEOSBBTzkJVK0RYc"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  MongoDb VS SQL
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;MongoDB&lt;/code&gt; is a schema-less NoSQL document database. It means you can store &lt;code&gt;JSON&lt;/code&gt; documents in it, and the structure of these documents can vary as it is not enforced like SQL databases. This is one of the advantages of using NoSQL as it speeds up application development and reduces the complexity of deployments.&lt;/p&gt;

&lt;p&gt;Below is an example of how data is stored in &lt;code&gt;Mongo&lt;/code&gt; vs. &lt;code&gt;SQL&lt;/code&gt; Database:&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%2Flh3.googleusercontent.com%2F4_IaG34XUPlh3Wn3m3AhGQpjAW3Qj6Gfr22t1pq704bkF9gkzRfCx_VMqwusMSNns18TaGprLPMe6Gu9XZqS1_HofdA2gsGsxeQD2KyzyAEM2bB4xSs1ZhyooRl5H0i4oavISbsA" 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%2Flh3.googleusercontent.com%2F4_IaG34XUPlh3Wn3m3AhGQpjAW3Qj6Gfr22t1pq704bkF9gkzRfCx_VMqwusMSNns18TaGprLPMe6Gu9XZqS1_HofdA2gsGsxeQD2KyzyAEM2bB4xSs1ZhyooRl5H0i4oavISbsA"&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%2Flh4.googleusercontent.com%2F9-NNCrtrxHnrKbZN-ovu0tg034CJWuEI7eeuZ5XFgZQzSltwwYqFV4zupkQ8DRpvBERH0n-UYSuZLLdt7_mhtB488uNjgU5xV__qyMzwnuYzOsTcQQpSLgSi0nwcdIRmKTvZ9jfi" 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%2Flh4.googleusercontent.com%2F9-NNCrtrxHnrKbZN-ovu0tg034CJWuEI7eeuZ5XFgZQzSltwwYqFV4zupkQ8DRpvBERH0n-UYSuZLLdt7_mhtB488uNjgU5xV__qyMzwnuYzOsTcQQpSLgSi0nwcdIRmKTvZ9jfi"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Mongoose has great &lt;code&gt;documentation&lt;/code&gt;, checkout the docs &lt;a href="https://mongoosejs.com/docs/" rel="noopener noreferrer"&gt;here&lt;/a&gt; to learn more about Mongoose.&lt;/p&gt;

&lt;h2&gt;
  
  
  Mongoose Terminologies
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Collections
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;'Collections'&lt;/code&gt; in Mongo are equivalent to tables in relational databases. They can hold multiple JSON documents.&lt;/p&gt;

&lt;h3&gt;
  
  
  Documents
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;'Documents'&lt;/code&gt; are equivalent to records or rows of data in SQL. While a SQL row can reference data in other tables, Mongo documents usually combine that in a document.&lt;/p&gt;

&lt;h3&gt;
  
  
  Fields
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;'Fields'&lt;/code&gt; or attributes are similar to columns in a SQL table.&lt;/p&gt;

&lt;h2&gt;
  
  
  Schema
&lt;/h2&gt;

&lt;p&gt;While Mongo is schema-less, SQL defines a schema via the table definition. A Mongoose &lt;code&gt;'schema'&lt;/code&gt; is a document data structure (or shape of the document) that is enforced via the application layer.&lt;/p&gt;

&lt;h3&gt;
  
  
  Models
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;'Models'&lt;/code&gt; are higher-order constructors that take a schema and create an instance of a document equivalent to records in a relational database.&lt;/p&gt;

&lt;h2&gt;
  
  
  ​Mongoose In Action
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Referencing
&lt;/h3&gt;

&lt;p&gt;So now, we will see a subtle difference between Mongoose &lt;code&gt;Schema&lt;/code&gt; and &lt;code&gt;Model&lt;/code&gt;, after that we will start working with mongoose and we will proceed further step by step explain each concept.&lt;/p&gt;

&lt;h3&gt;
  
  
  Mongoose Schema vs. Model
&lt;/h3&gt;

&lt;p&gt;A Mongoose &lt;code&gt;model&lt;/code&gt; is a wrapper on the Mongoose &lt;code&gt;schema&lt;/code&gt;. A Mongoose schema defines the structure of the document, default values, validators, etc., whereas a Mongoose model provides an interface to the database for creating, querying, updating, deleting records, etc.&lt;/p&gt;

&lt;p&gt;Don't Jump for coding right now, have some &lt;code&gt;patience&lt;/code&gt; and for now just read the sections, in further section we will create and setup the project step by step : )&lt;/p&gt;

&lt;p&gt;Creating a Mongoose model comprises primarily of &lt;code&gt;three&lt;/code&gt; parts:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Referencing Mongoose&lt;/li&gt;
&lt;li&gt;Defining the Schema&lt;/li&gt;
&lt;li&gt;Exporting a Model&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  1. Referencing Mongoose
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const mongoose = require('mongoose')
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This &lt;code&gt;reference&lt;/code&gt; will be the same as the one that was returned when we connected to the database, which means the schema and model definitions will not need to explicitly connect to the database, we will see &lt;code&gt;database connection&lt;/code&gt; in the further section.&lt;/p&gt;

&lt;p&gt;now, lets create a &lt;code&gt;reference&lt;/code&gt; to Schema class from mongoose:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const Schema = mongoose.Schema;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now let's move on to create our very own &lt;code&gt;Schema&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  2.  Defining the Schema
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const todoSchema = new Schema(
  {
    description: {
      type: String,
      required: true,
    },
  },
);

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

&lt;/div&gt;



&lt;p&gt;So here we have created an instance of Schema and named it &lt;code&gt;todoSchema&lt;/code&gt;. The Schema takes object as a parameter, so we had passed an object and inside that we have a key called &lt;code&gt;description&lt;/code&gt; and its value is again an object in which we had specified we need a field description of type "&lt;code&gt;String&lt;/code&gt;", this type is in-built with mongoose you can refer more on official &lt;a href="https://mongoosejs.com/docs/schematypes.html" rel="noopener noreferrer"&gt;docs&lt;/a&gt; and also it is a required field so we had defined this with the key &lt;code&gt;required&lt;/code&gt; and with a &lt;code&gt;boolean&lt;/code&gt; value of true.&lt;/p&gt;

&lt;p&gt;Lets add more field into the schema,&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const todoSchema = new Schema(
  {
    description: {
      type: String,
      required: true,
    },
    completed: {
      type: Boolean,
      default: false,
    },
  },
  {
    timestamps: true,
  }
);

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

&lt;/div&gt;



&lt;p&gt;So similarly we had define a field called &lt;code&gt;completed&lt;/code&gt; and it is of type Boolean and it hold a default value false.&lt;/p&gt;

&lt;p&gt;And if you carefully looked at the structure we had passed a second parameter which is an object with a key &lt;code&gt;timestamps&lt;/code&gt; so this second parameter is a configuration object in which we had only used an inbuilt feature of mongoose which adds to additional fields to every documents namely &lt;code&gt;createdAt&lt;/code&gt; and &lt;code&gt;updatedAt&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The following &lt;code&gt;Schema Types&lt;/code&gt; are permitted:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Array&lt;/li&gt;
&lt;li&gt;  Boolean&lt;/li&gt;
&lt;li&gt;  Buffer&lt;/li&gt;
&lt;li&gt;  Date&lt;/li&gt;
&lt;li&gt;  Mixed (A generic / flexible data type)&lt;/li&gt;
&lt;li&gt;  Number&lt;/li&gt;
&lt;li&gt;  ObjectId&lt;/li&gt;
&lt;li&gt;  String&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. Exporting a Model
&lt;/h3&gt;

&lt;p&gt;Finally, let's create the model using the &lt;code&gt;Schema&lt;/code&gt; we had created and Export the model to use it in other modules where we need to interact with the database.&lt;/p&gt;

&lt;p&gt;​We need to call the &lt;code&gt;model constructor&lt;/code&gt; on the Mongoose instance and pass it the name of the collection and a &lt;code&gt;reference&lt;/code&gt; to the schema definition.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;var Todos = mongoose.model("Todo", todoSchema);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And now finally let's export this model so that we can use this model throughout the project.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;module.exports = Todos;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now, we understand how we can define a &lt;code&gt;schema&lt;/code&gt; and using schema how we can make our &lt;code&gt;model&lt;/code&gt;. So this was the major part of the Mongoose model creation and now we have to make use of this model.&lt;/p&gt;

&lt;p&gt;Next, we will see how to &lt;code&gt;setup the project&lt;/code&gt; and start writing some &lt;code&gt;code&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Creating an Application
&lt;/h2&gt;

&lt;p&gt;​So let's create a project folder &lt;code&gt;node-mongoose&lt;/code&gt; and inside your project folder create a folder called &lt;code&gt;models&lt;/code&gt; and inside that create a file called &lt;code&gt;todos.js&lt;/code&gt; and paste below code into it and your &lt;code&gt;todos.js&lt;/code&gt; model file should look like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// models/todos.js

const mongoose = require("mongoose");
const Schema = mongoose.Schema;

const todoSchema = new Schema(
  {
    description: {
      type: String,
      required: [true, "please enter task details"],
    },
    completed: {
      type: Boolean,
      default: false,
    },
  },
  {
    timestamps: true,
  }
);

var Todos = mongoose.model("Todo", todoSchema);

module.exports = Todos;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Previously we had implemented this model, if you haven't followed that checkout the &lt;code&gt;Referencing Mongoose Section above&lt;/code&gt;, then you are good to continue this section.&lt;/p&gt;

&lt;h2&gt;
  
  
  Folder Structure:
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;node-mongoose
  - models
     - todos.js
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now, open a terminal in &lt;code&gt;node-mongoose&lt;/code&gt; i.e root folder of your project and follow below steps:-&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;code&gt;npm init -y&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt; Create a file called &lt;code&gt;app.js&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt; Install express using &lt;code&gt;npm install express&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt; Install mongoose using &lt;code&gt;npm install mongoose&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt; Install dotenv using &lt;code&gt;npm install dotenv&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt; Create a file called &lt;code&gt;app.js&lt;/code&gt; in root folder of your project&lt;/li&gt;
&lt;li&gt; Now follow the steps in this blog and get the &lt;code&gt;database url&lt;/code&gt; which will look like this :
&lt;code&gt;mongodb+srv://sample_user:&amp;lt;password&amp;gt;@my-sample-cluster-b3ugy.mongodb.net/&amp;lt;dbname&amp;gt;?retryWrites=true&amp;amp;w=majority&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt; Create a &lt;code&gt;.env&lt;/code&gt; file in the root folder&lt;/li&gt;
&lt;li&gt; Add this line in the .env file with your password and database name 
&lt;code&gt;DATABASE_URL=mongodb+srv://sample_user:&amp;lt;password&amp;gt;@my-sample-cluster-b3ugy.mongodb.net/&amp;lt;dbname&amp;gt;?retryWrites=true&amp;amp;w=majority&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Also to ensure your database connection should not visible to other if you are storing your code on a service like Github. Create a &lt;code&gt;.gitignore&lt;/code&gt; file and enter the file name &lt;code&gt;.env&lt;/code&gt; inside it. So git will not keep track of this file.&lt;/li&gt;
&lt;li&gt;Also add one more variable on new line inside &lt;code&gt;.env&lt;/code&gt; file called &lt;code&gt;PORT=3000&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Your &lt;code&gt;.env&lt;/code&gt; file should look like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;DATABASE_URL=mongodb+srv://sample_user:&amp;lt;password&amp;gt;@my-sample-cluster-b3ugy.mongodb.net/&amp;lt;dbname&amp;gt;?retryWrites=true&amp;amp;w=majority
PORT=3000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Your &lt;code&gt;.gitignore&lt;/code&gt; file should look like&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;node_modules
.env
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now, lets import the packages we have install into the &lt;code&gt;app.js&lt;/code&gt; file&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const express = require("express");
const mongoose = require("mongoose");
const dotenv = require("dotenv");
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now, lets load the environment variable&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;dotenv.config({ path: ".env" });
const PORT = process.env.PORT;
const dbURI = process.env.DATABASE_URL;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now lets import the model &lt;code&gt;todos&lt;/code&gt; we have created inside the &lt;code&gt;models/&lt;/code&gt; folder&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;//model
const Tasks = require("./models/todos");
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;now , lets create a &lt;code&gt;database connection&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const connect = mongoose.connect(dbURI, {
  useNewUrlParser: true,
  useUnifiedTopology: true,
});

connect.then(
  (db) =&amp;gt; {
    console.log("Connected Successfully to Mongodb Server");

  },
  (err) =&amp;gt; {
    console.log(err);
  }
);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Lets initialize the &lt;code&gt;express app&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const app = express();
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Lets add a &lt;code&gt;middleware&lt;/code&gt; which converts the request body into json:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;app.use(express.json());
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Finally lets create a listener to accept incoming HTTP request on specific port:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;app.listen(PORT, () =&amp;gt; {
  console.log(`Server is running at http://localhost:${PORT}`);
});
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Your Final &lt;code&gt;app.js&lt;/code&gt; should look like this:&lt;br&gt;
&lt;br&gt;
 &lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const express = require("express");
const mongoose = require("mongoose");
const dotenv = require("dotenv");

dotenv.config({ path: ".env" });
const PORT = process.env.PORT;
const dbURI = process.env.DATABASE_URL;

//model
const Tasks = require("./models/todos");

const connect = mongoose.connect(dbURI, {
  useNewUrlParser: true,
  useUnifiedTopology: true,
});

connect.then(
  (db) =&amp;gt; {
    console.log("Connected Successfully to Mongodb Server");

  },
  (err) =&amp;gt; {
    console.log(err);
  }
);

const app = express();

app.use(express.json());

app.listen(PORT, () =&amp;gt; {
  console.log(`Server is running at http://localhost:${PORT}`);
});
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Now we are good to go with basic &lt;code&gt;CRUD&lt;/code&gt; operations.&lt;/p&gt;
&lt;h2&gt;
  
  
  Mongoose CRUD Operations
&lt;/h2&gt;

&lt;p&gt;Mongoose has a flexible &lt;code&gt;API&lt;/code&gt; and provides many ways to accomplish a task. We will not focus on the variations because that is out of scope for this article, but remember that most of the operations can be done in more than one way either syntactically or via the application architecture.&lt;/p&gt;
&lt;h2&gt;
  
  
  Create Record
&lt;/h2&gt;

&lt;p&gt;Let's &lt;code&gt;create&lt;/code&gt; a todo and &lt;code&gt;save&lt;/code&gt; into our database:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let newTask = {
      description: "task added using create",
};

Tasks.create(newTask)
  .then((data) =&amp;gt; {
      console.log(data);
   })
   .catch((err) =&amp;gt; {
      console.log(err);
});
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Firstly we had created a &lt;code&gt;newTask&lt;/code&gt; object with description of a todo which is a mandatory field required to create a document in the database. Mongoose model has a &lt;code&gt;create()&lt;/code&gt; method which is a &lt;code&gt;promise&lt;/code&gt; and on successful we get the response in data and in-case of failure it is catched and error is  displayed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Find All Tasks
&lt;/h2&gt;

&lt;p&gt;To &lt;code&gt;get&lt;/code&gt; all the documents stored inside a collection.&lt;br&gt;
&lt;/p&gt;

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

Tasks.find({})
   .then((data) =&amp;gt; {
       console.log("All tasks", data);
    })
    .catch((err) =&amp;gt; {
       console.log(err);
 });
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Find A Single Document or Record
&lt;/h2&gt;

&lt;p&gt;Let's see how we can find a &lt;code&gt;single&lt;/code&gt; document from the collection.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; //find with condition

  Tasks.find({ completed: false })
    .then((data) =&amp;gt; {
         console.log("All tasks", data);
     })
     .catch((err) =&amp;gt; {
         console.log(err);
    });
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Update a Document
&lt;/h2&gt;

&lt;p&gt;Let's modify the record by &lt;code&gt;updating&lt;/code&gt; the &lt;strong&gt;status&lt;/strong&gt; &lt;code&gt;completed:false&lt;/code&gt; to &lt;code&gt;completed:true&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    Tasks.findByIdAndUpdate({ _id: req.params.id },{
            $set: {completed:true},
          },
          { new: true, useFindAndModify: false } //get updated result
       )
       .then((data) =&amp;gt; {
         console.log("Updated todo data", data);
       })
       .catch((err) =&amp;gt; {
         console.log(err);
       });
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Delete a document from the collection
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; //delete all tasks
     Tasks.remove({});
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// delete specific task

    Tasks.findByIdAndRemove(task_id)
       .then((data) =&amp;gt; {
         console.log("All tasks", data);
       })
       .catch((err) =&amp;gt; {
         console.log(err);
       });
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In the above example replace the &lt;code&gt;task_id&lt;/code&gt; with the value of &lt;code&gt;_id&lt;/code&gt; of a task in mongoDB databse which looks like &lt;code&gt;5a78fe3e2f44ba8f85a2409a&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;So we have seen all  the &lt;code&gt;CRUD&lt;/code&gt; operations namely, &lt;code&gt;create&lt;/code&gt;, &lt;code&gt;read&lt;/code&gt;, &lt;code&gt;update&lt;/code&gt;, &lt;code&gt;delete&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Let's use them in our &lt;code&gt;app.js&lt;/code&gt; file.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const express = require("express");
const mongoose = require("mongoose");
const dotenv = require("dotenv");

dotenv.config({ path: ".env" });
const PORT = process.env.PORT;
const dbURI = process.env.DATABASE_URL;

//model
const Tasks = require("./models/todos");

const connect = mongoose.connect(dbURI, {
  useNewUrlParser: true,
  useUnifiedTopology: true,
});

connect.then(
  (db) =&amp;gt; {
    console.log("Connected Successfully to Mongodb Server");

    //all tasks
    Tasks.find({})
      .then((data) =&amp;gt; {
        console.log("All tasks", data);
      })
      .catch((err) =&amp;gt; {
        console.log(err);
      });

    // similary use all the other operation here

    // CAUTION: don't put all the operation together, use one operation
    // at a time
  },
  (err) =&amp;gt; {
    console.log(err);
  }
);

const app = express();

app.use(express.json());

app.listen(PORT, () =&amp;gt; {
  console.log(`Server is running at http://localhost:${PORT}`);
});

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

&lt;/div&gt;



&lt;p&gt;Now, run your &lt;code&gt;server&lt;/code&gt; by using the following command:&lt;/p&gt;

&lt;p&gt;first install,&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;then,&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;nodemon app.js
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;Congratulations !!&lt;/code&gt; We had learned the &lt;code&gt;fundamentals&lt;/code&gt; of Mongoose and How we can use it in Node JS.&lt;/p&gt;

&lt;p&gt;I hope this article &lt;code&gt;helped&lt;/code&gt; you to understand the core idea : ) Do give a &lt;code&gt;like&lt;/code&gt; to this article to &lt;code&gt;motivate&lt;/code&gt; me to write more : D&lt;br&gt;
​&lt;/p&gt;

</description>
      <category>node</category>
      <category>mongodb</category>
      <category>beginners</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>Raw Engineering Interview Experience 2019</title>
      <dc:creator>Altaf Shaikh</dc:creator>
      <pubDate>Tue, 23 Mar 2021 04:01:09 +0000</pubDate>
      <link>https://dev.to/ialtafshaikh/raw-engineering-interview-experience-2019-423e</link>
      <guid>https://dev.to/ialtafshaikh/raw-engineering-interview-experience-2019-423e</guid>
      <description>&lt;p&gt;Hello all, this is another blog in which I am going to share my Interview Experience for the Raw Engineering Company Located at Virar. I attended this Placement Drive when I was In my Semester 7 of my Engineering Degree.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--vM4IRli4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://lh6.googleusercontent.com/Q1lnErSgIDrBv2XsQMOX75b7NZLhKIyKKJ3WuWu4l7M08Ecvt1IhMxzVpOaumjDBORAstJLa-noqmAVc_UOzjYOt1KzsiQAJaS-CKYkjNZ6fMEic9OpVEgI2W16ho463cwT0lsuY" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vM4IRli4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://lh6.googleusercontent.com/Q1lnErSgIDrBv2XsQMOX75b7NZLhKIyKKJ3WuWu4l7M08Ecvt1IhMxzVpOaumjDBORAstJLa-noqmAVc_UOzjYOt1KzsiQAJaS-CKYkjNZ6fMEic9OpVEgI2W16ho463cwT0lsuY" width="373" height="135"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Round 1:&lt;/strong&gt; Aptitude Exam&lt;/p&gt;

&lt;p&gt;An Aptitude test was conducted in the Computer Labs. The test consisted of mostly technical questions based on HTML, CSS, JS, Networking, Database Management System, etc. The test had 40 odd questions segregated into 3 different sections. Also, the test consists of some basic level Quants questions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Result:&lt;/strong&gt; Cleared&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Round 2:&lt;/strong&gt; Personal Interview&lt;/p&gt;

&lt;p&gt;The selected students were invited to the company premises in Virar, for the personal interview. Reporting time was at around 10 in the morning. After everyone had come in and had settled down, the interviews started. So I was interviewed by 3 interviewers. The Interview started with the simple question they told me to answer the question in a specific manner like First Tell me about yourself then your education details and then about your family background. so I answered all the questions one by one as they told me.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--c0nLmXNc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.teachmebro.com/static/ckeditor/ckeditor/plugins/smiley/images/lightbulb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--c0nLmXNc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.teachmebro.com/static/ckeditor/ckeditor/plugins/smiley/images/lightbulb.png" title="enlightened" alt="enlightened" width="23" height="23"&gt;&lt;/a&gt;ProTip&lt;/p&gt;

&lt;p&gt;Prepare the Tell me about yourself Question very nicely as it will be asked in every interview saying this from my past interview experiences and the answer to this question will either make your interview or you will get rejected. So be confident while answering this question.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So the next question was Do you know &lt;strong&gt;Javascript? ** I simply answer that I know only the basics of it and I am good at Python (so if you are good at something and confident enough to answer on it then go ahead and let the interviewer know about it).  So they ask me some basic Javascript questions and then the other interviewer asked me, have you done any project on python, so I have built various projects on Python and some of them which I found good I have put that in my resume and I was well prepared to explain the project. So I choose my SEM V project on the topic **Virtual Personal Desktop Assistant (VPDA)&lt;/strong&gt; basically it is kind of JARVIS with different names : ) so I explained the project and In that project, I have used &lt;strong&gt;REST APIs&lt;/strong&gt; to remotely control the Jarvis via the web interface, why I am explaining this to you all because this made my Interview. So Let's see how I explained to them the flow of the web interface with the Jarvis(running locally) with the API and they told me can you draw the architecture of this web interface with API and also the API endpoints and I said yes and they provide me pen and paper and I draw the architecture and explained them and they were impressed : D, after that, they ask me more question related to REST API like the security of the API, etc. &lt;/p&gt;

&lt;p&gt;After this, they test my &lt;strong&gt;problem-solving skills&lt;/strong&gt; and for that, they have given me a puzzle to solve like cutting the cake into 8 pieces using 3 cuts. so I was not prepared for such questions but I was knowing the answer and I just recalled it and I explained it to them on paper.&lt;/p&gt;

&lt;p&gt;After this, they asked me what is my &lt;strong&gt;final year project&lt;/strong&gt;? so I answer them that my topic for the final year is &lt;strong&gt;Art Market Reformation using blockchain&lt;/strong&gt; and I explained it and they started asking questions like why you are using blockchain to solve this problem and not the traditional client and server model and a few more questions on it. &lt;/p&gt;

&lt;p&gt;Finally, they asked me what do you know about the company? &lt;strong&gt;Raw Engineering&lt;/strong&gt; is a product-based or service-based company? Frankly, I was not knowing much about the company so I tried to make some answers but got failed to do so and I answered them wrong and I got uncomfortable then I said I don't know much about the company and nothing went wrong we had a conversation on that topic and they explained me about the company and their goals and lastly one important question that they asked me was, what are you comfortable with more, front end or back end? and I said Backend.&lt;/p&gt;

&lt;p&gt;In the End, All the &lt;strong&gt;3 interviewers&lt;/strong&gt; made a &lt;strong&gt;handshake&lt;/strong&gt; with me :) and keeping up the &lt;strong&gt;smile&lt;/strong&gt; on my face I left the cabin.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Result:&lt;/strong&gt; Cleared&lt;/p&gt;

&lt;p&gt;&lt;code&gt;I hope you liked the article and this will help you in your preparation and Don't forget to upvote this article below so that we can know you liked the article and also motivate us to bring more such contents :)&lt;/code&gt;&lt;/p&gt;

</description>
      <category>interview</category>
      <category>experience</category>
      <category>developer</category>
    </item>
    <item>
      <title>What is Open Source?</title>
      <dc:creator>Altaf Shaikh</dc:creator>
      <pubDate>Tue, 23 Mar 2021 03:58:20 +0000</pubDate>
      <link>https://dev.to/ialtafshaikh/what-is-open-source-4knk</link>
      <guid>https://dev.to/ialtafshaikh/what-is-open-source-4knk</guid>
      <description>&lt;p&gt;*&lt;em&gt;Open source *&lt;/em&gt; is a term that originally referred to open source software (OSS). Open source software is code that is designed to be publicly accessible---anyone can see, modify, and distribute the code as they see fit.&lt;/p&gt;

&lt;p&gt;Open source software is developed in a &lt;strong&gt;decentralized&lt;/strong&gt; and &lt;strong&gt;collaborative&lt;/strong&gt; way, relying on peer review and community production. Open source software is often &lt;strong&gt;cheaper&lt;/strong&gt;, more &lt;strong&gt;flexible&lt;/strong&gt;, and has more &lt;strong&gt;longevity&lt;/strong&gt; than its proprietary peers because it is developed by &lt;strong&gt;communities&lt;/strong&gt; rather than a &lt;strong&gt;single author&lt;/strong&gt; or &lt;strong&gt;company&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Open source has become a movement and a way of working that reaches beyond software production. The open source movement uses the values and decentralized production model of open source software to find new ways to solve problems in their communities and industries.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;So What is Closed Source Software?&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%2F86i3dc2a2kosuhpxmjul.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%2F86i3dc2a2kosuhpxmjul.png" alt="open source vs closed source" width="750" height="375"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Closed source software can be defined as proprietary software distributed under a licensing agreement to authorized users with private modification, copying, and republishing restrictions.&lt;/p&gt;

&lt;p&gt;Or in layman terms, the source code is not shared with the public for anyone to look at or change. Closed source is the opposite of open source. &lt;/p&gt;

&lt;p&gt;Closed source is actually the sort of arrangement that you would expect from most businesses, protective of their product and keen to maintain control over their brand and the user experience offered to their customers. Think Apple rather than Android, windows rather than linux.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Platforms used for collaboration:&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;&lt;a href="https://github.com/" rel="noopener noreferrer"&gt;Github:&lt;/a&gt;&lt;/strong&gt; It provides hosting for software development and version control using Git. It offers the distributed version control and source code management functionality of Git, plus its own features. &lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;&lt;a href="https://about.gitlab.com/" rel="noopener noreferrer"&gt;Gitlab&lt;/a&gt;: &lt;/strong&gt;GitLab is a web-based DevOps lifecycle tool that provides a Git-repository manager providing wiki, issue-tracking and continuous integration and deployment pipeline features, using an open-source license, developed by GitLab Inc.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;&lt;a href="https://bitbucket.org/" rel="noopener noreferrer"&gt;BitBucket&lt;/a&gt;:&lt;/strong&gt; Bitbucket is a web-based version control repository hosting service owned by Atlassian, for source code and development projects that use either Mercurial or Git revision control systems. Bitbucket offers both commercial plans and free accounts.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Popular Open Source Softwares:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Linux&lt;/strong&gt; - Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991, by Linus Torvalds.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Android&lt;/strong&gt; - Android is a mobile operating system based on a modified version of the Linux kernel and other open source software, designed primarily for touchscreen mobile devices such as smartphones and tablets.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Git&lt;/strong&gt; - Git is a distributed version-control system for tracking changes in source code during software development. It is designed for coordinating work among programmers, but it can be used to track changes in any set of files. Its goals include speed, data integrity, and support for distributed, non-linear workflows&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Apache HTTP Server&lt;/strong&gt; - The Apache HTTP Server, colloquially called Apache, is a free and open-source cross-platform web server software, released under the terms of Apache License 2.0. Apache is developed and maintained by an open community of developers under the auspices of the Apache Software Foundation&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Firefox&lt;/strong&gt; - Mozilla Firefox, or simply Firefox, is a free and open-source web browser developed by the Mozilla Foundation and its subsidiary, the Mozilla Corporation. Firefox uses the Gecko layout engine to render web pages, which implements current and anticipated web standards.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Python&lt;/strong&gt; - The mission of the Python Software Foundation is to promote, protect, and advance the Python programming language, and to support and facilitate the growth of a diverse and international community of Python programmers.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;VLC Media Player&lt;/strong&gt; - VLC media player is a free and open-source, portable, cross-platform media player software and streaming media server developed by the VideoLAN project. VLC is available for desktop operating systems and mobile platforms, such as Android, iOS, iPadOS, Tizen, Windows 10 Mobile and Windows Phone.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;LibreOffice&lt;/strong&gt; - LibreOffice is a free and open-source office suite, a project of The Document Foundation. It was forked in 2010 from OpenOffice.org, which was an open-sourced version of the earlier StarOffice.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Atom&lt;/strong&gt; - Atom is a free and open-source text and source code editor for macOS, Linux, and Microsoft Windows with support for plug-ins written in Node.js, and embedded Git Control, developed by GitHub. Atom is a desktop application built using web technologies.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;TOR Browser&lt;/strong&gt; - Tor is free and open-source software for enabling anonymous communication. The name derived from the acronym for the original software project name "The Onion Router". &lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Getting Started with Open Source:&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Learn Basics of Git and Github from &lt;a href="https://www.teachmebro.com/tutorial/git/" rel="noopener noreferrer"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Hope you got to learn something new related to open Source : )&lt;/em&gt;&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>programming</category>
      <category>github</category>
    </item>
    <item>
      <title>What is Hacktoberfest?</title>
      <dc:creator>Altaf Shaikh</dc:creator>
      <pubDate>Tue, 23 Mar 2021 03:55:48 +0000</pubDate>
      <link>https://dev.to/ialtafshaikh/what-is-hacktoberfest-3kk9</link>
      <guid>https://dev.to/ialtafshaikh/what-is-hacktoberfest-3kk9</guid>
      <description>&lt;p&gt;Hacktoberfest is a month-long celebration of open source software run by DigitalOcean in partnership with GitHub and other companies.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Hacktoberfest is open to everyone in our global community!&lt;/li&gt;
&lt;li&gt;  4 valid pull requests must be submitted to public GitHub repositories.&lt;/li&gt;
&lt;li&gt;  You can sign up anytime between October 1 and October 31.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What do you need to do before making contributions?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Create a GitHub account &lt;a href="https://github.com/login" rel="noopener noreferrer"&gt;(Sign up here)&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  Register for Hacktoberfest using your GitHub account &lt;a href="https://hacktoberfest.digitalocean.com/" rel="noopener noreferrer"&gt;(Register here)&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  Check if you have Git installed on your computer, if you don't then install it&lt;a href="https://www.teachmebro.com/tutorial/git/getting-started-installing-git" rel="noopener noreferrer"&gt; here&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Participation details&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Hacktoberfest is open to everyone in our global community. Whether you're a seasoned contributor or looking for projects to contribute to for the first time, you're welcome to participate.&lt;/li&gt;
&lt;li&gt;  Pull requests can be made in any GitHub-hosted repositories/projects. As long as the project is public and GitHub-hosted, your pull requests will count toward your participation.&lt;/li&gt;
&lt;li&gt;  You can sign up anytime between October 1 and October 31. Just be sure to sign up on the official Hacktoberfest website for your pull requests to count.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Participation rules&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To get a shirt, you must make four pull requests (PRs) between October 1--31 in any time zone. Pull requests can be to any public repository on GitHub, not just the ones highlighted. The pull request must contain commits you made yourself. If a maintainer reports your pull request as spam, it will not be counted toward your participation in Hacktoberfest. If a maintainer reports behavior that's not in line with the project's code of conduct, you will be ineligible to participate. This year, the first 75,000 participants can earn a T-shirt.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn How to Contribute in Open Source:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.digitalocean.com/community/tutorial_series/an-introduction-to-open-source" rel="noopener noreferrer"&gt;https://www.digitalocean.com/community/tutorial_series/an-introduction-to-open-source&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Some Open Souce projects to start contribute:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://github.com/avats-dev/motivate" rel="noopener noreferrer"&gt;https://github.com/avats-dev/motivate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/Ishaan28malik/Hacktoberfest-2020" rel="noopener noreferrer"&gt;https://github.com/Ishaan28malik/Hacktoberfest-2020&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/Py-Contributors/AlgorithmsAndDataStructure" rel="noopener noreferrer"&gt;https://github.com/Py-Contributors/AlgorithmsAndDataStructure&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/Ishaan28malik/Hacktoberfest-2020" rel="noopener noreferrer"&gt;https://github.com/Ishaan28malik/Hacktoberfest-2020&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/kaiiyer/awesome-vulnerable" rel="noopener noreferrer"&gt;https://github.com/kaiiyer/awesome-vulnerable&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/kaiiyer/awesome-vulnerable" rel="noopener noreferrer"&gt;https://github.com/mirkoperillo/resting/issues/119&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Explore More Opensource Projects eligible for Hacktoberfest 2020:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/search?p=1&amp;amp;q=label%3AHacktoberfest&amp;amp;type=Issues&amp;amp;utf8=%E2%9C%93" rel="noopener noreferrer"&gt;click on this text to find more opensource projects for hacktoberfest 2020&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Some FAQS:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q.&lt;/strong&gt; &lt;strong&gt;&lt;em&gt;What will you get if you participate in it ?&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A limited edition T-shirt for &lt;strong&gt;&lt;em&gt;FREE!&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Q.What if I don't make at least four pull requests by midnight October 31?&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;As long as you registered for Hacktoberfest, you'll still get some free stickers in the mail. So it's still worth registering,&lt;/p&gt;

&lt;p&gt;even if you're too busy to participate.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Q. I completed four pull requests. When will I receive my T-shirt?&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;T-shirts (or the option to plant a tree) will be awarded on a first-come, first-serve basis to the first 70,000 participants who successfully complete the Hacktoberfest challenge. We'll start sending out emails with more details on redeeming T-shirts throughout the month, so stay tuned.&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Browser more faqs &lt;a href="https://hacktoberfest.digitalocean.com/faq" rel="noopener noreferrer"&gt;here&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Global stats for Hacktoberfest 2019&lt;/strong&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;61,871&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;CHALLENGE COMPLETIONS&lt;/strong&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;483,127&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;PULL REQUESTS OPENED&lt;/strong&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;154,767&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;PARTICIPATING REPOSITORIES&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To Know more about open source checkout this article:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.teachmebro.com/post/what-is-open-source" rel="noopener noreferrer"&gt;https://www.teachmebro.com/post/what-is-open-source  &lt;/a&gt;&lt;/p&gt;

</description>
      <category>hacktoberfest</category>
      <category>opensource</category>
      <category>github</category>
    </item>
    <item>
      <title>Top Code Editors</title>
      <dc:creator>Altaf Shaikh</dc:creator>
      <pubDate>Tue, 23 Mar 2021 03:53:33 +0000</pubDate>
      <link>https://dev.to/ialtafshaikh/top-code-editors-1i12</link>
      <guid>https://dev.to/ialtafshaikh/top-code-editors-1i12</guid>
      <description>&lt;p&gt;There are a lot of different editors and it largely boils down to personal preference. Most Python programmers use complex but extremely powerful IDEs (Integrated Development Environments), such as PyCharm. As a beginner, however, that's probably less suitable; our recommendations are equally powerful, but a lot simpler.&lt;/p&gt;

&lt;p&gt;Our suggestions are below,&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;strong&gt;Code editor&lt;/strong&gt;
&lt;/h1&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Visual Studio Code&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Visual Studio Code is a source code editor developed by Microsoft for Windows, Linux and macOS. It includes support for debugging, embedded Git control, syntax highlighting, intelligent code completion, snippets, and code refactoring.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://code.visualstudio.com/" rel="noopener noreferrer"&gt;Download it here&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Gedit&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Gedit is an open-source, free editor, available for all operating systems.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://wiki.gnome.org/Apps/Gedit#Download" rel="noopener noreferrer"&gt;Download it here&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Sublime Text 3&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Sublime Text is a very popular editor with a free evaluation period and it's available for all operating systems.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.sublimetext.com/3" rel="noopener noreferrer"&gt;Download it here&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Atom&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Atom is another popular editor. It's free, open-source and available for Windows, OS X and Linux. Atom is developed by &lt;a href="https://github.com/" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://atom.io/" rel="noopener noreferrer"&gt;Download it here&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Why are we installing a code editor?&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;You might be wondering why we are installing this special code editor software, rather than using something like &lt;strong&gt;Word&lt;/strong&gt; or &lt;strong&gt;Notepad&lt;/strong&gt;. The first reason is that code needs to be plain text, and the problem with programs like Word and Textedit is that they don't actually produce plain text, they produce rich text (with fonts and formatting), using custom formats like &lt;strong&gt;RTF (Rich Text Format)&lt;/strong&gt;. The second reason is that code editors are specialized for editing code, so they can provide &lt;strong&gt;helpful features&lt;/strong&gt; like &lt;strong&gt;highlighting&lt;/strong&gt; code with color according to its meaning, or automatically closing quotes for you. We'll see all this in action later.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Soon, you'll come to think of your trusty old code editor as one of your favorite tools. :)&lt;/em&gt;&lt;/p&gt;

</description>
      <category>vscode</category>
      <category>productivity</category>
      <category>ide</category>
      <category>developer</category>
    </item>
    <item>
      <title>Introduction To The Command-Line Interface</title>
      <dc:creator>Altaf Shaikh</dc:creator>
      <pubDate>Mon, 22 Mar 2021 09:53:46 +0000</pubDate>
      <link>https://dev.to/ialtafshaikh/introduction-to-the-command-line-interface-4k70</link>
      <guid>https://dev.to/ialtafshaikh/introduction-to-the-command-line-interface-4k70</guid>
      <description>&lt;p&gt;In this blog, we will learn about the command-line interface in Windows, Linux, and Mac-OS and we will learn some basic commands and how to use them.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is the command line?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  The command line, also called the Windows command line, command screen, or text interface is a user interface that is navigated by typing commands at prompts, instead of using the mouse.&lt;/li&gt;
&lt;li&gt;  In the 1960s, using only computer terminals, this was the only way to interact with computers.&lt;/li&gt;
&lt;li&gt;  In the 1970s and 1980s, command line input was commonly used by Unix systems and PC systems like MS-DOS and Apple DOS.&lt;/li&gt;
&lt;li&gt;  Today, with graphical user interfaces (GUI), most users never use command-line interfaces (CLI).&lt;/li&gt;
&lt;li&gt;  However, CLI is still used by software developers and system administrators to configure computers, install software, and access features that are not available in the graphical interface.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Open the command-line interface. To start some experiments we need to open our command-line interface first.&lt;/p&gt;

&lt;h2&gt;
  
  
  Opening: Windows
&lt;/h2&gt;

&lt;p&gt;Depending on your version of Windows and your keyboard, one of the following should open a command window (you may have to experiment a bit, but you don't have to try all of these suggestions):&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Go to the Start menu or screen, and enter "Command Prompt" in the search field.&lt;/li&gt;
&lt;li&gt; Go to Start menu → Windows System → Command Prompt.&lt;/li&gt;
&lt;li&gt; Go to Start menu → All Programs → Accessories → Command Prompt.&lt;/li&gt;
&lt;li&gt; Go to the Start screen, hover your mouse in the lower-left corner of the screen, and click the down arrow that appears (on a touch screen, instead flick up from the bottom of the screen). The Apps page should open. Click on Command Prompt in the Windows System section.&lt;/li&gt;
&lt;li&gt; Hold the special Windows key on your keyboard and press the "X" key. Choose "Command Prompt" from the pop-up menu.&lt;/li&gt;
&lt;li&gt; Hold the Windows key and press the "R" key to get a "Run" window. Type "cmd" in the box, and click the OK key.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Opening: OS X
&lt;/h2&gt;

&lt;p&gt;Go to Applications → Utilities → Terminal.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Opening: Linux&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;It's probably under Applications → Accessories → Terminal, or Applications → System → Terminal, but that may depend on your system. If it's not there, you can try to Google it. :)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prompt&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You now should see a white or black window that is waiting for your commands.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prompt: OS X and Linu&lt;/strong&gt;x&lt;/p&gt;

&lt;p&gt;If you're on Mac or Linux, you probably see a $ , like this:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Prompt: Windows&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;On Windows, you probably see a &amp;gt; , like this:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Your first command (YAY!)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Let's start by typing this command:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Your first command: OS X and Linux&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Your first command: Windows&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;And then hit enter . This is our result:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ whoami

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

&lt;/div&gt;



&lt;p&gt;As you can see, the computer has just printed your username. Neat, huh? :)&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Use CLI commands with great attention!!! Wrong use can easily delete files or destroy your computer system completely.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Basics&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Each operating system has a slightly different set of commands for the command line, so make sure to follow instructions for your operating system. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Current directory&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It'd be nice to know where are we now, right? Let's see. Type this command and hit enter :&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Current directory: OS X and Linux&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ pwd

/home/altaf
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;Note: 'pwd' stands for 'print working directory'.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Current directory: Windows&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;gt; cd

C:\Users\altaf
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;Note: 'cd' stands for 'change directory'. With powershell you can use pwd just like on Linux or Mac OS X.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Learn more about a command&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Many commands you can type at the command prompt have built-in help that you can display and read! For example, to learn more about the current directory command:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Command help: OS X and Linux&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;OS X and Linux have a man command, which gives you help on commands. Try &lt;code&gt;man pwd&lt;/code&gt; and see what it says, or put man before other commands to see their help. The output of man is normally paged. Use the &lt;strong&gt;space bar&lt;/strong&gt; to move to the next page, and &lt;strong&gt;q&lt;/strong&gt; to quit looking at the help.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Command Help: Windows&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Adding  &lt;code&gt;a /?&lt;/code&gt; suffix to most commands will print the help page. You may need to scroll your command window up to see it all. Try &lt;code&gt;cd /? .&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;List files and directories&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;So what's in it? It'd be cool to find out. Let's see:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;List files and directories: OS X and Linux&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ ls

Documents                Pictures            Downloads        Public 

Music                         Videos              Desktop    
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;List files and directories: Windows command-line&lt;/strong&gt;&lt;br&gt;
&lt;br&gt;
     &lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;gt; dir

Directory of C:\Users\altaf

05/08/2014 07:28 PM &amp;lt;DIR&amp;gt; Applications

05/08/2014 07:28 PM &amp;lt;DIR&amp;gt; Desktop

05/08/2014 07:28 PM &amp;lt;DIR&amp;gt; Downloads

05/08/2014 07:28 PM &amp;lt;DIR&amp;gt; Music

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

&lt;/div&gt;


&lt;blockquote&gt;
&lt;p&gt;Note: In powershell you can also use 'ls' like on Linux and Mac OS X.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Change current directory&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Now, let's go to our Desktop directory:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Change current directory: OS X and Linux&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ cd Desktop
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Change current directory: Windows&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;gt; cd Desktop
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Check if it's really changed:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Check if changed: OS X and Linux&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ pwd

/Users/altaf/Desktop
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Check if changed: Windows&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;gt; cd

C:\Users\altaf\Desktop
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;Here it is!&lt;/code&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;PRO tip: if you type cd D and then hit tab on your keyboard, the command line will automatically fill in the rest of the name so you can navigate faster. If there is more than one folder starting with "D", hit the tab key twice to get a list of options.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Create directory&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;How about creating a practice directory on your desktop? You can do it this way:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Create directory: OS X and Linux&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ mkdir practice
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Create directory: Windows&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;gt; mkdir practice
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This little command will create a folder with the name practice on your desktop. You can check if it's there by looking on your Desktop or by running a &lt;strong&gt;ls or dir&lt;/strong&gt; command! Try it. :)&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;PRO tip: If you don't want to type the same commands over and over, try pressing the up arrow and down arrow on your keyboard to cycle through recently used commands.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Clean up&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We don't want to leave a mess, so let's remove everything we did until that point. First, we need to get back to Desktop:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Clean up: OS X and Linux&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ cd ..
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Clean up: Windows&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;gt; cd ..
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Using .. with the cd command will change your current directory to the parent directory (that is, the directory that contains your current directory).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Check where you are:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Check location: OS X and Linux&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ pwd

/Users/altaf/Desktop
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Check location: Windows&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;gt; cd

C:\Users\altaf\Desktop
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now time to delete the practice directory:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;**Attention:** Deleting files using **del**, **rmdir** or **rm** is irrecoverable, meaning the deleted files will be gone forever!&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;So be very careful with this command.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Delete directory: Windows Powershell, OS X and Linux&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ rm -r practice
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Delete directory: Windows Command Prompt&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;gt; rmdir /S practice

practice, Are you sure &amp;lt;Y/N&amp;gt;? Y
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Done! To be sure it's actually deleted, let's check it:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Check deletion: OS X and Linux&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Check deletion: Windows&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Exit&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That's it for now! You can safely close the command line now. Let's do it the hacker way, alright? :)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Exit: OS X and Linux&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Exit: Windows&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Cool, huh? :)&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Pro Tip :&lt;/p&gt;

&lt;p&gt;When you want to copy from the terminal or paste into the terminal instead of using the right-click option you can use a keyboard shortcut for copy and paste. To copy from terminal use ctrl + shift +c and to paste into the terminal use ctrl + shift + v. This will save your time. Cool!, huh? :)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Summary &lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here is a summary of some useful commands:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Scenario(when u want to)&lt;/td&gt;
&lt;td&gt;Windows Command&lt;/td&gt;
&lt;td&gt;Command (Mac OS / Linux)&lt;/td&gt;
&lt;td&gt;Description&lt;/td&gt;
&lt;td&gt;Example&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;See which files are present in a directory&lt;/td&gt;
&lt;td&gt;dir&lt;/td&gt;
&lt;td&gt;ls&lt;/td&gt;
&lt;td&gt;list directories/files&lt;/td&gt;
&lt;td&gt;dir&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Create a directory&lt;/td&gt;
&lt;td&gt;mkdir&lt;/td&gt;
&lt;td&gt;mkdir&lt;/td&gt;
&lt;td&gt;create a new directory&lt;/td&gt;
&lt;td&gt;mkdir testdirectory&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Move a file or dir into other location&lt;/td&gt;
&lt;td&gt;move&lt;/td&gt;
&lt;td&gt;mv&lt;/td&gt;
&lt;td&gt;move file&lt;/td&gt;
&lt;td&gt;move c:\test\test.txt c:\windows\test.txt&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Exit from the terminal&lt;/td&gt;
&lt;td&gt;exit&lt;/td&gt;
&lt;td&gt;exit&lt;/td&gt;
&lt;td&gt;close the window&lt;/td&gt;
&lt;td&gt;exit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Copy a file or dir into other location&lt;/td&gt;
&lt;td&gt;copy&lt;/td&gt;
&lt;td&gt;cp&lt;/td&gt;
&lt;td&gt;copy file&lt;/td&gt;
&lt;td&gt;copy c:\test\test.txt c:\windows\test.txt&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Go inside a directory&lt;/td&gt;
&lt;td&gt;cd&lt;/td&gt;
&lt;td&gt;cd&lt;/td&gt;
&lt;td&gt;change directory&lt;/td&gt;
&lt;td&gt;cd test&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;See the full path of the current directory&lt;/td&gt;
&lt;td&gt;cd&lt;/td&gt;
&lt;td&gt;cd&lt;/td&gt;
&lt;td&gt;show the current directory&lt;/td&gt;
&lt;td&gt;cd (Windows) or pwd (Mac OS / Linux)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Delete a file from the system&lt;/td&gt;
&lt;td&gt;rmdir (or del)&lt;/td&gt;
&lt;td&gt;rm&lt;/td&gt;
&lt;td&gt;delete a file&lt;/td&gt;
&lt;td&gt;del c:\test\test.txt&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Delete directory from the system&lt;/td&gt;
&lt;td&gt;rmdir /S&lt;/td&gt;
&lt;td&gt;rm -r&lt;/td&gt;
&lt;td&gt;delete a directory&lt;/td&gt;
&lt;td&gt;rm -r testdirectory&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Check the usage of a command&lt;/td&gt;
&lt;td&gt;[CMD] /?&lt;/td&gt;
&lt;td&gt;man [CMD]&lt;/td&gt;
&lt;td&gt;get help for a command&lt;/td&gt;
&lt;td&gt;cd /? (Windows) or man cd (Mac OS / Linux)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;code&gt;I hope the article was helpful to you! &lt;/code&gt;&lt;/p&gt;

&lt;p&gt;​&lt;/p&gt;

</description>
      <category>commandline</category>
      <category>terminal</category>
      <category>introduction</category>
    </item>
    <item>
      <title>JavaScript Asynchronous Programming and Callbacks</title>
      <dc:creator>Altaf Shaikh</dc:creator>
      <pubDate>Mon, 22 Mar 2021 09:50:27 +0000</pubDate>
      <link>https://dev.to/ialtafshaikh/javascript-asynchronous-programming-and-callbacks-217j</link>
      <guid>https://dev.to/ialtafshaikh/javascript-asynchronous-programming-and-callbacks-217j</guid>
      <description>&lt;p&gt;Computers are &lt;code&gt;asynchronous&lt;/code&gt; by design.&lt;/p&gt;

&lt;p&gt;Asynchronous means that things can happen &lt;code&gt;independently&lt;/code&gt; of the main program flow.&lt;/p&gt;

&lt;p&gt;In the current consumer computers, every program runs for a specific time slot and then it stops its execution to let another program continue their &lt;code&gt;execution&lt;/code&gt;. This thing runs in a cycle so fast that it's impossible to notice. We think our computers run many programs simultaneously, but this is an illusion (except on multiprocessor machines).&lt;/p&gt;

&lt;p&gt;Programs internally use &lt;code&gt;interrupts&lt;/code&gt;, a signal that's emitted to the processor to gain the attention of the system.&lt;/p&gt;

&lt;p&gt;I won't go into the internals of this, but just keep in mind that it's normal for programs to be asynchronous and halt their execution until they need attention, allowing the computer to execute other things in the meantime. When a program is waiting for a response from the network, it cannot halt the processor until the request finishes.&lt;/p&gt;

&lt;p&gt;Normally, programming languages are &lt;code&gt;synchronous&lt;/code&gt; and some provide a way to manage &lt;code&gt;asynchronicity&lt;/code&gt; in the language or through libraries. C, Java, C#, PHP, Go, Ruby, Swift, and Python are all synchronous by default. Some of them handle async by using threads, spawning a new process.&lt;/p&gt;

&lt;h2&gt;
  
  
  JavaScript
&lt;/h2&gt;

&lt;p&gt;JavaScript is &lt;code&gt;synchronous&lt;/code&gt; by default and is &lt;code&gt;single threaded&lt;/code&gt;. This means that code cannot create new threads and run in parallel.&lt;/p&gt;

&lt;p&gt;Lines of code are executed in series, one after another, this type of execution flow is also called as &lt;code&gt;Blocking Code/Mode&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Blocking Code Example
&lt;/h2&gt;

&lt;p&gt;Create a text file named input.txt with the following content -&lt;/p&gt;

&lt;p&gt;No other lines will execute until the whole file is read.&lt;/p&gt;

&lt;p&gt;Create a js file named &lt;code&gt;app.js&lt;/code&gt; with the following code -&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;var fs = require("fs");

var data = fs.readFileSync('input.txt');

console.log(data.toString());

console.log("Program Ended");
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now run the &lt;code&gt;main.js&lt;/code&gt; to see the result -&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;node main.js
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;No other lines will execute until the whole file is read.

Program Ended
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here, we can clearly see code of line are executed one after the other.&lt;/p&gt;

&lt;p&gt;But &lt;strong&gt;JavaScript&lt;/strong&gt; was &lt;code&gt;born&lt;/code&gt; inside the &lt;code&gt;browser&lt;/code&gt;, its main job, in the beginning, was to respond to user actions, like &lt;code&gt;onClick&lt;/code&gt;, &lt;code&gt;onMouseOver&lt;/code&gt;, &lt;code&gt;onChange&lt;/code&gt;, &lt;code&gt;onSubmit&lt;/code&gt; and so on. How could it do this with a synchronous programming model?&lt;/p&gt;

&lt;p&gt;The answer was in its environment. The browser provides a way to do it by providing a set of APIs that can handle this kind of functionality.&lt;/p&gt;

&lt;p&gt;More recently, Node.js introduced a &lt;code&gt;non-blocking I/O environment&lt;/code&gt; to extend this concept to file access, network calls and so on.&lt;/p&gt;

&lt;h2&gt;
  
  
  Callbacks
&lt;/h2&gt;

&lt;p&gt;You can't know when a user is going to click a button. So, you define an event handler for the click event. This event handler accepts a function, which will be called when the event is triggered:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;document.getElementById('button').addEventListener('click', () =&amp;gt; {

  //item clicked

})
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is the so-called &lt;code&gt;callback&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;A callback is a simple function that's passed as a value to another function, and will only be executed when the event happens. We can do this because JavaScript has first-class functions, which can be assigned to variables and passed around to other functions (called higher-order functions)&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;It's common to wrap all your client code in a load event listener on the window object, which runs the callback function only when the page is ready:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;window.addEventListener('load', () =&amp;gt; {

  //window loaded

  //do what you want

})
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Callbacks are used everywhere, not just in DOM events.&lt;/p&gt;

&lt;p&gt;One common example is by using timers:&lt;br&gt;
&lt;/p&gt;

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

  // runs after 2 seconds

}, 2000)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Handling errors in callbacks
&lt;/h2&gt;

&lt;p&gt;How do you handle errors with callbacks? One very common strategy is to use what Node.js adopted: the first parameter in any callback function is the error object: error-first callbacks&lt;/p&gt;

&lt;p&gt;If there is no error, the object is &lt;code&gt;null&lt;/code&gt;. If there is an error, it contains some description of the error and other information.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;fs.readFile('/file.json', (err, data) =&amp;gt; {

  if (err !== null) {

    //handle error

    console.log(err)

    return

  }

  //no errors, process data

  console.log(data)

})
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  The problem with callbacks
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;Callbacks&lt;/code&gt; are great for simple cases!&lt;/p&gt;

&lt;p&gt;However every callback adds a level of nesting, and when you have lots of callbacks, the code starts to be complicated very quickly:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;window.addEventListener('load', () =&amp;gt; {

  document.getElementById('button').addEventListener('click', () =&amp;gt; {

    setTimeout(() =&amp;gt; {

      items.forEach(item =&amp;gt; {

        //your code here

      })

    }, 2000)

  })

})
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is just a simple 4-levels code, but I've seen much more levels of nesting and it's not fun. This nesting of call-backs is termed as a &lt;code&gt;Call-back Hell&lt;/code&gt; problem in JS world.&lt;/p&gt;

&lt;h2&gt;
  
  
  How do we solve this?
&lt;/h2&gt;

&lt;p&gt;Alternatives to callbacks&lt;/p&gt;

&lt;p&gt;Starting with ES6, JavaScript introduced several features that help us with asynchronous code that do not involve using callbacks: &lt;code&gt;Promises (ES6)&lt;/code&gt; and &lt;code&gt;Async/Await (ES2017).&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Thank You for reading the article, I hope you got to learn something new from it : )&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>asynchronous</category>
      <category>callbacks</category>
    </item>
    <item>
      <title>Hosting NodeJs Application on Heroku Platform using Heroku CLI</title>
      <dc:creator>Altaf Shaikh</dc:creator>
      <pubDate>Mon, 22 Mar 2021 09:36:58 +0000</pubDate>
      <link>https://dev.to/ialtafshaikh/hosting-nodejs-application-on-heroku-platform-using-heroku-cli-1ja4</link>
      <guid>https://dev.to/ialtafshaikh/hosting-nodejs-application-on-heroku-platform-using-heroku-cli-1ja4</guid>
      <description>&lt;p&gt;In this blog, we will learn how to &lt;code&gt;Host&lt;/code&gt; NodeJs Application on &lt;code&gt;Heroku&lt;/code&gt; Platform using &lt;code&gt;Heroku CLI&lt;/code&gt;. No need to leave your terminal or code editor, all from the terminal itself, huh?, pretty cool, right? Let's see how we can achive this.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pre-requisite
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;a href="https://devcenter.heroku.com/articles/heroku-cli" rel="noopener noreferrer"&gt;Heroku cli&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://www.heroku.com/" rel="noopener noreferrer"&gt;Heroku Account&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Logging Into Heroku
&lt;/h2&gt;

&lt;p&gt;Heroku login is required once. Enter below command in your terminal and follow up the prompt window and &lt;code&gt;Authorize&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;h2&gt;
  
  
  Specify the version of node
&lt;/h2&gt;

&lt;p&gt;Add The version of Node.js to your &lt;code&gt;package.json&lt;/code&gt; file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"engines": {
    "node": "10.x"  // replace x with your node version like 10.16.2
},
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Specifying a start script
&lt;/h2&gt;

&lt;p&gt;create a &lt;code&gt;Procfile&lt;/code&gt; file inside the root directory of the project and add the below code in it&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;web: node app.js
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;By default, Heroku will look into our &lt;code&gt;package.json&lt;/code&gt; file under the scripts section and grab &lt;code&gt;start&lt;/code&gt; command. Sometimes we won't have that defined or it will be different from what we want the server to execute. We can specify the exact command we want by creating a &lt;code&gt;Procfile&lt;/code&gt; file.&lt;/p&gt;

&lt;h2&gt;
  
  
  Create Heroku App and Remote Repository on Heroku
&lt;/h2&gt;

&lt;p&gt;Specify a unique name for your application, this name should be globally unique.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;heroku create &amp;lt;app-name&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;heroku create todo-app-rest-backend-nodejs
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  ​Rename Your APP - Optional
&lt;/h2&gt;

&lt;p&gt;If you got &lt;code&gt;random&lt;/code&gt; app name or if you want to rename your Heroku app then use the below command to achieve it from the terminal itself.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;heroku apps:rename &amp;lt;new-app-name&amp;gt; --app &amp;lt;old-app-name&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  ​Build your app and run it locally - Optional
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;heroku local web
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Deploying Code To Heroku
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git push heroku master
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;Once the build and deployment is successful you will receive the url of the Hosted Application in your terminal.&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  If your Project has Environment Variables then Follow Below Along
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Set a config variables on heroku app
&lt;/h3&gt;

&lt;p&gt;Use below command for each environment variable to set all of your env variables and you are done.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;heroku config:set &amp;lt;environment-variable-name&amp;gt;=&amp;lt;value&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Examples:
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;heroku config:set GITHUB_USERNAME=joesmith
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;heroku config:set PORT=3000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;Congratulations!! You had successfully learned how to host the NodeJS application on Heroku Like a PRO&lt;/code&gt;&lt;/p&gt;

</description>
      <category>node</category>
      <category>heroku</category>
      <category>hosting</category>
      <category>guide</category>
    </item>
  </channel>
</rss>
