<?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: Amit jha</title>
    <description>The latest articles on DEV Community by Amit jha (@jha).</description>
    <link>https://dev.to/jha</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%2F372330%2F6052c5ab-02b6-453f-987e-56533b6ca264.jpeg</url>
      <title>DEV Community: Amit jha</title>
      <link>https://dev.to/jha</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jha"/>
    <language>en</language>
    <item>
      <title>(1/3) Nodejs With FirebaseAuth: The Right Way </title>
      <dc:creator>Amit jha</dc:creator>
      <pubDate>Thu, 14 Jan 2021 12:31:07 +0000</pubDate>
      <link>https://dev.to/jha/1-3-flutter-with-firebaseauth-the-right-way-56p5</link>
      <guid>https://dev.to/jha/1-3-flutter-with-firebaseauth-the-right-way-56p5</guid>
      <description>&lt;h1&gt;
  
  
  PART 1/3
&lt;/h1&gt;

&lt;p&gt;Hey there fellas! I'm back with another article and today we are talking about &lt;em&gt;FirebaseAuth&lt;/em&gt; with &lt;em&gt;Flutter&lt;/em&gt; and &lt;em&gt;Express&lt;/em&gt;. I have encountered that a lot of articles online talk about using &lt;em&gt;FirebaseAuth&lt;/em&gt; with flutter but not many of them talk about using your own server to manage the requests from your app while using FirebaseAuth. Today we will change that. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;Before we being I would like to mention that I'm assuming that you know Flutter and JavaScript.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;In today's article we will be using the &lt;em&gt;TwitterAuth&lt;/em&gt; API with flutter and Express to demonstrate how you can use any platform for authentication with your Flutter app while having you own custom server (in Nodejs, Django, Express, Java etc).&lt;/p&gt;

&lt;h2&gt;
  
  
  Let's Get Started!
&lt;/h2&gt;

&lt;p&gt;In this first article we will setup a Flutter project and connect it with our Twitter API. &lt;/p&gt;

&lt;h2&gt;
  
  
  START A FLUTTER PROJECT
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;flutter create letsauth
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This command will create out flutter project that we will use to demonstrate for authentication. &lt;/p&gt;

&lt;h2&gt;
  
  
  START A FIREBASE PROJECT
&lt;/h2&gt;

&lt;p&gt;Head over to &lt;a href="https://console.firebase.google.com" rel="noopener noreferrer"&gt;firebase console&lt;/a&gt; and start a new project as shown below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fvld5xnvwc575l4i5lumd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fvld5xnvwc575l4i5lumd.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Fill in the details they are asking (you can disable Google Analytics) and you will have your project ready.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F8jxbe1icuz4ceup1x8g7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F8jxbe1icuz4ceup1x8g7.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If all went well you will see a screen similar to the one shown above. Now it's time to connect our project with this flutter project. &lt;/p&gt;

&lt;p&gt;Depending upon the platform you are currently on (I'm developing for Android) click on the icon shown and complete the steps they have described carefully. Once you are done you should have your flutter project connected to the firebase project. &lt;/p&gt;

&lt;p&gt;It's time to get out twitter api access tokens and connect it to &lt;strong&gt;FlutterAuth&lt;/strong&gt; so that we can use it to sign-in in our app.&lt;/p&gt;

&lt;h2&gt;
  
  
  CREATE A TWITTER API APP
&lt;/h2&gt;

&lt;p&gt;This step requires you to have a twitter developer account. Head over to &lt;a href="https://developer.twitter.com" rel="noopener noreferrer"&gt;twitter developer page&lt;/a&gt; and create an account if you haven't already. While registering your app they may ask for a fallback url if you are using &lt;strong&gt;TwitterAuth&lt;/strong&gt;. Head over to &lt;a href="https://pub.dev/packages/flutter_twitter" rel="noopener noreferrer"&gt;flutter_twitter&lt;/a&gt; and enter the fallback urls mentioned there (copy past doesn't seem to work. Type it out)&lt;/p&gt;

&lt;p&gt;Once your app is registered you'll get the access key and token. Carefully save them as we will need it in future to connect firebase with twitter api. &lt;/p&gt;

&lt;h2&gt;
  
  
  CONNECT FIREBASE WITH TWITTER
&lt;/h2&gt;

&lt;p&gt;Alright, for the next step we need to tell firebase about our twitter api and that we will be using it for authentication. Head over to the &lt;a href="//console.firebase.google.com"&gt;firebase console&lt;/a&gt; and open your project. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ffl345uruyg517vz6tfkd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ffl345uruyg517vz6tfkd.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;On the left panel select Authentication and click on &lt;strong&gt;Get Started&lt;/strong&gt;. You should see the entire list of all the apis currently supported like shown below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fobhg18dvxrt5j1jzlbtf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fobhg18dvxrt5j1jzlbtf.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Currently all of them are disabled but we will enable the twitter api so that firebase can communicate with twitter. &lt;/p&gt;

&lt;p&gt;Click on the edit symbol next to twitter and enter the api key and access token provided by twitter that I asked you to save carefully. &lt;/p&gt;

&lt;p&gt;Upon completion you'll get a url similar to&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://demodev-dfb1f.firebaseapp.com/__/auth/handler
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;copy it, we will be telling our twitter api about this url now, so that it knows firebase will try to communicate with it. &lt;/p&gt;

&lt;p&gt;Open the twitter developer console again and head over to your project that you created.&lt;/p&gt;

&lt;p&gt;Under the twitter auth fallback urls add the url that firebase has provided and save it.&lt;/p&gt;

&lt;p&gt;Now you are all set to make twitter auth requests from your flutter app through firebase. &lt;/p&gt;

&lt;p&gt;Please note that you can follow the same steps to connect with potentially any auth api that firebase supports. &lt;/p&gt;

&lt;p&gt;In this next article i will show you how you can make auth requests (to twitter or any api) from your flutter app. &lt;/p&gt;

&lt;p&gt;Follow me so that you don't miss the next 2 articles regarding &lt;strong&gt;FirebaseAuth&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Thanks for reading,&lt;br&gt;
Jha&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>node</category>
      <category>android</category>
      <category>firebase</category>
    </item>
    <item>
      <title>3 Steps To Architect A Express Server</title>
      <dc:creator>Amit jha</dc:creator>
      <pubDate>Wed, 13 Jan 2021 09:27:38 +0000</pubDate>
      <link>https://dev.to/jha/3-steps-to-architect-a-express-server-1n5d</link>
      <guid>https://dev.to/jha/3-steps-to-architect-a-express-server-1n5d</guid>
      <description>&lt;h3&gt;
  
  
  Hey there fellas! I'm back with another interesting article that will help you become a full-stack developer.
&lt;/h3&gt;

&lt;p&gt;Let's get started!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/oF5oUYTOhvFnO/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/oF5oUYTOhvFnO/giphy.gif" alt="excited"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;A lot of young developers focus too much on making the code work than on the architecture of the project. However, when you work in large teams with potentially hundreds of people working on the same codebase it becomes important to understand and architect your projects so that it's easier for others to understand and maintain. &lt;/p&gt;

&lt;p&gt;So in today's post, I'm going to explain a popular pattern with the help of nodejs express server.&lt;/p&gt;

&lt;p&gt;NOTE: I'M ASSUMING YOU KNOW BASIC NODEJS&lt;/p&gt;




&lt;h1&gt;
  
  
  STEP 1: INSTALL DEPENDENCIES
&lt;/h1&gt;

&lt;h3&gt;
  
  
  &lt;em&gt;Start a Nodejs project&lt;/em&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm init &lt;span class="nt"&gt;-y&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The above step is going to create the package.json file that we need for a nodejs project. It stores all our dependencies that we will be installing.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;em&gt;Install nodemon&lt;/em&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install &lt;/span&gt;nodemon &lt;span class="nt"&gt;--save&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We basically need this package because we want the nodejs server to automatically restart when we make any changes while development. We will come back to nodemon in a later step.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;em&gt;Install express&lt;/em&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/fikcKja7O7MtzXzvQy/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/fikcKja7O7MtzXzvQy/giphy.gif" alt="duh"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install &lt;/span&gt;express &lt;span class="nt"&gt;--save&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;STEP 2: CREATE FILES AND FOLDERS&lt;/p&gt;

&lt;p&gt;In this step, we will create all the skeleton files and folders for the server.&lt;/p&gt;

&lt;p&gt;But before that lets modify the package.json file a bit.&lt;/p&gt;

&lt;p&gt;Right now &lt;em&gt;package.json&lt;/em&gt; looks like this&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--UXNOKkCD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/4z82dwlp1qp5feh114d9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--UXNOKkCD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/4z82dwlp1qp5feh114d9.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But we are going to add a script to use nodemon for auto-restart of the server while development.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--RVqVBFR8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/r8xcz8zzxutbifv7hnrv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--RVqVBFR8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/r8xcz8zzxutbifv7hnrv.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="nl"&gt;"dev"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"nodemon app.js"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We will create app.json soon which will house the starting scripts of the project.&lt;/p&gt;

&lt;h2&gt;
  
  
  Now we are ready to start creating files and folders.
&lt;/h2&gt;

&lt;h3&gt;
  
  
  app.js
&lt;/h3&gt;

&lt;p&gt;Inside your project create a new file called &lt;strong&gt;app.js&lt;/strong&gt; that will be the starting point for the server.&lt;/p&gt;

&lt;h3&gt;
  
  
  middleware folder
&lt;/h3&gt;

&lt;p&gt;Create a folder in the project directory called middleware that will contain all the middleware your server is using (like auth).&lt;/p&gt;

&lt;h3&gt;
  
  
  model folder
&lt;/h3&gt;

&lt;p&gt;create a folder in the project directory called &lt;strong&gt;model&lt;/strong&gt; that will house all the files that will contain all the data models and will act as a point of contact with the database. No other part of the server will directly interact with the server but the files inside the model folder.&lt;/p&gt;

&lt;h3&gt;
  
  
  view folder
&lt;/h3&gt;

&lt;p&gt;Create a folder in the project directory called &lt;strong&gt;view&lt;/strong&gt; that will contain the business logic. Files inside views will interact with the models to get the data from the server.&lt;/p&gt;

&lt;h3&gt;
  
  
  controller folder
&lt;/h3&gt;

&lt;p&gt;Create this folder in the project directory and remember that you will have all your route callbacks here.&lt;/p&gt;

&lt;h3&gt;
  
  
  route folder
&lt;/h3&gt;

&lt;p&gt;Finally, create a route folder in the project directory that will contain all the routes in your server.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;another way to go about this is by combining controllers and routes as suggested by &lt;a href="https://dev.to/hilleer"&gt;Daniel Hillmann&lt;/a&gt; in the comments&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In the end, the folder structure looks like this: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--mHepq5po--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/q56jd9xitlwygaxqn12f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mHepq5po--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/q56jd9xitlwygaxqn12f.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  STEP 3:
&lt;/h2&gt;

&lt;p&gt;Now for the sake of demonstration, we will set up an end to end route that will serve a request.&lt;/p&gt;

&lt;p&gt;Let's get right into it!!&lt;/p&gt;

&lt;p&gt;First, open app.js and type out (or paste) the code&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--WF1U8DSz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/v0loj9l66zeo3xdnb2b6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--WF1U8DSz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/v0loj9l66zeo3xdnb2b6.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;express&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;express&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;app&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;express&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;use&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;./route/index&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;PORT&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;3000&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;listen&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;PORT&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`listening on port: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;PORT&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;// use ` not '&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;line number 5&lt;/em&gt; will forward all requests to the server to the index.js (we will create it) from where we will make calls to the controller.&lt;/p&gt;

&lt;p&gt;Next, let's create the &lt;strong&gt;index.js&lt;/strong&gt; file in &lt;strong&gt;route&lt;/strong&gt; folder&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--kx5HnyVk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/z1tzkzui91o9irj02yok.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--kx5HnyVk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/z1tzkzui91o9irj02yok.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;express&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;express&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;router&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;express&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Router&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="nx"&gt;_hello&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;../controller/hello&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="nx"&gt;router&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="kd"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/hello&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;_hello&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;callback&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="nx"&gt;module&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;exports&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;router&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;Line number 7&lt;/em&gt; will call &lt;em&gt;hello.callback for every request that is made to _localhost:3000/hello&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Next up, let's create the controller callbacks. &lt;/p&gt;

&lt;p&gt;Create a file in &lt;strong&gt;controller&lt;/strong&gt; called &lt;em&gt;hello.js&lt;/em&gt; and type out this code:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Uc3fag-c--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/chxps82386ad2j444rqr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Uc3fag-c--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/chxps82386ad2j444rqr.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;helloView&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;../view/helloView&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;// import your data model and use it &lt;/span&gt;
&lt;span class="c1"&gt;// for your business logic&lt;/span&gt;
&lt;span class="nx"&gt;module&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;exports&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;callback&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;next&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;status&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;send&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Hello There!&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;THAT'S IT!&lt;/p&gt;

&lt;p&gt;now if you start the server by running the following command&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;you will be able to make a get request from your browser to &lt;strong&gt;localhost:3000/hello&lt;/strong&gt; and see a message saying &lt;em&gt;Hello There!&lt;/em&gt;. &lt;/p&gt;

&lt;p&gt;In this post, I showed you how to structure your express server so that it's easier to maintain. If you found this post to be informative please consider following me and subscribing to my newsletter.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://tinyletter.com/jha"&gt;https://tinyletter.com/jha&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Happy Learning,&lt;br&gt;
Jha&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>devops</category>
      <category>node</category>
      <category>webdev</category>
    </item>
    <item>
      <title>How To Test Ionic React PWA On An Actual Device While Developing? YOU SHOULD!</title>
      <dc:creator>Amit jha</dc:creator>
      <pubDate>Wed, 29 Apr 2020 19:20:37 +0000</pubDate>
      <link>https://dev.to/jha/how-to-test-ionic-react-pwa-on-an-actual-device-while-developing-you-should-36m</link>
      <guid>https://dev.to/jha/how-to-test-ionic-react-pwa-on-an-actual-device-while-developing-you-should-36m</guid>
      <description>&lt;p&gt;As I spoke about the future of App development in one of my posts, I briefly touched PWA aka Hybrid applications and why you should learn it. &lt;/p&gt;

&lt;p&gt;Now maybe you started learning how to develop PWA using Ionic but when you ran &lt;strong&gt;ionic serve&lt;/strong&gt; in the terminal the app started in a browser tab. But you are developing it for smartphone users, right?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/Ty9Sg8oHghPWg/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/Ty9Sg8oHghPWg/giphy.gif" alt="img"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Hey, don't worry I'll explain how you can run it on an actual device WHILE developing it.&lt;/p&gt;

&lt;p&gt;Let's go...&lt;/p&gt;

&lt;h1&gt;
  
  
  Step 1: Google it
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/8Bl38gdtUK7WDdi59y/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/8Bl38gdtUK7WDdi59y/giphy.gif" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Just kidding. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Connect your &lt;strong&gt;android&lt;/strong&gt; device to your computer/laptop with a &lt;strong&gt;USB&lt;/strong&gt; cable and turn on &lt;em&gt;usb tethering&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;Open the terminal and run
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;ipconfig
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;Note your tethering hotspot IP address like the one in the below figure
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4Tiw6gsj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/2pnsqgtor5anxnem0bua.png" alt="Alt Text"&gt;
&lt;/li&gt;
&lt;li&gt;Run ionic server to start the app
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;ionic serve
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;You can access the app through any phone browser at

&lt;code&gt;IP_ADDRESS:8100&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now you can test your app on your device while developing it. Any change you make to the app will be reflected in your device instantly.&lt;/p&gt;
&lt;h2&gt;
  
  
  Why you should?
&lt;/h2&gt;

&lt;p&gt;Well, imagine your PWA has a QR code scanner. How will you test its functionality without loading it onto an actual device? This is one of the reasons I prefer testing PWAs directly on the device instead of a simulated browser instance.&lt;/p&gt;

&lt;p&gt;That's all for today guys. &lt;/p&gt;

&lt;p&gt;I'll see you in the next one.&lt;/p&gt;

&lt;p&gt;Cheers,&lt;br&gt;
Jha&lt;/p&gt;
&lt;h1&gt;
  
  
  Some of my previous posts that you may like
&lt;/h1&gt;


&lt;div class="ltag__link"&gt;
  &lt;a href="/jha" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Q0KJOBJ3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://res.cloudinary.com/practicaldev/image/fetch/s--DQtOFBhP--/c_fill%2Cf_auto%2Cfl_progressive%2Ch_150%2Cq_auto%2Cw_150/https://dev-to-uploads.s3.amazonaws.com/uploads/user/profile_image/372330/6052c5ab-02b6-453f-987e-56533b6ca264.jpeg" alt="jha image"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/jha/save-and-save-dev-why-you-should-know-the-difference-j7p" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;--save and --save-dev : Why You Should know The Difference&lt;/h2&gt;
      &lt;h3&gt;Amit jha ・ Apr 28 ・ 2 min read&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#npm&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#javascript&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#devops&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#react&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;



&lt;div class="ltag__link"&gt;
  &lt;a href="/jha" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Q0KJOBJ3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://res.cloudinary.com/practicaldev/image/fetch/s--DQtOFBhP--/c_fill%2Cf_auto%2Cfl_progressive%2Ch_150%2Cq_auto%2Cw_150/https://dev-to-uploads.s3.amazonaws.com/uploads/user/profile_image/372330/6052c5ab-02b6-453f-987e-56533b6ca264.jpeg" alt="jha image"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/jha/why-learn-docker-2691" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Why learn Docker&lt;/h2&gt;
      &lt;h3&gt;Amit jha ・ Apr 25 ・ 5 min read&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#docker&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#webdev&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#devops&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#aws&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;



&lt;div class="ltag__link"&gt;
  &lt;a href="/jha" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Q0KJOBJ3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://res.cloudinary.com/practicaldev/image/fetch/s--DQtOFBhP--/c_fill%2Cf_auto%2Cfl_progressive%2Ch_150%2Cq_auto%2Cw_150/https://dev-to-uploads.s3.amazonaws.com/uploads/user/profile_image/372330/6052c5ab-02b6-453f-987e-56533b6ca264.jpeg" alt="jha image"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/jha/why-i-prefer-pytorch-over-tensorflow-same-reason-i-prefer-linux-over-windows-4pea" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Why I Prefer PyTorch Over TensorFlow: Same Reason I Prefer Linux Over Windows&lt;/h2&gt;
      &lt;h3&gt;Amit jha ・ Apr 28 ・ 1 min read&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#machinelearning&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#deeplearning&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#python&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#pytorch&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;



</description>
      <category>react</category>
      <category>javascript</category>
      <category>testing</category>
      <category>android</category>
    </item>
    <item>
      <title>--save and --save-dev : Why You Should know The Difference</title>
      <dc:creator>Amit jha</dc:creator>
      <pubDate>Tue, 28 Apr 2020 09:49:13 +0000</pubDate>
      <link>https://dev.to/jha/save-and-save-dev-why-you-should-know-the-difference-j7p</link>
      <guid>https://dev.to/jha/save-and-save-dev-why-you-should-know-the-difference-j7p</guid>
      <description>&lt;p&gt;We all have been rooky at almost everything at some point in our life, being a developer has not been an exception. &lt;br&gt;
&lt;a href="https://i.giphy.com/media/riGzWt6jfxJ3a/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/riGzWt6jfxJ3a/giphy.gif" alt="Gif emotional"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As a newbie, we all make mistakes and overlook things because either they look simple or overly complex. While this ignorance does not cause any major embarrassment in our &lt;em&gt;devlife&lt;/em&gt; (hopefully), sometimes somethings are worth paying attention to.&lt;/p&gt;

&lt;p&gt;Like the difference between --save and --save-dev while installing package through NPM.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/TPl5N4Ci49ZQY/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/TPl5N4Ci49ZQY/giphy.gif" alt="gif thinking"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h1&gt;
  
  
  What do they do anyway?
&lt;/h1&gt;

&lt;p&gt;Every node project has a file called &lt;strong&gt;package.json&lt;/strong&gt; that contains the details about the packages installed in the current project directory and alias for commands to start, build the project. Other than that it also contains two json objects that are of our interest in this blog post. &lt;strong&gt;dependencies&lt;/strong&gt; and &lt;strong&gt;dev-dependencies&lt;/strong&gt;.&lt;/p&gt;
&lt;h2&gt;
  
  
  What are dependencies?
&lt;/h2&gt;

&lt;p&gt;These are the packages that are required for the application to work properly. For example, You need react-dom to run a react project. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/QmJr6ewZqfQvC/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/QmJr6ewZqfQvC/giphy.gif" alt="gif duh"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Then what are dev-dependencies?
&lt;/h2&gt;

&lt;p&gt;These are the packages that you need while developing the project but not when deploying the project. These packages are not built when the project is deployed. Example: A package for instant-server for quick rerendering of a web page being developed.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/l1KddbhbMNYpZzfDW/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/l1KddbhbMNYpZzfDW/giphy.gif" alt="gif got it"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  What does --save and --save-dev do?
&lt;/h2&gt;

&lt;p&gt;Well, You already know the answer now, don't you?&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;--save saves the name and version of the package being installed in the dependency object.&lt;/p&gt;

&lt;p&gt;--save-dev saves the name and version of the package being installed in the dev-dependency object.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;As developers who are just getting started or want to build an application that can be easily deployed without any problem this difference is a must know.&lt;/p&gt;

&lt;p&gt;Or else this is how you'll find yourself&lt;br&gt;
&lt;a href="https://i.giphy.com/media/uDRezGbZW1uo0/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/uDRezGbZW1uo0/giphy.gif" alt="gif frustrated"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That's all in today post. I'll see you in the next one.&lt;/p&gt;

&lt;p&gt;Cheers,&lt;br&gt;
Jha&lt;/p&gt;
&lt;h2&gt;
  
  
  Some of my other posts that you may like
&lt;/h2&gt;


&lt;div class="ltag__link"&gt;
  &lt;a href="/jha" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Q0KJOBJ3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://res.cloudinary.com/practicaldev/image/fetch/s--DQtOFBhP--/c_fill%2Cf_auto%2Cfl_progressive%2Ch_150%2Cq_auto%2Cw_150/https://dev-to-uploads.s3.amazonaws.com/uploads/user/profile_image/372330/6052c5ab-02b6-453f-987e-56533b6ca264.jpeg" alt="jha image"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/jha/7-tricks-to-get-more-done-as-a-developer-35k9" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;7 Tricks To Get More Done As A Developer&lt;/h2&gt;
      &lt;h3&gt;Amit jha ・ Apr 26 ・ 6 min read&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#productivity&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#devops&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;br&gt;
&lt;div class="ltag__link"&gt;
  &lt;a href="/jha" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Q0KJOBJ3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://res.cloudinary.com/practicaldev/image/fetch/s--DQtOFBhP--/c_fill%2Cf_auto%2Cfl_progressive%2Ch_150%2Cq_auto%2Cw_150/https://dev-to-uploads.s3.amazonaws.com/uploads/user/profile_image/372330/6052c5ab-02b6-453f-987e-56533b6ca264.jpeg" alt="jha image"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/jha/why-learn-docker-2691" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Why learn Docker&lt;/h2&gt;
      &lt;h3&gt;Amit jha ・ Apr 25 ・ 5 min read&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#docker&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#webdev&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#devops&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#aws&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  I also write on Medium
&lt;/h2&gt;


&lt;div class="ltag__link"&gt;
  &lt;a href="https://medium.com/@amit.jha6700/series-announcement-3aee57a44746" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Uqxk81WI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/fit/c/96/96/2%2Ash5wse3GE-8tBX0DLQaCQA.jpeg" alt="Amit jha"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://medium.com/@amit.jha6700/series-announcement-3aee57a44746" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;DEEP LEARNING: SERIES ANNOUNCEMENT - Amit jha - Medium&lt;/h2&gt;
      &lt;h3&gt;Amit jha ・ &lt;time&gt;Apr 28, 2020&lt;/time&gt; ・ 2 min read
      &lt;div class="ltag__link__servicename"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--aYMKNcyE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/medium_icon-fbdac08496f06c5bd53be920c7bc8d56d355b69c0fb7e49cac6357a70140af17.svg" alt="Medium Logo"&gt;
        Medium
      &lt;/div&gt;
    &lt;/h3&gt;
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


</description>
      <category>npm</category>
      <category>javascript</category>
      <category>devops</category>
      <category>react</category>
    </item>
    <item>
      <title>Why I Prefer PyTorch Over TensorFlow: Same Reason I Prefer Linux Over Windows</title>
      <dc:creator>Amit jha</dc:creator>
      <pubDate>Tue, 28 Apr 2020 08:31:38 +0000</pubDate>
      <link>https://dev.to/jha/why-i-prefer-pytorch-over-tensorflow-same-reason-i-prefer-linux-over-windows-4pea</link>
      <guid>https://dev.to/jha/why-i-prefer-pytorch-over-tensorflow-same-reason-i-prefer-linux-over-windows-4pea</guid>
      <description>&lt;h3&gt;
  
  
  Hey everyone as we kick start this series I would like to shed some light on why I prefer PyTorch over TensorFlow and why you should too.
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--OC4xc8TN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/0m57d4d45o8a6ggqi10a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--OC4xc8TN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/0m57d4d45o8a6ggqi10a.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As a deep learning practitioner I like (or require) custom architectures for my projects or research papers which can be difficult to build using TensorFlow because it’s implementation is not very friendly (non-pythonic). Hence, building a custom architecture in TensorFlow is time-consuming.&lt;/p&gt;

&lt;p&gt;Additionally, unless you are using core TensorFlow you don’t have much control over anything other than the number of layers in a model and their configurations.&lt;/p&gt;

&lt;p&gt;PyTorch, on the other hand, gives you complete control over how you want to train your model and what should be the underlying architecture. In fact, it uses OOP for building deep learning model and the training loop is an ACTUALLY python for loop!!&lt;/p&gt;

&lt;p&gt;This gives you full control over how the model is trained and provides you with all the optimizations that libraries like TensorFlow provide.&lt;/p&gt;

&lt;p&gt;Now that I’ve explained why I prefer PyTorch over TensorFlow we are ready to explore deep learning.&lt;/p&gt;

&lt;p&gt;Cheers,&lt;br&gt;
Jha&lt;/p&gt;
&lt;h2&gt;
  
  
  This series will also be available on Medium
&lt;/h2&gt;


&lt;div class="ltag__link"&gt;
  &lt;a href="https://medium.com/@amit.jha6700/series-announcement-3aee57a44746" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Uqxk81WI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/fit/c/96/96/2%2Ash5wse3GE-8tBX0DLQaCQA.jpeg" alt="Amit jha"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://medium.com/@amit.jha6700/series-announcement-3aee57a44746" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;DEEP LEARNING: SERIES ANNOUNCEMENT - Amit jha - Medium&lt;/h2&gt;
      &lt;h3&gt;Amit jha ・ &lt;time&gt;Apr 28, 2020&lt;/time&gt; ・ 2 min read
      &lt;div class="ltag__link__servicename"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--aYMKNcyE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/medium_icon-fbdac08496f06c5bd53be920c7bc8d56d355b69c0fb7e49cac6357a70140af17.svg" alt="Medium Logo"&gt;
        Medium
      &lt;/div&gt;
    &lt;/h3&gt;
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  Some of my other blog posts that you may like
&lt;/h2&gt;


&lt;div class="ltag__link"&gt;
  &lt;a href="/jha" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Q0KJOBJ3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://res.cloudinary.com/practicaldev/image/fetch/s--DQtOFBhP--/c_fill%2Cf_auto%2Cfl_progressive%2Ch_150%2Cq_auto%2Cw_150/https://dev-to-uploads.s3.amazonaws.com/uploads/user/profile_image/372330/6052c5ab-02b6-453f-987e-56533b6ca264.jpeg" alt="jha image"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/jha/7-tricks-to-get-more-done-as-a-developer-35k9" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;7 Tricks To Get More Done As A Developer&lt;/h2&gt;
      &lt;h3&gt;Amit jha ・ Apr 26 ・ 6 min read&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#productivity&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#devops&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;br&gt;
&lt;div class="ltag__link"&gt;
  &lt;a href="/jha" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Q0KJOBJ3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://res.cloudinary.com/practicaldev/image/fetch/s--DQtOFBhP--/c_fill%2Cf_auto%2Cfl_progressive%2Ch_150%2Cq_auto%2Cw_150/https://dev-to-uploads.s3.amazonaws.com/uploads/user/profile_image/372330/6052c5ab-02b6-453f-987e-56533b6ca264.jpeg" alt="jha image"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/jha/why-learn-redux-in-2020-a-way-to-deal-with-react-s-messy-state-management-dam" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Why learn Redux in 2020: A way to deal with react's messy state management&lt;/h2&gt;
      &lt;h3&gt;Amit jha ・ Apr 25 ・ 3 min read&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#react&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#javascript&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#webdev&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#redux&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


</description>
      <category>machinelearning</category>
      <category>deeplearning</category>
      <category>python</category>
      <category>pytorch</category>
    </item>
    <item>
      <title>7 Tricks To Get More Done As A Developer</title>
      <dc:creator>Amit jha</dc:creator>
      <pubDate>Sun, 26 Apr 2020 14:46:26 +0000</pubDate>
      <link>https://dev.to/jha/7-tricks-to-get-more-done-as-a-developer-35k9</link>
      <guid>https://dev.to/jha/7-tricks-to-get-more-done-as-a-developer-35k9</guid>
      <description>&lt;p&gt;You have been there, haven't you? You have had epic ideas in your head that could bring down FACEBOOK, make you the next Steve Wozniak? But you didn't do anything about it because you were too cooked for it. &lt;/p&gt;

&lt;p&gt;OR&lt;/p&gt;

&lt;p&gt;You are lazy. Sliding your fingers on the keyboard and building something wonderful is a waste of your mental horsepower.&lt;/p&gt;

&lt;p&gt;But you want to change, right? &lt;/p&gt;

&lt;p&gt;You want to take down FACEBOOK or you want to make something more mature than a stupid social networking site that survives by selling your data.&lt;/p&gt;

&lt;p&gt;Well, I'm here to help. In today's blog post I'm going to present to you 7 ways to turn your life around as a developer. The techniques are fully tested by professionals and many of them are part of my daily routine. &lt;/p&gt;

&lt;p&gt;You can learn about them through self-help books but hey! who has time to read when you are busy building cool stuff?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Let's go...&lt;/strong&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  1. Clear Your Room/Desk/House
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/dBTnKicCH0IiCzbTVM/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/dBTnKicCH0IiCzbTVM/giphy.gif" alt="clean your room gif"&gt;&lt;/a&gt;&lt;br&gt;
What!! No way. That's the most useless thing to do. I'm done here. This post is useless.&lt;br&gt;
Hang on buddy...&lt;br&gt;
Cleaning your room has a psychological effect that makes you feel happy and positive immediately, at least to some extent. &lt;br&gt;
Not just that you are moving your limbs (thank god) while cleaning, that means your brain is making decisions instead of procrastinating.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;'Where should I throw this rotten banana peel?'&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Nah mate, I'm not convinced. &lt;/p&gt;

&lt;p&gt;sure, here is a &lt;a href="https://www.lifehack.org/350760/5-reasons-why-tidying-your-room-can-change-your-life"&gt;link&lt;/a&gt; that may convince you.&lt;/p&gt;

&lt;p&gt;Still not convinced? You can close this post. We are talking business here, this is not a pep talk.&lt;/p&gt;
&lt;h1&gt;
  
  
  2. Make A Journal
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/121cS334yDC0Hm/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/121cS334yDC0Hm/giphy.gif" alt="Writing journal gif"&gt;&lt;/a&gt;&lt;br&gt;
Actually, make 2. &lt;br&gt;
One for your day planning and to-do list (To-Do Book) and another to write ideas and thoughts (Thought Book).&lt;/p&gt;

&lt;p&gt;Do you already do that? Oh, you have tired but didn't work out? okay.&lt;/p&gt;

&lt;p&gt;Try again. But this time try this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Every morning open your journal and look at your long term goal and check where do you stand currently (ex: 23% achieved). This will give you perspective. &lt;/li&gt;
&lt;li&gt;Then based upon your current standing start making entries in the to-do list. &lt;/li&gt;
&lt;li&gt;Once you are done with that flip back to the previous day and copy the pending tasks.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Lastly, start writing the estimated time when you will do that task.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This entire process hardly takes 6/7 mins but it will have a huge impact on your productivity. &lt;/p&gt;

&lt;p&gt;Why? &lt;/p&gt;

&lt;p&gt;Because you are no longer worried about "what was I suppose to do next?". You have all that on paper. &lt;/p&gt;

&lt;p&gt;But that's not it, make sure to carry it everywhere and keep checking it even when you know what task is next. This will help you stay focused.&lt;/p&gt;

&lt;p&gt;Strike the task as soon as it is done. This will have a subconscious impact and make you feel better. YOU ARE IN MOTION!&lt;/p&gt;

&lt;p&gt;One more thing. Don't hesitate to make changes. For example, one task took 1/2 hr more than you expected (it will always happen, trust me) then take 5 mins and adjust the estimated time for all upcoming tasks accordingly. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;The idea of a to-do list is not to have a rigid schedule and get everything done, the idea is to get more done&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Todo list has changed my life for the better and I'm sure it will change yours too.&lt;/p&gt;

&lt;p&gt;Moving one to thought book.&lt;/p&gt;

&lt;p&gt;Why do I need it? You do. We all do.&lt;/p&gt;

&lt;p&gt;As much as you may deny it we are not conscious about our thoughts. The notion that thoughts are progressive, moving from one topic to another is wrong. Actually our brain is much more complex than that. Most of those thoughts that we have has been there even before you realise they existed. If they are positive GOOD. But if they are negative it will only affect your productivity. The best way to deal with it is to write it down. You don't have to read your thought book, it's just a psychological trick. &lt;/p&gt;

&lt;p&gt;As soon as you catch yourself thinking instead to being productive, sit bolt straight (that's important) and write your current thought in the book. As time passes you will become more productive and think less crap.&lt;/p&gt;

&lt;p&gt;It works, trust me.&lt;br&gt;
ps: DON'T USE TODO APPS. USE PEN AND PAPER ONLY. IT'S NOT COOL BUT IT'S MORE EFFECTIVE.&lt;/p&gt;
&lt;h1&gt;
  
  
  3. Throw your phone away
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/12laWv0ZXn8kM/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/12laWv0ZXn8kM/giphy.gif" alt="Throw phone way gif"&gt;&lt;/a&gt;&lt;br&gt;
Goddammit Charles, not literally...&lt;/p&gt;

&lt;p&gt;Now, I know you are outraged but trust me your biggest distraction is your phone (FACEBOOK/WhatsApp/Instagram/Wechat etc). If you want to be a productive developer keep your phone as far as possible (ex. keep it in the hall while you work in the room). It will be hard in the beginning but eventually, you will get over the urge to check it.&lt;/p&gt;

&lt;p&gt;If your work requires you to use your phone (App developer) then keep the data off or avoid using the social networking applications (hell just delete them bob).&lt;/p&gt;

&lt;p&gt;Not just on your phone, try to avoid using social networking on your laptop/desktop. How? keep checking your todo list and look at the time to find out what you should be doing at the moment then &lt;strong&gt;FORCE&lt;/strong&gt; yourself to do that. &lt;/p&gt;

&lt;p&gt;Keep writing your thoughts.&lt;/p&gt;
&lt;h1&gt;
  
  
  4. Take breaks
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/muCo9BLS7vjErTON27/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/muCo9BLS7vjErTON27/giphy.gif" alt="relax gif"&gt;&lt;/a&gt;&lt;br&gt;
Don't get so caught up while working that you forget to relax. Our brain (and eyes) need to rest after every few hours for better concentration, make sure they get that. &lt;/p&gt;

&lt;p&gt;One neat trick is to drink a lot of water 😉&lt;/p&gt;

&lt;p&gt;Also, make sure you check your todo list after every break to make sure you are on track. If you do not then modify the todo list. Be flexible.&lt;/p&gt;
&lt;h1&gt;
  
  
  5. Work out regularly
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/65siwUOTfFIt2/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/65siwUOTfFIt2/giphy.gif" alt="workout gif"&gt;&lt;/a&gt;&lt;br&gt;
Regular workout keeps your body fit and your mind laser-sharp. &lt;br&gt;
There is nothing much I have to say here. This is a no crap post. Workout, it's good.&lt;/p&gt;

&lt;p&gt;Here are the things you should do at the bare minimum:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;10 Jumping jacks&lt;/li&gt;
&lt;li&gt;10 Inclined push-ups&lt;/li&gt;
&lt;li&gt;10 wide push-ups&lt;/li&gt;
&lt;li&gt;Run for 10 Mins&lt;/li&gt;
&lt;li&gt;5 wide push-ups&lt;/li&gt;
&lt;li&gt;5 Inclined push-ups&lt;/li&gt;
&lt;li&gt;5 Jumping jacks&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This will hardly take 25 mins of your time but you'll feel young, boomer.&lt;/p&gt;
&lt;h1&gt;
  
  
  6. Avoid caffeine
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/3oriO04qxVReM5rJEA/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/3oriO04qxVReM5rJEA/giphy.gif" alt="coffee"&gt;&lt;/a&gt;&lt;br&gt;
As much as you'll say otherwise caffeine is not good for you (in the long run). Make sure you don't consume it in any form. Replace it with more healthy options. Drink warm water. Green tea. The list goes on. &lt;/p&gt;

&lt;p&gt;It helps you concentrate more? At what cost? Your health is more important than staying up until 4 AM to get something done. &lt;/p&gt;

&lt;p&gt;And honestly, if you follow all the advice above then there won't be any need to stay up that late. You will be doing more than what you expected in record time.&lt;/p&gt;
&lt;h1&gt;
  
  
  7. Sleep at least 6hrs every day
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/3oEdvbQ9SwvLaZTY40/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/3oEdvbQ9SwvLaZTY40/giphy.gif" alt="Sleep gif"&gt;&lt;/a&gt;&lt;br&gt;
Sleep is one of the most essential parts of our schedule. Sadly, as developers, we sacrifice it more frequently than we should. As I said earlier if you follow all the advice in this post you won't need to stay up late or drink coffee. Your life will change forever. Mine did.&lt;/p&gt;

&lt;p&gt;That's all from me folks. Tell more about your productivity hacks in the comment section below. I would love to learn from you all.&lt;/p&gt;

&lt;p&gt;Cheers,&lt;br&gt;
Jha&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Some of my other posts that you may like&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag__link"&gt;
  &lt;a href="/jha" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Q0KJOBJ3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://res.cloudinary.com/practicaldev/image/fetch/s--DQtOFBhP--/c_fill%2Cf_auto%2Cfl_progressive%2Ch_150%2Cq_auto%2Cw_150/https://dev-to-uploads.s3.amazonaws.com/uploads/user/profile_image/372330/6052c5ab-02b6-453f-987e-56533b6ca264.jpeg" alt="jha image"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/jha/why-learn-docker-2691" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Why learn Docker&lt;/h2&gt;
      &lt;h3&gt;Amit jha ・ Apr 25 ・ 5 min read&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#docker&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#webdev&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#devops&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#aws&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;



&lt;div class="ltag__link"&gt;
  &lt;a href="/jha" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Q0KJOBJ3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://res.cloudinary.com/practicaldev/image/fetch/s--DQtOFBhP--/c_fill%2Cf_auto%2Cfl_progressive%2Ch_150%2Cq_auto%2Cw_150/https://dev-to-uploads.s3.amazonaws.com/uploads/user/profile_image/372330/6052c5ab-02b6-453f-987e-56533b6ca264.jpeg" alt="jha image"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/jha/why-learn-redux-in-2020-a-way-to-deal-with-react-s-messy-state-management-dam" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Why learn Redux in 2020: A way to deal with react's messy state management&lt;/h2&gt;
      &lt;h3&gt;Amit jha ・ Apr 25 ・ 3 min read&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#react&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#javascript&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#webdev&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#redux&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


</description>
      <category>productivity</category>
      <category>devops</category>
    </item>
    <item>
      <title>Why learn Docker</title>
      <dc:creator>Amit jha</dc:creator>
      <pubDate>Sat, 25 Apr 2020 11:28:57 +0000</pubDate>
      <link>https://dev.to/jha/why-learn-docker-2691</link>
      <guid>https://dev.to/jha/why-learn-docker-2691</guid>
      <description>&lt;p&gt;Let’s be honest, software development is hard. Especially when you are working on a product with separate components that are required to be integrated together. Over the years different software development techniques have been developed to streamline the development process and meet the requirements and quality at the same time. However, in recent years as cloud-based technologies have flourished, most of the existing development methods have become somewhat difficult to manage when it comes to developing quick and fast cloud-based software solutions. In today’s blog post we discuss why to learn docker and the technologies and processes that surround it.&lt;/p&gt;

&lt;p&gt;Let’s get started…&lt;/p&gt;

&lt;h1&gt;
  
  
  What is the problem
&lt;/h1&gt;

&lt;p&gt;To give you some context let’s say you are developing a product for a particular customer(a company or client) and you are using different technologies such as client database, static front end, back-end development, virtual machines, production cluster etc. You can see this is a heavy project. Now, imagine you need to upgrade the database server or say you want to switch from MySQL to MongoDB. Well, it doesn’t sound like a huge problem, right? To be honest, it’s not impossible but to be able to make this transition not just the database server but also all the features that are using the database have to be updated. This increases the amount of time required to complete the upgrade and the developers may end up inducing more bugs into the system. So the problem is &lt;strong&gt;scalability&lt;/strong&gt; and &lt;strong&gt;software evolution&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Now, Imagine your customer doesn’t want you to set up your own in-house server for this product instead its suppose to be in the cloud. That means this entire product has to be able to work in a remote server(cloud). This gives rise to yet another problem. Now you have to manually install all the dependencies on to the remote server(cloud) before you can deploy the product. And every time a new version or a new feature is added to the product the dependencies in regards to the feature have to be installed onto the server. This gives rise to yet another problem. Now if a feature requires a certain version of the previously installed dependency the previous version has to be replaced with the version that’s required, but now the feature that was using the previously installed version has to be updated otherwise the system will not work as intended. As you can see this requires a lot of work from the developer just to deploy and improve a product. This slows down the development process as the developers have to make sure that the installed package is not broken and take care of the dependencies. So the problem is &lt;strong&gt;portability&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Now that you have understood what the problems are let’s try to find out the solution…&lt;/p&gt;

&lt;h1&gt;
  
  
  Solution
&lt;/h1&gt;

&lt;p&gt;Okay, let’s try to find a fix to all the aforementioned problems.&lt;/p&gt;

&lt;p&gt;Let’s get portability out of the way first. How do you make something portable? For example, if you have to shift to a new place you rent a container truck, load all your stuff into the truck and then transport it to where ever you want. Well, that’s the most logical thing to do, right? This is exactly how applications are deployed in a cloud-based architecture. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Container&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ynshzLNn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.pngarts.com/files/3/Container-Truck-PNG-High-Quality-Image.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ynshzLNn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.pngarts.com/files/3/Container-Truck-PNG-High-Quality-Image.png" alt="Truck"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A container is like a virtual box that has all the necessary dependencies installed for a particular product. It’s better than a native virtual box because it can run directly above the existing operating system instead of running an entire operating system over the existing one. A container runs as a process in the existing operating system such that the applications running under it are isolated from the system, that is, the application runs exactly as it is supposed to irrespective of the operating system. If it doesn’t sound like a big deal then have a look at this example. Imagine, Your application needs to run on a cloud server but the code and scripts and dependencies are installed on your local system. So now to deploy this product to a cloud server all the dependencies have to be manually configured in the remote server. But you have decided to try out this new technology called containerisation to deploy your application. So, you write your containerisation script to automatically configure your remote server with all the dependencies and automatically deploy the application for you. Not just that, because a container runs over the existing operating system as a process you can have multiple containers running on the same server without worrying about dependency conflicts we talked about earlier. How neat, right? Well, that’s exactly what a container is for. It raps up all the scripts and it’s dependencies into a container such that it will always run as intended irrespective of the operating system and environment.&lt;/p&gt;

&lt;p&gt;Now, we understood how the portability problem is solved using containers but what about scalability? And software evolution?&lt;/p&gt;

&lt;p&gt;Again, let’s understand this with the help of an example. As a developer at a cloud-based company, you successfully deployed a product which is now gaining traffic. Your company wants you to scale this product up. Meaning, increase its capacity to handle the traffic. In the case of a product deployed on the in-house server the entire server would have to be reconfigured(hardware/software-wise) but in a cloud-based architecture which is using a containerization service all you have to do it run multiple instances of your image, do some software configuration(load balancing etc) and you have successfully scaled up your product. It’s more complex than I’m making it sound but at a surface level this is what is happing. This solves the problem of scalability.&lt;/p&gt;

&lt;p&gt;After you scale up the product you realise that the customer requirements have changed, meaning, some new features are supposed to replace the older ones(for example, make login more streamlined). Well, guess what you have to do? Develop a more streamlined method to login deploy it as a container in the cloud and use restful API to communicate with the service. See, your product just evolved based upon customer requirement. This solves the problem of software evolution. This is just one method to solve this problem. In fact, some of you might argue that this is not the right way to do it. I could agree with you but then this blog post is to explain the benefits of containers and docker in simple terms so I think it doesn’t need to be absolutely precise about the implementation of containers.&lt;/p&gt;

&lt;h1&gt;
  
  
  WHERE DOES DOCKER FIT INTO ALL THIS?
&lt;/h1&gt;

&lt;p&gt;Because you are already reading this blog post I assume you already know what Docker is used for. However, if you are one of those people who came across this post by accident and have no clue what Docker is, well don’t worry its not another complex jargon you need to understand before you can dive into containerisation. Let me give you the internet description of Docker. It’s an open-source project which is used to write container images that can be easily deployed on the vast array of web service providers.&lt;/p&gt;

&lt;p&gt;So now that you understand why containerisation and Docker are so important for the current industry you are ready to go out and explore it on your own. Thanks for reading today’s blog post. I’ll see you next time. 😉&lt;/p&gt;

&lt;p&gt;Cheers!&lt;br&gt;
Jha&lt;/p&gt;

</description>
      <category>docker</category>
      <category>webdev</category>
      <category>devops</category>
      <category>aws</category>
    </item>
    <item>
      <title>Why learn Redux in 2020: A way to deal with react's messy state management</title>
      <dc:creator>Amit jha</dc:creator>
      <pubDate>Sat, 25 Apr 2020 11:08:40 +0000</pubDate>
      <link>https://dev.to/jha/why-learn-redux-in-2020-a-way-to-deal-with-react-s-messy-state-management-dam</link>
      <guid>https://dev.to/jha/why-learn-redux-in-2020-a-way-to-deal-with-react-s-messy-state-management-dam</guid>
      <description>&lt;p&gt;Let's be honest, react's state management is a nightmare for everyone working on large and small projects alike. The tree like structure that react brings to the table is sure worth it but the state management causes more pain than pleasure.&lt;/p&gt;

&lt;p&gt;How? let me explain it&lt;/p&gt;

&lt;h1&gt;
  
  
  The story of a smart developer
&lt;/h1&gt;

&lt;p&gt;Arther and Susan are the frontend developers at HavenLabs. A state-of-the-art research and product development lab. Arther and Susan want to make it big in this company and therefore put in the work to prove themselves. However, due to the recent market crunch, the company can only afford one frontend developer. So, in order to decide who is better, the company decides to give them a task and see who deserves to be kept.&lt;/p&gt;

&lt;p&gt;Now, this is where things get interesting. &lt;br&gt;
Arther decides to use react's state management and Susan decides to use Redux. They are given 1 week time to finish the project and both finish it on time.&lt;/p&gt;

&lt;p&gt;Hmm, the manager is confused now. They both have completed the project on time and both applications are working fine. To further assess both to them the manager changes the requirements of the application. These new requirements need some modification to certain parts of the application and the deadline is tomorrow. &lt;/p&gt;

&lt;p&gt;No problem both of them get to work right away.&lt;/p&gt;

&lt;p&gt;The morning of judgement is here and they have to present their applications. Susan presents what she has built and also explains the structure of the project to the manager. The application is working exactly as expected. She is confident that she will be the one who won't lose the job. On the other hand, Arther looks tired and dull (because he was developing the application all night). Nevertheless, he presents his project and just to impress his manager he decides to show off a working demo but as soon as he clicks on a button an error pops up&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;props&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getInputValue&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;order&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nx"&gt;is&lt;/span&gt; &lt;span class="nx"&gt;not&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;OOPS!&lt;/strong&gt;&lt;br&gt;
Looks like Arther forgot to pass the props down to the child component. &lt;/p&gt;

&lt;p&gt;The manager is not impressed and Arther loses his job.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Moral of the story: Don't use react's state management&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Why?
&lt;/h2&gt;
&lt;h1&gt;
  
  
  Why learn Redux in 2020
&lt;/h1&gt;

&lt;p&gt;There are several reasons to consider redux but I'm going to list the most intuitive ones and provided links for people who want to learn it.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Redux brings the concept of &lt;strong&gt;sing source of truth&lt;/strong&gt; to the table. Instead of passing props from the parent component to children or lifting the state up, redux stores all the states at one place called the &lt;strong&gt;store&lt;/strong&gt;. This store is accessible from all the components in the application and a component can receive and modify props from this store directly without expecting the parent to explicitly assign the props. &lt;em&gt;React states messy no more&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Redux brings structure to the project and overall the code-base becomes much more readable and clean.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That's all folks for today! I hope you enjoyed reading this post. If you did please click on the ❤️ button.&lt;/p&gt;

&lt;p&gt;See you in the next one&lt;br&gt;
Cheers,&lt;br&gt;
Jha&lt;/p&gt;

&lt;p&gt;A great post to learn more about redux:&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag__link"&gt;
  &lt;a href="/mercatante" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F50650%2F8cd9eb66-2317-4921-b807-e76d222e5005.jpg" alt="mercatante"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/mercatante/should-you-learn-redux-3ne8" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Should You Learn Redux?&lt;/h2&gt;
      &lt;h3&gt;Steven Mercatante ・ Nov 7 '19&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#redux&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#react&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#javascript&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#webdev&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;



&lt;p&gt;Additionally, &lt;br&gt;
 &lt;a href="https://www.valentinog.com/blog/redux/" rel="noopener noreferrer"&gt;Redux for beginners&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Some of my previous posts:&lt;/p&gt;


&lt;div class="ltag__link"&gt;
  &lt;a href="/jha" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F372330%2F6052c5ab-02b6-453f-987e-56533b6ca264.jpeg" alt="jha"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/jha/the-future-of-app-development-488h" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;The future of App development&lt;/h2&gt;
      &lt;h3&gt;Amit jha ・ Apr 23 '20&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#javascript&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#react&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#pwa&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#flutter&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;



&lt;div class="ltag__link"&gt;
  &lt;a href="/jha" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F372330%2F6052c5ab-02b6-453f-987e-56533b6ca264.jpeg" alt="jha"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/jha/deep-learning-through-first-principle-01-hmp" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Deep Learning through first principle: 01&lt;/h2&gt;
      &lt;h3&gt;Amit jha ・ Apr 24 '20&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#datascience&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#machinelearning&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#python&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


</description>
      <category>react</category>
      <category>javascript</category>
      <category>webdev</category>
      <category>redux</category>
    </item>
    <item>
      <title>Deep Learning through first principle: 01</title>
      <dc:creator>Amit jha</dc:creator>
      <pubDate>Fri, 24 Apr 2020 08:54:10 +0000</pubDate>
      <link>https://dev.to/jha/deep-learning-through-first-principle-01-hmp</link>
      <guid>https://dev.to/jha/deep-learning-through-first-principle-01-hmp</guid>
      <description>&lt;p&gt;Machine learning has truly captured the attention of the &lt;em&gt;big&lt;/em&gt; and &lt;em&gt;small&lt;/em&gt; alike. The adaption has reached such a state that there is a lack of deep learning experts in the industry. In this scenario, it becomes important for every deep learning practitioners to not just learn to "build" deep learning models but also learn about them through &lt;strong&gt;first principle&lt;/strong&gt;. In this series, we will break down the deep learning development cycle and write them in PyTorch.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;But today, let's talk about deep learning in general and try to understand it with an example. Let's go...&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;br&gt;
Let's try to connect the neural network(NN) with our life. Imagine, you are a neuron in a vast network. The decisions you make are directly or indirectly affected by every other neuron in the network(other people). You may argue that a kid living in a remote place on earth would never affect your life in any way, which is true. But in that case, the effect of that child's actions(or existence) would be infinitely small and therefore nonexistent. However, that does not mean the kid is not a part of this network. We all are. &lt;br&gt;
Similarly, your actions affect everyone's life. The people you know and the people you don't. Interestingly, this concept is not limited to humans. Everything in existence--dead, alive or lifeless--is part of this network. In this way, we can propose that the entire world is nothing but a vast neural matrix that functions as though it is one. 
&lt;h4&gt;
  
  
  Your action &lt;strong&gt;A&lt;/strong&gt; is the cause of someone's(or something's) influence &lt;strong&gt;W&lt;/strong&gt; and your experience &lt;strong&gt;E&lt;/strong&gt; towards a known or unknown goal &lt;strong&gt;G&lt;/strong&gt;.
&lt;/h4&gt;

&lt;p&gt;In this series, we will be diving into all these variables and discussing in greater detail about what else triggers and affects &lt;strong&gt;A&lt;/strong&gt;, where does &lt;strong&gt;E&lt;/strong&gt; come from, what is the concept of &lt;strong&gt;W&lt;/strong&gt; and most importantly what is &lt;strong&gt;G&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Make sure you follow me and save this post because I will be updating the index here as I add newer content.
&lt;/h3&gt;

&lt;p&gt;Also, hit the ❤️ button if you liked this post&lt;/p&gt;

&lt;p&gt;Cheers,&lt;br&gt;
Jha&lt;/p&gt;

</description>
      <category>datascience</category>
      <category>machinelearning</category>
      <category>python</category>
    </item>
    <item>
      <title>The future of App development</title>
      <dc:creator>Amit jha</dc:creator>
      <pubDate>Thu, 23 Apr 2020 14:52:29 +0000</pubDate>
      <link>https://dev.to/jha/the-future-of-app-development-488h</link>
      <guid>https://dev.to/jha/the-future-of-app-development-488h</guid>
      <description>&lt;p&gt;In the last few years, native app development has seen a shift from the 'native' tech stack to a more 'web' oriented development stack. While one can easily read articles and find loads of reason for this I think one the fundamental level there is only 1 reason for this shift: the need for One-to-many application. In this post, we will be diving into this reason to understand what it is.&lt;/p&gt;

&lt;h1&gt;
  
  
  The need for one-to-many Application
&lt;/h1&gt;

&lt;p&gt;Huh?&lt;br&gt;
Okay fine. One-to-many application is just my way of saying one code base and support for all platforms (Android/iOS). But what is it anyway?&lt;br&gt;
These applications are written once and supports both android and iOS out of the box. No need to rewrite anything separately for any platform. Well, is there anything even remotely similar to that? YES!&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Here are a few of them:&lt;/em&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;em&gt;Flutter&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;React-Native&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;PWA&lt;/em&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Let's look into what these are.&lt;/p&gt;

&lt;h2&gt;
  
  
  Flutter
&lt;/h2&gt;

&lt;p&gt;It is a framework developed by a team at Google for building fast and responsive mobile applications. It can be deployed to both Android and iOS without you having to rewrite the entire application for a specific platform. &lt;br&gt;
&lt;em&gt;Pros:&lt;/em&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Easy to learn&lt;/li&gt;
&lt;li&gt;lightning-fast development lifecycle&lt;/li&gt;
&lt;li&gt;Compiles to native code&lt;/li&gt;
&lt;li&gt;Fast and responsive&lt;/li&gt;
&lt;li&gt;Growing community&lt;/li&gt;
&lt;li&gt;Easy to connect to native APIs even if they are not directly supported
Out of the box support for many Google services&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;em&gt;Cons:&lt;/em&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Requires you to learn dart&lt;/li&gt;
&lt;li&gt;Many native APIs not supported. Hence may require knowledge of native development cycle to interface it with those APIs&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  React-Native
&lt;/h2&gt;

&lt;p&gt;It is an extension to the popular front-end development framework &lt;em&gt;React&lt;/em&gt; to develop fully functional and responsive mobile applications with web technologies alone. All you need is experience with &lt;em&gt;HTML&lt;/em&gt;, &lt;em&gt;CSS&lt;/em&gt;, &lt;em&gt;JavaScript&lt;/em&gt;, &lt;em&gt;JSX&lt;/em&gt; and you are good to go. If you haven't heard about &lt;em&gt;react&lt;/em&gt; or &lt;em&gt;react-native&lt;/em&gt; then you should definitely check them out.&lt;br&gt;
&lt;em&gt;Pros&lt;/em&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The only knowledge you need is

&lt;code&gt;Webdev&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;ol&gt;
&lt;li&gt;Supports many of the APIs supported by

&lt;code&gt;react&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;ol&gt;
&lt;li&gt;Amazing community online to help you out&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;em&gt;Cons&lt;/em&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Flutter has a much more stable development life cycle even though react-native is more widely used&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  PWA (Progressive Web Application)
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;&amp;gt; Hey, What is PWA?&lt;/em&gt;&lt;br&gt;
&lt;em&gt;&amp;gt;&amp;gt; Progressive Web Application&lt;/em&gt;&lt;br&gt;
&lt;em&gt;&amp;gt; Aren't all applications progressive&lt;/em&gt;&lt;br&gt;
&lt;em&gt;&amp;gt;&amp;gt; d.e.a.d&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Lame joke, sorry :P&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;What are they actually? Well, it is something which is truly &lt;em&gt;one-to-many application&lt;/em&gt;. Have you ever visited a website and received an annoying popup asking you to add the app to your home screen? You have. Exactly. &lt;/p&gt;

&lt;p&gt;These applications run in the browser and can be installed in the device as an application. To be honest, &lt;em&gt;install&lt;/em&gt; isn't the right word to use in this case but for the sake of argument, we will accept it. So, you write one application for the browser and that's it. Your application can be accessed from anywhere in the world on any platform and not just that, you can even install an instance of that application in your device that feels and works like a native application. Isn't it cool?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PWA&lt;/strong&gt; is a relatively new concept and it can be a game-changer in the long run. If you have not started learning PWAs development cycle then you are seriously missing out. One such framework for PWAs is &lt;em&gt;Ionic&lt;/em&gt;. Do check it out. &lt;/p&gt;

&lt;h3&gt;
  
  
  Additionally, these frameworks discussed above also help companies save money because now they don't have to divide their teams to work on iOS and Android separately.
&lt;/h3&gt;

&lt;h3&gt;
  
  
  Furthermore there are several more reasons to consider PWAs and such technologies and I hope this post makes you curious enough to explore them.
&lt;/h3&gt;

&lt;p&gt;Cheers,&lt;br&gt;
Jha&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>react</category>
      <category>pwa</category>
      <category>flutter</category>
    </item>
  </channel>
</rss>
