<?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: Data Structures </title>
    <description>The latest articles on DEV Community by Data Structures  (@datastructures).</description>
    <link>https://dev.to/datastructures</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%2F342905%2Fb9c95880-d492-4da3-ad63-f203a372480d.png</url>
      <title>DEV Community: Data Structures </title>
      <link>https://dev.to/datastructures</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/datastructures"/>
    <language>en</language>
    <item>
      <title>A Complete Guide To FlexBox</title>
      <dc:creator>Data Structures </dc:creator>
      <pubDate>Fri, 11 Sep 2020 09:57:07 +0000</pubDate>
      <link>https://dev.to/datastructures/a-complete-guide-to-flexbox-2ilc</link>
      <guid>https://dev.to/datastructures/a-complete-guide-to-flexbox-2ilc</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;When creating a new web project, you will find yourself thinking about the main layout of your site of components. CSS frameworks like Bootstrap and Foundation, and their respective uses of grids and CSS-rules make it easy to quickly get a nicely styled layout. But sometimes there are reasons to not use such a framework. For example, you might have a very simple website, and a framework might be overkill. Or you have a very specific layout in mind, that would need a lot of tweaking of the base code of the framework.&lt;/p&gt;

&lt;p&gt;In a world full of different devices, it’s important to make sure your layout and design are responsive towards changes in sizes. Therefore, flexible layouts are a must.&lt;/p&gt;

&lt;p&gt;Years ago, web developers heavily depended on the frame tag and the table tag. Both have their merits, but there are some new modules that will help us create a bit more of a flexible layout. The two most promising layout modules are &lt;a href="https://caniuse.com/#feat=css-grid"&gt;&lt;strong&gt;Grid&lt;/strong&gt;&lt;/a&gt; and &lt;a href="https://caniuse.com/#feat=flexbox"&gt;&lt;strong&gt;Flexbox&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The difference between grid and flexbox can be a bit confusing. Some feel that Grid is the successor to Flexbox, but this is not correct. Although you can pretty much end up with the same layouts using one or the other, they each have their use cases where they shine the most.&lt;/p&gt;

&lt;p&gt;Generally speaking the easiest rule to follow is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If you are building a larger layout system that has two dimensions, columns and rows, go for Grid.&lt;/li&gt;
&lt;li&gt;If you are building a layout that has one dimension, go for Flexbox. This will give you a bit more flexibility.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can also combine Grid and Flexbox. You can for example create a full layout with Grid, and inside create some elements with Flexbox. Such an element is for example a menu bar.&lt;/p&gt;

&lt;h2&gt;
  
  
  Exercise: creating a responsive menu component with css Flexbox
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step 1: The base code
&lt;/h3&gt;

&lt;p&gt;We will start with a basic html page. For the convenience of this experiment, we'll keep the css in the same file.&lt;/p&gt;

&lt;p&gt;As you can see, we have a div, that has three child divs. These are the main buttons of our menu. As they have no specific css mark up, they will just appear beneath each other.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;html&amp;gt;

&amp;lt;head&amp;gt;
  &amp;lt;style&amp;gt;
  &amp;lt;/style&amp;gt;
&amp;lt;/head&amp;gt;

&amp;lt;body&amp;gt;

  &amp;lt;div&amp;gt;
    &amp;lt;div&amp;gt;Home&amp;lt;/div&amp;gt;
    &amp;lt;div&amp;gt;The Team&amp;lt;/div&amp;gt;
    &amp;lt;div&amp;gt;Contact&amp;lt;/div&amp;gt;
    &amp;lt;div&amp;gt;Search&amp;lt;/div&amp;gt;
  &amp;lt;/div&amp;gt;

&amp;lt;/body&amp;gt;

&amp;lt;/html&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;To really see what we are doing, we'll add some colours, so once we start to play around with flex box, we'll see what exactly happens with what element. You can also check the lay out out in Web Inspector, but this is just a bit more visual.&lt;/p&gt;

&lt;p&gt;Go ahead and add a border width and border colour to the divs and background colours to the children divs. You can do it inline or in the CSS in the head tag.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;div {
  border: 1px solid #6638F0;
}

div &amp;gt; div {
  background-color: #5CC9F5;
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 2: Making it flex
&lt;/h3&gt;

&lt;p&gt;Now, we are going to make these divs behave in a more flexible way by adding Flex Box markup.&lt;/p&gt;

&lt;p&gt;To keep the overview, let's give the parent div a class, called "container". And we'll add the markup&lt;br&gt;
&lt;br&gt;
 &lt;code&gt;display: flex;&lt;/code&gt;&lt;br&gt;
&lt;br&gt;
. So now we end up with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;html&amp;gt;

&amp;lt;head&amp;gt;
  &amp;lt;style&amp;gt;

    div {
      border: 1px solid #6638F0;
    }

    div &amp;gt; div {
      background-color: #5CC9F5;
    }

    .container {
      display: flex;
    }

  &amp;lt;/style&amp;gt;
&amp;lt;/head&amp;gt;

&amp;lt;body&amp;gt;

  &amp;lt;div&amp;gt;
    &amp;lt;div&amp;gt;Home&amp;lt;/div&amp;gt;
    &amp;lt;div&amp;gt;Team&amp;lt;/div&amp;gt;
    &amp;lt;div&amp;gt;Contact&amp;lt;/div&amp;gt;
    &amp;lt;div&amp;gt;Search&amp;lt;/div&amp;gt;
  &amp;lt;/div&amp;gt;

&amp;lt;/body&amp;gt;

&amp;lt;/html&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;We know see that the div's get lined up.&lt;/p&gt;

&lt;h3&gt;
  
  
  step 3: Playing around with the Flexbox properties
&lt;/h3&gt;

&lt;p&gt;Flexbox has some fun properties, and they are mainly divided in to two categories:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Properties for the parent&lt;/li&gt;
&lt;li&gt;Properties for the children&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;At CSS-Tricks you can find a nice overview of the &lt;a href="https://css-tricks.com/snippets/css/a-guide-to-flexbox/"&gt;different properties&lt;/a&gt;.&lt;/p&gt;

&lt;h4&gt;
  
  
  1. Properties for the parent
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;flex-direction:&lt;/strong&gt; row | row-reverse | column | column-reverse&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;flex-wrap:&lt;/strong&gt; nowrap | wrap | wrap-reverse&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;justify-content:&lt;/strong&gt; flex-start | flex-end | center | space-between | space-around | space-evenly&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;align-items:&lt;/strong&gt; flex-start | flex-end | center | baseline | stretch&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;align-content:&lt;/strong&gt; flex-start | flex-end | center | space-between | space-around | stretch&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  2. Properties for the child
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;order:&lt;/strong&gt; integer (default is 0)&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;align-self:&lt;/strong&gt; auto | flex-start | flex-end | center | baseline | stretch&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;flex-grow:&lt;/strong&gt;: number (default is 0)&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;flex-shrink:&lt;/strong&gt; number (default is 0)&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;flex-basis:&lt;/strong&gt; length | auto (default is auto)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Let's play around with the parent properties! Here are some small exercises:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Make the row into a column again, using flex box&lt;/li&gt;
&lt;li&gt;Reverse the row&lt;/li&gt;
&lt;li&gt;Distribute the child divs so that the first one is all the way to the left, the last child div is all the way to the right, and the other divs are equally distributed along the x-axis.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ok, now let's play around with the child properties. You can do this inline or in the style tag.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Let's make "Home" the third word, without replacing divs.&lt;/li&gt;
&lt;li&gt;Let's put "Search" all the way right, and the other buttons left (Hint: margin-left: auto;). It's best to do this with a class, this will help you out in the next step.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Just to finish it off, let's add a min-width to the buttons, and  let's align the text of each button to the center.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.container &amp;gt; div {
  background-color: #5CC9F5;
  min-width: 80px;
  text-align: center;
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 3: Adding Responsiveness
&lt;/h3&gt;

&lt;p&gt;Ok, now we have a menubar, that works well on desktop, but we want i to be responsive and work nicely on mobile.&lt;/p&gt;

&lt;p&gt;There are multiple UX ways to do this. The quickest way is by adding a "wrap" property to the flex parent.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.container {
  display: flex;
  justify-content: space-between;
  flex-wrap: wrap-reverse;
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;But thanks to media queries, we can have a bit more fun: we'll make the menu switch to a vertical stacked menu if the screen is smaller than 400px in width.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@media all and (max-width: 400px) {
  .container {
    display: flex;
    flex-direction: column;
  }

  .search {
    margin-left: 0;
  }
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Now let's give the parent div a height, for example 200px, and evenly distribute the children.&lt;/p&gt;

&lt;p&gt;Now we can center the div's, using the align-self property:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.container &amp;gt; div {
  align-self: center;
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Now try to swap the order, and make Search the first item on mobile view.&lt;/p&gt;

&lt;p&gt;This is the end result. Of course, as there is no one truth in coding, you can end up with some differences.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;html&amp;gt;

&amp;lt;head&amp;gt;
  &amp;lt;style&amp;gt;
    div {
      border: 1px solid #6638F0;
    }

   .container &amp;gt; div {
      background-color: #5CC9F5;
      min-width: 80px;
      text-align: center;
    }

    .container {
      display: flex;
      justify-content: space-between;
    }

    .search {
      margin-left: auto;
    }

    @media all and (max-width: 400px) {
      .container {
        height: 200px;
        display: flex;
        flex-direction: column;
      }

      .container &amp;gt; div {
          align-self: center;
      }

      .search {
        margin-left: 0;
        order: -1;
      }

    }
  &amp;lt;/style&amp;gt;
&amp;lt;/head&amp;gt;

&amp;lt;body&amp;gt;

  &amp;lt;div class="container"&amp;gt;
    &amp;lt;div&amp;gt;Home&amp;lt;/div&amp;gt;
    &amp;lt;div&amp;gt;Team&amp;lt;/div&amp;gt;
    &amp;lt;div&amp;gt;Contact&amp;lt;/div&amp;gt;
    &amp;lt;div class="search"&amp;gt;Search&amp;lt;/div&amp;gt;
  &amp;lt;/div&amp;gt;

&amp;lt;/html&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 4: Make it semantic
&lt;/h3&gt;

&lt;p&gt;Now we have our CSS the way we want it, we should make our html a bit more semantic. HTML Semantics are often overlooked, and really not super easy, as the specs sometimes leave a lot of decisions up to the developer. But, in this case there is a simple and clear way to go.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A menu or navigation should be contained in the  tag.&lt;/li&gt;
&lt;li&gt;Menu items should be written as a list with ordered or unordered children.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So we end up with this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;html&amp;gt;

&amp;lt;head&amp;gt;
  &amp;lt;style&amp;gt;
    ul.container {
      border: 1px solid #6638F0;
      display: flex;
      justify-content: space-between;
      list-style: none;
        margin: 0;
      padding: 0;

    }

   ul.container &amp;gt; li {
      background-color: #5CC9F5;
      min-width: 80px;
      text-align: center;
    }

    .search {
      margin-left: auto;
    }

    @media all and (max-width: 400px) {
      ul.container {
        height: 200px;
        display: flex;
        flex-direction: column;
      }

      ul.container &amp;gt; li {
          align-self: center;
      }
      .search {
        margin-left: 0;
        order: -1;
      }

    }
  &amp;lt;/style&amp;gt;
&amp;lt;/head&amp;gt;

&amp;lt;body&amp;gt;
  &amp;lt;nav&amp;gt;
    &amp;lt;ul class="container"&amp;gt;
      &amp;lt;li&amp;gt;Home&amp;lt;/li&amp;gt;
      &amp;lt;li&amp;gt;Team&amp;lt;/li&amp;gt;
      &amp;lt;li&amp;gt;Contact&amp;lt;/li&amp;gt;
      &amp;lt;li class="search"&amp;gt;Search&amp;lt;/li&amp;gt;
    &amp;lt;/ul&amp;gt;
  &amp;lt;/nav&amp;gt;

&amp;lt;/html&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Notice the margin and padding added in the ul element. The ul element has browser inherent padding &amp;amp; margin by default. This way we get rid of it.&lt;/p&gt;

&lt;h3&gt;
  
  
  5: Extra: a simple stacked bar chart
&lt;/h3&gt;

&lt;p&gt;We haven't looked at "flex-grow" and "flex-shrink" yet. These properties have a lot of value, and, together with "max-width" and "min-width", you can get really creative.&lt;/p&gt;

&lt;p&gt;A simple example with "flex-grow" is a stacked bar chart:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;html&amp;gt;

&amp;lt;head&amp;gt;
  &amp;lt;style&amp;gt;

    .container {
      display: flex;
      margin: 0;
      padding: 0;
      height: 20px;
    }

    .container &amp;gt; div:nth-child(1) {
      background-color: #F78AE0;
      flex-grow: 2;
    }

    .container &amp;gt; div:nth-child(2) {
      background-color: #6638F0;
      flex-grow: 2.2;
    }

    .container &amp;gt; div:nth-child(3) {
      background-color: #4AF2A1;
      flex-grow: 1;
    }

  &amp;lt;/style&amp;gt;
&amp;lt;/head&amp;gt;

&amp;lt;body&amp;gt;
  &amp;lt;div class="container"&amp;gt;
    &amp;lt;div&amp;gt;&amp;lt;/div&amp;gt;
    &amp;lt;div&amp;gt;&amp;lt;/div&amp;gt;
    &amp;lt;div&amp;gt;&amp;lt;/div&amp;gt;
  &amp;lt;/div&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;And of course, you can quickly change this bar chart to a vertical chart, using media queries.&lt;/p&gt;

&lt;h4&gt;
  
  
  Extra note about prefixes
&lt;/h4&gt;

&lt;p&gt;Some browsers use prefixes to correctly show flex-box.&lt;/p&gt;

&lt;p&gt;As a full time employee, I struggle with having time to publish my  personal findings about software technologies. I believe most people do.Your contributions allow me to create what inspires me and publish my work related to web development, whether that's standalone dev.to blogpost or parts of bigger personal projects.&lt;/p&gt;

&lt;p&gt;Support My Work - &lt;a href="https://www.patreon.com/bePatron?u=40663296"&gt;Become a Patron!&lt;/a&gt;&lt;/p&gt;

</description>
      <category>css</category>
      <category>webdev</category>
      <category>computerscience</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Why Use Docker ?</title>
      <dc:creator>Data Structures </dc:creator>
      <pubDate>Fri, 11 Sep 2020 08:29:30 +0000</pubDate>
      <link>https://dev.to/datastructures/why-use-docker-3eo7</link>
      <guid>https://dev.to/datastructures/why-use-docker-3eo7</guid>
      <description>&lt;p&gt;Hello and welcome,I want to start to tackle two very important questions that we're going to be answering throughout this entire blogpost series.This is part one.&lt;/p&gt;

&lt;p&gt;The two important questions are &lt;strong&gt;what is docker&lt;/strong&gt; and secondly &lt;strong&gt;why do we use docker&lt;/strong&gt;.We're going to first tackle,why we use docker by going through a quick little demo right now.&lt;/p&gt;

&lt;p&gt;Now I'm going to show you a little flow diagram.&lt;/p&gt;

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

&lt;p&gt;This is a flow of probably,a process,you've gone through at least once in your life before.&lt;/p&gt;

&lt;p&gt;It's a flow of installing software on your personal computer and I bet, at least, once for you this is what has happened.Maybe you have downloaded some installer,you run that installer and then inevitably at some point in time you end up getting an error message during installation.&lt;/p&gt;

&lt;p&gt;So what do you do.&lt;/p&gt;

&lt;p&gt;Well you probably troubleshoot the issue by looking on Google.You try to find the solution eventually and solve that issue.You then rerun the installer only to find hey you have some other error appearing.&lt;/p&gt;

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

&lt;p&gt;And then you have to go through this entire troubleshooting process again.&lt;/p&gt;

&lt;p&gt;So this is at its core, what docker is trying to fix.&lt;/p&gt;

&lt;p&gt;Docker wants to make it really easy and really straightforward for you to install and run software on any given computer.Not just your personal Laptop/desktop but on web servers as well,Or any cloud based computing platform.I want to give you a very quick demonstration of this flow right here in action and then show you how quickly I can solve installing a piece of software by making use of docker.So I get to very quickly go through the flow of installing a piece of software called Redis.Redis is an in-memory data store.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--k1ktU4pA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://upload.wikimedia.org/wikipedia/en/thumb/6/6b/Redis_Logo.svg/1200px-Redis_Logo.svg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--k1ktU4pA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://upload.wikimedia.org/wikipedia/en/thumb/6/6b/Redis_Logo.svg/1200px-Redis_Logo.svg.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Right now I just want to give you a quick demo of how it can be a little bit challenging to get installed on your own computer.So I'm just gonna go to the installation steps here very quickly.This is the official download page.&lt;/p&gt;

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

&lt;p&gt;In theory I could use the documentation here to install Redis on my local machine.I'm going to go down to the installation section and it very proudly says  - Oh yeah just run these four commands right here and boom that's pretty much it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--3IbaSvbk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/h6x2928e0rf8exowziki.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3IbaSvbk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/h6x2928e0rf8exowziki.PNG" alt="redis installation"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So I'm going to grab the first command right here.I'm going to copy it and then I'm going to run it inside my terminal.&lt;/p&gt;

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

&lt;p&gt;I'm going to run it and sure enough,Yeah,I get an error message.&lt;br&gt;
Now in this case the error message is a little bit predictable.&lt;br&gt;
It's complaining about a program that is just not installed on my local machine(here wget).Now I could definitely go and troubleshoot this,install that program (wget) and then try installing redis again.&lt;/p&gt;

&lt;p&gt;But that's the whole point.&lt;/p&gt;

&lt;p&gt;You can get into this endless cycle of trying to do all this troubleshooting as you are installing and running software.&lt;br&gt;
So let me now show you how easy it is to run Redis,if you're making use of docker,instead.&lt;br&gt;
I'm going to go back to my command line and I'm going to&lt;br&gt;
run one single command.&lt;/p&gt;

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

&lt;p&gt;And then after a very brief pause almost instantaneously I have an instance of Redis up and running  on my computer.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ID48ahjG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/ujjp4tsrl0slitlmb9bf.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ID48ahjG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/ujjp4tsrl0slitlmb9bf.PNG" alt="Capture3"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And that's pretty much it.That is docker in a nutshell.That is how easy it is to run software when you're making use of docker.So to answer the question very directly of why we use docker ?&lt;/p&gt;

&lt;p&gt;Well we make use of it because it makes life really easy for installing and running software without having to go through a whole bunch of setup or installation of dependencies.&lt;/p&gt;

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

&lt;p&gt;Now we're going to learn many more reasons throughout this blogpost series.But I wanted to give you a very quick demo and show you how easy it can be to get up and running with some new piece of software,when you are using docker.&lt;/p&gt;

&lt;p&gt;Next in the series  - &lt;strong&gt;What is docker?&lt;/strong&gt; (coming up soon)!&lt;/p&gt;

&lt;p&gt;As a full time employee, I struggle with having time to publish my  personal findings about software technologies. I believe most people do.Your contributions allow me to create what inspires me and publish my work related to web development, whether that's standalone dev.to blogpost or parts of bigger personal projects.&lt;/p&gt;

&lt;p&gt;Support My Work - &lt;a href="https://www.patreon.com/bePatron?u=40663296"&gt;Become a Patron!&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>devops</category>
      <category>docker</category>
      <category>computerscience</category>
    </item>
    <item>
      <title>Fix Common Git Mistakes</title>
      <dc:creator>Data Structures </dc:creator>
      <pubDate>Tue, 16 Jun 2020 07:00:14 +0000</pubDate>
      <link>https://dev.to/datastructures/fix-common-git-mistakes-4jg0</link>
      <guid>https://dev.to/datastructures/fix-common-git-mistakes-4jg0</guid>
      <description>&lt;h3&gt;
  
  
  1. Change a Commit Message that Hasn't Been Pushed Yet
&lt;/h3&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;git commit &lt;span class="nt"&gt;--amend&lt;/span&gt; &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"New message"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Add More Files and Changes to a Commit Before Pushing
&lt;/h3&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# only do this BEFORE you've pushed the commits&lt;/span&gt;
git add &lt;span class="nt"&gt;-A&lt;/span&gt;

git commit &lt;span class="nt"&gt;--amend&lt;/span&gt; &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"My new message"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h3&gt;
  
  
  3. Remove Files from Staging Before Committing
&lt;/h3&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;git reset HEAD filename
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h3&gt;
  
  
  4. Remove Changes from a Commit Before Pushing
&lt;/h3&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# reset back to a specific commit&lt;/span&gt;
git reset HEAD~1
&lt;span class="c"&gt;# or&lt;/span&gt;
git reset &lt;span class="o"&gt;[&lt;/span&gt;HASH]
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h3&gt;
  
  
  5. The Different git Reset Options: --hard, --soft, and --mixed
&lt;/h3&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Resets the index and working tree&lt;/span&gt;
git reset &lt;span class="nt"&gt;--hard&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;commit]

&lt;span class="c"&gt;# Does not touch the index file or the working tree at all&lt;/span&gt;
git reset &lt;span class="nt"&gt;--soft&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;commit]

&lt;span class="c"&gt;# Resets the index but not the working tree&lt;/span&gt;
&lt;span class="c"&gt;# Reports what has not been updated&lt;/span&gt;
&lt;span class="c"&gt;# This is the default action&lt;/span&gt;
git reset &lt;span class="nt"&gt;--mixed&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;commit]
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h3&gt;
  
  
  6. Recover Local Changes from &lt;code&gt;git reset --hard&lt;/code&gt; with &lt;code&gt;git reflog&lt;/code&gt;
&lt;/h3&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# To look up the commit hash&lt;/span&gt;
git reflog

git reset &lt;span class="nt"&gt;--hard&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;HASH]
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h3&gt;
  
  
  7. Undo a Commit that has Already Been Pushed
&lt;/h3&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# NOTE: Once a commit is pushed, you do NOT want to use git reset&lt;/span&gt;
&lt;span class="c"&gt;# make a "revert commit" which will "undo" a specific commit&lt;/span&gt;
git revert &lt;span class="o"&gt;[&lt;/span&gt;HASH-TO-UNDO]
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h3&gt;
  
  
  8. Push a New Branch to GitHub that Doesn't Exist Remotely Yet
&lt;/h3&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;git checkout &lt;span class="nt"&gt;-b&lt;/span&gt; new-branch

git push

&lt;span class="c"&gt;#  set the upstream of the local branch at the same time&lt;/span&gt;
git push &lt;span class="nt"&gt;--set-upstream&lt;/span&gt; origin new-branch
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h3&gt;
  
  
  9. Copy a Commit from One Branch to Another
&lt;/h3&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;git cherry-pick &lt;span class="o"&gt;[&lt;/span&gt;HASH-TO-MOVE]
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h3&gt;
  
  
  10. Move a Commit that was Committed on the Wrong Branch
&lt;/h3&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Get the commit we want&lt;/span&gt;
git cherry-pick &lt;span class="o"&gt;[&lt;/span&gt;HASH-TO-MOVE]

&lt;span class="c"&gt;# Remove the commit from the wrong  branch&lt;/span&gt;
git reset &lt;span class="o"&gt;[&lt;/span&gt;HASH-TO-REMOVE]
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h3&gt;
  
  
  11. Use &lt;code&gt;git stash&lt;/code&gt; to Save Local Changes While Pulling
&lt;/h3&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Save the local changes,&lt;/span&gt;
git stash

&lt;span class="c"&gt;# Get remote changes&lt;/span&gt;
git pull

&lt;span class="c"&gt;# To apply the stashed changed&lt;/span&gt;
git stash pop

&lt;span class="c"&gt;# You will need to  fix the merge conflict&lt;/span&gt;
&lt;span class="c"&gt;# Then drop the change from the stash&lt;/span&gt;
git stash drop stash@&lt;span class="o"&gt;{&lt;/span&gt;0&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h3&gt;
  
  
  12. Explore Old Commits with a Detached HEAD, and then Recover
&lt;/h3&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# checkout the hash of an old commit&lt;/span&gt;
git checkout &lt;span class="o"&gt;[&lt;/span&gt;HASH]

&lt;span class="c"&gt;# we'll be in a "detached HEAD" state&lt;/span&gt;
&lt;span class="c"&gt;# Save the work by creating a new branch&lt;/span&gt;
git checkout &lt;span class="nt"&gt;-b&lt;/span&gt; my-new-branch
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h3&gt;
  
  
  13. Fix a Pull Request that has a Merge Conflict
&lt;/h3&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;git checkout &lt;span class="nt"&gt;-b&lt;/span&gt; conflicts_branch

&lt;span class="c"&gt;# Add 'Line4' and 'Line5'&lt;/span&gt;

git commit &lt;span class="nt"&gt;-am&lt;/span&gt; &lt;span class="s2"&gt;"add line4 and line5"&lt;/span&gt;
git push origin conflicts_branch

git checkout master

&lt;span class="c"&gt;# Add 'Line6' and 'Line7'`&lt;/span&gt;
git commit &lt;span class="nt"&gt;-am&lt;/span&gt; &lt;span class="s2"&gt;"add line6 and line7"&lt;/span&gt;
git push origin master
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h3&gt;
  
  
  14.Cleanup and Delete Branches After a Pull Request
&lt;/h3&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# use the github interface to delete the branch remotely&lt;/span&gt;

&lt;span class="c"&gt;# Locally&lt;/span&gt;
&lt;span class="c"&gt;# Confirm that remote is gone&lt;/span&gt;
git remote prune origin &lt;span class="nt"&gt;--dry-run&lt;/span&gt;
git remote prune origin

&lt;span class="c"&gt;#clean up the feature branch&lt;/span&gt;
git branch &lt;span class="nt"&gt;-d&lt;/span&gt; feature-branch
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h3&gt;
  
  
  15. Change the Commit Message of a Previous Commit with Interactive Rebase
&lt;/h3&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;git log &lt;span class="nt"&gt;--oneline&lt;/span&gt;

&lt;span class="c"&gt;# start the interactive rebase&lt;/span&gt;
git rebase &lt;span class="nt"&gt;-i&lt;/span&gt; HEAD~3
&lt;span class="c"&gt;# and then change pick to reword.&lt;/span&gt;
&lt;span class="c"&gt;# We can now reword the commit message&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h3&gt;
  
  
  16. git Ignore a File that has Already been Committed and Pushed
&lt;/h3&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# We make a file and accidentally push it to github&lt;/span&gt;
&lt;span class="c"&gt;# To remove it, add it to .gitignore file&lt;/span&gt;
&lt;span class="c"&gt;# remove all of our files from our git cache&lt;/span&gt;
git &lt;span class="nb"&gt;rm&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="nt"&gt;--cached&lt;/span&gt; &lt;span class="nb"&gt;.&lt;/span&gt;

&lt;span class="c"&gt;# add back all the files we want with&lt;/span&gt;
git add &lt;span class="nt"&gt;-A&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h3&gt;
  
  
  17. Add a File to a Previous Commit with Interactive Rebase
&lt;/h3&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;git rebase &lt;span class="nt"&gt;-i&lt;/span&gt; HEAD~2

&lt;span class="c"&gt;# during the interactive rebase, we can add the file, and amend the commi&lt;/span&gt;
git commit &lt;span class="nt"&gt;--amend&lt;/span&gt; &lt;span class="nt"&gt;--no-edit&lt;/span&gt;

git rebase &lt;span class="nt"&gt;--continue&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h3&gt;
  
  
  18. Fix Merge Conflicts While Changing Commits During an Interactive Rebase
&lt;/h3&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# ennter interactive rebase&lt;/span&gt;
git rebase &lt;span class="nt"&gt;-i&lt;/span&gt; HEAD~2

&lt;span class="c"&gt;# Then we can fix that merge conflict like normal, but finish up the rebase&lt;/span&gt;
git rebase &lt;span class="nt"&gt;--continue&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h3&gt;
  
  
  19. Squash Commits Before they are Pushed with Interactive Rebase
&lt;/h3&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;git rebase &lt;span class="nt"&gt;-i&lt;/span&gt; HEAD~3

&lt;span class="c"&gt;# Make the changes in interactive rebase&lt;/span&gt;
&lt;span class="c"&gt;# Make the commit message for that commit, and once we save the message&lt;/span&gt;
&lt;span class="c"&gt;# we'll be left with just a single commit&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h3&gt;
  
  
  20. Completely Remove a File from Pushed git History
&lt;/h3&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# prune the entire history and garbage collect the remains&lt;/span&gt;
git reflog expire &lt;span class="nt"&gt;--expire&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;now &lt;span class="nt"&gt;--all&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; git gc &lt;span class="nt"&gt;--prune&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;now &lt;span class="nt"&gt;--aggressive&lt;/span&gt;

&lt;span class="c"&gt;#  use git push to push that change to github,&lt;/span&gt;
&lt;span class="c"&gt;# and remove the .env file from all of the history&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h2&gt;
  
  
  BlogPost Summary
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Change commit messages&lt;/li&gt;
&lt;li&gt;Add or remove files from a commit&lt;/li&gt;
&lt;li&gt;How and when to stash changes&lt;/li&gt;
&lt;li&gt;What a "detached HEAD" is, and how to fix it&lt;/li&gt;
&lt;li&gt;Remove secrets from a codebase&lt;/li&gt;
&lt;li&gt;How to rewrite history&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you notice areas that could be improved please feel free to comment down below.&lt;/p&gt;

&lt;p&gt;Follow this channel for more articles on data structures and algorithms,web development,react,angular,vueJs and more !&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>git</category>
      <category>github</category>
      <category>beginners</category>
    </item>
    <item>
      <title>100+ Best CSS Learning Resources </title>
      <dc:creator>Data Structures </dc:creator>
      <pubDate>Thu, 16 Apr 2020 19:52:25 +0000</pubDate>
      <link>https://dev.to/datastructures/100-best-css-learning-resources-31b4</link>
      <guid>https://dev.to/datastructures/100-best-css-learning-resources-31b4</guid>
      <description>&lt;h2&gt;
  
  
  Contents
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;CSS References&lt;/li&gt;
&lt;li&gt;CSS in a nutshell&lt;/li&gt;
&lt;li&gt;Fundamental concepts&lt;/li&gt;
&lt;li&gt;CSS units&lt;/li&gt;
&lt;li&gt;Selectors&lt;/li&gt;
&lt;li&gt;Custom properties (aka CSS variables)&lt;/li&gt;
&lt;li&gt;Layout&lt;/li&gt;
&lt;li&gt;Animation&lt;/li&gt;
&lt;li&gt;Related&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  CSS References
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://tympanus.net/codrops/css_reference/"&gt;codrops&lt;/a&gt; - An extensive CSS reference offering way more content than &lt;a href="https://developer.mozilla.org/en-US/docs/Web/CSS/Reference"&gt;MDN&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://caniuse.com"&gt;Can I use&lt;/a&gt; - Interactive browser support tables for CSS (and HTML5).&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  CSS in a nutshell
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://scrimba.com/g/gintrotocss"&gt;Introduction to CSS&lt;/a&gt; - This Screencast series will teach you the basics of CSS in about one hour.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Fundamental concepts
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://developer.mozilla.org/en-US/docs/Web/CSS/Cascade"&gt;The cascade&lt;/a&gt; - This article explains what the cascade is and how this affects you.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.smashingmagazine.com/2010/04/css-specificity-and-inheritance/"&gt;Specificity and inheritance&lt;/a&gt; - Understanding specificity and inheritance is important to master CSS. This article will help.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://developer.mozilla.org/en-US/docs/Learn/CSS/Introduction_to_CSS/Box_model"&gt;CSS Box Model&lt;/a&gt; - An article explaining the foundation of layout on the web.

&lt;ul&gt;
&lt;li&gt;Also have a look at the detailed information about the &lt;a href="https://css-tricks.com/box-sizing/"&gt;box-sizing&lt;/a&gt; property.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  CSS units
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://css-tricks.com/the-lengths-of-css/"&gt;The Lengths of CSS&lt;/a&gt; - Overview covering absolute and relative units.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://css-tricks.com/fun-viewport-units/"&gt;Fun with Viewport Units&lt;/a&gt; - Imparts the basics and shows some nifty use-cases.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Selectors
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.sitepoint.com/css-selectors/"&gt;Basic CSS Selectors&lt;/a&gt; - An introducing to the very basic CSS selectors you need to know.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.smashingmagazine.com/2009/08/taming-advanced-css-selectors/"&gt;Advanced CSS Selectors&lt;/a&gt; - Level up your knowledge. From attribute selectors to CSS3 pseudo classes.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://flukeout.github.io"&gt;CSS Dinner&lt;/a&gt; - Learn how to use CSS selectors with this fun little game.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Custom properties (aka CSS variables)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://developers.google.com/web/updates/2016/02/css-variables-why-should-you-care"&gt;CSS Variables: Why Should You Care?&lt;/a&gt; - A short introduction to CSS variables.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://una.im/local-css-vars/"&gt;Locally Scoped CSS Variables: What, How, and Why&lt;/a&gt; - Describes the advantages of locally scoped CSS variables.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.madebymike.com.au/writing/using-css-variables/"&gt;Using CSS variables correctly&lt;/a&gt; - Patterns and anti-patterns for using CSS variables.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://medium.freecodecamp.org/everything-you-need-to-know-about-css-variables-c74d922ea855"&gt;Everything you need to know about CSS Variables&lt;/a&gt; - In depth article going beyond the basics of CSS Variables using real-world examples.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=4IRPxCMAIfA"&gt;Getting Reactive with CSS&lt;/a&gt; - Mindblowing talk about the possibilities of the combination of CSS variables and functional reactive programming in JavaScript.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Layout
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="http://book.mixu.net/css"&gt;Learn CSS Layout&lt;/a&gt; - Learn about CSS layout techniques in 5 chapters.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/channel/UC7TizprGknbDalbHplROtag"&gt;Layout Land&lt;/a&gt; - Jen Simmons video series about the new CSS Layout possibilities.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=hj355PRbwSQ"&gt;Laying Out The Future With Grid And Flexbox&lt;/a&gt; - Introduction of a new layout system encompassing Flexbox, CSS Grid and the Box Alignment Module.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Classic layouting
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://tympanus.net/codrops/css_reference/float/"&gt;Floats&lt;/a&gt; - In depth information about how to use (and clear) floats.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://scotch.io/bar-talk/5-things-you-might-not-know-about-the-css-positioning-types"&gt;Positioning Types&lt;/a&gt; - A closer look at a few little-known things related to the CSS positioning layout method.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://iamsteve.me/blog/entry/inline_block"&gt;inline-block&lt;/a&gt; - Shows in which cases it makes sense to use the display property &lt;code&gt;inline-block&lt;/code&gt; for layouting.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Flexbox
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://css-tricks.com/snippets/css/a-guide-to-flexbox/"&gt;A Complete Guide to Flexbox&lt;/a&gt; - All you need to know about Flexbox on one page.
&amp;lt;!--lint ignore no-dead-urls--&amp;gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://codepen.io/enxaneta/full/adLPwv"&gt;Flexbox playground&lt;/a&gt; - Play with Flexbox examples on CodePen.&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://www.flexboxdefense.com"&gt;Flexbox Defense&lt;/a&gt; - A tower defense game in the browser to learn about Flexbox with fun.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://flexboxfroggy.com"&gt;Flexbox Froggy&lt;/a&gt; - Learn all the basics of Flexbox with a fun game involving frogs and lily pads.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/philipwalton/flexbugs"&gt;Flexbugs&lt;/a&gt; - Community-curated list of flexbox issues and cross-browser workarounds for them.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://flexboxzombies.com"&gt;Flexbox Zombies&lt;/a&gt; - A training course driven by a storyline where you use Flexbox and a crossbow to hunt zombies.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://flexbox.io/"&gt;What the Flexbox?&lt;/a&gt; - A simple, free 20 video course that will help you master CSS Flexbox!&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Grid
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://css-tricks.com/snippets/css/complete-guide-grid/"&gt;A Complete Guide to Grid&lt;/a&gt; - All you need to know about CSS Grid Layout on one page.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://gridbyexample.com"&gt;Grid by Example&lt;/a&gt; - Besides examples of how to use Grid this site also has additional useful learning ressources.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://talks.jensimmons.com/J5VRbA/designing-with-grid"&gt;Designing with Grid&lt;/a&gt; - Talk about the new layout possibilities CSS Grid is offering.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://cssgridgarden.com"&gt;Grid Garden&lt;/a&gt; - Lovely game where you write CSS code to grow your carrot garden.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/rachelandrew/gridbugs"&gt;GridBugs&lt;/a&gt; - Community-curated list of Grid interop issues and workarounds for them.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.gridcritters.com"&gt;Grid Critters&lt;/a&gt; - Learn CSS grid layout by mastering an adventure game.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Animation
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://robots.thoughtbot.com/transitions-and-transforms"&gt;CSS Transitions and Transforms for Beginners&lt;/a&gt; - An introduction to to CSS transitions and CSS (2D) transforms.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://blog.alexmaccaw.com/css-transitions"&gt;All you need to know about CSS Transitions&lt;/a&gt; - Also addressing advanced topics from chaining and events to hardware acceleration and animation functions.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://3dtransforms.desandro.com"&gt;CSS 3D transforms&lt;/a&gt; - Multi page tutorial with examples like card flip and carousel effects.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://robots.thoughtbot.com/css-animation-for-beginners"&gt;CSS Animation for Beginners&lt;/a&gt; - Imparts the concepts of CSS animations with keyframes.&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://leaverou.github.io/animatable/"&gt;animatable&lt;/a&gt; - Nice little page demonstrating which CSS properties are animatable. &lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Related
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://marksheet.io/"&gt;Marksheet.io&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Web/CSS"&gt;Mozilla Developer Network&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://tympanus.net/codrops/css_reference/"&gt;Codrops CSS Reference&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.w3schools.com/"&gt;W3Schools&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://css-tricks.com"&gt;CSS Tricks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.creativebloq.com/advice/5-great-css-animation-resources"&gt;10 great CSS animation resources&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.chenhuijing.com/"&gt;Chen's Blog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.smashingmagazine.com/"&gt;Smashing Magazine&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://atomiks.github.io/30-seconds-of-css/"&gt;30 Sec of CSS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://cssreference.io/"&gt;CSS Reference&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://cssgrid.io/"&gt;CSS Grid by Wes Bos&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://flexbox.io/"&gt;CSS Flexbox by Wes Bos&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://alligator.io/css"&gt;Alligator.IO CSS Page&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://coding-artist.teachable.com/"&gt;CSS Images&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://learnlayout.com/"&gt;Learn CSS Layouts&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://learn.shayhowe.com/"&gt;Learn HTML &amp;amp; CSS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://flexboxfroggy.com/"&gt;Flexbox Froggy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://cssgridgarden.com/"&gt;CSS Grid&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://learn.freecodecamp.org/responsive-web-design/css-flexbox/"&gt;CSS Flexbox - freeCodeCamp&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://learn.freecodecamp.org/responsive-web-design/css-grid/"&gt;CSS Grid - freeCodeCamp&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.quirksmode.org/css/"&gt;CSS Testing - QuirksMode.org&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://flexboxfroggy.com/"&gt;Flexbox Froggy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://flukeout.github.io/"&gt;CSS Diner&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  &lt;a href="https://github.com/micromata"&gt;micromata&lt;/a&gt; has been so kind to share this list with us on github.Please follow him.
&lt;/h4&gt;

&lt;h4&gt;
  
  
  ** If you want to stay updated on the newest trends, tutorials, and articles in the Web Development world, please subscribe to my weekly newsletter!**
&lt;/h4&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://agarwalprashant.github.io/"&gt;Subscribe To The Weekly Newsletter Here&lt;/a&gt;
&lt;/h3&gt;

</description>
      <category>webdev</category>
      <category>beginners</category>
      <category>tutorial</category>
      <category>javascript</category>
    </item>
    <item>
      <title>10 Best New Full Stack Development Books To Read In 2020</title>
      <dc:creator>Data Structures </dc:creator>
      <pubDate>Fri, 20 Mar 2020 06:50:59 +0000</pubDate>
      <link>https://dev.to/datastructures/10-best-new-full-stack-development-books-to-read-in-2020-30c4</link>
      <guid>https://dev.to/datastructures/10-best-new-full-stack-development-books-to-read-in-2020-30c4</guid>
      <description>&lt;p&gt;Below are some of the best books out there for a serious full stack developer.&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;a href="https://amzn.to/2U69uNB"&gt;Pro MEAN Stack Development by Elad Elrom&lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://amzn.to/2U69uNB"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--EmbIcj53--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://images-na.ssl-images-amazon.com/images/I/41P7kmhhifL._SX348_BO1%2C204%2C203%2C200_.jpg" alt="Pro MEAN Stack Development" title="Pro MEAN Stack Development"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Write free, open-source, cross-platform, dynamic JavaScript applications that can run anywhere using the MEAN stack - MongoDB, ExpressJS, AngularJS, and Node.js.&lt;/p&gt;

&lt;p&gt;With this book, Mac developers will get the tools needed to set up, write code once, and be able to deploy code on any device. You will be able to cut development time by using one stack to serve all your development needs. Pro MEAN Stack Development enables you to quickly learn everything needed to work effectively with MEAN, from setting up your tool stack to rolling out your free servers and deploying on any device. &lt;/p&gt;

&lt;p&gt;You will also learn to build scripts with Grunt and Gulp, Webpack, and Vagrant and how to deploy to the web and mobile using Phonegap. Harness JavaScript to create dynamic and easily-maintainable applications fast and 100% free. Master the MEAN stack with this book today.&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;a href="https://amzn.to/2vzN25S"&gt;Pro MERN Stack Full Stack Web App Development with Mongo, Express, React, and Node by Vasan Subramanian&lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://amzn.to/2vzN25S"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1UwDUq43--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://images-na.ssl-images-amazon.com/images/I/41yD-Nh-hCL._SX348_BO1%2C204%2C203%2C200_.jpg" alt="Full Stack Web App Development with Mongo, Express, React, and Node" title="Full Stack Web App Development with Mongo, Express, React, and Node"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Assemble the complete stack required to build a modern web app using MongoDB, Express, React, and Node. This book also covers many other complementary tools: React Router, GraphQL, React-Bootstrap, Babel, and Webpack. This new edition will use the latest version of React (React 16) and the latest React Router (React Router 4), which has a significantly different approach to routing compared to React Router 2 which was used in the first edition of the book.&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;a href="https://amzn.to/2J3zJO9"&gt;Professional JavaScript&lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;Take your Javascript programming to the next level with strategies and techniques commonly used in modern full-stack development&lt;br&gt;
Brice Colucci, Matei Copot, Philip Kirkbride, Nathan Richardson &lt;/p&gt;

&lt;p&gt;&lt;a href="https://amzn.to/2J3zJO9"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--WNs5ZMel--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://images-eu.ssl-images-amazon.com/images/I/51ax0qOK9TL.jpg" alt="Professional JavaScript" title="Professional JavaScript"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In-depth knowledge of JavaScript makes it easier to learn a variety of other frameworks, including React, Angular, and related tools and libraries. This book is designed to help you cover the core JavaScript concepts you need to build modern applications.&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;a href="https://amzn.to/3bfkWfE"&gt;Hands-On Full Stack Development with Spring Boot 2 and React&lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;Second Edition&lt;br&gt;
Juha Hinkula &lt;/p&gt;

&lt;p&gt;&lt;a href="https://amzn.to/3bfkWfE"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--qxxNaSGf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://images-na.ssl-images-amazon.com/images/I/510yZTAewML._SX404_BO1%2C204%2C203%2C200_.jpg" alt="Hands-On Full Stack Development with Spring Boot 2 and React" title="Hands-On Full Stack Development with Spring Boot 2 and React"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A comprehensive guide to building full-stack applications covering frontend and server-side programming, data management, and web security Key Features Unleash the power of React Hooks to build interactive and complex user interfaces Build scalable full-stack applications designed to meet demands of modern users Understand how the Axios library simplifies CRUD operations Book DescriptionReact Hooks have changed the way React components are coded. They enable you to write components in a more intuitive way without using classes, which makes your code easier to read and maintain. Building on from the previous edition, this book is updated with React Hooks and the latest changes introduced in create-react-app and Spring Boot 2.1.&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;a href="https://amzn.to/2U7mCSG"&gt;Full-Stack React Projects: Modern web development using React 16, Node, Express, and MongoDB by Shama Hoque&lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://amzn.to/2U7mCSG"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--c1ZBvpos--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://images-eu.ssl-images-amazon.com/images/I/51YMrTUR-SL.jpg" alt="Full-Stack React Projects: Modern web development using React 16, Node, Express, and MongoDB" title="Full-Stack React Projects: Modern web development using React 16, Node, Express, and MongoDB"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This book guides you through preparing the development environment for MERN stack-based web development, to creating a basic skeleton application and extending it to build four different web applications. These applications include a social media, an online marketplace, a media streaming, and a web-based game application with virtual reality features.&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;a href="https://amzn.to/2weKk6p"&gt;MERN Quick Start Guide: Build web applications with MongoDB, Express.js, React, and Node by Eddy Wilson Iriarte Koroliova&lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://amzn.to/2weKk6p"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8bMiZLTQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://images-na.ssl-images-amazon.com/images/I/61roU6pSmQL._SX404_BO1%2C204%2C203%2C200_.jpg" alt="MERN Quick Start Guide: Build web applications with MongoDB, Express.js, React, and Node" title="MERN Quick Start Guide: Build web applications with MongoDB, Express.js, React, and Node"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This book focuses on providing key tasks that can help you get started, learn, understand, and build full-stack web applications. It walks you through the process of installing all the requirements and project setup to build client-side React web applications, managing synchronous and asynchronous data flows with Redux, and building real-time web applications with Socket.IO, RESTful APIs, and other concepts. This book gives you practical and clear hands-on experience so you can begin building a full-stack MERN web application.&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;a href="https://amzn.to/2WsgiGH"&gt;The Full Stack Developer Your Essential Guide to the Everyday Skills Expected of a Modern Full Stack Web Developer Chris Northwood&lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://amzn.to/2WsgiGH"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--bIgCLeAx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://images-na.ssl-images-amazon.com/images/I/41Leq5xMp7L._SX348_BO1%2C204%2C203%2C200_.jpg" alt="The Full Stack Developer Your Essential Guide to the Everyday Skills Expected of a Modern Full Stack Web Developer" title="The Full Stack Developer Your Essential Guide to the Everyday Skills Expected of a Modern Full Stack Web Developer"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Understand the technical foundations, as well as the non-programming skills needed to be a successful full stack web developer. This book reveals the reasons why a truly successful full stack developer does more than write code. &lt;br&gt;
You will learn the principles of the topics needed to help a developer new to agile or full stack working―UX, project management, QA, product management, and more― all from the point of view of a developer.&lt;br&gt;
Covering these skills alongside the fundamentals and foundations of modern web development, rather than specifics of current technologies and frameworks (which can age quickly), all programming examples are given in the context of the web as it is in 2018.&lt;br&gt;
Although you need to feel comfortable working on code at the system, database, API, middleware or user interface level, depending on the task in hand, you also need to be able to deal with the big picture and the little details. The Full Stack Developer recognizes skills beyond the technical, and gives foundational knowledge of the wide set of skills needed in a modern software development team.&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;a href="https://amzn.to/3dbXlOJ"&gt;Hands-on Full-Stack Web Development with GraphQL and React Build scalable full-stack applications while learning to solve complex problems with GraphQL by Sebastian Grebe &lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://amzn.to/3dbXlOJ"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zin-BQjW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://images-na.ssl-images-amazon.com/images/I/51Upgne6t9L._SX404_BO1%2C204%2C203%2C200_.jpg" alt="Hands-on Full-Stack Web Development with GraphQL and React&amp;lt;br&amp;gt;
Build scalable full stack applications while learning to solve complex problems with GraphQL&amp;lt;br&amp;gt;
Sebastian Grebe " title="Hands-on Full-Stack Web Development with GraphQL and React&amp;lt;br&amp;gt;
Build scalable full stack applications while learning to solve complex problems with GraphQL&amp;lt;br&amp;gt;
Sebastian Grebe "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Unearth the power of GraphQL, React, Apollo, Node, and Express to build a scalable, production ready application Key Features Build full stack applications with modern APIs using GraphQL and Apollo Integrate Apollo into React and build frontend components using GraphQL Implement a self-updating notification pop-up with a unique GraphQL feature called Subscriptions Book DescriptionReact, one of the most widely used JavaScript frameworks, allows developers to build fast and scalable front end applications for any use case. &lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;a href="https://amzn.to/2QywHpv"&gt;Full Stack Angular for Java Developers by Doguhan Uluca&lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://amzn.to/2QywHpv"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fGb9pB47--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://images-eu.ssl-images-amazon.com/images/I/51b3QhbdoQL._SY346_.jpg" alt="Full Stack Angular for Java Developers by Doguhan Uluca" title="Full Stack Angular for Java Developers by Doguhan Uluca"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Full-stack web development is in demand because you can explore the best of different tools and frameworks and yet make your apps solid and reliable in design, scalability, robustness, and security. This book assists you in creating your own full-stack development environment that includes the powerful and revamped AngularJS, and Spring REST. The architecture of modern applications is covered to prevent the development of isolated desktop and mobile applications. &lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;a href="https://amzn.to/3a69ItB"&gt;Building applications with Spring 5.0 and Vue.js 2.0 A real-world practical guide to building a modern full-stack web application by James Ye&lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://amzn.to/3a69ItB"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--XBKg7BRv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://images-na.ssl-images-amazon.com/images/I/51kFg43Yf3L._SX404_BO1%2C204%2C203%2C200_.jpg" alt="Building applications with Spring 5.0 and Vue.js 2.0&amp;lt;br&amp;gt;
A real-world practical guide to building a modern full-stack web application&amp;lt;br&amp;gt;
James Ye" title="Building applications with Spring 5.0 and Vue.js 2.0&amp;lt;br&amp;gt;
A real-world practical guide to building a modern full-stack web application&amp;lt;br&amp;gt;
James Ye"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Learn how to build a complete real-world task management application step-by-step using Spring 5.0 and Vue.js 2 as an experienced full-stack engineer &lt;/p&gt;

&lt;p&gt;If you found this article helpful, please tap the &lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--8CFAj25Q--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/emoji/emoji-one-unicorn-695106da1194513bfa0092f1a75943f59089be7d6addbc7459bdfab80f5709e6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8CFAj25Q--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/emoji/emoji-one-unicorn-695106da1194513bfa0092f1a75943f59089be7d6addbc7459bdfab80f5709e6.png" alt="drawing" width="30" height="30"&gt;&lt;/a&gt; Follow this channel for more such articles.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>tutorial</category>
      <category>javascript</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Best Inspiring Documentary Films Dedicated To Software Developers</title>
      <dc:creator>Data Structures </dc:creator>
      <pubDate>Tue, 17 Mar 2020 06:44:17 +0000</pubDate>
      <link>https://dev.to/datastructures/inspiring-documentary-films-dedicated-to-software-developers-4df0</link>
      <guid>https://dev.to/datastructures/inspiring-documentary-films-dedicated-to-software-developers-4df0</guid>
      <description>&lt;p&gt;Honeypot.io produce monthly documentaries exploring tech culture, influential technologies and tell software developer stories from around the world.&lt;br&gt;
These documentaries showcase stories and developers on their way to becoming rockstars. Also, these documentaries show the fact that these developers took the initiative to engineer something that could be extended far beyond the bounds of their initial requirements. It shows tremendous creativity.&lt;/p&gt;

&lt;p&gt;They are also a developer-focused job platform, on a mission to get every developer a great job and believe developers should choose a job they love.&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;a href="https://www.youtube.com/watch?v=783ccP__No8"&gt;GraphQL: The Documentary&lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;Starring Lee Byron, Dan Schafer and Nick Schrock  (co-creators of GraphQL) and other big names from the #GraphQL community, "GraphQL: The Documentary" explores the story of why and how GraphQL came to be and the impact it's having on big #tech companies worldwide, including Facebook, Twitter, Airbnb, and Github.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=783ccP__No8"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--PqcZdJbh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.ytimg.com/vi/urmi2wbEpGk/maxresdefault.jpg" alt="GraphQL: The Documentary"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;a href="https://www.youtube.com/watch?v=OrxmtDw4pVI"&gt;Vue.js: The Documentary&lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;What began as a side project of a Google developer now shares the JS leaderboard with #React and #Angular...&lt;br&gt;
With the help of Sarah Drasner, Taylor Otwell, Thorsten Lünborg and many others from the Vue.js community, Evan You tells the story of how he fought against the odds to bring #Vuejs to life. Imagine a few nerdy guys in one team can compete with Monsters like Facebook and Google?  VueJs is the spirit of Open Source Project.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=OrxmtDw4pVI"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4UJ_ha2C--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.ytimg.com/vi/2EmYw-O-WLI/maxresdefault.jpg" alt="Vue.js: The Documentary"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;a href="https://www.youtube.com/watch?v=Cvz-9ccflKQ"&gt;Ember.js: The Documentary&lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;Starring Yehuda Katz and Tom Dale  (co-creators of Ember.js), as well as many other big names from the #Ember community, "Ember.js: The Documentary" explores why and how #Emberjs came to be, the pioneers behind its creation and the life-altering decisions that go into making #opensource software.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=Cvz-9ccflKQ"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--cut_07x1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.ytimg.com/vi/Cvz-9ccflKQ/maxresdefault.jpg" alt="Ember.js: The Documentary"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;a href="https://www.youtube.com/watch?v=lxYFOM3UJzo"&gt;Elixir: The Documentary&lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;Get ready to explore the origins of the #Elixir programming language, the manner in which it handles concurrency and the speed with which it has grown since its creation back in 2011.&lt;/p&gt;

&lt;p&gt;Featuring José Valim, creator of Elixir, and several other big names from the Elixir community, including Justin Schneck, co-author of the Nerves Project, and Chris McCord, the creator of the Phoenix Framework, this documentary highlights the power of open-source development and the role of Elixir in enabling developers to achieve things that were impossible, or prohibitively expensive, to do before.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=lxYFOM3UJzo"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--p5cGDjsg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.ytimg.com/vi/lxYFOM3UJzo/maxresdefault.jpg" alt="Elixir: The Documentary:"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;a href="https://www.youtube.com/watch?v=Q9eh2iJsjxE"&gt;Scott Tolinski &amp;amp; The Origins of LevelUpTuts | mini-doc&lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;Featuring Scott Tolinski from LevelUpTuts, we explore his journey as a break-dancer turned self-taught developer and chat about how "open source has opened so many doors to people being able to pick up and learn code without having to get a degree."&lt;/p&gt;

&lt;p&gt;You can find him making tutorials on YouTube and podcasts on SyntaxFM about how to help fix major problems while learning technologies - born out of the realization that finding in-depth and basic tutorials online was no easy task. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=Q9eh2iJsjxE"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--gjqrXcmE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.ytimg.com/vi/Q9eh2iJsjxE/maxresdefault.jpg" alt="Scott Tolinski &amp;amp; The Origins of LevelUpTuts | mini-doc"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you found this article helpful, please tap the &lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--8CFAj25Q--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/emoji/emoji-one-unicorn-695106da1194513bfa0092f1a75943f59089be7d6addbc7459bdfab80f5709e6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8CFAj25Q--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/emoji/emoji-one-unicorn-695106da1194513bfa0092f1a75943f59089be7d6addbc7459bdfab80f5709e6.png" alt="drawing" width="30" height="30"&gt;&lt;/a&gt; Follow this channel for more articles on Data Structures using Javascript,javascript frameworks and web development resources.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>tutorial</category>
      <category>javascript</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Awesome Javascript - Best Blogs,Books,People, Podcasts, Conferences, NewsLetters, Videos and Documentaries On The Web [Updated]</title>
      <dc:creator>Data Structures </dc:creator>
      <pubDate>Thu, 12 Mar 2020 19:09:58 +0000</pubDate>
      <link>https://dev.to/datastructures/awesome-javascript-best-blogs-books-people-podcasts-conferences-newsletters-videos-and-documentaries-on-the-web-updated-3ank</link>
      <guid>https://dev.to/datastructures/awesome-javascript-best-blogs-books-people-podcasts-conferences-newsletters-videos-and-documentaries-on-the-web-updated-3ank</guid>
      <description>&lt;p&gt;Hey Dev Community!&lt;/p&gt;

&lt;p&gt;Are you interested in learning web development? So you start Googling it, and you get bombarded with lots and lots of resources which are either sometimes irrelevant or out of date. &lt;/p&gt;

&lt;p&gt;Below is the curated list of the best Javascript blogs, articles, books, podcasts and presentations available for you for free on the internet.&lt;/p&gt;

&lt;p&gt;I will be regularly updating this page with your suggestions, so please like this page for your future reference.&lt;/p&gt;

&lt;h2&gt;
  
  
  Blogs
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://brendaneich.com/"&gt;brendaneich&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/airbnb/javascript"&gt;Airbnb JavaScript Style Guide()&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://sporto.github.io/"&gt;Sebastian's blog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.jblotus.com/"&gt;Explosive web programming&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://javascript.info/"&gt;Javascript.Info&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/the-javascript-collection"&gt;The Javascript Collection&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.smashingmagazine.com/category/javascript"&gt;Smashing magazine&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.adequatelygood.com/"&gt;adequately good&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://2ality.com/"&gt;2ality&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://staltz.com/blog.html"&gt;André Staltz&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://davidwalsh.name/tutorials/features"&gt;David Walsh&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://feross.org/"&gt;Feross&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://flaviocopes.com/"&gt;Flavio Copes&lt;/a&gt; - Guides and tutorials for developers.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blog.iansinnott.com/"&gt;Ian Sinnott&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://jasonformat.com/"&gt;Jason Format&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://javascriptplayground.com"&gt;JavaScript Playground&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://maxogden.com/index.html"&gt;Max Ogden&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://nick.balestra.ch/"&gt;Nick Balestra&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://perfectionkills.com/"&gt;Perfection Kills&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.playfuljs.com"&gt;PlayfulJS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://wavesoft.github.io/"&gt;Wavesoft&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://wesbos.com/blog/"&gt;Wes Bos&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/dailyjs"&gt;DailyJS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.chromium.org/"&gt;Chromium blog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://yehudakatz.com/"&gt;Yehuda Katz&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Books
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://amzn.to/2TQbcRR"&gt;📕 Effective JavaScript: 68 specific ways to harness the power of JavaScript (2012)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://amzn.to/3aU8t0n"&gt;📖 Pro JavaScript Design Patterns (Expert's Voice in Web Development) &lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://amzn.to/2IDyZzg"&gt;📖 JavaScript Patterns by Stoyan Stefanov&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://amzn.to/33cjnw0"&gt;📖 High Performance JavaScript (Build Faster Web Application Interfaces)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://amzn.to/3cVeHPG"&gt;📖 Javascript: The Good Parts by Douglas Crockford&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://amzn.to/2W9YujA"&gt;📖 JavaScript: The Definitive Guide 6e (Definitive Guides) by David Flanagan&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://amzn.to/2W6FzGh"&gt;📖 Javascript: Building Microservices by Sam Newman&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://amzn.to/33juZ0f"&gt;📖 High Performance Browser Networking by Ilya grigorik&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://amzn.to/33dQqzH"&gt;📖 HTTP: The Definitive Guide by David Gourley &lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://amzn.to/2TK6RR7"&gt;📖 Site Reliability Engineering-how google runs production systems &lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://amzn.to/2vS6b3l"&gt;📖 JavaScript Web Applications by Alex MacCaw&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/getify/You-Dont-Know-JS"&gt;📖 You don’t know JS&lt;/a&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/getify/You-Dont-Know-JS/tree/master/up%20%26%20going"&gt;📖 Up and going&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/getify/You-Dont-Know-JS/blob/master/scope%20&amp;amp;%20closures/README.md#you-dont-know-js-scope--closures"&gt;📖 Scope and closures&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/getify/You-Dont-Know-JS/blob/master/this%20&amp;amp;%20object%20prototypes/README.md#you-dont-know-js-this--object-prototypes"&gt;📖 This and object prototypes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/getify/You-Dont-Know-JS/blob/master/types%20&amp;amp;%20grammar/README.md#you-dont-know-js-types--grammar"&gt;📖 Types and grammar&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/getify/You-Dont-Know-JS/blob/master/async%20&amp;amp;%20performance/README.md#you-dont-know-js-async--performance"&gt;📖 Async and performance&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/getify/You-Dont-Know-JS/blob/master/es6%20&amp;amp;%20beyond/README.md#you-dont-know-js-es6--beyond"&gt;📖 ES6 and beyond&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://addyosmani.com/resources/essentialjsdesignpatterns/book/"&gt;📖 Learning JavaScript design patterns (2015)&lt;/a&gt;
&lt;a href="https://amzn.to/2TLg77D"&gt;paperBack Link&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="http://eloquentjavascript.net/00_intro.html"&gt;📖 Eloquent JavaScript (2011)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://exploringjs.com/"&gt;📖 Exploring js&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://amzn.to/2U0ijr5"&gt;📕 Secrets of the JavaScript ninja (2013)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://leanpub.com/thejsway"&gt;📖 The JavaScript way (2017)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://builderbook.org/book"&gt;📖 Builder Book: Build a Full Stack JavaScript Web App from Scratch (2018)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Videos, Documentaries &amp;amp; Films
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;This is a list of must-watch videos devoted to JavaScript &lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  2019
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=AdNJ3fydeao"&gt;Rich Harris: &lt;strong&gt;Rethinking reactivity&lt;/strong&gt;&lt;/a&gt; [36:44]&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=c0oy0vQKEZE"&gt;Mathias Bynens &amp;amp; Sathya Gunasekaran: &lt;strong&gt;What's new in JavaScript?&lt;/strong&gt;&lt;/a&gt; [36:32]&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=_VHNTC67NR8"&gt;Maxim Koretskyi: &lt;strong&gt;JSConf EU: A sneak peek into super optimized code in JS frameworks&lt;/strong&gt;&lt;/a&gt; [23:20]&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=GhRE3rML9t4"&gt;Una Kravets: &lt;strong&gt;CSS Houdini &amp;amp; The Future of Styling&lt;/strong&gt;&lt;/a&gt; [25:42]&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  2018
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=cCOL7MC4Pl0"&gt;Jake Archibald: &lt;strong&gt;In The Loop&lt;/strong&gt;&lt;/a&gt; [35:11]&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=ZZmUwXEiPm4"&gt;Malte Ubl: &lt;strong&gt;Designing very large JavaScript application&lt;/strong&gt;&lt;/a&gt; [28:55]&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=M3BM9TB-8yA"&gt;Ryan Dahl: &lt;strong&gt;10 Things I Regret About Node.js&lt;/strong&gt;&lt;/a&gt; [26:41]&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=5nmpokoRaZI"&gt;Mathias Bynens &amp;amp; Benedikt Meurer: &lt;strong&gt;JavaScript Engines: The Good Parts™&lt;/strong&gt;&lt;/a&gt; [23:09]&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=Gc9-7PBqOC8"&gt;Ronen Amiel: &lt;strong&gt;Build your own webpack&lt;/strong&gt;&lt;/a&gt; [39:38]&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=63I-mEuSvGA"&gt;Addy Osmani: &lt;strong&gt;The Cost Of JavaScript&lt;/strong&gt;&lt;/a&gt; [20:07]&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=u1kqx6AenYw"&gt;Erin Zimmer: &lt;strong&gt;Further Adventures of the Event Loop&lt;/strong&gt;&lt;/a&gt; [21:15]&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=Qa4dxW-Qi2s"&gt;Laurie Voss: &lt;strong&gt;npm and the Future of JavaScript&lt;/strong&gt;&lt;/a&gt; [55:00]&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  2017
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=ZCuYPiUIONs"&gt;Lin Clark: &lt;strong&gt;A Cartoon Intro to Fiber&lt;/strong&gt;&lt;/a&gt; [31:47]&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=WFI-Yi9Fb7Y"&gt;Yoav Weiss: &lt;strong&gt;Caches All the Way Down!&lt;/strong&gt;&lt;/a&gt; [30:58]&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  2016
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://www.oreilly.com/ideas/brendan-eich-javascript-fluent-2016"&gt;Brendan Eich: &lt;strong&gt;JavaScript in 2016: Beyond Harmony&lt;/strong&gt;&lt;/a&gt; [15:31]&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=1ToJ7cxb1R8"&gt;André Staltz: &lt;strong&gt;Brains as building blocks&lt;/strong&gt;&lt;/a&gt; [21:26]&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=mVVNJKv9esE"&gt;Cheng Lou: &lt;strong&gt;On the Spectrum of Abstraction&lt;/strong&gt;&lt;/a&gt; [35:31]&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  2015
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Dr. Axel Rauschmayer: &lt;strong&gt;Using ECMAScript 6 today&lt;/strong&gt; 

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=Fg3bEZIcnUw"&gt;Part 1&lt;/a&gt; [40:44]&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=Vhhq1WpzsnM"&gt;Part 2&lt;/a&gt; [53:04]&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=PlmsweSNhTw"&gt;Brendan Eich: &lt;strong&gt;ECMAScript Harmony: Rise of the Compilers&lt;/strong&gt;&lt;/a&gt; [19:17] &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=t8x40JXUeWA"&gt;Andreas Gal: &lt;strong&gt;Dirty Performance Secrets of HTML5&lt;/strong&gt;&lt;/a&gt; [14:15]&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=1zj7M1LnJV4"&gt;Andre Staltz: &lt;strong&gt;What if the user was a function?&lt;/strong&gt;&lt;/a&gt; [32:19]&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=2BdFg5JT9lg"&gt;Gilmore Davidson: &lt;strong&gt;Time zone of your life&lt;/strong&gt;&lt;/a&gt; [23:40]&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=JVlfj7mQZPo"&gt;Elijah Manor: &lt;strong&gt;Eliminate JavaScript Code Smells&lt;/strong&gt;&lt;/a&gt; [29:15]&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=xsSnOQynTHs"&gt;Dan Abramov: &lt;strong&gt;Live React: Hot Reloading with Time Travel&lt;/strong&gt;&lt;/a&gt; [30:40]&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=9iIRZrxK1vA"&gt;Brain Ford: &lt;strong&gt;Problem solving in the open source world&lt;/strong&gt;&lt;/a&gt; [29:57]&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=2p51PE1MZ8U"&gt;Kris Kowal: &lt;strong&gt;A General Theory of Reactivity&lt;/strong&gt;&lt;/a&gt; [35:38]&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  2014
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://www.udacity.com/course/ud884"&gt;Ilya Grigorik: &lt;strong&gt;Website Performance Optimization&lt;/strong&gt; (Udacity course)&lt;/a&gt; [1:13:57]&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=90NsjKvz9Ns&amp;amp;index=2&amp;amp;list=PL37ZVnwpeshFXOP2lqCUykYPXYNsK_fgN"&gt;Mark DiMarco: &lt;strong&gt;User Interface Algorithms&lt;/strong&gt;&lt;/a&gt; [27:41]&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=lm4jEcnWeKI&amp;amp;index=11&amp;amp;list=PL37ZVnwpeshFXOP2lqCUykYPXYNsK_fgN"&gt;Neil Green: &lt;strong&gt;Writing Custom DSLs&lt;/strong&gt;&lt;/a&gt; [29:07]&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=8OJ7ih8EE7s"&gt;Eric Bidelman: &lt;strong&gt;Polymer and Web Components change everything you know about Web development&lt;/strong&gt;&lt;/a&gt; [36:12]&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=_yy0CDLnhMA"&gt;Alex Russell, Jake Archibald: &lt;strong&gt;Bridging the gap between the web and apps&lt;/strong&gt;&lt;/a&gt;  [48:40]&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=UzyoT4DziQ4"&gt;Scott Hanselman: &lt;strong&gt;Virtual Machines, JavaScript and Assembler&lt;/strong&gt;&lt;/a&gt; [25:56]&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=XRYN2xt11Ek"&gt;Jafar Husain: &lt;strong&gt;Async JavaScript with Reactive Extensions&lt;/strong&gt;&lt;/a&gt; [26:38]&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=NthmeLEhDDM"&gt;John-David Dalton: &lt;strong&gt;Unorthodox Performance&lt;/strong&gt;&lt;/a&gt; [43:39]&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.destroyallsoftware.com/talks/the-birth-and-death-of-javascript"&gt;Gary Bernhardt: &lt;strong&gt;The Birth &amp;amp; Death of Javascript&lt;/strong&gt;&lt;/a&gt; [29:22]&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=LaxbdIyBkL0"&gt;Addy Osmani: &lt;strong&gt;Memory Management Masterclass&lt;/strong&gt;&lt;/a&gt; [55:06]&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://youtu.be/uYcAjr2J_rU"&gt;Reginald Braithwaite: &lt;strong&gt;Invent the future, don't recreate the past&lt;/strong&gt;&lt;/a&gt; [39:16]&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=-wYw0bZZ38Y"&gt;Kyle Simpson: &lt;strong&gt;Syncing Async&lt;/strong&gt;&lt;/a&gt; [42:25] &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=dibzLw4wPms"&gt;Ariya Hidayat: &lt;strong&gt;JavaScript and the Browser: Under the Hood&lt;/strong&gt;&lt;/a&gt; [29:13] &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=DqMFX91ToLw"&gt;Jafar Husain: &lt;strong&gt;Version 7: The Evolution of JavaScript&lt;/strong&gt;&lt;/a&gt; [1:11:53]&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=SiFwRtCnxv4"&gt;David Nolen: &lt;strong&gt;Immutability: Putting The Dream Machine To Work&lt;/strong&gt;&lt;/a&gt; [22:05]&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=VkTCL6Nqm6Y"&gt;Pete Hunt: &lt;strong&gt;OSCON 2014: How Instagram.com Works&lt;/strong&gt;&lt;/a&gt; [40:18]&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=8aGhZQkoFbQ"&gt;Philip Roberts: &lt;strong&gt;JSConf EU: What the heck is the event loop anyway?&lt;/strong&gt;&lt;/a&gt; [26:52]&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  2013
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=n8ep4leoN9A&amp;amp;feature=youtu.be"&gt;Nat Duca, Tom Wiltzius: &lt;strong&gt;Jank Free: Chrome Rendering Performance&lt;/strong&gt;&lt;/a&gt; [40:53]&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=uR5urTx8S4E&amp;amp;feature=youtu.be"&gt;Ilya Grigorik: &lt;strong&gt;Automating Performance Best Practices with PageSpeed&lt;/strong&gt;&lt;/a&gt; [46:58]&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=fqULJBBEVQE&amp;amp;feature=youtu.be"&gt;Eric Bidelman: &lt;strong&gt;Web Components&lt;/strong&gt;&lt;/a&gt; [32:39]&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=0g0oOOT86NY&amp;amp;feature=youtu.be"&gt;Alex Komoroske, Matthew McNulty: &lt;strong&gt;Web Components in Action&lt;/strong&gt;&lt;/a&gt; [41:28]&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=055ekKZk7mc&amp;amp;feature=youtu.be"&gt;Paul Lewis, Peter Beverloo: &lt;strong&gt;Device Agnostic Development&lt;/strong&gt;&lt;/a&gt;  [40:44]&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=x9Jlu_h_Lyw&amp;amp;feature=youtu.be"&gt;John McCutchan, Loreena Lee: &lt;strong&gt;A Trip Down Memory Lane with Gmail and DevTools&lt;/strong&gt;&lt;/a&gt; [42:09]&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=e0W2szZ2qhg&amp;amp;feature=youtu.be"&gt;Joe Marini: &lt;strong&gt;Upgrading to a Chrome Packaged App&lt;/strong&gt;&lt;/a&gt; [43:49]&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=x7cQ3mrcKaY"&gt;Pete Hunt: &lt;strong&gt;React: Rethinking best practices&lt;/strong&gt;&lt;/a&gt; [29:31]&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=RTxtiLp1C8Y"&gt;Martin Kleppe: &lt;strong&gt;1024+ Seconds of JS Wizardry&lt;/strong&gt;&lt;/a&gt; [31:01]&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=s1dhXamEAKQ"&gt;Yehuda Katz: &lt;strong&gt;A tale of two MVC's&lt;/strong&gt;&lt;/a&gt; [31:06]&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=65-RbBwZQdU"&gt;Vyacheslav Egorov: &lt;strong&gt;Performance and Benchmarking&lt;/strong&gt;&lt;/a&gt; [25:41]&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=qrf9ONmtXbM"&gt;Brendan Eich: &lt;strong&gt;JavaScript at 18: Legal to Gamble&lt;/strong&gt;&lt;/a&gt; [25:44]&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://vimeo.com/76597193"&gt;Mathias Bynens: &lt;strong&gt;JavaScript ♥ Unicode&lt;/strong&gt;&lt;/a&gt; [26:12]&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=JjqKQ8ezwKQ"&gt;Mark Trostler: &lt;strong&gt;Testable JavaScript - Architecting Your Application for Testability&lt;/strong&gt;&lt;/a&gt; [45:35]&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  2012
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="http://vimeo.com/45140516"&gt;Ryan Sandor Richards: &lt;strong&gt;Garbage Collection &amp;amp; Heap Management&lt;/strong&gt;&lt;/a&gt; [32:57]&lt;/li&gt;
&lt;li&gt;Addy Osmani: &lt;strong&gt;Scaling Your JavaScript Applications&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://youtu.be/2g8AceFb0is"&gt;Part 1&lt;/a&gt; [22:37]&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://youtu.be/AlJdI6yNo4U"&gt;Part 2&lt;/a&gt; [15:41]&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://youtu.be/LZK-ObWu_5I"&gt;Part 3&lt;/a&gt; [33:31]&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=dpPy4f_SeEk"&gt;John-David Dalton: &lt;strong&gt;Lo-Dash&lt;/strong&gt;&lt;/a&gt; [25:08]&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.destroyallsoftware.com/talks/wat"&gt;Gary Bernhardt: &lt;strong&gt;WAT&lt;/strong&gt;&lt;/a&gt; [4:17]&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=MFtijdklZDo"&gt;Angus Croll: &lt;strong&gt;Break all the rules&lt;/strong&gt;&lt;/a&gt; [31:29]&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=c-kav7Tf834"&gt;Nicholas Zakas: &lt;strong&gt;Maintainable JavaScript&lt;/strong&gt;&lt;/a&gt; [47:04]&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=ZVCPZTTlhiM"&gt;Douglas Crockford: &lt;strong&gt;Principles of Security&lt;/strong&gt;&lt;/a&gt; [59:52]&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=et8xNAc2ic8"&gt;Brian Leroux: &lt;strong&gt;WTFJS&lt;/strong&gt;&lt;/a&gt; [18:26]&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  2011
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=UTEqr0IlFKY"&gt;Douglas Crockford: &lt;strong&gt;Level 7: ECMAScript 5: The New Parts&lt;/strong&gt;&lt;/a&gt; [57:18]&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=taaEzHI9xyY"&gt;Douglas Crockford: &lt;strong&gt;Section 8: Programming Style and Your Brain&lt;/strong&gt;&lt;/a&gt; [1:06:45]&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=jo_B4LTHi3I"&gt;Ryan Dahl: &lt;strong&gt;Introduction to Node.js&lt;/strong&gt;&lt;/a&gt; [1:06:33]&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=seX7jYI96GE"&gt;Alex Russell: &lt;strong&gt;Learning to Love JavaScript&lt;/strong&gt;&lt;/a&gt; [1:03:25]&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  2010
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=JxAXlJEmNMg"&gt;Douglas Crockford: &lt;strong&gt;Volume One: The Early Years&lt;/strong&gt;&lt;/a&gt; [1:42:08]&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=RO1Wnu-xKoY"&gt;Douglas Crockford: &lt;strong&gt;Chapter 2: And Then There Was JavaScript&lt;/strong&gt;&lt;/a&gt; [1:30:22]&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=ya4UHuXNygM"&gt;Douglas Crockford: &lt;strong&gt;Act III: Function the Ultimate&lt;/strong&gt;&lt;/a&gt; [1:13:28]&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=Fv9qT9joc0M"&gt;Douglas Crockford: &lt;strong&gt;Episode IV: The Metamorphosis of Ajax&lt;/strong&gt;&lt;/a&gt; [1:33:54]&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=47Ceot8yqeI"&gt;Douglas Crockford: &lt;strong&gt;Part 5: The End of All Things&lt;/strong&gt;&lt;/a&gt; [1:24:42]&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=QgwSUtYSUqA"&gt;Douglas Crockford: &lt;strong&gt;Scene 6: Loopage&lt;/strong&gt;&lt;/a&gt; [51:52]&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  2009
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=vXjVFPosQHw"&gt;Nicholas Zakas: &lt;strong&gt;Scalable JavaScript Application Architecture&lt;/strong&gt;&lt;/a&gt; [52:22]&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=hQVTIJBZook"&gt;Douglas Crockford: &lt;strong&gt;JavaScript: The Good Parts&lt;/strong&gt;&lt;/a&gt; [1:03:47]&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The &lt;a href="https://github.com/bolshchikov/js-must-watch"&gt;source&lt;/a&gt; of the above list is&lt;br&gt;
&lt;a href="https://github.com/bolshchikov"&gt;Sergey Bolshchikov&lt;/a&gt;Please follow him.&lt;/p&gt;

&lt;h2&gt;
  
  
  Podcasts
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://devchat.tv"&gt;Devchat.tv&lt;/a&gt;: Big podcast network for more and more developer communities.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://frontendhappyhour.com"&gt;Front End Happy Hour&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://futureofcoding.org/episodes/"&gt;Future of Coding&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://devchat.tv/js-jabber/"&gt;JavaScript Jabber&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://realtalkjavascript.simplecast.fm/"&gt;Real Talk JavaScript&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://syntax.fm/"&gt;Syntax.fm&lt;/a&gt;: The amazing Wes Bos &amp;amp; Scott Tolinksi hosts a podcast covering web development, front-end, the process of learning, and business. You can also find their episodes on various apps like Spotify etc.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://overcast.fm/itunes1451541555/the-undefined-podcast"&gt;The Undefined Podcast&lt;/a&gt; - Full stack developers Jared Palmer and Ken Wheeler have peer-to-peer conversations with world-class engineers about software development.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://changelog.com/jsparty"&gt;JS Party&lt;/a&gt; - Welcome to JS Party, a weekly celebration of JavaScript and the web&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://reactpodcast.simplecast.fm/"&gt;React Podcast&lt;/a&gt; - Conversations about React with your favorite developers.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://devchat.tv/react-round-up/"&gt;React Round Up&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://devchat.tv/react-native-radio/"&gt;React Native Radio&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.codenewbie.org/basecs"&gt;Base.cs Podcast&lt;/a&gt;: Beginner-friendly computer science lessons based on Vaidehi Joshi's base.cs blog series, produced by CodeNewbie.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.redhat.com/en/command-line-heroes"&gt;Command Line Heroes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.se-radio.net/"&gt;SE Radio&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.phproundtable.com/"&gt;PHP Roundtable&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.phparch.com/podcast/"&gt;PHP Architects&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://devmode.fm/"&gt;DevMode.fm&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.codingblocks.net/"&gt;Coding Blocks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://coder.show/"&gt;Coder Radio&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.fullstackradio.com/"&gt;Full Stack Radio&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.vox.com/recode-podcasts"&gt;Recode&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://codepodcast.com/"&gt;Code Podcast&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.codenewbie.org/podcast"&gt;CodeNewbie Podcast&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.lavieencode.net/podcast/"&gt;La Vie En Code&lt;/a&gt;: A podcast dedicated so self-taught web developers.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://undefined.fm/"&gt;UndefinedFM&lt;/a&gt;: The only engineering podcast with a 2 drink minimum. Hosted by Ken Wheeler and Jared Palmer.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://learntocodewith.me/podcast/"&gt;Learn To Code With Me&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://shoptalkshow.com/"&gt;Shop Talk Show&lt;/a&gt;: A podcast about building websites starring Dave Rupert and Chris Coyier. Development, design, performance, accessibility, tooling, a little bit of everything!&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://softwareengineeringdaily.com/category/all-episodes/exclusive-content/Podcast/"&gt;Software Engineering Daily&lt;/a&gt;: Daily interviews about technical software topics.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Youtube Channels
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.youtube.com/user/enyay"&gt;Tom Scott&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.youtube.com/channel/UC8butISFwT-Wl7EV0hUK0BQ"&gt;FreeCodeCamp&lt;/a&gt;: An increasingly popular resource with excellent content from the open-source community of self-taught developers who enjoy contributing to non-profit organizations. Their videos cover a nice range of topics:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Languages and Frameworks&lt;/li&gt;
&lt;li&gt;Game Development&lt;/li&gt;
&lt;li&gt;Talks&lt;/li&gt;
&lt;li&gt;A Day in The Life Of...&lt;/li&gt;
&lt;li&gt;Live Coding sessions&lt;/li&gt;
&lt;li&gt;Fundamentals (Computer Science and Programming)&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.youtube.com/user/hiteshitube"&gt;Hitesh Choudhary&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.youtube.com/channel/UC8g_o_0wHJUsp67lJA69yhg"&gt;Joe Parys Academy&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.youtube.com/user/LevelUpTuts"&gt;LevelUpTuts&lt;/a&gt;: Scott Tolinski&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.youtube.com/user/TheCharmefis/featured"&gt;mmtuts&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.youtube.com/user/sentdex"&gt;sentdex&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.youtube.com/user/shiffman"&gt;The Coding Train&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.youtube.com/user/thenewboston"&gt;Thenewboston&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.youtube.com/user/TechGuyWeb"&gt;Traversy Media&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.youtube.com/channel/UCrqAGUPPMOdo0jfQ6grikZw"&gt;Colt Steele&lt;/a&gt;: Colt is a developer with a serious love for teaching.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.youtube.com/realtoughcandy"&gt;Real Tough Candy&lt;/a&gt;: Real Tough Candy combines technical expertise with soft skills in this vlog oriented channel. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.youtube.com/benawad97"&gt;Ben Awad&lt;/a&gt;: Ben is a software developer who makes videos about React, React Native, GraphQL, Typescript, Node.js, PostgreSQL, Python, and all things coding.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Computer Science
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.youtube.com/user/Computerphile"&gt;Computerphile&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=tpIctyqH29Q&amp;amp;list=PL8dPuuaLjXtNlUrzyH5r6jN9ulIgZBpdo"&gt;Crash Course Computer Science&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.youtube.com/user/cs50tv/"&gt;CS50&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.youtube.com/channel/UC0RhatS1pyxInC00YKjjBqQ"&gt;GeeksforGeeks&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.youtube.com/channel/UCxX9wt5FWQUAAz4UrysqK9A"&gt;CS Dojo&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Talks/Conferences
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.youtube.com/channel/UCtxCXg-UvSnTKPOzLH4wJaQ"&gt;Coding Tech&lt;/a&gt;: A channel dedicated to republishing tech conferences from around the world and content originally published with the &lt;a href="https://creativecommons.org/about/"&gt;Creative Commons Attribution license&lt;/a&gt;. It's like &lt;a href="https://www.youtube.com/channel/UCzoVCacndDCfGDf41P-z0iA"&gt;JSConf&lt;/a&gt;, but much more diverse in topics spanning from things like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Software Development&lt;/li&gt;
&lt;li&gt;Quantum Computing&lt;/li&gt;
&lt;li&gt;Python&lt;/li&gt;
&lt;li&gt;JavaScript&lt;/li&gt;
&lt;li&gt;Web Design&lt;/li&gt;
&lt;li&gt;Security&lt;/li&gt;
&lt;li&gt;Blockchain&lt;/li&gt;
&lt;li&gt;GraphQL&lt;/li&gt;
&lt;li&gt;and Web Assembly&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.youtube.com/channel/UCzoVCacndDCfGDf41P-z0iA"&gt;JSConf&lt;/a&gt;:  A channel dedicated purely to JSConfs from around the world, ranging from the practical to the philosophical.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=x7cQ3mrcKaY"&gt;Pete Hunt: React: Rethinking best practices - JSConf EU 2013&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=DgVS-zXgMTk"&gt;Pete Hunt: React: Rethinking Best Practices (updated) - JSConf.Asia 2013&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=GW0rj4sNH2w"&gt;Tom Occhino and Jordan Walke: JS Apps at Facebook - JSConfUS 2013&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="http://blog.vjeux.com/2014/javascript/react-css-in-js-nationjs.html"&gt;React: CSS in JS&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=h3KksH8gfcQ"&gt;Pete Hunt: Be Predictable, Not Correct - Mountain West JavaScript 2014&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=nYkdrAPrdcw"&gt;Hacker Way: Rethinking Web App Development at Facebook&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=D-ioDiacTm8"&gt;Christopher Chedeau: Why does React Scale? - JSConf2014&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=eCf5CquV_Bw"&gt;Christopher Chedeau: React's Architecture - OSCON 2014&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=IVvHPPcl2TM"&gt;Pete Hunt: React RESTful UI Rendering - Strange Loop 2014&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=VkTCL6Nqm6Y"&gt;Pete Hunt: How Instagram.com Works - OSCON 2014&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=i__969noyAM"&gt;Bill Fisher and Jing Chen: React and Flux - NewCircle Training 2014&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=4anAwXYqLG8"&gt;Sebastian Markbage: Minimal API Surface Area - JSConf EU 2014&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=M8x0bc81smU"&gt;Avik Chaudhuri: JavaScript Testing and Static Type Systems at Scale - Scale 2014&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=X6YbAKiLCLU"&gt;React Native &amp;amp; Relay: Bringing Modern Web Techniques to Mobile - f8 2015)&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=LQFQl8EsV3k"&gt;Citrusbyte Presents GraphQL: A Horizontal Platform with Nick Schrock&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=mmke4w4gc6c"&gt;Laney Kuenzel: Mutations and Subscriptions in Relay - JSConf 2015&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=dpw9EHDh2bM"&gt;React Today and Tomorrow and 90% Cleaner React With Hooks - React Conf 2018&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://reactjs.org/community/conferences.html"&gt;React Conferences&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://reactjs.org/community/videos.html"&gt;React Videos&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://github.com/tiaanduplessis/awesome-react-talks"&gt;Awesome React Talks&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  &lt;a href="https://www.youtube.com/playlist?list=PLb0IAmt7-GS1cbw4qonlQztYV1TAW0sCr"&gt;React.js Conf 2015 Playlist&lt;/a&gt;
&lt;/h4&gt;

&lt;h4&gt;
  
  
  &lt;a href="https://www.youtube.com/playlist?list=PLCC436JpVnK0Phxld2dD4tM4xPMxJCiRD"&gt;ReactEurope Conf 2015 Day 1 Playlist&lt;/a&gt;
&lt;/h4&gt;

&lt;h4&gt;
  
  
  &lt;a href="https://www.youtube.com/playlist?list=PLCC436JpVnK3HvUSAHpt-LRJkIK8pQG6R"&gt;ReactEurope Conf 2015 Day 2 Playlist&lt;/a&gt;
&lt;/h4&gt;

&lt;h4&gt;
  
  
  &lt;a href="https://www.youtube.com/playlist?list=PLUD4kD-wL_zZhHy-G8hPNZTvx_M35loXQ"&gt;ReactRally Conf 2015 Playlist&lt;/a&gt;
&lt;/h4&gt;

&lt;h4&gt;
  
  
  &lt;a href="https://www.youtube.com/playlist?list=PLb0IAmt7-GS0M8Q95RIc2lOM6nc77q1IY"&gt;React.js Conf 2016 Playlist&lt;/a&gt;
&lt;/h4&gt;

&lt;h4&gt;
  
  
  &lt;a href="https://www.youtube.com/playlist?list=PLNBNS7NRGKMG3uLrm5fgY02hJ87Wzb4IU"&gt;React Amsterdam 2016 Playlist&lt;/a&gt;
&lt;/h4&gt;

&lt;h4&gt;
  
  
  &lt;a href="https://www.youtube.com/playlist?list=PLCC436JpVnK09bZeayg-KeLuHfHgc-tDa"&gt;ReactEurope Conf 2016 Day 1 Playlist&lt;/a&gt;
&lt;/h4&gt;

&lt;h4&gt;
  
  
  &lt;a href="https://www.youtube.com/playlist?list=PLCC436JpVnK0LTDKW3O_BGTZnrZ8dBAof"&gt;ReactEurope Conf 2016 Day 2 Playlist&lt;/a&gt;
&lt;/h4&gt;

&lt;h4&gt;
  
  
  &lt;a href="https://www.youtube.com/playlist?list=PLUD4kD-wL_zYSfU3tIYsb4WqfFQzO_EjQ"&gt;ReactRally Conf 2016 Playlist&lt;/a&gt;
&lt;/h4&gt;

&lt;h4&gt;
  
  
  &lt;a href="https://www.youtube.com/playlist?list=PLNBNS7NRGKMFi_glL49hsoyqu7dHTMnNm"&gt;React.js Amsterdam 2018 Playlist&lt;/a&gt;
&lt;/h4&gt;

&lt;h4&gt;
  
  
  Video Tutorials
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=G-aO5hzo1aw"&gt;Trying React Hooks for the first time with Dan Abramov&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Free Courses
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://bento.io/topic/css"&gt;Bento CSS Learning Track&lt;/a&gt; (Bento)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://bento.io/topic/html"&gt;Bento HTML Learning Track&lt;/a&gt; (Bento)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dash.generalassemb.ly"&gt;Build a Personal Website with Dash&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.bloc.io/tutorials/webflow-tutorial-design-responsive-sites-with-webflow"&gt;Build a responsive website with Webflow&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.bloc.io/tutorials/jottly-a-beginner-s-guide-to-html-css-skeleton-and-animate-css"&gt;Build a SaaS landing page using Skeleton&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://cs75.tv/2010/fall/"&gt;Build Dynamic Websites&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.udemy.com/code-your-first-game/"&gt;Code Your First Game: Arcade Classic in JavaScript on Canvas&lt;/a&gt; - Chris DeLeon (Udemy)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.udemy.com/css-flexbox-mastering-the-basics/"&gt;CSS Flexbox - Mastering the Basics&lt;/a&gt; - Vishwas Gopinath (Udemy)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/playlist?list=PL_RGaFnxSHWqMH9a9DY8LFKrJ5NJCFHHe"&gt;CSS Tutorial&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/samanthaming/Flexbox30"&gt;Flexbox in 30 Days&lt;/a&gt; - Samantha Ming&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/playlist?list=PL_RGaFnxSHWr_FB-hVEgEGUESZL1TOiJ6"&gt;HTML Tutorial&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.learnhowtoprogram.com/css"&gt;Learn how to program: CSS&lt;/a&gt; - Epicodus Inc.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.udemy.com/learn-html5-programming-from-scratch/"&gt;Learn HTML5 Programming From Scratch&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://bento.io/topic/javascript"&gt;Bento JavaScript Learning Track&lt;/a&gt; (Bento)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://egghead.io"&gt;Egghead.io&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/playlist?list=PL-xu4i_QDSxcoDNeh8rx5-pHCCTOg0XsI"&gt;Intro to JavaScript ES6 programming&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.udemy.com/javascript-essentials/"&gt;Javascript Essentials&lt;/a&gt; - Lawrence Turton (Udemy)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.learnhowtoprogram.com/javascript"&gt;Learn how to program: JavaScript&lt;/a&gt; - Epicodus Inc.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://learnquery.infinum.co"&gt;learn:query&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://roadtoreact.com/course-details?courseId=THE_ROAD_TO_GRAPHQL"&gt;The Road to GraphQL The Bare Essential Package&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://egghead.io/courses/react-fundamentals"&gt;Start Using React to Build Web Applications&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://roadtoreact.com/course-details?courseId=THE_ROAD_TO_LEARN_REACT"&gt;The Road to learn React.js The Bare Essentials Packaage&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://egghead.io/series/getting-started-with-redux"&gt;Getting Started with Redux&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.udemy.com/typescript/"&gt;Introduction to TypeScript&lt;/a&gt; - Daniel Stern (Udemy)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.udemy.com/typescript-fast-crash-course/"&gt;TypeScript Fast Crash Course&lt;/a&gt; - Edwin Diaz, Coding Faculty Solutions (Udemy)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/realpython/discover-flask"&gt;Discover Flask - Full Stack Web Development with Flask&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-i-hello-world"&gt;Flask(A Python Microframework) Tutorial&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.freecodecamp.org"&gt;Free Code Camp&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/playlist?list=PLhTjy8cBISEqkN-5Ku_kXG4QW33sxQo0t"&gt;Python Web Scraping &amp;amp; Crawling using Scrapy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.theodinproject.com"&gt;The Odin Project - Learn Web Development for Free&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/playlist?list=PLAQopGWlIcya-9yzQ8c8UtPOuCv0mFZkr"&gt;Web Information Retrieval&lt;/a&gt; - L. Becchetti, A. Vitaletti (University of Sapienza Rome)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Livestreams
&lt;/h2&gt;

&lt;p&gt;[your suggestions]&lt;/p&gt;

&lt;h2&gt;
  
  
  Meetups
&lt;/h2&gt;

&lt;p&gt;[your suggestions]&lt;/p&gt;

&lt;h2&gt;
  
  
  Newsletters
&lt;/h2&gt;

&lt;p&gt;[your suggestions]&lt;/p&gt;

&lt;h2&gt;
  
  
  People
&lt;/h2&gt;

&lt;p&gt;[your suggestions]&lt;/p&gt;

&lt;h2&gt;
  
  
  Research Papers
&lt;/h2&gt;

&lt;p&gt;[your suggestions]&lt;/p&gt;

&lt;h2&gt;
  
  
  Learning Plans
&lt;/h2&gt;

&lt;p&gt;[your suggestions]&lt;/p&gt;

&lt;p&gt;If you found this article helpful, consider becoming a Patreon.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Humble Request&lt;/strong&gt; - As a full time employee, I struggle with having time to publish my  personal findings about software technologies. I believe most people do.Your contributions allow me to create what inspires me and publish my work related to web development, whether that's standalone dev.to blogpost or parts of bigger personal projects.&lt;/p&gt;

&lt;p&gt;Support My Work - &lt;a href="https://www.patreon.com/bePatron?u=40663296"&gt;Become a Patron!&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>tutorial</category>
      <category>beginners</category>
    </item>
    <item>
      <title>25 Most Influential Javascript Programmers To Follow On Twitter</title>
      <dc:creator>Data Structures </dc:creator>
      <pubDate>Mon, 09 Mar 2020 23:38:04 +0000</pubDate>
      <link>https://dev.to/datastructures/most-influential-javascript-programmers-to-follow-on-twitter-2bdi</link>
      <guid>https://dev.to/datastructures/most-influential-javascript-programmers-to-follow-on-twitter-2bdi</guid>
      <description>&lt;p&gt;Hey Dev Community!&lt;/p&gt;

&lt;p&gt;This is the updated list of people from &lt;a href="https://dev.to/datastructures/awesome-javascript-best-blogs-books-people-podcasts-conferences-newsletters-videos-and-documentaries-on-the-web-free-4ljl"&gt;part1&lt;/a&gt; of this  Awesome Javascript series&lt;/p&gt;

&lt;p&gt;Below is the curated list of the most Influential Javascript developers(in no particular order) who impact how I think, about JavaScript, yet additionally about composing code professionally. In the event that you don't follow these people, I urge you to please follow them on twitter.I have linked their names with their twitter handles.&lt;/p&gt;

&lt;p&gt;Hope you like it!&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;a href="https://twitter.com/BrendanEich"&gt;Brendan Eich&lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--HxmllDYh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://upload.wikimedia.org/wikipedia/commons/d/d1/Brendan_Eich_Mozilla_Foundation_official_photo.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--HxmllDYh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://upload.wikimedia.org/wikipedia/commons/d/d1/Brendan_Eich_Mozilla_Foundation_official_photo.jpg" alt="drawing" width="200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;a href="https://www.crockford.com/javascript/"&gt;Douglas Crockford&lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--WPJarmfL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://upload.wikimedia.org/wikipedia/commons/2/24/Douglas_Crockford%252C_February_2013.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--WPJarmfL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://upload.wikimedia.org/wikipedia/commons/2/24/Douglas_Crockford%252C_February_2013.jpg" alt="drawing" width="200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;a href="https://twitter.com/ahejlsberg"&gt;Anders Hejlsberg&lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--5zs_up6D--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://upload.wikimedia.org/wikipedia/commons/e/ef/Anders_Hejlsberg.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--5zs_up6D--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://upload.wikimedia.org/wikipedia/commons/e/ef/Anders_Hejlsberg.jpg" alt="drawing" width="200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;a href="https://twitter.com/jeresig"&gt;John Resig&lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--YP5xx15i--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/1090714620275245056/HS9xcEDk_400x400.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--YP5xx15i--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/1090714620275245056/HS9xcEDk_400x400.jpg" alt="drawing" width="200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;a href="https://github.com/ry"&gt;Ryan Dahl&lt;/a&gt; - &lt;a href="https://tinyclouds.org/"&gt;Link to his website&lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--O5gmKY4Y--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://nodejsblog.com/wp-content/uploads/2015/05/ryan_dahl.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--O5gmKY4Y--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://nodejsblog.com/wp-content/uploads/2015/05/ryan_dahl.jpg" alt="drawing" width="200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;a href="https://twitter.com/addyosmani"&gt;Addy Osmani&lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--SRWqoPlw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://addyosmani.com/assets/avatar.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--SRWqoPlw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://addyosmani.com/assets/avatar.jpg" alt="drawing" width="200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;a href="https://twitter.com/paul_irish"&gt;Paul Irish&lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--sTwhiENn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/fit/c/256/256/0%2A5THJRVpXB13AuOdS.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--sTwhiENn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/fit/c/256/256/0%2A5THJRVpXB13AuOdS.jpeg" alt="drawing" width="200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;a href="https://twitter.com/jashkenas"&gt;Jeremy Ashkenas&lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--EKuFp9aA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://api.conferences.codegram.com/assets/speakers/picture/jeremy-ashkenas.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--EKuFp9aA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://api.conferences.codegram.com/assets/speakers/picture/jeremy-ashkenas.jpg" alt="drawing" width="200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;a href="https://twitter.com/andrestaltz"&gt;André Staltz&lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Zlohziw_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://avatars0.githubusercontent.com/u/90512%3Fs%3D460%26v%3D4" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Zlohziw_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://avatars0.githubusercontent.com/u/90512%3Fs%3D460%26v%3D4" alt="drawing" width="200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;a href="https://twitter.com/rich_harris"&gt;Rich Harris&lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--8jGFc-hP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://jscamp.tech/images/speakers/rich-harris.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8jGFc-hP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://jscamp.tech/images/speakers/rich-harris.jpg" alt="drawing" width="200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;a href="https://twitter.com/youyuxi"&gt;Evan You&lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--4fy9aJot--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-media-1.freecodecamp.org/images/0%2AxkJgg-6HskYrQ3N7.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4fy9aJot--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-media-1.freecodecamp.org/images/0%2AxkJgg-6HskYrQ3N7.jpeg" alt="drawing" width="200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;a href="https://twitter.com/dan_abramov"&gt;Dan Abramov&lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--hxy1VLfn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://d2eip9sf3oo6c2.cloudfront.net/instructors/avatars/000/000/032/square_480/oapgW_Fp_400x400.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--hxy1VLfn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://d2eip9sf3oo6c2.cloudfront.net/instructors/avatars/000/000/032/square_480/oapgW_Fp_400x400.jpg" alt="drawing" width="200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;a href="https://twitter.com/getify"&gt;Kyle Simpson&lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--zloHFnXW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/800/1%2AF-b7RgT3r7318oroZGEKjQ.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zloHFnXW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/800/1%2AF-b7RgT3r7318oroZGEKjQ.jpeg" alt="drawing" width="200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;a href="https://twitter.com/mitchellbaker"&gt;Mitchell Baker&lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--mk52pNJu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.techwomen.org/wp-content/uploads/2015/10/Kickoff_05_MG_6026.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mk52pNJu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.techwomen.org/wp-content/uploads/2015/10/Kickoff_05_MG_6026.jpg" alt="drawing" width="200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;a href="https://twitter.com/sarah_edo"&gt;Sarah Drasner&lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--XhCFU8wt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://avatars2.githubusercontent.com/u/2281088%3Fs%3D460%26v%3D4" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--XhCFU8wt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://avatars2.githubusercontent.com/u/2281088%3Fs%3D460%26v%3D4" alt="drawing" width="200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;a href="https://twitter.com/John_Papa"&gt;John Papa&lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--VP0b1gYX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://avatars0.githubusercontent.com/u/1202528%3Fs%3D460%26v%3D4" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--VP0b1gYX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://avatars0.githubusercontent.com/u/1202528%3Fs%3D460%26v%3D4" alt="drawing" width="200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;a href="https://twitter.com/rauschma"&gt;Axel Rauschmayer&lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--j0x0EeNh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/467581434434453504/iFzELOBn_400x400.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--j0x0EeNh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/467581434434453504/iFzELOBn_400x400.jpeg" alt="drawing" width="200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;a href="https://twitter.com/kentcdodds"&gt;Kent C. Dodds&lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--5P59wJVt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/759557613445001216/6M2E1l4q_400x400.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--5P59wJVt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/759557613445001216/6M2E1l4q_400x400.jpg" alt="drawing" width="200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;a href="https://twitter.com/wesbos"&gt;Wes Bos&lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--_FYow4ct--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/877525007185858562/7G9vGTca_400x400.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_FYow4ct--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/877525007185858562/7G9vGTca_400x400.jpg" alt="drawing" width="200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;a href="https://twitter.com/jhusain"&gt;Jafar Husain&lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--uw4iTTHl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/491609678539792384/YskBOQeH.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--uw4iTTHl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/491609678539792384/YskBOQeH.jpeg" alt="drawing" width="200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;a href="https://twitter.com/marijnjh"&gt;Marijn Haverbeke&lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--47G15xOu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.ytimg.com/vi/4UlNIb8i9j8/maxresdefault.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--47G15xOu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.ytimg.com/vi/4UlNIb8i9j8/maxresdefault.jpg" alt="drawing" width="200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;a href="https://twitter.com/ASpittel"&gt;Ali Spittel&lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--f9QSspO_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://s3.amazonaws.com/freecodecamp/news-ali-spittel.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--f9QSspO_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://s3.amazonaws.com/freecodecamp/news-ali-spittel.jpg" alt="drawing" width="200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;a href="https://twitter.com/mathias"&gt;Mathias Bynens&lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--X25JNqrA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://avatars1.githubusercontent.com/u/81942%3Fs%3D460%26v%3D4" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--X25JNqrA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://avatars1.githubusercontent.com/u/81942%3Fs%3D460%26v%3D4" alt="drawing" width="200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;a href="https://twitter.com/AriyaHidayat"&gt;Ariya Hidayat&lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--H62zLnHP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.ytimg.com/vi/RG0d2fecVc4/maxresdefault.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--H62zLnHP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.ytimg.com/vi/RG0d2fecVc4/maxresdefault.jpg" alt="drawing" width="200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Are there any other Twitter handles you would add to this list? Share them in the comments section below.&lt;/p&gt;

&lt;p&gt;If you found this article helpful, please tap the &lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--8CFAj25Q--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/emoji/emoji-one-unicorn-695106da1194513bfa0092f1a75943f59089be7d6addbc7459bdfab80f5709e6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8CFAj25Q--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/emoji/emoji-one-unicorn-695106da1194513bfa0092f1a75943f59089be7d6addbc7459bdfab80f5709e6.png" alt="drawing" width="30" height="30"&gt;&lt;/a&gt; Follow this channel for more articles on data structures and algorithms,web development,react and more !&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>tutorial</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Awesome Javascript - Best Blogs, Books, People, Podcasts, Conferences, NewsLetters, Videos and Documentaries On The Web (Free)</title>
      <dc:creator>Data Structures </dc:creator>
      <pubDate>Sun, 08 Mar 2020 05:18:53 +0000</pubDate>
      <link>https://dev.to/datastructures/awesome-javascript-best-blogs-books-people-podcasts-conferences-newsletters-videos-and-documentaries-on-the-web-free-4ljl</link>
      <guid>https://dev.to/datastructures/awesome-javascript-best-blogs-books-people-podcasts-conferences-newsletters-videos-and-documentaries-on-the-web-free-4ljl</guid>
      <description>&lt;p&gt;Hey Dev Community!&lt;/p&gt;

&lt;p&gt;Are you interested in learning web development? So you start Googling it, and you get bombarded with lots and lots of resources which are either sometimes irrelevant or out of date.&lt;/p&gt;

&lt;p&gt;Below is the curated list of the most awesome Javascript blogs, articles, books and podcasts available for you for free on the internet.&lt;/p&gt;

&lt;p&gt;There is a section at the end of the post left blank. I will be regularly updating that section with &lt;strong&gt;your suggestions&lt;/strong&gt; for the best resources on Conferences, Courses, People, Livestreams, Meetups, Newsletters, Research Papers Videos, Documentaries &amp;amp; Films, Learning Paths. Let me know &lt;strong&gt;your suggestions&lt;/strong&gt; in the comments below.&lt;/p&gt;

&lt;p&gt;Hope you like it!&lt;/p&gt;

&lt;h2&gt;
  
  
  Blogs
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://2ality.com/"&gt;2ality&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://staltz.com/blog.html"&gt;André Staltz&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://davidwalsh.name/tutorials/features"&gt;David Walsh&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://feross.org/"&gt;Feross&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://flaviocopes.com/"&gt;Flavio Copes&lt;/a&gt; - Guides and tutorials for developers.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blog.iansinnott.com/"&gt;Ian Sinnott&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://jasonformat.com/"&gt;Jason Format&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://javascriptplayground.com"&gt;JavaScript Playground&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://maxogden.com/index.html"&gt;Max Ogden&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://nick.balestra.ch/"&gt;Nick Balestra&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://perfectionkills.com/"&gt;Perfection Kills&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.playfuljs.com"&gt;PlayfulJS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://wavesoft.github.io/"&gt;Wavesoft&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://wesbos.com/blog/"&gt;Wes Bos&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://yehudakatz.com/"&gt;Yehuda Katz&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Books
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/getify/You-Dont-Know-JS"&gt;📖 You don’t know JS&lt;/a&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/getify/You-Dont-Know-JS/tree/master/up%20%26%20going"&gt;📖 Up and going&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/getify/You-Dont-Know-JS/blob/master/scope%20&amp;amp;%20closures/README.md#you-dont-know-js-scope--closures"&gt;📖 Scope and closures&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/getify/You-Dont-Know-JS/blob/master/this%20&amp;amp;%20object%20prototypes/README.md#you-dont-know-js-this--object-prototypes"&gt;📖 This and object prototypes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/getify/You-Dont-Know-JS/blob/master/types%20&amp;amp;%20grammar/README.md#you-dont-know-js-types--grammar"&gt;📖 Types and grammar&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/getify/You-Dont-Know-JS/blob/master/async%20&amp;amp;%20performance/README.md#you-dont-know-js-async--performance"&gt;📖 Async and performance&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/getify/You-Dont-Know-JS/blob/master/es6%20&amp;amp;%20beyond/README.md#you-dont-know-js-es6--beyond"&gt;📖 ES6 and beyond&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;&lt;a href="https://addyosmani.com/resources/essentialjsdesignpatterns/book/"&gt;📖 Learning JavaScript design patterns (2015)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://eloquentjavascript.net/00_intro.html"&gt;📖 Eloquent JavaScript (2011)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://exploringjs.com/"&gt;📖 Exploring js&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://amzn.to/2U0ijr5"&gt;📕 Secrets of the JavaScript ninja (2013)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://amzn.to/2TQbcRR"&gt;📕 Effective JavaScript: 68 specific ways to harness the power of JavaScript (2012)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://leanpub.com/thejsway"&gt;📖 The JavaScript way (2017)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://builderbook.org/book"&gt;📖 Builder Book: Build a Full Stack JavaScript Web App from Scratch (2018)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Podcasts
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://overcast.fm/itunes1451541555/the-undefined-podcast"&gt;The Undefined Podcast&lt;/a&gt; - Full stack developers Jared Palmer and Ken Wheeler have peer-to-peer conversations with world-class engineers about software development.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://changelog.com/jsparty"&gt;JS Party&lt;/a&gt; - Welcome to JS Party, a weekly celebration of JavaScript and the web&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://reactpodcast.simplecast.fm/"&gt;React Podcast&lt;/a&gt; - Conversations about React with your favorite developers.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conferences
&lt;/h2&gt;

&lt;p&gt;[To be updated with your suggestions] - Coming Soon. Stay Tuned!&lt;/p&gt;

&lt;h2&gt;
  
  
  Courses
&lt;/h2&gt;

&lt;p&gt;[your suggestions]&lt;/p&gt;

&lt;h2&gt;
  
  
  Livestreams
&lt;/h2&gt;

&lt;p&gt;[your suggestions]&lt;/p&gt;

&lt;h2&gt;
  
  
  Meetups
&lt;/h2&gt;

&lt;p&gt;[your suggestions]&lt;/p&gt;

&lt;h2&gt;
  
  
  Newsletters
&lt;/h2&gt;

&lt;p&gt;[your suggestions]&lt;/p&gt;

&lt;h2&gt;
  
  
  People
&lt;/h2&gt;

&lt;p&gt;[your suggestions]&lt;/p&gt;

&lt;h2&gt;
  
  
  Q&amp;amp;A
&lt;/h2&gt;

&lt;p&gt;[your suggestions]&lt;/p&gt;

&lt;h2&gt;
  
  
  Research Papers
&lt;/h2&gt;

&lt;p&gt;[your suggestions]&lt;/p&gt;

&lt;h2&gt;
  
  
  Videos, Documentaries &amp;amp; Films
&lt;/h2&gt;

&lt;p&gt;[your suggestions]&lt;/p&gt;

&lt;h2&gt;
  
  
  Learning Plans
&lt;/h2&gt;

&lt;p&gt;[your suggestions]&lt;/p&gt;

&lt;p&gt;If you found this article helpful, please tap the &lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--8CFAj25Q--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/emoji/emoji-one-unicorn-695106da1194513bfa0092f1a75943f59089be7d6addbc7459bdfab80f5709e6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8CFAj25Q--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/emoji/emoji-one-unicorn-695106da1194513bfa0092f1a75943f59089be7d6addbc7459bdfab80f5709e6.png" alt="drawing" width="30" height="30"&gt;&lt;/a&gt; Follow this channel for more articles on data structures and algorithms,web development,react and more !&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>javascript</category>
      <category>webdev</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Google Javascript Interview Question - Remove Duplicates from Sorted Array</title>
      <dc:creator>Data Structures </dc:creator>
      <pubDate>Fri, 06 Mar 2020 12:39:04 +0000</pubDate>
      <link>https://dev.to/datastructures/google-javascript-interview-question-remove-duplicates-from-sorted-array-5dca</link>
      <guid>https://dev.to/datastructures/google-javascript-interview-question-remove-duplicates-from-sorted-array-5dca</guid>
      <description>&lt;h1&gt;
  
  
  Problem Statement
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Remove Duplicates from a Sorted Array&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;arr = [1,2,2,3,3,4,4,4,5]&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Description&lt;/strong&gt; -  As you can see in the above array there are multiple occurrences of the same element like &lt;code&gt;2&lt;/code&gt; is repeated twice then &lt;code&gt;3&lt;/code&gt; is twice and &lt;code&gt;4&lt;/code&gt; is repeated 3 times. So, we have to remove these duplicate elements and we have to keep only one copy of each element in our output&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Expected Output&lt;/strong&gt; : [1,2,3,4,5]&lt;/p&gt;

&lt;h1&gt;
  
  
  Implementation
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Time Complexity&lt;/strong&gt;  - O(n) // as we are traversing the array only once where &lt;code&gt;n&lt;/code&gt; is the size of the array&lt;br&gt;
&lt;strong&gt;Space Complexity&lt;/strong&gt; - O(n) &lt;/p&gt;

&lt;h1&gt;
  
  
  Javascript Implementation
&lt;/h1&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight javascript"&gt;&lt;code&gt;
&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;nums&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;

&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;removeDuplicates&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;nums&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;sortedArray&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;nums&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;sort&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;len&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;sortedArray&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;newArr&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[];&lt;/span&gt;

    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;len&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="c1"&gt;// Start traversing elements&lt;/span&gt;
        &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="nx"&gt;len&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="c1"&gt;// If current element is not equal  to next element then store that &lt;/span&gt;
            &lt;span class="c1"&gt;// current element&lt;/span&gt;
            &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;sortedArray&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;!==&lt;/span&gt; &lt;span class="nx"&gt;sortedArray&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="nx"&gt;newArr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;push&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;sortedArray&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;i&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;span class="c1"&gt;// Store the last element as whether it is unique or repeated, it hasn't &lt;/span&gt;
         &lt;span class="c1"&gt;// stored previously &lt;/span&gt;
        &lt;span class="nx"&gt;newArr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;push&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;sortedArray&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;len&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;newArr&lt;/span&gt;

&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nx"&gt;removeDuplicates&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;nums&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;// Returns =&amp;gt; [ 1, 2, 3, 4, 5 ]&lt;/span&gt;

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



&lt;p&gt;Copy and paste the above code in your browser developer tools and you will get &lt;br&gt;
[ 1, 2, 3, 4, 5 ] as the output.&lt;/p&gt;

&lt;p&gt;If you found this article helpful, please tap the &lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--8CFAj25Q--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/emoji/emoji-one-unicorn-695106da1194513bfa0092f1a75943f59089be7d6addbc7459bdfab80f5709e6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8CFAj25Q--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/emoji/emoji-one-unicorn-695106da1194513bfa0092f1a75943f59089be7d6addbc7459bdfab80f5709e6.png" alt="drawing" width="30" height="30"&gt;&lt;/a&gt; Follow this channel for more articles on data structures and algorithms.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>tutorial</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Amazon Coding Interview Question - Find The Sum Of Contiguous SubArray with Largest Sum</title>
      <dc:creator>Data Structures </dc:creator>
      <pubDate>Fri, 06 Mar 2020 05:37:10 +0000</pubDate>
      <link>https://dev.to/datastructures/amazon-coding-interview-question-find-the-sum-of-contiguous-subarray-with-largest-sum-4n6l</link>
      <guid>https://dev.to/datastructures/amazon-coding-interview-question-find-the-sum-of-contiguous-subarray-with-largest-sum-4n6l</guid>
      <description>&lt;h1&gt;
  
  
  Problem Statement
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Find The Sum Of Contiguous SubArray with Largest Sum&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Description&lt;/strong&gt; -  for a given array lots of subarrays are possible but we have to find a sub-array which gives us the largest sum&lt;/p&gt;

&lt;p&gt;arr = [-2,-3,4,-1,-2,1,5,-3]&lt;/p&gt;

&lt;p&gt;In this particular array arr, subarray [4,-1,-2,1,5] gives us the maximum sum &lt;code&gt;7&lt;/code&gt; out of all the subarrays possible.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Expected Output&lt;/strong&gt; : &lt;code&gt;7&lt;/code&gt; &lt;br&gt;
The above sum is the sum of the subArray &lt;code&gt;[4,-1,-2,1,5]&lt;/code&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Efficient Implementation
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Time Complexity&lt;/strong&gt;  - O(n) // as we are traversing the array only once where &lt;code&gt;n&lt;/code&gt; is the size of the array&lt;br&gt;
&lt;strong&gt;Space Complexity&lt;/strong&gt; - O(1) // as we are just using two variables &lt;code&gt;maxSum&lt;/code&gt; and &lt;code&gt;curSum&lt;/code&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  C++ Implemention
&lt;/h1&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight javascript"&gt;&lt;code&gt;
&lt;span class="err"&gt;#&lt;/span&gt;&lt;span class="nx"&gt;include&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;iostream&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; 
&lt;span class="err"&gt;#&lt;/span&gt;&lt;span class="nx"&gt;include&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;climits&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; 
&lt;span class="nx"&gt;using&lt;/span&gt; &lt;span class="nx"&gt;namespace&lt;/span&gt; &lt;span class="nx"&gt;std&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 

&lt;span class="nx"&gt;int&lt;/span&gt; &lt;span class="nx"&gt;findSubArrayMaxSum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;int&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;[],&lt;/span&gt;&lt;span class="nx"&gt;int&lt;/span&gt; &lt;span class="nx"&gt;n&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;

  &lt;span class="c1"&gt;// currSum keeps track of the sum of the current subArray&lt;/span&gt;
  &lt;span class="c1"&gt;// maxSum keeps track of the maximum sum that has occurred till then&lt;/span&gt;
  &lt;span class="c1"&gt;// intially both will be 0 and as I traverse through the array these variables&lt;/span&gt;
  &lt;span class="c1"&gt;// will get changed&lt;/span&gt;
  &lt;span class="nx"&gt;int&lt;/span&gt; &lt;span class="nx"&gt;maxSum&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nx"&gt;currSum&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;int&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;n&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
    &lt;span class="c1"&gt;// Calculate the current sum&lt;/span&gt;
    &lt;span class="nx"&gt;currSum&lt;/span&gt;&lt;span class="o"&gt;+=&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
    &lt;span class="c1"&gt;// if the current sum changes to a negative value I will set it back to 0&lt;/span&gt;
    &lt;span class="c1"&gt;// that way I can keep track of the maximum sum&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;currSum&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
      &lt;span class="nx"&gt;currSum&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;maxSum&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="nx"&gt;currSum&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
      &lt;span class="c1"&gt;// assign currSum to maxSum  if maxSum is less than currSum and currSum is &lt;/span&gt;
      &lt;span class="c1"&gt;// greater than 0&lt;/span&gt;
      &lt;span class="nx"&gt;maxSum&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;currSum&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;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;maxSum&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nx"&gt;int&lt;/span&gt; &lt;span class="nx"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; 
&lt;span class="p"&gt;{&lt;/span&gt; 
    &lt;span class="nx"&gt;int&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;};&lt;/span&gt; 
    &lt;span class="nx"&gt;int&lt;/span&gt; &lt;span class="nx"&gt;n&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;sizeof&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;sizeof&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt; 
    &lt;span class="nx"&gt;int&lt;/span&gt; &lt;span class="nx"&gt;max_sum&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;findSubArrayMaxSum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;n&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; 
    &lt;span class="nx"&gt;cout&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Maximum contiguous sum is &lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="nx"&gt;max_sum&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;0&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;If you found this article helpful, please tap the &lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--8CFAj25Q--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/emoji/emoji-one-unicorn-695106da1194513bfa0092f1a75943f59089be7d6addbc7459bdfab80f5709e6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8CFAj25Q--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/emoji/emoji-one-unicorn-695106da1194513bfa0092f1a75943f59089be7d6addbc7459bdfab80f5709e6.png" alt="drawing" width="30" height="30"&gt;&lt;/a&gt; Follow this channel for more articles on data strucures and algorithms.&lt;/p&gt;

</description>
      <category>computerscience</category>
      <category>javascript</category>
      <category>webdev</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Facebook Coding Interview Question-FindLongestSubarrayBySum</title>
      <dc:creator>Data Structures </dc:creator>
      <pubDate>Thu, 05 Mar 2020 21:55:48 +0000</pubDate>
      <link>https://dev.to/datastructures/facebook-coding-interview-question-findlongestsubarraybysum-586a</link>
      <guid>https://dev.to/datastructures/facebook-coding-interview-question-findlongestsubarraybysum-586a</guid>
      <description>&lt;h1&gt;
  
  
  Problem Statement
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Given an unsorted array of integers, find a subarray which adds to a given number&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;arr = [10,2,-2,-20,10]&lt;br&gt;
sum = -10 &lt;/p&gt;

&lt;p&gt;The longest subarray is [10,2,-2,-20] having the length of 4.The solution should return the starting and end indices of the found subarray, here &lt;code&gt;0,3&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Expected Result&lt;/strong&gt; - &lt;code&gt;0,3&lt;/code&gt;&lt;/p&gt;
&lt;h1&gt;
  
  
  Naive Implementation
&lt;/h1&gt;

&lt;p&gt;Find out all the subarrays whose sum computes to given &lt;code&gt;sum S&lt;/code&gt;.Then,it will check the sum of each subarray with the given &lt;code&gt;sum S&lt;/code&gt; and return the indices of the longest subarray. But this approach takes O(n^2) time complexity which is generally considered bad.&lt;/p&gt;
&lt;h1&gt;
  
  
  Efficient Implementation -  Efficient way of doing this is using a HashMap
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Time Complexity&lt;/strong&gt;  - O(n) // Much better than O(n^2)&lt;br&gt;
&lt;strong&gt;Space Complexity&lt;/strong&gt; - O(n)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight javascript"&gt;&lt;code&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;java&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;util&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;java&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;lang&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;java&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;io&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;


&lt;span class="kr"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nx"&gt;MaxLengthSubArray&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kr"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="nx"&gt;main&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;String&lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt; &lt;span class="nx"&gt;args&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nx"&gt;throws&lt;/span&gt; &lt;span class="nx"&gt;java&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;lang&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Exception&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;

        &lt;span class="nx"&gt;BufferedReader&lt;/span&gt; &lt;span class="nx"&gt;br&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;BufferedReader&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;InputStreamReader&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;System&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;in&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
        &lt;span class="nx"&gt;int&lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;int&lt;/span&gt;&lt;span class="p"&gt;[]{&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;};&lt;/span&gt;
        &lt;span class="nx"&gt;int&lt;/span&gt; &lt;span class="nx"&gt;total&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

        &lt;span class="c1"&gt;// create a `HashMap` to store all the array elements `sum` and their &lt;/span&gt;
        &lt;span class="c1"&gt;// `indices`&lt;/span&gt;
        &lt;span class="nb"&gt;Map&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;Integer&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;Integer&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;map&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;HashMap&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
        &lt;span class="nx"&gt;map&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;put&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

        &lt;span class="c1"&gt;// we have to keep track of the sum of the subArrays,so that is stored in &lt;/span&gt;
        &lt;span class="c1"&gt;// this variable `sum` ie `sum` is the current sum&lt;/span&gt;
        &lt;span class="nx"&gt;int&lt;/span&gt; &lt;span class="nx"&gt;sum&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

        &lt;span class="c1"&gt;//starting index pointing to the first element of the array &lt;/span&gt;
        &lt;span class="nx"&gt;int&lt;/span&gt; &lt;span class="nx"&gt;start&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

        &lt;span class="c1"&gt;// end is not pointing anything,so it is set to `-1`&lt;/span&gt;
        &lt;span class="nx"&gt;int&lt;/span&gt; &lt;span class="nx"&gt;end&lt;/span&gt;&lt;span class="o"&gt;=-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

        &lt;span class="c1"&gt;// Traverse through the entire array and calculate the current  &lt;/span&gt;
        &lt;span class="c1"&gt;// `sum`.After calculating the currentSum,we will subtract the currentSum &lt;/span&gt;
        &lt;span class="c1"&gt;// with the  given `sum S` and check whether it is equal to 0.If, it is &lt;/span&gt;
        &lt;span class="c1"&gt;// equal to `0` then that means we have found the subArray which will &lt;/span&gt;
        &lt;span class="c1"&gt;//give sum S = -10&lt;/span&gt;
        &lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;int&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
        &lt;span class="nx"&gt;sum&lt;/span&gt;&lt;span class="o"&gt;+=&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;map&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;containsKey&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
        &lt;span class="nx"&gt;map&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;put&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

        &lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;map&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;containsKey&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;sum&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;total&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nx"&gt;start&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nx"&gt;map&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="nx"&gt;sum&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;total&lt;/span&gt; &lt;span class="p"&gt;)){&lt;/span&gt;
            &lt;span class="nx"&gt;start&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;map&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="nx"&gt;sum&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;total&lt;/span&gt; &lt;span class="p"&gt;);&lt;/span&gt;
            &lt;span class="nx"&gt;end&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;i&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;span class="nx"&gt;System&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;out&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;println&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;end&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;start&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&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="o"&gt;+&lt;/span&gt;&lt;span class="nx"&gt;end&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;If you found this article helpful, please tap the &lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--8CFAj25Q--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/emoji/emoji-one-unicorn-695106da1194513bfa0092f1a75943f59089be7d6addbc7459bdfab80f5709e6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8CFAj25Q--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/emoji/emoji-one-unicorn-695106da1194513bfa0092f1a75943f59089be7d6addbc7459bdfab80f5709e6.png" alt="drawing" width="30" height="30"&gt;&lt;/a&gt; Follow this channel for more articles on data strucures and algorithms.&lt;/p&gt;

</description>
      <category>computerscience</category>
      <category>tutorial</category>
      <category>beginners</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
