<?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>Forem: Dimitri Marion</title>
    <description>The latest articles on Forem by Dimitri Marion (@dimitrimarion).</description>
    <link>https://forem.com/dimitrimarion</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%2F224908%2F6916a36a-7026-46c5-8aa9-d3cabb70e80a.png</url>
      <title>Forem: Dimitri Marion</title>
      <link>https://forem.com/dimitrimarion</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/dimitrimarion"/>
    <language>en</language>
    <item>
      <title>Simple React.js Boilerplate</title>
      <dc:creator>Dimitri Marion</dc:creator>
      <pubDate>Fri, 11 Oct 2019 00:00:00 +0000</pubDate>
      <link>https://forem.com/dimitrimarion/simple-react-js-boilerplate-df9</link>
      <guid>https://forem.com/dimitrimarion/simple-react-js-boilerplate-df9</guid>
      <description>&lt;p&gt;I created a simple React.js boilerplate using Parcel. It’s a simple starter kit that you can easily extend. Only “react” and “react-dom” are installed, you decide which router or state management library or any other libraries you want to use.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Link to the boilerplate&lt;/strong&gt; : &lt;a href="https://github.com/dimitrimarion/react-parcel-boilerplate"&gt;Simple React.js Boilerplate&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting started
&lt;/h2&gt;

&lt;p&gt;You can click on “Use this template” to create another repository or clone the repository:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;$ git clone https://github.com/dimitrimarion/react-parcel-boilerplate.git&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Run the setup:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;$ npm run setup&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Start the development server:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;$ npm run dev&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Bundle the application for production:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;$ npm run build&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Useful packages
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/tleunen/babel-plugin-module-resolver"&gt;babel-plugin-module-resolver&lt;/a&gt;: this plugin simplifies the import path in your project.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Use this:&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;dog&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@images/dog.jpg&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="c1"&gt;// Instead of that:&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;dog&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;../../../images/dog.jpg&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You just need to add an alias in &lt;code&gt;.babelrc&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[
   "module-resolver",
      {
        "root": ["./src"],
        "alias": {
          "@images": "./assets/images"
        }
      }
  ]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://babeljs.io/docs/en/next/babel-plugin-proposal-class-properties.html"&gt;@babel/plugin-proposal-class-properties&lt;/a&gt;: this plugin lets you use class properties.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Without class properties:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nx"&gt;Button&lt;/span&gt; &lt;span class="kd"&gt;extends&lt;/span&gt; &lt;span class="nx"&gt;Component&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;constructor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;props&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;super&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;props&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;state&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;clicked&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt;
    &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;handleClick&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;handleClick&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;bind&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="nx"&gt;handleClick&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;setState&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;clicked&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="nx"&gt;render&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="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;button&lt;/span&gt; &lt;span class="nx"&gt;onClick&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;handleClick&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="nx"&gt;Click&lt;/span&gt; &lt;span class="nx"&gt;Me&lt;/span&gt;&lt;span class="o"&gt;!&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/button&amp;gt;&lt;/span&gt;&lt;span class="err"&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;With class properties and arrow function, there is no need to bind &lt;code&gt;this&lt;/code&gt; and the code is shorter:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nx"&gt;Button&lt;/span&gt; &lt;span class="kd"&gt;extends&lt;/span&gt; &lt;span class="nx"&gt;Component&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;state&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;clicked&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt;

  &lt;span class="nx"&gt;handleClick&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;setState&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;clicked&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;

  &lt;span class="nx"&gt;render&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="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;button&lt;/span&gt; &lt;span class="nx"&gt;onClick&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;handleClick&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="nx"&gt;Click&lt;/span&gt; &lt;span class="nx"&gt;Me&lt;/span&gt;&lt;span class="o"&gt;!&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/button&amp;gt;&lt;/span&gt;&lt;span class="err"&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;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;This is a very simple boilerplate, it doesn’t include advanced things like state management or unit testing but I think it’s a good starting point for somebody learning React.js.&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>react</category>
      <category>parcel</category>
      <category>boilerplate</category>
    </item>
    <item>
      <title>How to Become a Front-end Developer in 2019</title>
      <dc:creator>Dimitri Marion</dc:creator>
      <pubDate>Wed, 28 Aug 2019 00:00:00 +0000</pubDate>
      <link>https://forem.com/dimitrimarion/how-to-become-a-front-end-developer-in-2019-15af</link>
      <guid>https://forem.com/dimitrimarion/how-to-become-a-front-end-developer-in-2019-15af</guid>
      <description>&lt;p&gt;&lt;strong&gt;This guide is also available as a Trello board&lt;/strong&gt; : &lt;a href="https://trello.com/b/t11rpjld/front-end-learning-path-2019"&gt;Front-end Learning Path 2019&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Here’s a detailed learning path of what I think is the best way to learn front-end web development. This learning path has a lot of similarities with the &lt;a href="https://frontendmasters.com/books/front-end-handbook/2019/"&gt;Front-end handbook&lt;/a&gt;. The handbook is really good, but I think it is a bit overwhelming as a beginner who doesn’t know where to begin.&lt;/p&gt;

&lt;p&gt;If you’re surprised there is no mention to the most used framework or library, it’s on purpose. &lt;a href="https://youtu.be/QjKH1J77gjI"&gt;You should learn the underlying technologies before learning the abstraction&lt;/a&gt;. It’s not even necessary to use frameworks or libraries nowadays for certain tasks thanks to the latest web standards and javascript. For example, &lt;a href="https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Grid_Layout"&gt;CSS Grid&lt;/a&gt; or &lt;a href="https://developer.mozilla.org/en-US/docs/Glossary/Flexbox"&gt;Flexbox&lt;/a&gt; can easily be used for layout instead of &lt;a href="https://getbootstrap.com"&gt;Bootstrap&lt;/a&gt;. You’ll be a better developer in the end and you’ll really understand what’s happening behind the scenes.&lt;/p&gt;

&lt;p&gt;You’ll see a lot of mentions to &lt;a href="https://frontendmasters.com"&gt;Frontend Masters&lt;/a&gt;. I’m not affiliated with them in any way, I just think it’s one the best resources out there to learn web development.&lt;/p&gt;

&lt;p&gt;This learning path assumes you have zero programming experience although this guide won’t teach you computer science. If you have zero prior programming experience, it may be good to take a course like &lt;a href="https://online-learning.harvard.edu/course/cs50-introduction-computer-science"&gt;CS50: Introduction to Computer Science&lt;/a&gt;. If you’re already a software developer or have some knowledge of web development, you may skip what you’re already familiar with, like for example section 1 explaining how the internet/web works.&lt;/p&gt;

&lt;p&gt;It’s important to learn but it’s equally important to practice what you’ve learned. That’s why you’ll also find resources to practice or ideas of projects you can work on.&lt;/p&gt;

&lt;p&gt;The only resources you should not skip (assuming you’re not already familiar with the subject studied in a section) are the one labeled “Getting Started”. They represent the basics that every Front-end developer should know. If you want to go further or come back to a subject you’re already familiar with, there are the resources labeled “Deeper Dive”. The resources labeled “Other Resources” covers the same subjects as in “Getting Started” or subjects that are not fundamentals.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Internet/Web Fundamentals
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Getting Started:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://frontendmasters.com/books/front-end-handbook/2019/#2"&gt;What Is a Front-end Developer?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://internetfundamentals.com/"&gt;Internet Fundamentals&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Other Resources:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://youtu.be/Dxcc6ycZ73M"&gt;What is the Internet?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Learn/Common_questions/How_does_the_Internet_work"&gt;How does the Internet work?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Learn/Getting_started_with_the_web/How_the_Web_works"&gt;How the Web works&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://youtu.be/72snZctFFtA"&gt;DNS Explained&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Overview"&gt;An overview of HTTP&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Learn/Server-side/First_steps/Introduction"&gt;Introduction to the server side&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://firstsiteguide.com/tools/hosting/"&gt;Web Hosting Services Explained&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.udemy.com/course/web-hosting-101/"&gt;Web Hosting 101&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://hacks.mozilla.org/2017/05/quantum-up-close-what-is-a-browser-engine/"&gt;What is a browser engine?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  2. General Front-end
&lt;/h2&gt;

&lt;p&gt;The following course will give you a good introduction on how to develop a web app and a basic understanding of how to use git and bash but without going into a lot of details. You’ll find that some of the next resources in this guide will cover the same subjects but that’s not a problem. It’s always good to review what you’ve already learned. It will also provide you with a good overview of what web development is so that you can learn each next subject knowing how all the pieces fit together.&lt;/p&gt;

&lt;h3&gt;
  
  
  Getting Started:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://frontendmasters.com/courses/web-development-v2/"&gt;Complete Intro to Web Development, v2&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Deeper Dive:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://yellowshoe.com.au/standards/"&gt;Being a Web Developer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://youtu.be/Lsg84NtJbmI"&gt;So, You Want to be a Front-End Engineer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://youtu.be/q4zEGkjTBFA"&gt;Planning a Front-end JS Application&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  3. HTML &amp;amp; CSS
&lt;/h2&gt;

&lt;p&gt;Don’t rush learning HTML &amp;amp; CSS. I know you want to build a cool dynamic website but you should have a solid understanding of HTML &amp;amp; CSS before learning Javascript. It’s especially true with CSS, you can get very frustrated when you’re not able to get the result you want. For example, CSS won’t apply the margin you want but that often comes from a misunderstanding or lack of knowledge of margin collapsing. The key to mastering CSS is to practice a lot.&lt;/p&gt;

&lt;h3&gt;
  
  
  Getting Started:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://internetingishard.com/html-and-css/"&gt;HTML &amp;amp; CSS is Hard&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://frontendmasters.com/courses/css-grids-flexbox/"&gt;CSS Grids and Flexbox for Responsive Web Design&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.smashingmagazine.com/2019/07/margins-in-css/"&gt;Everything You Need To Know About CSS Margins&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://csswizardry.com/2012/06/single-direction-margin-declarations/"&gt;Single-direction margin declarations&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Other Resources:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Learn/HTML"&gt;Learning HTML: Guides and tutorials (MDN)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Learn/CSS"&gt;Learn to style HTML using CSS (MDN)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://youtu.be/xara4Z1b18I"&gt;CSS Float and Clear Explained&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://css-tricks.com/centering-css-complete-guide/"&gt;Centering in CSS: A Complete Guide&lt;/a&gt;&lt;/li&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;&lt;/li&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;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://html.spec.whatwg.org/multipage/"&gt;HTML Living Standard&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Practice:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://learn.freecodecamp.org/responsive-web-design/responsive-web-design-projects"&gt;freeCodeCamp Responsive Web Design Projects&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.frontendmentor.io"&gt;Frontend Mentor&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://frontloops.io"&gt;Frontloops Markup&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://cssgridgarden.com/"&gt;Grid Garden&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.gridcritters.com/"&gt;Grid Critters&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://gridbyexample.com/learn/"&gt;Grid by Example&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Deeper Dive:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://css-tricks.com/how-to-section-your-html/"&gt;How to Section Your HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.manning.com/books/css-in-depth"&gt;CSS in Depth Book&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://frontendmasters.com/courses/css-in-depth-v2/"&gt;CSS In-Depth, v2&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  4. Javascript
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Getting Started:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://frontendmasters.com/courses/getting-started-javascript-v2/"&gt;Getting Started with JavaScript, v2&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Other Resources:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/getify/You-Dont-Know-JS"&gt;You Don’t Know JS (book series)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://eloquentjavascript.net/index.html"&gt;Eloquent Javascript&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Deeper Dive:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://frontendmasters.com/courses/js-fundamentals-functional-v2/"&gt;JavaScript: From Fundamentals to Functional JS, v2&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://benmccormick.org/2017/07/19/ten-things-javascript/"&gt;Ten Things A Serious JavaScript Developer Should Learn&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  5. DOM API
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Getting Started:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://eloquentjavascript.net/14_dom.html"&gt;The Document Object Model&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://eloquentjavascript.net/15_event.html"&gt;Handling Events&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://javascript.info/bubbling-and-capturing"&gt;Bubbling and capturing&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Other Resources:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Web/API/Document_Object_Model"&gt;DOM (MDN)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Building_blocks/Events"&gt;Introduction to events&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.khanacademy.org/computing/computer-programming/html-css-js"&gt;HTML/JS: Making webpages interactive&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dom.spec.whatwg.org/"&gt;DOM Living Standard&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://w3c.github.io/uievents/"&gt;UI Events&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Practice:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://frontloops.io"&gt;Frontloops Elements&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Build a simple to-do list app&lt;/li&gt;
&lt;li&gt;&lt;a href="https://javascript30.com"&gt;Javascript 30&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  6. Server/Client, JSON, APIs, AJAX, REST
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Getting Started:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Learn/Server-side/First_steps/Introduction"&gt;Introduction to the server side&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Learn/Server-side/First_steps/Client-Server_overview"&gt;Client-Server Overview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mijingo.com/lessons/what-is-json/"&gt;What is JSON?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Objects/JSON"&gt;Working with JSON&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Client-side_web_APIs/Introduction"&gt;Introduction to web APIs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Client-side_web_APIs/Fetching_data"&gt;Fetching data from the server&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://rest.learncode.academy/"&gt;Learning to REST&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Client-side_web_APIs/Third_party_APIs"&gt;Third-party APIs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Pratice:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Pick an API in this list: &lt;a href="https://github.com/public-apis/public-apis"&gt;https://github.com/public-apis/public-apis&lt;/a&gt;. Build a web app using this API. Example: show the weather forecast in your city.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Deeper Dive:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest"&gt;Using XMLHttpRequest&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch"&gt;Using Fetch&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS"&gt;CORS (MDN)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://alazierplace.com/2019/06/cors-cross-origin-communication-in-the-modern-web/"&gt;CORS Explained&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://fosterelli.co/developers-dont-understand-cors"&gt;Developers don’t understand CORS&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  7. Bash, Git, Package manager, Bundlers
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Getting Started:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.learnenough.com/command-line-tutorial/basics"&gt;Learn Enough Command Line to Be Dangerous&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.atlassian.com/git"&gt;Getting Git Right&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/the-node-js-collection/modern-javascript-explained-for-dinosaurs-f695e9747b70"&gt;Modern JavaScript Explained For Dinosaurs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.freecodecamp.org/news/javascript-package-managers-101-9afd926add0a/#.hu6knvct3"&gt;An introduction to how JavaScript package managers work&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sitepoint.com/beginners-guide-node-package-manager/"&gt;A Beginner’s Guide to npm — the Node Package Manager&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.telerik.com/blogs/the-mystical-magical-semver-ranges-used-by-npm-bower"&gt;The Mystical &amp;amp; Magical SemVer Ranges Used By npm &amp;amp; Bower&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://web.archive.org/web/20180119022215/https://www.reddit.com/r/javascript/comments/7qdksl/having_a_hard_time_understanding_webpack/"&gt;Having A Hard Time Understanding Webpack&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://slides.com/lucianomammino/unbundling-the-javascript-module-bundler-dublinjs#/"&gt;Unbundling the JavaScript module bundler&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://webpack.js.org/guides/getting-started/"&gt;Webpack Documentation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Deeper Dive:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://frontendmasters.com/courses/bash-vim-regex/"&gt;Introduction to Bash, VIM &amp;amp; Regex&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://frontendmasters.com/courses/git-in-depth/"&gt;Git In-depth&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://frontendmasters.com/courses/webpack-fundamentals/"&gt;Webpack 4 Fundamentals&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/ronami/minipack"&gt;Minipack: a simplified example of a modern module bundler written in JavaScript&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  8. Front-End architecture
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Getting Started:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://snipcart.com/blog/jamstack"&gt;New to JAMstack? Everything You Need to Know to Get Started&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://jamstack.org/"&gt;JAMstack&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Deeper Dive:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/verekia/js-stack-from-scratch"&gt;JavaScript Stack from Scratch&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>frontend</category>
      <category>guide</category>
      <category>learning</category>
      <category>path</category>
    </item>
  </channel>
</rss>
