<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" version="2.0">
    <channel>
        
        <title>
            <![CDATA[ Inspiration - freeCodeCamp.org ]]>
        </title>
        <description>
            <![CDATA[ Browse thousands of programming tutorials written by experts. Learn Web Development, Data Science, DevOps, Security, and get developer career advice. ]]>
        </description>
        <link>https://www.freecodecamp.org/news/</link>
        <image>
            <url>https://cdn.freecodecamp.org/universal/favicons/favicon.png</url>
            <title>
                <![CDATA[ Inspiration - freeCodeCamp.org ]]>
            </title>
            <link>https://www.freecodecamp.org/news/</link>
        </image>
        <generator>Eleventy</generator>
        <lastBuildDate>Tue, 12 May 2026 04:27:14 +0000</lastBuildDate>
        <atom:link href="https://www.freecodecamp.org/news/tag/inspiration/rss.xml" rel="self" type="application/rss+xml" />
        <ttl>60</ttl>
        
            <item>
                <title>
                    <![CDATA[ How to Get Inspired When Your Coding Hits a Dead End ]]>
                </title>
                <description>
                    <![CDATA[ By Ryan Dawson Hitting a dead-end is common when you're programming. It’s common with any type of problem-solving.  We get stuck on a particular way of seeing the problem and it can be difficult to achieve a new perspective.  I recently came across a... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-to-get-inspired-when-your-coding-hits-a-dead-end/</link>
                <guid isPermaLink="false">66d460c547a8245f78752aad</guid>
                
                    <category>
                        <![CDATA[ Inspiration ]]>
                    </category>
                
                    <category>
                        <![CDATA[ motivation ]]>
                    </category>
                
                    <category>
                        <![CDATA[ self-improvement  ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Fri, 25 Sep 2020 17:23:22 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2020/09/codinginspiration-2.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Ryan Dawson</p>
<p>Hitting a dead-end is common when you're programming. It’s common with any type of problem-solving. </p>
<p>We get stuck on a particular way of seeing the problem and it can be difficult to achieve a new perspective. </p>
<p>I recently came across a tool from the creative arts and realised it could be adapted to work for programming.</p>
<p>The tool that inspired me is Oblique Strategy Cards. They are prompts to break a cycle of thinking and inspire us to think differently. Cards include ‘Remove specifics and convert to ambiguities’ and ‘Use an old idea’. </p>
<p>One of their most famous uses was on the David Bowie album <em>Heroes</em>. On the track ‘Sense of Doubt’, for example, Bowie and Brian Eno took turns doing overdubs based on Oblique Strategy Cards <a target="_blank" href="https://dangerousminds.net/comments/brian_eno_and_peter_schmidts_oblique_strategies_the_original_handwritt">without revealing to the other what their card had said</a>.</p>
<p>I think coding dead ends need something more direct. In moments of being stuck on a problem we both need inspiration and reassurance. </p>
<h2 id="heading-the-solution-the-coding-inspiration-machine">The Solution? The Coding Inspiration Machine</h2>
<p>So I’ve collected quotes on the process of coding from experts – people who have created programming languages and operating systems. And I’ve put these wise words into a <a target="_blank" href="https://github.com/gminovska/RandomQuoteMachine">design by Gordana Minovska</a> that gives the quotes centre stage.</p>
<p><img src="https://lh5.googleusercontent.com/vFx4xkI63PkxfNy1UQGuiGvKYBeVl_-83ScRc68smMQSa1AgRRGi9mPtHnet_XHDYk-hZono_wHUz_F7fXY1dbYhsJ0nq24ynFU52md65YZfqmdMRd_LQR-4zYID4ZK0Vg7l0NVD" alt="Image" width="600" height="400" loading="lazy">
<em><a target="_blank" href="https://ryandawsonuk.github.io/CodingInspirationMachine/">https://ryandawsonuk.github.io/CodingInspirationMachine/</a></em></p>
<p>The aim is to have a tool to help get from “I can’t see any solution” to “maybe this approach will go somewhere” to “aha”. </p>
<p>We often get stuck in a perspective that doesn’t allow us to see the ‘maybe’ approaches. In those moments we could use some wise words from a master problem-solver to give us a jolt. </p>
<p>For example, these words from Robert C. Martin:</p>
<blockquote>
<p>When you are working on a problem, you sometimes get so close to it that you can’t see all the options. You miss elegant solutions because the creative part of your mind is suppressed by the intensity of your focus.</p>
</blockquote>
<p>The idea is to either bookmark <a target="_blank" href="https://ryandawsonuk.github.io/CodingInspirationMachine/">the url</a> or fork the repo and configure GitHub Pages to host your own version. </p>
<p>With a fork you can change the quotes to whatever you find most helpful. Then you can return to the Coding Inspiration Machine when you get stuck.</p>
<p>Of course this is just one inspiration tool. It won’t replace others like brainstorming and mind-maps. </p>
<p>David Bowie used many tools for inspiration and his music probably owes more to inspiration from <a target="_blank" href="http://www.openculture.com/2019/05/how-david-bowie-used-william-s-burroughs-cut-up-method-to-write-his-unforgettable-lyrics.html">newspaper clippings</a> than Oblique Strategy Cards. </p>
<p>But the point with the Coding Inspiration Machine is to have an easy, go-to tool to remind us that it’s ok to get stuck, that it’s meant to be hard, and that there will be ways forward.</p>
<h2 id="heading-real-world-applications-for-the-coding-inspiration-machine">Real world applications for the Coding Inspiration Machine</h2>
<p>Here are a few situations I’ve hit recently that got me thinking about this technique.</p>
<h3 id="heading-getting-creative">Getting creative</h3>
<p>There was an authorization problem with a system I work on. The authorization code that was working with several authorization providers didn’t work for a particular Active Directory setup. </p>
<p>We didn’t know initially if it was a config problem on the provider side, config on the app side, a connectivity problem, or a problem in our code. We even <a target="_blank" href="https://github.com/ryandawsonuk/oauth2-test-tool">built a custom test tool</a> to narrow the problem down. </p>
<p>It eventually turned out that we needed an extra resource_uri parameter to be included in one of our http calls.</p>
<h3 id="heading-finding-a-solution">Finding a solution</h3>
<p>For this same system we wanted to show metrics over long periods. This led to trying to make Prometheus queries over data ranges that are too big for Prometheus queries. </p>
<p>There’s a range of ways to handle this, from changing what we query for, to using different/more tools, to restructuring the data. We chose what amounts to <a target="_blank" href="https://github.com/SeldonIO/seldon-core/pull/2484">restructuring the data</a>.</p>
<h3 id="heading-seeing-the-less-obvious-answer">Seeing the less obvious answer</h3>
<p>My father-in-law showed me that his smart TV was not working with Netflix. </p>
<p>After navigating several confusing menus and trying various wireless networks, we found it to be a signal strength problem with the network that the TV was preferring (it worked fine with a network that the TV thought was lower strength).</p>
<h2 id="heading-wrapping-up">Wrapping up</h2>
<p>These problems are all different but they share common features. </p>
<p>Each required research and experimentation and eliminating possibilities. Each of them was initially surprising and it took time to adjust expectations and realise why the problem was there. It was necessary to explore multiple paths and each time that a path was unsuccessful it was disheartening. </p>
<p>It is easy to get stuck in these situations and find that we can’t see any paths anymore. The words of others who have been there before can help us see these situations with fresh eyes.</p>
<p>Have a look at the <a target="_blank" href="https://ryandawsonuk.github.io/CodingInspirationMachine/">Coding Inspiration Machine</a> and feel free to submit suggestions to the <a target="_blank" href="https://github.com/ryandawsonuk/CodingInspirationMachine">github repo</a> or <a target="_blank" href="https://twitter.com/ryandawsongb">contact me on twitter</a>.  </p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to Use Pure CSS to Create a Beautiful Loading Animation for your App ]]>
                </title>
                <description>
                    <![CDATA[ If you've been around the internet lately, you've most likely seen a nice subtle loading animation that fills page content before gracefully loading in.  Some of the social giants like Facebook even use this approach to give page loading a better exp... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-to-use-css-to-create-a-beautiful-loading-animation-for-your-app/</link>
                <guid isPermaLink="false">66b8e3730cedc1f2a4f7069f</guid>
                
                    <category>
                        <![CDATA[ animation ]]>
                    </category>
                
                    <category>
                        <![CDATA[ animations ]]>
                    </category>
                
                    <category>
                        <![CDATA[ CSS ]]>
                    </category>
                
                    <category>
                        <![CDATA[ CSS3 ]]>
                    </category>
                
                    <category>
                        <![CDATA[ front end ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Front-end Development ]]>
                    </category>
                
                    <category>
                        <![CDATA[ frontend ]]>
                    </category>
                
                    <category>
                        <![CDATA[ HTML ]]>
                    </category>
                
                    <category>
                        <![CDATA[ HTML5 ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Inspiration ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Pure CSS ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Web Applications ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Web Design ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Web Development ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Colby Fayock ]]>
                </dc:creator>
                <pubDate>Tue, 05 May 2020 14:45:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2020/05/loading-animation.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>If you've been around the internet lately, you've most likely seen a nice subtle loading animation that fills page content before gracefully loading in. </p>
<p>Some of the social giants like Facebook even use this approach to give page loading a better experience. How can we do that with just some simple CSS?</p>
<ul>
<li><a class="post-section-overview" href="#heading-what-are-we-going-to-build">What are we going to build?</a></li>
<li><a class="post-section-overview" href="#heading-just-want-the-snippet">Just want the snippet?</a></li>
<li><a class="post-section-overview" href="#heading-part-1-creating-our-loading-animation">Part 1: Creating our loading animation</a></li>
<li><a class="post-section-overview" href="#heading-part-2-using-our-loading-animation-in-a-dynamic-app">Part 2: Using our loading animation in a dynamic app</a></li>
</ul>
<div class="embed-wrapper">
        <iframe width="560" height="315" src="https://www.youtube.com/embed/auyZWWjXJCo" style="aspect-ratio: 16 / 9; width: 100%; height: auto;" title="YouTube video player" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen="" loading="lazy"></iframe></div>
<h2 id="heading-what-are-we-going-to-build">What are we going to build?</h2>
<p>We're going to create a loading animation using a CSS class that you can apply to pretty much any element you want (within reason).</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/05/loading-animation.gif" alt="Image" width="600" height="400" loading="lazy">
<em>Loading animation preview</em></p>
<p>This gives you great flexibility to use it and makes the solution nice and simple with only CSS.</p>
<p>While the snippet is pretty small and you could just copy and paste it, I'll walk you through what's happening and an example of using it dynamically when loading data.</p>
<h2 id="heading-just-want-the-snippet">Just want the snippet?</h2>
<p>You can grab it here!</p>
<div class="gist-block embed-wrapper" data-gist-show-loading="false" data-id="d155418975d1e0e04b2805e285296033">
        <script src="https://gist.github.com/colbyfayock/d155418975d1e0e04b2805e285296033.js"></script></div><h2 id="heading-do-i-need-to-know-how-to-animate-before-this-tutorial">Do I need to know how to animate before this tutorial?</h2>
<p>No! We'll walk through in detail exactly what you need to do. In fact, the animation in this tutorial is relatively simple, so let's dig in!</p>
<h2 id="heading-part-1-creating-our-loading-animation">Part 1: Creating our loading animation</h2>
<p>This first part is going to focus on getting the loading animation together and seeing it on a static HTML website. The goal is to walk through actually creating the snippet. We'll only use HTML and CSS for this part.</p>
<h3 id="heading-step-1-creating-some-sample-content">Step 1: Creating some sample content</h3>
<p>To get started, we'll want a little sample content. There's really no restrictions here, you can create this with basic HTML and CSS or you can add this to your Create React App!</p>
<p>For the walk through, I'm going to use HTML and CSS with a few examples of content that will allow us to see this in effect.</p>
<p>To get started, create a new HTML file. Inside that HTML file, fill it with some content that will give us the ability to play with our animation. I'm going to use <a target="_blank" href="http://fillerama.io/">fillerama</a> which uses lines from my favorite TV show <a target="_blank" href="https://en.wikipedia.org/wiki/Futurama">Futurama</a>!</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/05/static-html-css-website-fillerama.jpg" alt="Image" width="600" height="400" loading="lazy">
<em>Static HTML &amp; CSS webpage with content from fillerama.io</em></p>
<p>If you're going to follow along with me, here's what my project looks like:</p>
<pre><code>my-css-loading-animation-<span class="hljs-keyword">static</span>
- index.html
- main.css
</code></pre><p><a target="_blank" href="https://github.com/colbyfayock/my-css-loading-animation-static/commit/9aa7925f7048fa1b73fef74d0d56380c29fc5d73">Follow along with the commit!</a></p>
<h3 id="heading-step-2-starting-with-a-foundation-loading-class">Step 2: Starting with a foundation loading class</h3>
<p>For our foundation, let's create a new CSS class. Inside our CSS file, let's add:</p>
<pre><code class="lang-css"><span class="hljs-selector-class">.loading</span> {
  <span class="hljs-attribute">background</span>: <span class="hljs-number">#eceff1</span>;
}
</code></pre>
<p>With that class, let's add it to a few or all of our elements. I added it to a few paragraphs, headings, and lists.</p>
<pre><code class="lang-html"><span class="hljs-tag">&lt;<span class="hljs-name">p</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"loading"</span>&gt;</span>For example...
</code></pre>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/05/static-html-css-gray-background.jpg" alt="Image" width="600" height="400" loading="lazy">
<em>Static HTML &amp; CSS webpage with a gray background for the content</em></p>
<p>That gives us a basic background, but we'd probably want to hide that text. When it's loading, we won't have that text yet, so most likely we would want to use filler text or a fixed height. Either way, we can set the color to transparent:</p>
<pre><code class="lang-css"><span class="hljs-selector-class">.loading</span> {
  <span class="hljs-attribute">color</span>: transparent;
  <span class="hljs-attribute">background</span>: <span class="hljs-number">#eceff1</span>;
}
</code></pre>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/05/static-html-css-gray-background-hidden-text.jpg" alt="Image" width="600" height="400" loading="lazy">
<em>Static HTML &amp; CSS webpage with a gray background and transparent color for the content</em></p>
<p>If you notice with list elements, whether you apply the class to the top level list element (<code>&lt;ol&gt;</code> or <code>&lt;ul&gt;</code>) vs the list item itself (<code>&lt;li&gt;</code>), it looks like one big block. If we add a little margin to the bottom of all list elements, we can see a different in how they display:</p>
<pre><code class="lang-css"><span class="hljs-selector-tag">li</span> {
  <span class="hljs-attribute">margin-bottom</span>: .<span class="hljs-number">5em</span>;
}
</code></pre>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/05/static-html-css-gray-background-different-lists.jpg" alt="Image" width="600" height="400" loading="lazy">
<em>Style difference between applying to the top level list or the list items</em></p>
<p>And now it's starting to come together, but it kind of just looks like placeholders. So let's animate this to look like it's actually loading.</p>
<p><a target="_blank" href="https://github.com/colbyfayock/my-css-loading-animation-static/commit/f68cdef36be11311a5cc11a1d39e52ea7e7bb48d">Follow along with the commit!</a></p>
<h3 id="heading-step-3-styling-and-animating-our-loading-class">Step 3: Styling and animating our loading class</h3>
<p>Before actually animating our class, we need something to animate, so let's add a gradient to our <code>.loading</code> class:</p>
<pre><code class="lang-css"><span class="hljs-selector-class">.loading</span> {
  <span class="hljs-attribute">color</span>: transparent;
  <span class="hljs-attribute">background</span>: <span class="hljs-built_in">linear-gradient</span>(<span class="hljs-number">100deg</span>, #eceff1 <span class="hljs-number">30%</span>, #f6f7f8 <span class="hljs-number">50%</span>, #eceff1 <span class="hljs-number">70%</span>);
}
</code></pre>
<p>This is saying that we want a <a target="_blank" href="https://developer.mozilla.org/en-US/docs/Web/CSS/linear-gradient">linear gradient</a> that's tilted at 100 degrees, where we start with <code>#eceff1</code> and fade to <code>#f6f7f8</code> at 30% and back to <code>#eceff1</code> at 70%;</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/05/static-html-css-gray-background-subtle-gradient.jpg" alt="Image" width="600" height="400" loading="lazy">
<em>Subtle gradient background that might look like a glare</em></p>
<p>It's hard to see initially when it's still, it might just look like a glare on your computer! If you'd like to see it before moving on, feel free to play with the colors above to see the gradient.</p>
<p>Now that we have something to animate, we'll first need to create a <a target="_blank" href="https://developer.mozilla.org/en-US/docs/Web/CSS/@keyframes">keyframes</a> rule:</p>
<pre><code class="lang-css"><span class="hljs-keyword">@keyframes</span> loading {
  0% {
    <span class="hljs-attribute">background-position</span>: <span class="hljs-number">100%</span> <span class="hljs-number">50%</span>;
  }
  100% {
    <span class="hljs-attribute">background-position</span>: <span class="hljs-number">0</span> <span class="hljs-number">50%</span>;
  }
}
</code></pre>
<p>This rule when applied will change the background position from starting at 100% of the x-axis to 0% of the x-axis.</p>
<p>With the rule, we can add our <a target="_blank" href="https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Animations/Using_CSS_animations">animation</a> property to our <code>.loading</code> class:</p>
<pre><code class="lang-css"><span class="hljs-selector-class">.loading</span> {
  <span class="hljs-attribute">color</span>: transparent;
  <span class="hljs-attribute">background</span>: <span class="hljs-built_in">linear-gradient</span>(<span class="hljs-number">100deg</span>, #eceff1 <span class="hljs-number">30%</span>, #f6f7f8 <span class="hljs-number">50%</span>, #eceff1 <span class="hljs-number">70%</span>);
  <span class="hljs-attribute">animation</span>: loading <span class="hljs-number">1.2s</span> ease-in-out infinite;
}
</code></pre>
<p>Our animation line is setting the keyframe to <code>loading</code>, telling it to last for 1.2 seconds, setting the <a target="_blank" href="https://developer.mozilla.org/en-US/docs/Web/CSS/animation-timing-function">timing function</a> to <code>ease-in-out</code> to make it smooth, and tell it to loop forever with <code>infinite</code>.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/05/static-html-css-gray-background-subtle-gradient.jpg" alt="Image" width="600" height="400" loading="lazy">
<em>No change – it's not animating</em></p>
<p>If you notice though after saving that, it's still not doing anything. The reason for this is we're setting our gradient from one end of the DOM element to the other, so there's nowhere to move!</p>
<p>So let's try also setting a <code>background-size</code> on our <code>.loading</code> class.</p>
<pre><code class="lang-css"><span class="hljs-selector-class">.loading</span> {
  <span class="hljs-attribute">color</span>: transparent;
  <span class="hljs-attribute">background</span>: <span class="hljs-built_in">linear-gradient</span>(<span class="hljs-number">100deg</span>, #eceff1 <span class="hljs-number">30%</span>, #f6f7f8 <span class="hljs-number">50%</span>, #eceff1 <span class="hljs-number">70%</span>);
  <span class="hljs-attribute">background-size</span>: <span class="hljs-number">400%</span>;
  <span class="hljs-attribute">animation</span>: loading <span class="hljs-number">1.2s</span> ease-in-out infinite;
}
</code></pre>
<p>Now, since our background expands beyond our DOM element (you can't see that part), it has some space to animate with and we get our animation!</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/05/static-html-css-loading-animation.gif" alt="Image" width="600" height="400" loading="lazy">
<em>Our loading animation!</em></p>
<p><a target="_blank" href="https://github.com/colbyfayock/my-css-loading-animation-static/commit/bc4b5ec955a0906fea032edbbaf90f037f76c91b">Follow along with the commit!</a></p>
<h2 id="heading-part-2-using-our-loading-animation-in-a-dynamic-app">Part 2: Using our loading animation in a dynamic app</h2>
<p>Now that we have our loading animation, let's put it into action with a basic example where we fake a loading state.</p>
<p>The trick with actually using this is typically we don't have the actual content available, so in most cases, we have to fake it.</p>
<p>To show you how we can do this, we're going to build a simple <a target="_blank" href="https://reactjs.org/">React</a> app with <a target="_blank" href="https://nextjs.org/">Next.js</a>.</p>
<h3 id="heading-step-1-creating-an-example-react-app-with-nextjs">Step 1: Creating an example React app with Next.js</h3>
<p>Navigate to the directory you want to create your new project in and run:</p>
<pre><code class="lang-shell">yarn create next-app
# or
npm init next-app
</code></pre>
<p>It will prompt you with some options, particularly a name which will determine the directory the project is created in and the type of project. I'm using <code>my-css-loading-animation-dynamic</code> and the "Default Starter App".</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/05/nextjs-new-project.jpg" alt="Image" width="600" height="400" loading="lazy">
<em>Creating a new project with Next.js</em></p>
<p>Once installed, navigate into your new directory and start up your development server:</p>
<pre><code>cd [directory]
yarn dev
# or 
npm run dev
</code></pre><p><img src="https://www.freecodecamp.org/news/content/images/2020/05/nextjs-starting-dev-server.jpg" alt="Image" width="600" height="400" loading="lazy">
<em>Starting development server with Next.js</em></p>
<p>Next, let's replace the content in our <code>pages/index.js</code> file. I'm going to derive the content from the previous example, but we'll create it similar to how we might expect it to come from an API. First, let's add our  content as an object above our return statement:</p>
<pre><code class="lang-javascript"><span class="hljs-keyword">const</span> content = {
  <span class="hljs-attr">header</span>: <span class="hljs-string">`So, how 'bout them Knicks?`</span>,
  <span class="hljs-attr">intro</span>: <span class="hljs-string">`What are their names? I'm Santa Claus! This opera's as lousy as it is brilliant! Your lyrics lack subtlety. You can't just have your characters announce how they feel. That makes me feel angry! Good news, everyone! I've taught the toaster to feel love!`</span>,
  <span class="hljs-attr">list</span>: [
    <span class="hljs-string">`Yes! In your face, Gandhi!`</span>,
    <span class="hljs-string">`So I really am important? How I feel when I'm drunk is correct?`</span>,
    <span class="hljs-string">`Who are those horrible orange men?`</span>
  ]
}
</code></pre>
<p>To display that content, inside <code>&lt;main&gt;</code>, let's replace the content with:</p>
<pre><code class="lang-jsx">&lt;main&gt;
  <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">h1</span>&gt;</span>{ content.header }<span class="hljs-tag">&lt;/<span class="hljs-name">h1</span>&gt;</span></span>
  <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">p</span>&gt;</span>{ content.intro }<span class="hljs-tag">&lt;/<span class="hljs-name">p</span>&gt;</span></span>
  <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">ul</span>&gt;</span>
    { content.list.map((item, i) =&gt; {
      return (
        <span class="hljs-tag">&lt;<span class="hljs-name">li</span> <span class="hljs-attr">key</span>=<span class="hljs-string">{i}</span>&gt;</span>{ item }<span class="hljs-tag">&lt;/<span class="hljs-name">li</span>&gt;</span>
      )
    })}
  <span class="hljs-tag">&lt;/<span class="hljs-name">ul</span>&gt;</span></span>
&lt;/main&gt;
</code></pre>
<p>And for the styles, you can copy and paste everything from our Part 1 <code>main.css</code> file into the <code>&lt;style&gt;</code> tags at the bottom of our index page. That will leave us with:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/05/basic-content-with-nextjs.jpg" alt="Image" width="600" height="400" loading="lazy">
<em>Basic content with Next.js</em></p>
<p>With that, we should be back to a similar point we finished at in Part 1 except we're not actively using any of the loading animations yet.</p>
<p><a target="_blank" href="https://github.com/colbyfayock/my-css-loading-animation-dynamic/commit/365e081522ec07b1754bf360a95b0bc373476c95">Follow along with the commit!</a></p>
<h3 id="heading-step-2-faking-loading-data-from-an-api">Step 2: Faking loading data from an API</h3>
<p>The example we're working with is pretty simple. You'd probably see this coming pre-generated statically, but this helps us create a realistic demo that we can test our loading animation with.</p>
<p>To fake our loading state, we're going to use React's <code>useState</code>, <code>useEffect</code>, and an old fashioned <code>setTimeout</code> to preload some "loading" content, and after the <code>setTimeout</code> finishes, update that content with our actual data. In the meantime, we'll know that we're in a loading state with a separate instance of <code>useState</code>.</p>
<p>First, we need to import our dependencies. At the top of our <code>pages/index.js</code> file, add:</p>
<pre><code class="lang-jsx"><span class="hljs-keyword">import</span> { useState, useEffect } <span class="hljs-keyword">from</span> <span class="hljs-string">'react'</span>;
</code></pre>
<p>Above our <code>content</code> object, let's add some state:</p>
<pre><code class="lang-jsx"><span class="hljs-keyword">const</span> [loadingState, updateLoadingState] = useState(<span class="hljs-literal">true</span>);
<span class="hljs-keyword">const</span> [contentState, updateContentState] = useState({})
</code></pre>
<p>And in our content, we can update the instances to use that state:</p>
<pre><code class="lang-jsx">&lt;h1&gt;{ contentState.header }&lt;/h1&gt;
<span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">p</span>&gt;</span>{ contentState.intro }<span class="hljs-tag">&lt;/<span class="hljs-name">p</span>&gt;</span></span>
<span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">ul</span>&gt;</span>
  { contentState.list.map((item, i) =&gt; {
    return (
      <span class="hljs-tag">&lt;<span class="hljs-name">li</span> <span class="hljs-attr">key</span>=<span class="hljs-string">{i}</span>&gt;</span>{ item }<span class="hljs-tag">&lt;/<span class="hljs-name">li</span>&gt;</span>
    )
  })}
<span class="hljs-tag">&lt;/<span class="hljs-name">ul</span>&gt;</span></span>
</code></pre>
<p>Once you save and load that, you'll first notice we get an error because our <code>list</code> property doesn't exist on our <code>contentState</code>, so we can first fix that:</p>
<pre><code class="lang-jsx">{ <span class="hljs-built_in">Array</span>.isArray(contentState.list) &amp;&amp; contentState.list.map(<span class="hljs-function">(<span class="hljs-params">item, i</span>) =&gt;</span> {
  <span class="hljs-keyword">return</span> (
    <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">li</span> <span class="hljs-attr">key</span>=<span class="hljs-string">{i}</span>&gt;</span>{ item }<span class="hljs-tag">&lt;/<span class="hljs-name">li</span>&gt;</span></span>
  )
})}
</code></pre>
<p>And after that's ready, let's add our <code>setTimeout</code> inside of a <code>useEffect</code> hook to simulate our data loading. Add this under our <code>content</code> object:</p>
<pre><code class="lang-jsx">useEffect(<span class="hljs-function">() =&gt;</span> {
  <span class="hljs-built_in">setTimeout</span>(<span class="hljs-function">() =&gt;</span> {
    updateContentState(content);
    updateLoadingState(<span class="hljs-literal">false</span>)
  }, <span class="hljs-number">2000</span>);
}, [])
</code></pre>
<p>Once you save and open up your browser, you'll notice that for 2 seconds you don't have any content and then it loads in, basically simulating loading that data asynchronously.</p>
<p><a target="_blank" href="https://github.com/colbyfayock/my-css-loading-animation-dynamic/commit/f0cada8d696ffe3e983f5efc03dc9d75a2245fe1">Follow along with the commit!</a></p>
<h3 id="heading-step-3-adding-our-loading-animation">Step 3: Adding our loading animation</h3>
<p>Now we can finally add our loading animation. So to do this, we're going to use our loading state we set up using <code>useState</code> and if the content is loading, add our <code>.loading</code>  class to our elements.</p>
<p>Before we do that, instead of individually adding this class to each item in the DOM, it might make more sense to do so using CSS and adding the class to the parent, so let's do that first.</p>
<p>First, update the <code>.loading</code> class to target our elements:</p>
<pre><code class="lang-css"><span class="hljs-selector-class">.loading</span> <span class="hljs-selector-tag">h1</span>,
<span class="hljs-selector-class">.loading</span> <span class="hljs-selector-tag">p</span>,
<span class="hljs-selector-class">.loading</span> <span class="hljs-selector-tag">li</span> {
  <span class="hljs-attribute">color</span>: transparent;
  <span class="hljs-attribute">background</span>: <span class="hljs-built_in">linear-gradient</span>(<span class="hljs-number">100deg</span>, #eceff1 <span class="hljs-number">30%</span>, #f6f7f8 <span class="hljs-number">50%</span>, #eceff1 <span class="hljs-number">70%</span>);
  <span class="hljs-attribute">background-size</span>: <span class="hljs-number">400%</span>;
  <span class="hljs-attribute">animation</span>: loading <span class="hljs-number">1.2s</span> ease-in-out infinite;
}
</code></pre>
<p>Then we can dynamically add our class to our <code>&lt;main&gt;</code> tag:</p>
<pre><code class="lang-jsx">&lt;main className={loadingState ? <span class="hljs-string">'loading'</span> : <span class="hljs-string">''</span>}&gt;
</code></pre>
<p><em>Note: if you use <a target="_blank" href="https://sass-lang.com/">Sass</a>,  you can manage your loading styles by <a target="_blank" href="https://sass-lang.com/documentation/at-rules/extend">extending</a> the <code>.loading</code> class in the instances you want to use it or create a <a target="_blank" href="https://sass-lang.com/documentation/style-rules/placeholder-selectors">placeholder</a> and extend that!</em></p>
<p>And if you refresh the page, you'll notice it's still just a blank page for 2 seconds!</p>
<p>The issue, is when we load our content, nothing exists inside of our tags that can that would allow the line-height of the elements to give it a height.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/05/html-css-collapsed-content.jpg" alt="Image" width="600" height="400" loading="lazy">
<em>No height when there's no content</em></p>
<p>But we can fix that! Because our <code>.loading</code> class sets our text to transparent, we can simply add the word <code>Loading</code> for each piece of content:</p>
<pre><code class="lang-jsx"><span class="hljs-keyword">const</span> [contentState, updateContentState] = useState({
  <span class="hljs-attr">header</span>: <span class="hljs-string">'Loading'</span>,
  <span class="hljs-attr">intro</span>: <span class="hljs-string">'Loading'</span>,
  <span class="hljs-attr">list</span>: [
    <span class="hljs-string">'Loading'</span>,
    <span class="hljs-string">'Loading'</span>,
    <span class="hljs-string">'Loading'</span>
  ]
})
</code></pre>
<p><em>Note: We can't use an empty space here because that alone won't provide us with a height when rendered in the DOM.</em></p>
<p>And once you save and reload the page, our first 2 seconds will have a loading state that reflects our content!</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/05/html-css-loading-animation-1.gif" alt="Image" width="600" height="400" loading="lazy">
<em>HTML &amp; CSS loading animation</em></p>
<p><a target="_blank" href="https://github.com/colbyfayock/my-css-loading-animation-dynamic/commit/5b7b1c40d1eebf97f65c966bb771a5f6787073ea">Follow along with the commit!</a></p>
<h2 id="heading-some-additional-thoughts">Some additional thoughts</h2>
<p>This technique can be used pretty broadly. Being a CSS class makes it nice and easy to add where every you want.</p>
<p>If you're not a fan of setting the <code>Loading</code> text for the loading state, another option is to set a fixed height. The only issue with that is it requires more maintenance for tweaking the CSS to match what the content loading in will look like.</p>
<p>Additionally, this won't be perfect. More often than not, you won't know exactly how much copy you have on a page. The goal is to simulate and hint that there will be content and that it's currently loading.</p>
<h2 id="heading-whats-your-favorite-loading-animation">What's your favorite loading animation?</h2>
<p>Let me know on <a target="_blank" href="https://twitter.com/colbyfayock">Twitter</a>!</p>
<h2 id="heading-join-in-on-the-conversation">Join in on the conversation!</h2>
<div class="embed-wrapper">
        <blockquote class="twitter-tweet">
          <a href="https://twitter.com/freeCodeCamp/status/1264557769547493376"></a>
        </blockquote>
        <script defer="" src="https://platform.twitter.com/widgets.js" charset="utf-8"></script></div>
<div id="colbyfayock-author-card">
  <p>
    <a href="https://twitter.com/colbyfayock">
      <img src="https://res.cloudinary.com/fay/image/upload/w_2000,h_400,c_fill,q_auto,f_auto/w_1020,c_fit,co_rgb:007079,g_north_west,x_635,y_70,l_text:Source%20Sans%20Pro_64_line_spacing_-10_bold:Colby%20Fayock/w_1020,c_fit,co_rgb:383f43,g_west,x_635,y_6,l_text:Source%20Sans%20Pro_44_line_spacing_0_normal:Follow%20me%20for%20more%20JavaScript%252c%20UX%252c%20and%20other%20interesting%20things!/w_1020,c_fit,co_rgb:007079,g_south_west,x_635,y_70,l_text:Source%20Sans%20Pro_40_line_spacing_-10_semibold:colbyfayock.com/w_300,c_fit,co_rgb:7c848a,g_north_west,x_1725,y_68,l_text:Source%20Sans%20Pro_40_line_spacing_-10_normal:colbyfayock/w_300,c_fit,co_rgb:7c848a,g_north_west,x_1725,y_145,l_text:Source%20Sans%20Pro_40_line_spacing_-10_normal:colbyfayock/w_300,c_fit,co_rgb:7c848a,g_north_west,x_1725,y_222,l_text:Source%20Sans%20Pro_40_line_spacing_-10_normal:colbyfayock/w_300,c_fit,co_rgb:7c848a,g_north_west,x_1725,y_295,l_text:Source%20Sans%20Pro_40_line_spacing_-10_normal:colbyfayock/v1/social-footer-card" alt="Follow me for more Javascript, UX, and other interesting things!" width="600" height="400" loading="lazy">
    </a>
  </p>
  <ul>
    <li>
      <a href="https://twitter.com/colbyfayock">? Follow Me On Twitter</a>
    </li>
    <li>
      <a href="https://youtube.com/colbyfayock">?️ Subscribe To My Youtube</a>
    </li>
    <li>
      <a href="https://www.colbyfayock.com/newsletter/">✉️ Sign Up For My Newsletter</a>
    </li>
  </ul>
</div>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Anyone Can Map! Inspiration and an introduction to the world of mapping ]]>
                </title>
                <description>
                    <![CDATA[ Chef Gusteau was a visionary who created food experiences for the world to enjoy. How can we take his lessons and apply them to the world of mapping? Taking inspiration from a culinary great If you’ve seen the Pixar movie Ratatouille, you should know... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/anyone-can-map-inspiration-and-an-introduction-to-the-world-of-mapping/</link>
                <guid isPermaLink="false">66b8e31e47c23b7ae1ad0bd3</guid>
                
                    <category>
                        <![CDATA[ Data Science ]]>
                    </category>
                
                    <category>
                        <![CDATA[ google maps ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Heat map ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Inspiration ]]>
                    </category>
                
                    <category>
                        <![CDATA[ JavaScript ]]>
                    </category>
                
                    <category>
                        <![CDATA[ leaflet ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Mapping ]]>
                    </category>
                
                    <category>
                        <![CDATA[ maps ]]>
                    </category>
                
                    <category>
                        <![CDATA[ General Programming ]]>
                    </category>
                
                    <category>
                        <![CDATA[ react-leaflet ]]>
                    </category>
                
                    <category>
                        <![CDATA[ tech  ]]>
                    </category>
                
                    <category>
                        <![CDATA[ technology ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Colby Fayock ]]>
                </dc:creator>
                <pubDate>Thu, 05 Mar 2020 14:51:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2020/03/anyone-can-map.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>Chef Gusteau was a visionary who created food experiences for the world to enjoy. How can we take his lessons and apply them to the world of mapping?</p>
<h2 id="heading-taking-inspiration-from-a-culinary-great">Taking inspiration from a culinary great</h2>
<p>If you’ve seen the <a target="_blank" href="https://www.pixar.com/">Pixar</a> movie <a target="_blank" href="https://movies.disney.com/ratatouille">Ratatouille</a>, you should know who <a target="_blank" href="https://ratatouille.fandom.com/wiki/Auguste_Gusteau">Chef Gusteau</a> is. He helped our “little chef” <a target="_blank" href="https://pixar.fandom.com/wiki/Remy">Remy</a> the rat navigate the culinary world and become the top chef of Paris.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/03/ratatouille-remy-chef-gusteau-paris.jpg" alt="Image" width="600" height="400" loading="lazy">
<em>Remy from Ratatouille overlooking Gusteau's in Paris</em></p>
<p>Throughout the movie, we get a lot of great quotes on their journey. But the one we're interested in here is Gusteau’s motto, and the title of his book, “Anyone can cook!” So how can we apply this and the lessons to our own mapping journey?</p>
<p>I’ll admit, part of the fun here was translating some of the lessons learned from one of my favorite movies, but there’s a lot to take in here. I'm going to walk through some examples and types of maps that should get you motivated to get started with your own mapping application. So let’s dive in!</p>
<div class="embed-wrapper">
        <iframe width="560" height="315" src="https://www.youtube.com/embed/pQ_5PGv0YTA" style="aspect-ratio: 16 / 9; width: 100%; height: auto;" title="YouTube video player" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen="" loading="lazy"></iframe></div>
<h2 id="heading-get-inspired-by-learning-about-maps-and-the-impact-they-have-on-the-world">Get inspired by learning about maps and the impact they have on the world</h2>
<blockquote>
<p>Food always comes to those who love to cook. - Chef Gusteau</p>
</blockquote>
<p><a target="_blank" href="https://www.youtube.com/watch?v=a-1rcaQ-aSk&amp;list=PLeGxIOPLk9EKBu_B0WpBLYkkHQIGki2EZ&amp;index=3">Through my work</a>, I’ve found it easy to fall in love with working on maps. Every day, scientists use maps to visualize data that can assist them in making more effective decisions. This directly translates to benefitting people all around the world and saving lives.</p>
<p>With this inspiration, you'll be taken on a journey to learn more about the different types of maps in this world and how they’re being used. You even might stumble upon some interesting data that explores your own neighborhood!</p>
<h3 id="heading-active-fires-around-the-world">Active fires around the world</h3>
<p>Take for instance <a target="_blank" href="https://firms.modaps.eosdis.nasa.gov/map/">NASA’s FIRMS service</a>, which provides a realtime look at active fire data around the world.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/03/nasa-firms-active-fires-world.jpg" alt="Image" width="600" height="400" loading="lazy">
<em>Active fires around the world via <a target="_blank" href="https://earthdata.nasa.gov/earth-observation-data/near-real-time/firms">NASA FIRMS</a></em></p>
<p>Fires are a real-world example of disasters that we can learn from. This tool is used to help manage resources for stopping and preventing those fires by allowing scientists and those that are curious to analyze burn areas and model the data itself.</p>
<h3 id="heading-global-cases-of-covid-19">Global cases of COVID-19</h3>
<p>And something very current, cases of <a target="_blank" href="https://www.who.int/health-topics/coronavirus">COVID-19 (Coronavrius)</a> around the world by  <a target="_blank" href="https://systems.jhu.edu/">Johns Hopkins Center for Systems Science and Engineering</a>.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/03/john-hopkins-coronavirus-map.jpg" alt="Image" width="600" height="400" loading="lazy">
<em><a target="_blank" href="https://www.arcgis.com/apps/opsdashboard/index.html#/bda7594740fd40299423467b48e9ecf6">Global cases of Coronavirus (COVID-19) from John Hopkins CSSE</a></em></p>
<p>This map tracks the spread of the virus in real time, allowing scientists to model it's coverage and produce study results to share with the global community.</p>
<p>Mapping tools like this provide an effective means of giving as much information as possible in a way that’s easy to understand to the people who can make a difference with the information.</p>
<h3 id="heading-increased-life-expectancy">Increased life expectancy</h3>
<p>On a more positive note, we can get a detailed look over time of <a target="_blank" href="https://ourworldindata.org/life-expectancy">how life expectancy is improving around the world</a>.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/03/life-expectancy-map.jpg" alt="Image" width="600" height="400" loading="lazy">
<em><a target="_blank" href="https://ourworldindata.org/life-expectancy">Life expectancy in 2019 from Our World in Data</a></em></p>
<p>While it’s increased more in some areas than others, the global improvements are clear, and we get to see this rise in some countries from hundreds of years ago!</p>
<h2 id="heading-explore-the-beauty-of-maps-and-applying-data-to-them">Explore the beauty of maps and applying data to them</h2>
<blockquote>
<p>How can I describe it? Good food is like music you can taste, color you can smell. There is excellence all around you. You need only to be aware to stop and savor it. - Chef Gusteau</p>
</blockquote>
<p>There’s also a creative side and beauty to great maps. Thick datasets applied to a map (or any medium) can often become literal works of art.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/03/pentagram-the-room-of-change.jpg" alt="Image" width="600" height="400" loading="lazy">
<em><a target="_blank" href="https://www.pentagram.com/work/the-room-of-change?rel=discipline&amp;rel-id=16">The Room of Change from Pentagram</a></em></p>
<p>Whether showcased in an exhibit or <a target="_blank" href="https://www.etsy.com/search?q=map">one of the many options to purchase on Etsy</a>, presenting meaningful data in a beautiful way can be impactful not just from an informational perspective, but also a cultural one.</p>
<h3 id="heading-sometimes-the-interactions-can-be-fun">Sometimes the interactions can be fun</h3>
<p>Maps can also provide some interactivity that makes them fun to explore while you learn more about the dataset, like this globe that maps out global commodities from DailyFX.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/03/dailyfx-global-commodities.jpg" alt="Image" width="600" height="400" loading="lazy">
<em><a target="_blank" href="https://www.dailyfx.com/research/global-commodities/globe">Global Commodities interactive map from DailyFX</a></em></p>
<p>Though the data can frequently be thick and boring on its own, that doesn’t mean we can't find more interesting ways to present the data to interact with.</p>
<h3 id="heading-and-sometimes-maps-can-provide-a-listening-experience">And sometimes maps can provide a listening experience</h3>
<p>This map from at <a target="_blank" href="http://radiooooo.com/">radiooooo.com</a> allows you to travel around the world and through time.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/03/radiooooo-music-radio-map.jpg" alt="Image" width="600" height="400" loading="lazy">
<em><a target="_blank" href="http://radiooooo.com/">Music Radio from radiooooo.com</a></em></p>
<p>Their use of a map makes it easy to identify the part of the world the person wants to explore.</p>
<h3 id="heading-stop-and-appreciate-the-maps-around-you">Stop and appreciate the maps around you</h3>
<p>Whether you notice it or not when you’re browsing the web every day, you most likely run into visualizations of datasets that create powerful ways to present that data in a way that’s more easily understood.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/03/reddit-truck-driver-map-dataisbeautiful.jpg" alt="Image" width="600" height="400" loading="lazy">
_<a target="_blank" href="https://www.reddit.com/r/dataisbeautiful/comments/csl706/i_recorded_my_travels_as_a_professional_truck/">u/dancingchopstix's recordings of their truck driving travels</a>_</p>
<p>Luckily, we don’t have to work hard to find this inspiration, as we can visit aggregations of beautiful maps and general datasets like that of <a target="_blank" href="https://www.reddit.com/r/dataisbeautiful/">/r/dataisbeautiful</a>.</p>
<h2 id="heading-experiment-be-creative-explore-other-ways-to-visualize-data">Experiment, be creative, explore other ways to visualize data</h2>
<blockquote>
<p>You must be imaginative, strong-hearted. You must try things that may not work, and you must not let anyone define your limits because of where you come from. Your only limit is your soul. - Chef Gusteau</p>
</blockquote>
<p>Maps come in all shapes and sizes. While shaded geographic areas typically work well with election results, it might not work as well for showcasing your summer road trip.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/03/50-state-project-road-strip.jpg" alt="Image" width="600" height="400" loading="lazy">
<em><a target="_blank" href="https://www.the50statesproject.com/">50 State Project road trip map</a></em></p>
<h3 id="heading-exploring-common-map-types">Exploring common map types</h3>
<p>You’ve probably experienced more map types than you realize. Given it’s a powerful way to present data, maps are used frequently across the web.</p>
<p>A <a target="_blank" href="https://en.wikipedia.org/wiki/Choropleth_map"><strong>choropleth map</strong></a> is commonly seen for election results and regional datasets where a particular geographic location represents a point of reference.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/03/cnn-democratic-primary-2020.jpg" alt="Image" width="600" height="400" loading="lazy">
<em><a target="_blank" href="https://www.cnn.com/election/2020/primaries-and-caucuses">CNN Map of Democratic primary after Super Tuesday</a></em></p>
<p><strong><a target="_blank" href="https://en.wikipedia.org/wiki/Heat_map">Heat maps</a></strong> on the other hand allow you to reflect on the intensity of a data point over a given area. This is powerful when you want to represent both the area covered of a dataset but also range the data represents at the same time, such as population density.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/03/arcgis-population-heatmap-2015.jpg" alt="Image" width="600" height="400" loading="lazy">
<em><a target="_blank" href="https://www.arcgis.com/home/webmap/viewer.html?useExisting=1&amp;layers=90978c3a3a664c20b8da8fc21de6071b">ArcGIS GPW 2015 Population Density heat map from</a></em></p>
<h3 id="heading-learn-from-others-but-dont-be-afraid-to-create-a-new-path">Learn from others, but don’t be afraid to create a new path</h3>
<p>Explore and play around with different techniques to visualize data on a map. There’s frequently not one way to do it, meaning you can be creative and experiment with different ways of presenting your map.</p>
<p>But that also means you don’t need to be stuck working within the constraints of the common map types. Use the tools available or create new ones and break new ground. The most important thing is presenting the data in a way that will provide the most impact to those consuming it.</p>
<h2 id="heading-dont-give-up-learn-from-your-experiences">Don’t give up, learn from your experiences</h2>
<blockquote>
<p>What I say is true — anyone can cook... but only the fearless can be great. - Chef Gusteau</p>
</blockquote>
<p>While there may not always be a right way, there <a target="_blank" href="https://twitter.com/TerribleMaps">sometimes are wrong ways</a>.  But don’t let failure stop you!</p>
<div class="embed-wrapper">
        <blockquote class="twitter-tweet">
          <a href="https://twitter.com/TerribleMaps/status/1119336763762331649"></a>
        </blockquote>
        <script defer="" src="https://platform.twitter.com/widgets.js" charset="utf-8"></script></div>
<p>Take these failures as a learning experience in your journey of creating interesting and effective maps. By being bold with your experimentation, you’ll find yourself discovering techniques or creating new ways that can ultimately help people better understand map data.</p>
<h2 id="heading-you-dont-have-to-be-a-cartographer-to-build-great-maps">You don’t have to be a cartographer to build great maps</h2>
<blockquote>
<p>Not everyone can become a great artist; but a great artist can come from anywhere. - Anton Ego</p>
</blockquote>
<p>Towards the end of Remy’s journey, the food critic Anton Ego who was once critical of Gusteau's claim that “anyone can cook” came to a realization of what our chef truly meant.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/03/anton-ego-realization.jpg" alt="Image" width="600" height="400" loading="lazy">
<em>Ratatouille critic Anton Ego's revelation</em></p>
<p>While it’s not reasonable to assume that every single one of us will be a great mapper, everyone has the opportunity to try and explore the medium.</p>
<p>And it certainly helps that we have plenty of tooling to help us get there. Whether building your own with <a target="_blank" href="https://leafletjs.com/">Leaflet</a> or <a target="_blank" href="https://www.google.com/maps/about/mymaps/">identifying a few locations on a Google Map</a>, the resources and community around mapping are endless.</p>
<h2 id="heading-jump-in-with-some-resources-to-get-started">Jump in with some resources to get started</h2>
<p>For the developers out there who are inspired to get started, here are a few resources to start off with mapping:</p>
<ul>
<li><a target="_blank" href="https://www.freecodecamp.org/news/easily-spin-up-a-mapping-app-in-react-with-leaflet/">How to build a mapping app in React the easy way with Leaflet</a></li>
<li><a target="_blank" href="https://www.freecodecamp.org/news/visualizing-air-pollution-folium-maps/">How to Visualize Air Pollution using Folium Maps - An In Depth Tutorial</a></li>
<li><a target="_blank" href="https://www.freecodecamp.org/news/how-to-integrate-maps-in-react-native-using-react-native-maps-5745490fe055/">How to integrate maps in React Native using react-native-maps</a></li>
<li><a target="_blank" href="https://www.colbyfayock.com/2020/03/how-to-create-a-coronavirus-covid-19-dashboard-map-app-with-gatsby-and-leaflet">How to create a Coronavirus (COVID-19) Dashboard &amp; Map App in React with Gatsby and Leaflet</a></li>
<li><a target="_blank" href="https://www.colbyfayock.com/2020/04/how-to-set-up-a-custom-mapbox-basemap-style-with-react-leaflet-and-leaflet-gatsby-starter/">How to set up a custom Mapbox basemap style with React Leaflet and Leaflet Gatsby Starter</a></li>
<li><a target="_blank" href="https://www.colbyfayock.com/2019/12/create-your-own-santa-tracker-with-gatsby-and-react-leaflet/">How to Create your own Santa Tracker with Gatsby and React Leaflet</a></li>
<li><a target="_blank" href="https://www.youtube.com/watch?v=a-1rcaQ-aSk&amp;list=PLeGxIOPLk9EKBu_B0WpBLYkkHQIGki2EZ&amp;index=3">Building Maps with Impact on React and the JAMstack</a> (Video)</li>
<li><a target="_blank" href="https://github.com/colbyfayock/gatsby-starter-leaflet">Gatsby Starter Leaflet</a></li>
<li><a target="_blank" href="https://leafletjs.com/">Leaflet</a></li>
<li><a target="_blank" href="https://openlayers.org/">OpenLayers</a></li>
<li><a target="_blank" href="https://www.google.com/maps/about/mymaps/">My Maps by Google</a></li>
</ul>
<h2 id="heading-whats-your-favorite-map-experience-or-tool">What’s your favorite map experience or tool?</h2>
<p><a target="_blank" href="https://twitter.com/colbyfayock">Share with me on Twitter!</a></p>
<div id="colbyfayock-author-card">
  <p>
    <a href="https://twitter.com/colbyfayock">
      <img src="https://res.cloudinary.com/fay/image/upload/w_2000,h_400,c_fill,q_auto,f_auto/w_1020,c_fit,co_rgb:007079,g_north_west,x_635,y_70,l_text:Source%20Sans%20Pro_64_line_spacing_-10_bold:Colby%20Fayock/w_1020,c_fit,co_rgb:383f43,g_west,x_635,y_6,l_text:Source%20Sans%20Pro_44_line_spacing_0_normal:Follow%20me%20for%20more%20JavaScript%252c%20UX%252c%20and%20other%20interesting%20things!/w_1020,c_fit,co_rgb:007079,g_south_west,x_635,y_70,l_text:Source%20Sans%20Pro_40_line_spacing_-10_semibold:colbyfayock.com/w_300,c_fit,co_rgb:7c848a,g_north_west,x_1725,y_68,l_text:Source%20Sans%20Pro_40_line_spacing_-10_normal:colbyfayock/w_300,c_fit,co_rgb:7c848a,g_north_west,x_1725,y_145,l_text:Source%20Sans%20Pro_40_line_spacing_-10_normal:colbyfayock/w_300,c_fit,co_rgb:7c848a,g_north_west,x_1725,y_222,l_text:Source%20Sans%20Pro_40_line_spacing_-10_normal:colbyfayock/w_300,c_fit,co_rgb:7c848a,g_north_west,x_1725,y_295,l_text:Source%20Sans%20Pro_40_line_spacing_-10_normal:colbyfayock/v1/social-footer-card" alt="Follow me for more Javascript, UX, and other interesting things!" width="600" height="400" loading="lazy">
    </a>
  </p>
  <ul>
    <li>
      <a href="https://twitter.com/colbyfayock">? Follow Me On Twitter</a>
    </li>
    <li>
      <a href="https://youtube.com/colbyfayock">?️ Subscribe To My Youtube</a>
    </li>
    <li>
      <a href="https://www.colbyfayock.com/newsletter/">✉️ Sign Up For My Newsletter</a>
    </li>
  </ul>
</div>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ The Secret to Unlimited Ideas for Your Coding Projects ]]>
                </title>
                <description>
                    <![CDATA[ By Yazeed Bzadough As a developer, practice is vital to your continued professional success. The web moves fast. Just a year or two of contentment could leave you eating JavaScript's dust. Yet many developers, regardless of experience, frantically as... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/the-secret-to-unlimited-project-ideas/</link>
                <guid isPermaLink="false">66d461bb38f2dc3808b79126</guid>
                
                    <category>
                        <![CDATA[ Inspiration ]]>
                    </category>
                
                    <category>
                        <![CDATA[ JavaScript ]]>
                    </category>
                
                    <category>
                        <![CDATA[ motivation ]]>
                    </category>
                
                    <category>
                        <![CDATA[ General Programming ]]>
                    </category>
                
                    <category>
                        <![CDATA[ technology ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Wed, 28 Aug 2019 13:00:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2019/08/cover-photo.jpeg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Yazeed Bzadough</p>
<p>As a developer, practice is vital to your continued professional success.</p>
<p>The web moves fast. Just a year or two of contentment could leave you eating JavaScript's dust.</p>
<p>Yet many developers, regardless of experience, frantically ask: "Which project should I do?"</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2019/08/which-project-should-i-do.jpeg" alt="which-project-should-i-do" width="600" height="400" loading="lazy"></p>
<p>...only to receive these cryptic answers.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2019/08/john-cena-advice.jpg" alt="john-cena-advice" width="600" height="400" loading="lazy"></p>
<p>In hopes of preventing that, I'd like to share some advice that's been very beneficial to me.</p>
<h2 id="heading-copyuntil-you-can-create">Copy–until you can create</h2>
<p>Consider the following quote...</p>
<blockquote>
<p>Good artists copy; great artists steal. - Pablo Picasso</p>
</blockquote>
<p>This doesn't mean rob your parents.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2019/08/dont-steal-money.jpeg" alt="dont-steal-money" width="600" height="400" loading="lazy"></p>
<p>It means, <em>while you're practicing</em>, don't bother with original ideas. Just copy something and focus on perfecting your technique!</p>
<p>You can rewrite the source code line-by-line, do it totally independently, or somewhere in-between.</p>
<h2 id="heading-everyones-doing-it">Everyone's Doing It</h2>
<p>Aspiring artists and authors copy all the time. Whether it's redrawing or rewriting, mimicking a famous piece is a mind-opening exercise. You get to immerse yourself in the craft and not worry about formulating a good idea. All the focus goes toward improving your skills.</p>
<p>This applies to programming too! Myself and many other developers copy open source repos just to learn how they work. You discover techniques you might've never encountered before.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2019/08/emmanuel-ohans-medium-clap.gif" alt="emmanuel-ohans-medium-clap" width="600" height="400" loading="lazy"></p>
<p>In his inspirational Medium Clap article, Emmanuel Ohans took this principle to the extreme. He figured out how to design his own project after copying countless Codrops repos.</p>
<p>It's not about plagiarizing original works–it's about improving your technique and drawing inspiration from others.</p>
<h2 id="heading-how-you-can-do-it">How You Can Do It</h2>
<p>Find a project you'd like to copy, then pick one option...</p>
<ol>
<li>Copy its source code line-by-line</li>
<li>Look at source code only when you're stuck</li>
<li>Recreate it 100% by yourself</li>
<li>Just do something!</li>
</ol>
<p>All the choices are valid and beneficial. As you complete the project, research any syntax/patterns you find confusing.</p>
<h2 id="heading-original-coding-last">Original = Coding last</h2>
<p>If you only practice through original ideas, this will be your workflow.</p>
<ol>
<li>Thinking of something</li>
<li>Research</li>
<li>Planning</li>
<li>Marketing</li>
<li>Design</li>
<li>Development (<strong>The very last step</strong>)</li>
</ol>
<p>Looks pretty wasteful to me, unless you're running a startup company.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2019/08/batman-advises-robin.jpeg" alt="batman-advises-robin" width="600" height="400" loading="lazy"></p>
<h2 id="heading-copying-coding-first">Copying = Coding first</h2>
<p>For the ones who <em>just want to code</em>, consider this process instead.</p>
<ol>
<li>Code an existing app that interests you</li>
</ol>
<p>That's it! The process is now aligned with our goals. Instead of developing at the very end, we're now developing all the way through.</p>
<p>The idea, research, planning, and design are all taken care of. We can focus on the good stuff, unlike poor Harold here.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2019/08/harold-got-no-ideas.jpeg" alt="harold-got-no-ideas" width="600" height="400" loading="lazy"></p>
<p>He'll never improve because he's stuck in the idea phase. Don't make his mistake! Spend your resources on <em>practicing</em> instead of idea-making.</p>
<p>If that's your goal, at least. ?</p>
<h2 id="heading-want-free-coaching">Want Free Coaching?</h2>
<p>If you'd like to schedule a <strong>free</strong> 15-30 minute call to discuss Front-End development questions regarding code, interviews, career, or anything else <a target="_blank" href="https://twitter.com/yazeedBee">follow me on Twitter and DM me</a>.</p>
<p>After that if you enjoy our first meeting, we can discuss an ongoing coaching relationship that'll help you reach your Front-End development goals!</p>
<h2 id="heading-thanks-for-reading">Thanks for reading</h2>
<p>For more content like this, check out <a href="https://yazeedb.com">https://yazeedb.com!</a></p>
<p>Until next time!</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Pushing to Github - made simple enough for Poets ]]>
                </title>
                <description>
                    <![CDATA[ By Usheninte Dangana When I started actively pushing content to Github, I did not push Open Source contributions, Components or anything of the like - I pushed poetry. I did this, because it is what I love the most, after coding. I remain ever gratef... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/pushing-to-github-made-simple-enough-for-poets/</link>
                <guid isPermaLink="false">66d4608f230dff0166905851</guid>
                
                    <category>
                        <![CDATA[ Git ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Inspiration ]]>
                    </category>
                
                    <category>
                        <![CDATA[ learning to code ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Mon, 08 Jul 2019 16:00:00 +0000</pubDate>
                <media:content url="https://cdn-media-2.freecodecamp.org/w1280/5f9ca19c740569d1a4ca4f9d.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Usheninte Dangana</p>
<p>When I started actively pushing content to Github, I did not push Open Source contributions, Components or anything of the like - I pushed poetry. I did this, because it is what I love the most, after coding. I remain ever grateful that I took the initiative to make my first <code>git commit</code>.</p>
<p>Now, I want to breakdown the process for new coders (and poets - hopefully ), so that they can become comfortable with working with Github too. I will be breaking down several ways to push content to Github. For the purpose of this article, I will assume that readers are familiar with Terminal usage (GitBash or otherwise).</p>
<hr>
<h3 id="heading-pushing-to-a-new-repository-with-a-readme-file">Pushing to a new repository with a README file</h3>
<p>There are just a few essential steps to this:</p>
<ul>
<li><p>Click the green Clone or download button on the repository page.<br><img src="http://res.cloudinary.com/poetrique/image/upload/v1535965331/allbuy-i-ng/gallery/git-clone.png" alt="Git Clone" width="600" height="400" loading="lazy"></p>
</li>
<li><p>Use the Clone with HTTPS option, and copy the link provided.
<img src="http://res.cloudinary.com/poetrique/image/upload/v1535965671/allbuy-i-ng/gallery/git-clone2.png" alt="Git Clone 2" width="600" height="400" loading="lazy"></p>
</li>
<li><p>Run <code>git clone https://github.com/UserProfile/repository.git</code> in the terminal. Here, <strong><em>UserProfile</em></strong> and <strong><em>repository</em></strong> will be replaced by the values provided in the copied link.</p>
</li>
<li>Run <code>git init</code> in the terminal. This will initialize the folder/repository that you have on your local computer system.</li>
<li>Run <code>git add .</code> in the terminal. This will track any changes made to the folder on your system, since the last commit. If this is the first time you are committing the contents of the folder, it will add everything.</li>
<li>Run <code>git commit -m"insert Message here"</code>. This will prepare the added/tracked changes to the folder on your system for pushing to Github. Here, <strong><em>insert Message here</em></strong> can be replaced with any relevant commit message of your choice.</li>
<li>Run <code>git push origin master</code>. Note that the last word in the command <strong><em>master</em></strong>, is not a fixed entry when running <code>git push</code>. It can be replaced with any relevant “branch_name”.</li>
</ul>
<hr>
<h3 id="heading-how-to-push-existing-code-to-a-new-github-repository">How to push Existing Code to a new Github repository</h3>
<blockquote>
<p><em>"Coding is a beautiful thing. Anyone can learn to code!"</em> </p>
</blockquote>
<p>What you need to do:</p>
<ul>
<li><p>Copy the <code>HTTPS</code> link provided.<br><img src="http://res.cloudinary.com/poetrique/image/upload/c_scale,w_700/v1536217259/allbuy-i-ng/gallery/github-example.png" alt="Example Empty Repo" width="600" height="400" loading="lazy"></p>
</li>
<li><p>Run <code>git init</code> in the terminal. This will initialize the folder/repository that you have on your local computer system.</p>
</li>
<li>Run <code>git add .</code> in the terminal. This will track any changes made to the folder on your system, since the last commit. As this is the first time you are committing the contents of the folder, it will add everything.</li>
<li>Run <code>git commit -m"insert Message here"</code>. This will prepare the added/tracked changes to the folder on your system for pushing to Github. Here, <strong><em>insert Message here</em></strong> can be replaced with any relevant commit message of your choice.</li>
<li>Run <code>git remote add origin https://github.com/Usheninte/example.git</code> in the terminal. Here, <strong><em>Usheninte</em></strong> and <strong><em>example</em></strong> will be replaced by the values provided in the copied link. This will push the existing folder on you local computer system, to the <strong>newly created</strong> Github repository.</li>
<li>Run <code>git remote -v</code>. This does some <strong><em>git pull</em></strong> and <strong><em>git push</em></strong> magic, to ensure that the contents of your new Github repository, and the folder on you local system are the same.</li>
<li>Run <code>git push origin master</code>. Note that the last word in the command <strong><em>master</em></strong>, is not a fixed entry when running <code>git push</code>. It can be replaced with any relevant “branch_name”.</li>
</ul>
<hr>
<p>So, that's it! I honestly believe anyone can learn to code. I have spent the past year, tutoring undergraduate students in Nigeria, on Software Development. Soon, I will be starting off my journey as an <a target="_blank" href="https://meltwater.org/training-program/">Entrepreneur-in-Training</a> at the <strong>Meltwater Entrepreneurial School of Technology.</strong></p>
<blockquote>
<p>Start coding today!</p>
</blockquote>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ JavaScript: The Fun Parts ]]>
                </title>
                <description>
                    <![CDATA[ By Mohammad Kermani It was the first years of the modern web. People were getting sick of waiting minutes for their connection to transfer the 8 bits of data telling them “Sorry, your password must contain an & or a %. Please try again.” They wanted ... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/javascript-the-fun-parts/</link>
                <guid isPermaLink="false">66d45f68f855545810e93485</guid>
                
                    <category>
                        <![CDATA[ fun ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Inspiration ]]>
                    </category>
                
                    <category>
                        <![CDATA[ JavaScript ]]>
                    </category>
                
                    <category>
                        <![CDATA[ TypeScript ]]>
                    </category>
                
                    <category>
                        <![CDATA[ web ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Fri, 31 May 2019 20:03:46 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2019/05/1_ANQKBQyZKcn6AtDfld4DcA-1-.jpeg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Mohammad Kermani</p>
<p>It was the first years of the modern web. People were getting sick of waiting minutes for their connection to transfer the 8 bits of data telling them <em>“Sorry, your password must contain an &amp; or a %. Please try again.”</em> They wanted more instantaneous feedback. Something that felt more like a desktop application.</p>
<p>Then finally on a rainy night in May of 1995, the great champion was born. His father, <a target="_blank" href="https://en.wikipedia.org/wiki/Brendan_Eich">Brendan Eich</a>, named him JavaScript after his successful grandfather Java.</p>
<p>(<a target="_blank" href="https://en.wikipedia.org/wiki/Karl_Benz">Karl Benz</a>,the founder of Mercedes-Benz patent, is considered the father of the first practical motorcar, and JavaScript is the main engine of all browsers. This is what Brendan would look like if we called him the Benz of the web ?)</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2019/05/1_nY30Ve4cYfWJJKod9zjckw-1-.jpeg" alt="Image" width="600" height="400" loading="lazy">
<em>Mr. Eich, father of the champion</em></p>
<hr>
<h3 id="heading-javascript-rise-of-an-empire">JavaScript: Rise of an empire</h3>
<p>When JavaScript came into the world, no one was thinking it would be very popular like it is today. JavaScript was a true time saver because of its browser-side validations. <strong>But what happened that caused JavaScript to grow so fast?</strong></p>
<p>Before I learn JavaScript, I used to write programs in the VB6 language. But VB6 wasn’t independent. It needed its own platform to run. One of the main reasons that JavaScript is so popular is that almost all devices have a browser. In short: JavaScript won’t limit you to a platform or type of device. You can run it on basically everything.</p>
<p>JavaScript’s progress and popularity is not a secret, but below you can see how JavaScript compares favorably with some other languages.</p>
<h4 id="heading-there-are-more-contents-on-the-web-for-javascript"><strong>There are more contents on the web for JavaScript:</strong></h4>
<p>Search engines show the number of found results below their search; here is the search result for Java and JavaScript.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2019/05/1_7fXn5GFBjwdOmtHBAj9rgQ-1-.jpeg" alt="Image" width="600" height="400" loading="lazy">
<em>Google result for searching Java and JavaScript</em></p>
<h4 id="heading-there-are-more-people-who-are-learning-it"><strong>There are more people who are learning it:</strong></h4>
<p>Stack Overflow tags and the number of questions that were asked for any tag, it can show us the number of people who are learning the tag which is a technology; Stack Overflow tags are also a good way to check how a technology is growing and its popularity.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2019/05/1_VzD7WJoX9rNf5d92guDQUg-1-.jpeg" alt="Image" width="600" height="400" loading="lazy">
<em>JavaScript is the most popular tag of Stack Overflow</em></p>
<h4 id="heading-the-most-popular-language-on-github"><strong>The most popular language on GitHub:</strong></h4>
<p>According to GitHub, JavaScript is the most popular language of GitHub followed by Java, Ruby and PHP.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2019/05/1_h2WkxOdYLcj4u3cmx3gxRA-1-.jpeg" alt="Image" width="600" height="400" loading="lazy"></p>
<h4 id="heading-javascript-is-already-the-most-popular-but-it-is-still-growing-fast"><strong>JavaScript is already the most popular but it is still growing fast</strong></h4>
<p>Stack Overflow runs a survey every year, and this year’s survey result is very interesting and there are good things to learn from it. The picture below from the survey result shows that JavaScript is growing faster than before.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2019/05/1_f-nN7w-eapXm_SVZWtIerw-1-.png" alt="Image" width="600" height="400" loading="lazy">
_Source: [Stack Overflow developer survey 2017](http://stackoverflow.com/insights/survey/2017/?utm_source=so-owned&amp;utm_medium=hero&amp;utm_campaign=dev-survey-2017&amp;utm<em>content=hero-questions#technology-languages-over-time" rel="noopener nofollow)</em></p>
<h3 id="heading-javascript-is-still-misunderstood">JavaScript is still misunderstood</h3>
<p>All programming languages have their own rules, syntaxes and concepts, and each of them were made to be perfect in something, and none of them are completely perfect, we should not expect a programming language to be jack of all trades and master of none. That’s the reason many projects should chose different programming languages to bring better performance for each parts of their software.</p>
<p>It’s fair to say that JavaScript does not have some concepts that other programming languages have but it might come back to language design goals. One of the currently recognized problems with JavaScript is a lack of static typings that might cause problems in larger applications. That is why elegant <a target="_blank" href="https://github.com/Microsoft/TypeScript">TypeScript</a> was created.</p>
<blockquote>
<p><em>JavaScript was never really engineered to write large applications, it was in fact invented in about 3 weeks, in the mid 90s as a quick response to Java…, For Brendan Eich build it in 3 weeks and for having only 3 weeks, he actually did a fantasticjob, JavaScript was perhaps intended for a 100 or maybe up to a 1,000 lines of code, and now with regularity people are building 100,000 line apps, if not million lines apps. —</em><a target="_blank" href="https://en.wikipedia.org/wiki/Anders_Hejlsberg"><em><strong>Anders Hejlsberg</strong></em></a><strong><em>, known for TypeScript, Turbo Pascal, Delphi, and lead architect of C#</em></strong> <em>(source:</em> <a target="_blank" href="http://video.ch9.ms/ch9/4ae3/062c336d-9cf0-498f-ae9a-582b87954ae3/B881_mid.mp4"><em>this video</em></a><em>, time: 01:20)</em></p>
</blockquote>
<p>Without a doubt, JavaScript owes its progress to browsers and their support of good things such as responsive web design, WebGL, <a target="_blank" href="https://webrtc.org/">WebRTC</a> and lots of more cool things that made JavaScript more useful. Nowadays, developers are using JavaScript for game development, data visualization, mobile applications, back-end development and other fun things as well.</p>
<hr>
<h3 id="heading-motivated-to-learn-javascript-or-being-a-better-javascript-developer-lets-get-started">Motivated to learn JavaScript or being a better JavaScript developer? Let’s get started.</h3>
<p>Let’s say you already know some JavaScript or you’re a beginner. Don’t waste time and jump into your preferred IDE and start writing the codes you want.</p>
<p>The fastest way to learn is <strong>learn while doing</strong>, but there is a problem with this method. There are some tricks you don’t know or you never heard of them but you’re writing your codes without knowing them and it’s hard to learn those rules or tricks without reading them somewhere. You already know you can define a variable by using the <strong>var</strong> keyword, but maybe you did not know that if you don’t use the <strong>var</strong> keyword, the variable will be global regardless of its defined place.</p>
<p>You will eventually learn what you need to know but that is doing it the hard way. Indeed, one of the best places you can <strong>learn while doing</strong> is<a target="_blank" href="https://www.freecodecamp.com/">freeCodeCamp</a>, You can work through freeCodeCamp’s self-paced coding challenges, build projects, and earn certificates. it’s like diving into code but still knowing what you’re doing and learning tricks and rules in a fast and effective way.</p>
<h4 id="heading-the-problem-with-learning-javascript"><strong>The problem with learning JavaScript</strong></h4>
<p>There are many technologies and libraries for JavaScript that make it feel scary for beginners. There are some famous names that maybe you have never used and you hear about them constantly.</p>
<p>Some people think <em>“What’s this</em> <a target="_blank" href="https://babeljs.io/"><em>Babel</em></a> <em>thing everyone is talking about. All the famous open-source projects are using it!” Or, “Wait — should I use</em> <a target="_blank" href="http://browserify.org/"><em>Browserify</em></a> <em>or</em><a target="_blank" href="https://webpack.github.io/"><em>Webpack</em></a><em>? Where did Gulp and Grunt came from? Ahhh, another new library or framework introduced last week! I can’t learn them all ?”</em></p>
<p>Yes, you can’t and you should not learn them all immediately. Those technologies, frameworks and libraries exist to help you work smarter, faster and easier. When you find something interesting that is worthwhile to use on your project or is an answer to one of your needs, then you should go ahead and learn it with a beautiful smile on your face while remembering the English proverb <em>“necessity is the mother of invention.”</em></p>
<blockquote>
<p><em>“I’d encourage folks to remember we’re all in the same boat and our tools are here to help us. If they’re not doing that, we should get them out of the way.” — <a target="_blank" href="https://medium.com/@addyosmani">Addy Osmani</a> (<a target="_blank" href="https://medium.com/@addyosmani/totally-get-your-frustration-ea11adf237e3#.t599ja0j3">Link to his story</a>)</em></p>
</blockquote>
<hr>
<p>Finally, I would like to thank <a target="_blank" href="https://www.grammarly.com/grammar-check">Grammarly</a> because of their perfect tool, which let me write an article in English, even though I'm not a native English speaker. <a target="_blank" href="https://www.grammarly.com/grammar-check">Try it</a> even if you're a native English speaker</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ From mechanic to coder: how following my dreams changed my life ]]>
                </title>
                <description>
                    <![CDATA[ By David Bruno I still remember the dirt underneath my nails, the sounds of the bays, the clinking of the hammer, the revs of the engines. The long hours, the sore back, the showers that seemed to last 30–40 minutes. Today, I write this from inside m... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/from-mechanic-to-coder-how-following-my-dreams-changed-my-life-ef93b796ca72/</link>
                <guid isPermaLink="false">66c34ae40fa3812cdd5ea9bf</guid>
                
                    <category>
                        <![CDATA[ Inspiration ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Life lessons ]]>
                    </category>
                
                    <category>
                        <![CDATA[ General Programming ]]>
                    </category>
                
                    <category>
                        <![CDATA[ software development ]]>
                    </category>
                
                    <category>
                        <![CDATA[ technology ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Tue, 02 Apr 2019 21:21:10 +0000</pubDate>
                <media:content url="https://cdn-media-1.freecodecamp.org/images/1*2TWW_kmC28W_rfXJqT6oPg.jpeg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By David Bruno</p>
<p>I still remember the dirt underneath my nails, the sounds of the bays, the clinking of the hammer, the revs of the engines. The long hours, the sore back, the showers that seemed to last 30–40 minutes.</p>
<p>Today, I write this from inside my home, preparing for my latest assignment as a coder. It’s a far cry from what was — and shows the purpose of following your dreams and making real life changes. Don’t worry: It’s not sappy. Here goes.</p>
<h3 id="heading-getting-into-cars">Getting into cars</h3>
<p>Growing up, I was nobody special. I had no special trait that set me apart — either from the kids at school or within my own family. The only thing that set me apart was ADHD. If there was anything I wanted to learn and lock into my memory, I had to reread or practice it many times. I never did well in school — I was a C and D student — and I only did what was needed to just get by. I didn’t necessarily disagree with studying; I just didn’t like being told what to do or what to learn.</p>
<p>I also had trouble identifying interests or what I might be passionate about. The only thing I really enjoyed was playing video games. Then the first Fast &amp; Furious movie came out. I remember watching that movie and becoming excited about the cars, all the engines, turbos, the colors, the sounds when the wheels peeled off the pavement. I was 15 years old at the time. I remember specifically being entranced by the import tuner culture.</p>
<p>That was the day my hobby for the race car life began. I eventually pursued this interest in import tuners by buying my first — a 2000 Honda Civic Si. It was a beat-up car, and neglected too. But it had a five speed manual transmission that ran and drove.</p>
<h3 id="heading-discovering-my-superpower">Discovering my superpower</h3>
<p>When I was 18 years old (the year was 2012), I enrolled in Vatterott College. I had the goal of becoming a professional automotive technician and soon found myself on the school’s honor roll. But around that time, I dropped out. It was because I realized I had a special ability: The ability to teach myself anything.</p>
<p>For instance: The ’97 Honda Prelude. Instead of asking the instructors or a student above my level to help with repairs, I downloaded a service manual and would take the car into the school’s parking lot, tearing the car apart and fixing things that were broken. The learning was through trial and error but I realized — I’m fully capable of teaching myself.</p>
<p>Even the shop’s teacher was impressed: They would tell the other students to watch me as a I worked.</p>
<p>Then there was the debt. The three months enrolled in the college had landed me a little over $8,000 in student loan debt, and if I had stayed there for the full two year program, I would have been over $40,000 in debt, with an outstandingly high interest rate.</p>
<p>This confirmed my realization: I am fully capable of teaching myself and I can find a job out there that will pay me to learn as I go.</p>
<p>And I did just that. Soon after leaving college, I approached a local automotive performance shop that worked on anything that had an engine. They also modified cars and installed performance parts. Working for them, I was able to pay off my $8,000 debt in ten months.</p>
<p>I worked as an automotive technician from August 2013 until October 2017. I got really good at what I could and had a really great boss; however, it was hard labor, as we had a small five bay shop that would be booked 2–3 weeks in advance just for people to get their cars in for repairs.</p>
<p>Each day, I’d move between 15 and 30 cars to open the shop up, then move them all back into place to close down. About 90 percent of the time, I was outside in the weather — hot or cold, rain or snow, pulling engines, dropping transmissions and many other labor-intensive jobs.</p>
<p>It was around that time that I got tired — both my body and my mind. I was weary of working in such conditions, and the pay wasn’t really that great. I wanted more out of life and because I was a homeowner with an expensive car hobby, the income of being a mechanic wasn’t enough.</p>
<p>I knew there was more: A job where I could live comfortably and not have to work nearly as hard to keep the bills paid. It was around the beginning of 2017 when I finally began to get serious. I knew that for my life to change I needed to take action.</p>
<p>Although every day I worked, I would get destroyed, be tired, exhausted, and nine out of 10 times filthy from the dirty work, I’d go home and start learning about what I could do. I looked at many things: buying and selling products online, retail arbitrage, starting a drop-shipping company, building passive income. I also looked into careers, ones that could lead me to a high-paying comfortable lifestyle.</p>
<p>The goal was to work remotely and make great money. I tried many things, but nothing seemed to work for me. I never gave up. I knew something would click with me as something that would interest me and lead to the life of my dreams.</p>
<h3 id="heading-making-changes">Making changes</h3>
<p>Then a friend of mine, who I worked alongside at the automotive shop, got a night job configuring, diagnosing, and repairing routers. He was doing Cisco CCNA work and had no college education or prior work experience that would’ve led to getting this job. He was paid well (if he did this full time for the company he would have made six figures) and had gotten the job just from a reference. I couldn’t believe it.</p>
<p>At that time, the bills from my first home were putting pressure on me. And here he was, working remotely, not doing any physical labor, and getting paid very well. He basically faked it till he made it — and made it, you can bet, he certainly did.</p>
<p>He told me, “Start learning Cisco CCNA work. If a position opens up, I’ll try to get you in.”</p>
<p>So I started researching online courses and schools that offered CCNA Certification classes. It was around July 2017 that I stumbled onto a local school that offered the course. It was called New Horizons Computer Technology. I submitted my information and got a call from a recruiter.</p>
<p>We chatted for a good 30 minutes and he explained that the courses I wanted were pricey: $6,000 total cost for the two weeks of classes. I was disappointed. I was living close to paycheck to paycheck and generally only had enough money to covers bills and save up a little.</p>
<p>The recruiter understood. He told me about a special Tennessee grant program for adults below 25 years old who made less than $30K yearly that would pay for the courses, making them free. I was only 24 years old and it gave me hope.</p>
<p>He sent me to an orientation where I brought specific documentation such as a high school degree, birth certificate, and pay-stub, to prove I was qualified. They collected the information and sent it off. Nearly three weeks went by before I finally got the phone call.</p>
<p>They’d pay for the courses.</p>
<p>Overwhelmed with excitement from this new possibility, I began fulfilling all of the requirements for enrollment at the school. A couple of weeks passed, the school and I came to an agreement that because I had no prior experience with Cisco computer work, I would take Comptia A+ for the first two weeks, with merging into Cisco in the second set of two weeks.</p>
<p>Even though I had little experience, I would do whatever it took to learn so that when a position opened up, I would be ready to get it.</p>
<p>The classes ran like a typical work week: Monday through Friday, 8am until 5pm, for four total weeks. The good part, which made this financially viable, was that I could choose on which weeks to take the courses. This brought me hope: ‘I have a way,’ I thought, ‘to get out this daily cycle of hard labor work and living paycheck to paycheck.’</p>
<p>The date was set for October 2017.</p>
<p>But I also knew that my work wouldn’t approve of me taking off for such an extended period of time. It was a step, and a big one. I chose to put my two weeks’ notice in on the first Monday of October.</p>
<p>I was placing all my money down on this set of cards — this new possibility of a new career choice. Don’t get me wrong: I’ve never left a job without having another job lined up. I had several part time jobs available, supervisors who were willing to hire me on the spot if things got too hard.</p>
<p>A couple months prior to leaving work, I had made a plan. I saved as much of my paychecks as I could. I cut costs and bills, things I didn’t need, such as the Netflix bill. I realized I had to put all my momentary needs on hold if I wanted to change my life.</p>
<p>I also timed things well. I spread out my classes so that I could take side jobs as an electrician, carpenter, computer repair person, and auto technician, for instance. As an “if all else fails” back-up plan, I had a stockpile of named brand performance parts that I had accumulated from years for a project car. I could sell these if nothing else.</p>
<p>I had a plan and was moving forward but it was difficult. I could no longer buy things for loved ones and still had a mortgage over my head. It was extremely daunting and I was fearful, but I couldn’t let my fear take over me. I worked to strengthen myself.</p>
<p>I started to research successful people, and not just the wealthy. Some inspirations came from those who built successful companies. Apple, Dell, Tesla, Space X. Elon Musk was a huge inspiration.</p>
<p>Motivational videos and self-improvements videos were constantly running on my phone and computer. When successful people spoke, I took note of their habits, as I had learned that success starts with a daily routine of small habits, an insight I applied instantly.</p>
<p>December of 2017 approached. I was in the final week of my CISCO class and I realized it was nearly impossible for someone to learn everything about the two certification tests — ICND-1 and ICND-2 — in just a matter of two weeks.</p>
<p>At the same time, the school’s advisor was notifying me of any entry level IT job openings. But I was discouraged. I attended interviews and hiring events only to be told my starting hourly rate would be $14, because I didn’t have a magical IT background or a college degree.</p>
<p>I’m sure you can feel my frustration here. I had worked hard to get this far and taken a huge risk. The last day of classes came and went. I crammed down all the knowledge and soon learned that I hated the stuff in the CISCO classes. It was dry, boring, and mixed with my ADHD very difficult to stay focused on.</p>
<p>The situation was like this: The first round of tests were paid for thanks to the grant; however, if I failed, I had to pay the cost of the tests. These were around $300 a test and even if I passed, I would still start out making less money than a full-time mechanic. And I knew, with my bills, that wouldn’t work.</p>
<p>It would take three to six months to study for them. I decided not to take them, which was a bitter pill to swallow. I had invested so much time in the course already, and that I thought this was my “golden ticket.”</p>
<p>The disappointment stung.</p>
<p>The end of December approached and I still didn’t have a plan of action going into the new year. I wanted a job in the IT field but couldn’t work for years at the lower levels, earning little income. But I trusted my motivation. I needed to keep trying different things, investing in myself, working side jobs until I found what I wanted.</p>
<h3 id="heading-the-game-changer">The game-changer</h3>
<p>January 2018 came. I was listening to a motivational video of a very successful person. He said, “If you want to be successful, then you need to surround yourself with successful people.” Then he mentioned something specific: An app called MeetUp.</p>
<p>I downloaded it soon after, and it became the best decision of my life.</p>
<p>In the app, I soon searched for technology and found a subcategory called Blockchain. I knew very little about it, just having a coinbase wallet with a small amount of money invested in bitcoin, ethereum, and litecoin. But it sparked my curiosity. It caught my attention.</p>
<p>A list of local meetups popped up. The one with the most members was called Blockchain901 (901 being the area code of Memphis) and they had a meeting scheduled for end of January, just three days after I had downloaded the app.</p>
<p>Do you believe in destiny?</p>
<p>Here is where I think it came into play.</p>
<p>Because, at the same time I was looking into blockchain, I was exploring the option of real estate. People made a lot of money in real estate and it was a way to build up a great deal of passive income. And, you could’ve guessed it, the soonest meetup was scheduled for the exact same date as the blockchain meetup, and at the exact same time.</p>
<p>I pondered. Both events were in different parts of the city. The one I picked would be the one I stuck with.</p>
<p>When the day came, it was pouring rain. This was either a sign: Not to go or overcome an obstacle. I had no idea what I was getting myself into, and I knew that either choice would remove me from my comfort zone. But this was necessary: To make my dreams come true, I had to buckle down and step outside of it.</p>
<p>I wrote down pros and cons, for both the real estate meetup and the blockchain meetup. With real estate, I knew I would struggle. I had little money saved up for investing. But the blockchain meetup posed opportunity. I could invest myself in knowledge of blockchain, which might lead to a better paying job. I felt my odds were greater with blockchain, and I followed through.</p>
<p>I drove through the storm to the FedEx Institute of Technology, which was on the University of Memphis campus. When I arrived, I was nervous. I didn’t know what to expect. I was several minutes early, walking across campus, and the room was already full. I was blown away.</p>
<p>Luckily, there was a seat open at the very front of the room. I quickly walked to it and sat down with my notebook. The large crowd might have been due to a specific reason: There was a special guest speaker flown all the way in from Taiwan (he was a big player in the blockchain industry called Everex). Alongside the guest speaker was a local Memphian called Brian.</p>
<p>As the door closed for the meetup to start, I took a look around. It was a massive classroom where every seat was filled and people lined the walls standing up, preparing to hear the speakers. There had to be 100 people in a classroom meant for around 60.</p>
<p>There were introductions. Brian introduced himself as a local Memphis software developer who specialized in blockchain and was also starting up a blockchain company in Memphis.</p>
<p>As the two hours of the meetup flew by, I took many notes and asked several questions. When it ended, people began to disperse, and I summoned the courage to approach Brian.</p>
<p>Ignoring my nervousness, shyness, and anxiety, I walked right up and said, “Hey, man, loved the speech and lessons from the class. I wanted to ask you if you guys had any positions opening up or if I could come hang out and learn from you.”</p>
<p>Brian was baffled and caught off guard.</p>
<p>As he hesitated, another man quickly approached and introduced himself as Aaron. He said, “You really wanna learn this stuff?”</p>
<p>“Absolutely,” I said.</p>
<p>“Good, then here’s my contact info. You are going to meet me downtown at this address.”</p>
<p>I had a huge mix of emotions. On the one hand, I was exploding with excitement for what could go right, but on the other hand there was a good amount of doubt and fear of the unknown.</p>
<p>Brian chatted with Aaron for a moment, then said to me, “Totally go with Aaron. He’s a good guy and will show you what you need to start doing.”</p>
<p>Between the meetup and my scheduled meeting with Aaron, I did what I was supposed to do. On February 2nd, 2018, I wrote my first line of code and made my first Git push to github. I followed up with Aaron, confirmed the time and place.</p>
<p>Heading towards downtown Memphis, I approached the address given to me. It had led me to a massive 19-story skyscraper. He had told me to meet up on the 19th floor. I remember thinking how crazy — me meeting this man at the top floor of a massive skyscraper.</p>
<p>I approached the room and knocked on the door. Aaron opened it and quickly I noticed all the windows overlooking nearly all of downtown Memphis. In the room was a table with just his MacBook on it.</p>
<p>He sat me down and showed the project he was working on. There was the front end and the code that changed was basic HTML and CSS, and I had no experience with either. He instructed me to figure out how to change the front end and add some styles to it.</p>
<p>Not knowing what to do, I googled my heart out. I looked for the knowledge needed to accomplish this task a mix of emotions were running through me — desperation, fear of failure, excitement. Surprisingly enough, I caught on quickly. That old ability — to teach myself anything — took hold.</p>
<p>Aaron saw my potential. He gave me some advice: To use my free time studying on a site called freeCodeCamp. Then, after a few days of working with him, he made me an offer of paying me hourly out of his pocket to continue helping him with his project. It wasn’t much, but it was something, and it was much better getting paid to learn rather than the other way around.</p>
<p>Weeks went by. I continued meeting with Aaron during the late weekend night and coding nonstop for 8+ hours. During the weekdays, I worked my side jobs and spent my free time studying.</p>
<p>This opportunity gave me hope for the future.</p>
<h3 id="heading-success-at-last">Success at last</h3>
<p>In time, I met Brian again and the rest of the <a target="_blank" href="https://web3devs.com/">Web3Devs</a> team. They gave me more tasks to see how I would handle them and I exceeded expectations — because I was determined not to fail.</p>
<p>On August 21, 2018, I received my first salary paycheck as a junior software developer from Web3Devs. Since then, I have been given more responsibilities, taking on clients, handling meetings, scheduling events, and much more — still while coding and studying.</p>
<p>Soon, they were taking me on trips to hackathons.</p>
<p>On September 6th, 2018, we flew out to Wyoming for the Blockchain Hackathon. I was excited — collecting a salary while traveling. The Hackathon was a massive success. We won four bounties, including a first place prize. It was a divine moment being on that stage while the event was live-streamed.</p>
<p>Two weeks later, we went to Atlanta for the ETH-Atlanta Hackathon, where we again won the first place prize.</p>
<p>As these events were happening, more work opportunities were coming around and more doors were opening for me. Soon, November 9th came and we flew out to San Francisco for the EOS-Hackathon. Competition was huge, as there were travelers from all over the globe and massive cash prizes.</p>
<p>Although we didn’t get first place, this was my favorite trip. We made tons of connections and I proved myself to the team. It was a massive success for me.</p>
<p>Then, as New Year’s Eve of 2019 rolled around, I looked back at 2018, how it started and how it ended. I started with no guaranteed paycheck or a game plan for how to change my life for the better. Things had gotten hard — the mortgage payments, the loss of income, the challenges of moving forward.</p>
<p>But things got better. I studied the habits of successful people. I applied what they said. The right opportunity presented itself and I moved forward, sometimes with doubt and sometimes needing courage, but I did just that and I achieved what I wanted to achieve — becoming a remote software developer and living the life that I had wanted and set out to do.</p>
<h3 id="heading-final-thoughts">Final thoughts</h3>
<p>What I’m trying to say in this story — and hopefully share and convey — is that no matter how hard things are, no matter how much weight is placed on your shoulders, no matter how many times you fail or struggle, never give up. Never quit fighting for what you truly want out of life. No matter what education you have or what job you work, you too can fulfill your dreams. If that’s coding, that’s coding, but it can be anything else. The lessons in this story can be applied to anything you are passionate about. You are the creator of your destiny.</p>
<p>Fin. (Extra sections below for those looking to get started into coding)</p>
<h4 id="heading-some-tips-for-you">Some tips for you</h4>
<p>Here are some extra tips if you’re starting out (or looking to start out) as a coder.</p>
<p>First, for a programming language, I recommend pursuing <strong>JavaScript</strong>. JavaScript is a scripting language that allows you to implement complex things on web pages. It consists of HTML, CSS, and variety of other frameworks such as nodeJS and React (a popular Facebook language). JavaScript can be applied to many things, including blockchain applications. It’s also easier to get an entry level job with JavaScript than other programming languages.</p>
<p>The <strong>websites</strong> I recommend are as follows:</p>
<p><strong>freeCodeCamp.org</strong> is a completely free site for learning in detail about JavaScript, NodeJS, React, and many others. You have to teach yourself as there aren’t any videos. It’s just straight code.</p>
<p>Another site, <strong>uDemy.com</strong>, has excellent courses if you prefer to learn code alongside an instructor. These courses are in-depth and lengthy, some having 40+ hours of coursework. A double monitor method helps with the videos from the instructors. A good course I took and recommend is “The Modern JavaScript Bootcamp (2019)” by Andrew Mead. uDemy.com also has regular sales so you can snag courses for as low as $10.</p>
<p>Lastly, if you’re curious about getting started in blockchain as a programmer, then I recommend, after learning some JavaScript, a site called <strong>cryptozombies.io</strong>. It is a completely free game that teaches you how to write Ethereum Smart contracts using Solidity as a programming language, all while building a zombie army. The game was created to inspire and teach kids in middle school how to code and the game creators are always adding more chapters. Solidity is a lot like Javascript, making it a good start into blockchain.</p>
<p>All three things listed will make you a knowledgeable programmer. Always remember that habits are everything. Practicing every day for thirty minutes will make someone that much more advanced by year’s end. The progress may surprise you.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Something within me whispered: “Be the builder” ]]>
                </title>
                <description>
                    <![CDATA[ By Rebecca Radding Former Gaza Code Academy facilitator Yasmin Hillis, a self-declared hippie at heart, talks about how Virginia Woolf inspired her to begin writing code Yasmin Hillis studied English literature and taught English to children before ... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/something-within-me-whispered-be-the-builder-9a47fcc013f/</link>
                <guid isPermaLink="false">66c35f36a365c359945c9b71</guid>
                
                    <category>
                        <![CDATA[ Inspiration ]]>
                    </category>
                
                    <category>
                        <![CDATA[ General Programming ]]>
                    </category>
                
                    <category>
                        <![CDATA[ self-improvement  ]]>
                    </category>
                
                    <category>
                        <![CDATA[ startup ]]>
                    </category>
                
                    <category>
                        <![CDATA[ tech  ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Wed, 23 Jan 2019 16:43:08 +0000</pubDate>
                <media:content url="https://cdn-media-1.freecodecamp.org/images/1*nyUNnGFlM5kTcJwtY3D05g.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Rebecca Radding</p>
<h4 id="heading-former-gaza-code-academy-facilitator-yasmin-hillis-a-self-declared-hippie-at-heart-talks-about-how-virginia-woolf-inspired-her-to-begin-writing-code">Former Gaza Code Academy facilitator Yasmin Hillis, a self-declared hippie at heart, talks about how Virginia Woolf inspired her to begin writing code</h4>
<p><img src="https://cdn-media-1.freecodecamp.org/images/awKVrrZMl-DUKD-hRsgqyZllg41I5pTjVHrE" alt="Image" width="600" height="400" loading="lazy"></p>
<p><em>Yasmin Hillis studied English literature and taught English to children before shifting gears and studying web development with <a target="_blank" href="http://www.foundersandcoders.com">Founders and Coders</a>, a peer-led coding bootcamp, where she recently finished her term as course facilitator. For several years, she’s been an avid practitioner of meditation and vegetarianism. In her spare time, Yasmin volunteers for local nonprofits and is teaching herself mathematics.</em></p>
<p><em>If Yasmin lived in London, where Founders and Coders is based, her story as a self-taught female programmer would still stand out. But the fact that Yasmin was born in Gaza, the most populous of the Gaza Strip’s five governorates, makes her accomplishments, and her relentless positivity, all the more extraordinary. In fact, with the Israeli border crossing mostly closed since 2007, and the Egyptian border crossing effectively closed since 2014, Yasmin has never left Gaza, a narrow strip of land just 25 miles long.</em></p>
<p><em>Yasmin, who graduated from the <a target="_blank" href="https://gazaskygeeks.com/code/">Gaza Code Academy</a>, a joint project of <a target="_blank" href="https://gazaskygeeks.com/">Gaza Sky Geeks</a> and London-based Founders and Coders, grew up under the thumb of the blockade, in circumstances most aspiring developers can hardly fathom: Gazans have, on average, only four hours of electricity a day, and 90% of Gaza’s water is unsafe to drink. According to the World Bank, <a target="_blank" href="http://documents.worldbank.org/curated/en/2015/05/24525116/economic-monitoring-report-ad-hoc-liaison-committee">Gaza’s unemployment rate</a>, 43.9%, is the highest in the world. Unemployment among women stands at 55.2%, and workforce participation by women is just 19.7%.</em></p>
<p><strong>Rebecca</strong>: Yasmin, I understand that before you decided to become a web developer, you studied English.</p>
<p><strong>Yasmin</strong>: That’s right. I graduated from Al-Azhar University in 2016, where I studied English literature and fell in love with literary criticism, especially of poems by William Wordsworth.</p>
<p>When I finished, I worked as an English teacher for a number of organisations and for a summer camp organised by <a target="_blank" href="https://www.amideast.org/west-bank-gaza">Amideast</a>.</p>
<p><strong>Rebecca:</strong> Reading novels in your second language isn’t for the faint of heart! Tell me about your first experience reading a novel in English.</p>
<p><strong>Yasmin:</strong> Actually, it was Robinson Crusoe.</p>
<p><strong>Rebecca:</strong> Your first novel in English was an about a man shipwrecked on a desert island?</p>
<p><strong>Yasmin:</strong> I know, ironic, right? When I read about his life on the deserted island, his experience being cut off from society, I felt like every sentence could have been describing me. Maybe that’s what motivated me to persevere through the book. After reading the first two chapters, and looking up every other word in the dictionary, I resolved to sit for twelve hours a day with my nose in the book until I felt like I understood the whole story, and not just the individual words. It took me two weeks, but I did it!</p>
<p><strong>Rebecca:</strong> You mentioned that you fell in love with Wordsworth’s poetry during university. Do you have a favorite poem?</p>
<p><strong>Yasmin:</strong> It’s so hard to choose, but probably “I Wandered Lonely as a Cloud (Daffodils)” by Wordsworth. When I read it, I feel like I’m right there with him in the field of flowers, even though I’ve never visited a daffodil field myself before. His writing…it gives me the sense that I can smell something I’ve never smelled before, and it lifts me up whenever I’m feeling down and longing to connect with nature. The final stanza particularly resonates with me:</p>
<blockquote>
<p><em>“They flash upon that inward eye</em></p>
<p><em>Which is the bliss of solitude;</em></p>
<p><em>And then my heart with pleasure fills,</em></p>
<p><em>And dances with the daffodils.”</em></p>
</blockquote>
<p><strong>Rebecca:</strong> So help me understand how you went from reading novels to writing code.</p>
<p><strong>Yasmin:</strong> As a literature student, I spent lots of time searching the web for answers to the seemingly infinite questions sparked by the novels and literary criticism I was reading. At some point I realised that the websites I was using for my research had themselves been built by software engineers. Something inside me whispered, “Be the builder,” so I decided to take a gamble on learning to code.</p>
<p>Not long after, I saw an advertisement for She Codes, a short-term course run by Gaza Sky Geeks, on social media, and signed up right away. I joined the course and immediately started learning everything I could about coding, spending most of my free time reading articles and watching YouTube videos about programming as I worked my way through the prerequisites for the Code Academy.</p>
<p>I still remember how in my interview to join the Code Academy, after the technical questions, one of the panelists asked, if I could invite anyone to dinner, who would that person be. I said Virginia Woolf because from her novels you can see how enlightened she was in a time when women had so many rules imposed upon them by society, and as a fellow feminist living in a traditional society, I find her really inspiring.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/vXiILwR3LSdCE7a6ZRWQGK2e-9FdTPLxZ0s7" alt="Image" width="600" height="400" loading="lazy">
<em>Aspiring developers collaborate during an open meetup at the Gaza Sky Geeks campus</em></p>
<p><strong>Rebecca:</strong> Obviously you’re not one to let rules stand in your way! Tell me about your experience on the course as someone with a non-technical background.</p>
<p><strong>Yasmin</strong>: In the beginning, I had a hard time coping with so many new technical topics, especially since everyone else on my cohort had studied computer science or information systems. But one thing I did know how to do was to google, and I spent every scrap of time looking up the new terms and topics I encountered.</p>
<p>There were times when learning code felt like learning another language — something I’m familiar with, having learned English and conversational French. But I had a hard time wrapping my mind around concepts like code modularisation, because I just couldn’t accept the idea that a certain block of code is getting/sending its input/output from/to another block of code living somewhere else on the project.</p>
<p>Maybe it’s because in literature we don’t have the same concept — we usually deal with the piece of literature as a whole. So, coming to programming and finding that some files depend on others — my head was spinning!</p>
<p><strong>Rebecca</strong>: I take it eventually things got easier. How did you find your footing?</p>
<p><strong>Yasmin</strong>: It all comes down to peer-led learning. Unlike traditional learning methods, which focus on what students lack, peer-led learning gives us as learners the responsibility to teach each other. Through this process we also become more self-aware of our strong and weak points. Peer-led learning has taught me that no matter how much I know, I can always learn something from the process of working with someone else.</p>
<p><strong>Rebecca:</strong> I’d love to hear about your first experience with peer-led learning.</p>
<p><strong>Yasmin:</strong> My first experience with peer-led learning was during a pair programming exercise on the very first day of the course. The mentors paired us up and told us to work on a challenge on Codewars. I remember how just three days before the course started, I was working at home on a similar challenge, and it took me ages, and so much searching, to find the answer. When I paired, my classmate used a different pattern, naming the variables and dealing with the code in a way that helped me see the problem in a new light, and we got to the solution in a fraction of the time it had taken me before. Afterwards, I remember telling our mentors that when two minds focus on one single problem, there’s nothing we can’t solve.</p>
<p><strong>Rebecca</strong>: And what was the best part of the course?</p>
<p><strong>Yasmin</strong>: Our final project, which we worked on while mentoring the following cohort, was hands down the highlight of the course. We <a target="_blank" href="http://facapt.herokuapp.com/">built an application</a> to showcase the portfolios of Founders and Coders students, with Joe Tanner, Founders and Coders commercial manager, as our client.</p>
<p><strong>Rebecca:</strong> Speaking of technical skills, in what ways would you say that coming from a non-technical background was an asset on your journey?</p>
<p><strong>Yasmin:</strong> It’s interesting you ask that. I guess you could say I brought the ability to think through projects both technically and emotionally, you know, from the user’s perspective. Some of my classmates, who were so strong technically, would forget to think through the project from the perspective of the user.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/UFlaYbtRvv7MwPDxsemYRAFVv8Ic3LdLBbqb" alt="Image" width="600" height="400" loading="lazy">
<em>Yasmin mentoring at the Code Hope hackathon in October 2018</em></p>
<p><strong>Rebecca</strong>: You mentioned that you worked on this project while mentoring the next cohort. Many of our alumni say that they grow as much, if not more, while mentoring as they did when they were a student. Tell me about your experience as a mentor.</p>
<p><strong>Yasmin</strong>: Mentoring taught me so much, starting with the fact that the best way to learn something is by explaining the concept to someone else. I remember standing up in front of the class explaining something about Node, even though I still hadn’t figured out the logic behind it myself. During my explanation, one of the students stopped me and asked me a question to the tune of, “Why does it work that way?” I found myself providing the answer and noticed another student nodding and saying, “Yeah, that’s right.” So I went back to my searching and saw that the answer I came up with, on the spot, was actually the right one.</p>
<p>Just yesterday, I was at home working through a mathematical problem. I found the problem hard and just could not find a solution to it, so I went to my mom, my mentor in self-learning math. I told her, “Mom, I can’t find a solution to this problem!” She asked me to explain the problem to her before thinking together about a solution. Lo and behold, as I was explaining the problem to my mom, I found the solution.</p>
<p><strong>Rebecca</strong>: You said your mother is your mentor in self-learning mathematics. Would you consider her a role model?</p>
<p><strong>Yasmin</strong>: Absolutely. My mother studied mathematics at IUG, Islamic University of Gaza, and is currently a teacher of mathematics for middle schoolers at a school for UNRWA in Gaza.</p>
<p>I guess it’s no accident that I became first a teacher, and then a facilitator. You could say that education is kind of a family tradition. My grandfather, rest in peace, who is originally from Gaza, studied English literature in Egypt before returning to Gaza to work as English teacher. He was eventually promoted to school principal, and then served as director of the UNRWA Education Department, Gaza area. My grandmother is also a teacher at an UNRWA school.</p>
<p>Having a strong female role models has been essential in my journey, as so many people here think women aren’t smart enough for work in tech.</p>
<p><strong>Rebecca:</strong> Tell me about these naysayers.</p>
<p><strong>Yasmin:</strong> Well, the dominant view in our society is that women are not made for tech and mathematics and science, and to put it bluntly, that women just aren’t intelligent. After growing up hearing this, some women even start to believe this and behave like it’s true. I’m grateful that my family has been so supportive of my educational and professional aspirations and that I have strong women as role models in my mother and grandmother.</p>
<p><strong>Rebecca:</strong> I understand that while there are only a handful of women working as developers in Gaza, women make up half of the students at the Code Academy.</p>
<p><strong>Yasmin:</strong> That’s right. We believe that women and men are equally well-equipped for technical work, and envision a Gazan tech sector that one day employs as many women as men.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/jU93YNugzVzAVbxK2ewhB5RkzFTbAlQfGSH4" alt="Image" width="600" height="400" loading="lazy">
<em>Yasmin, as course facilitator, with a group of students from the Code Academy</em></p>
<p><strong>Rebecca</strong>: You were the course facilitator for the fifth cohort of the Code Academy, which began during summer 2018. In your experience, how is facilitating different than teaching?</p>
<p><strong>Yasmin</strong>: Interesting question. Teaching is about delivering an idea. Facilitating, on the other hand, is mostly about observing — we only intervene when we don’t think students can sort things out for themselves, or when one student’s actions have become harmful to themselves or others. As a facilitator, I pay close attention to the environment and the students’ personalities, and make adjustments accordingly.</p>
<p>Being a facilitator was by far been the most rewarding thing I have ever done. I was once floating around the room when students were working in pairs during a workshop. I noticed one student seemed particularly stressed and anxious. I approached her and asked what’s the matter but she assured me everything was fine. During the break, I decided to talk to her privately. This time, she admitted to me that she felt like an imposter, like she didn’t belong on the course and in the tech industry (which of course wasn’t true). I offered her advice and emotional support, which she later followed. A few weeks later, at the final project presentation, she displayed a firm grasp of the project as a whole. After the presentation, I talked to her and was so proud to hear her tell me she felt like she’d grown both personally and professionally.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/TMyQs59cFl0jek0mKB6w9KY5SadXdiPlzhc6" alt="Image" width="600" height="400" loading="lazy">
<em>Reviewing a team project during the fifth cohort of the Code Academy</em></p>
<p><strong>Rebecca</strong>: And how did you grow from your experience as a facilitator?</p>
<p><strong>Yasmin</strong>: Even more than when I was a student, facilitating has taught me the value of teamwork. Now I’ve been a team member several times before, but witnessing how teams in the room work and observing where they get into trouble has made me so much more aware of the importance of collaboration and communication.</p>
<p>When you are on the team, you can get overwhelmed by the tiny things in front of you and forget to pay attention to more important things. When you are someone who is observing team dynamics, you can more clearly see the big picture, and thus help the teams refocus during daily standups on projects. I frequently remind the classroom as a whole that paying attention to the big picture is important. Sometimes the big picture is the communication within the team. Sometimes it is maintaining the longevity of relationships and other times it is prioritizing the project and the learning process of others.</p>
<p>More than anything, this job taught me to be more patient. I learned to be patient with the rate of student progress, with team dynamics, with students who make the same mistake more than once. In life in general, I’m patient with my mind and body. I remind myself that everything takes time and if everything happens instantaneously, life loses one of its most interesting characteristics, suspense.</p>
<p><strong>Rebecca</strong>: You say you’re patient with your mind and body. Outside of facilitation, how would you say you’ve learned the value of patience?</p>
<p><strong>Yasmin</strong>: I’ve actually been practicing meditation for four years now. I’ve learned so much from my meditation practice, like how not to complain, compassion, patience, and self-awareness.</p>
<p><strong>Rebecca:</strong> How did you get started with meditation?</p>
<p><strong>Yasmin:</strong> Well, back in college, during exams, I was just so overwhelmed. I had the sense that my mind needed a rest, but I didn’t know how to provide that for myself. It felt like there were voices in my head, and they were fighting, but I couldn’t figure out how to quiet them down.</p>
<p>I decided to sit in my bedroom, on the floor, and close my eyes — instinctively, I think, we all know how to be mindful. I sat there, still and silent, for about fifteen minutes. When I finished, my mind felt more organised, I was calm, and my mood had improved. When I went to study I found my comprehension was so improved that I decided I had to research to find out what it was that I did.</p>
<p>I found a YouTube video with instrumental music for relaxing and I continued with meditating for a few months, almost every day, and eventually I learned about how controlling your breathing makes it easier and faster to relax and improves the mood. I still meditate whenever I can, using music, guided meditation, or mindfulness apps like <a target="_blank" href="https://www.calm.com/">Calm</a> and <a target="_blank" href="https://www.headspace.com/">Headspace</a>. To be honest it’s hard to find a place to be alone and meditate, because houses here are crowded. But I steal moments for myself, because if I want to practice meditation and connect with nature, it doesn’t have to be a special place or time, just any place or time that I need it.</p>
<p>People here think I’m crazy for meditating, but what can I say, I guess I’m just a hippie at heart.</p>
<p><strong>Rebecca:</strong> So where do you go when you want to be alone, to relax or to study?</p>
<p><strong>Yasmin:</strong> Growing up, my favorite place to study was the balcony of my bedroom in our old house, where I’d read and sip a cup of tea in the fresh air. Today, I’d have to say I love visiting the sea. It’s where I feel relaxed, rejuvenated, and connected to nature.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/f7nCU3BGFxN4jYvzZ5aXlU0QUVCaQvMoz9cW" alt="Image" width="600" height="400" loading="lazy">
_Photo of Gaza waterfront: [Stefanie Dekker/[Al Jazeera](https://www.aljazeera.com/blogs/editors-blog/2018/08/side-gaza-swimming-canoeing-child-180802084349283.html" rel="noopener" target="<em>blank" title=")]</em></p>
<p><strong>Rebecca</strong>: What about your career goals? What’s your dream job?</p>
<p><strong>Yasmin</strong>: I loved working with the team at Gaza Sky Geeks, and I’m now looking for a role as a developer on an equally well-functioning team. I’d like to keep doing some project management, as I enjoyed the organisational aspect of facilitating.</p>
<p><strong>Rebecca</strong>: Dream big for me. Imagine the blockade ends today and you can get a job anywhere in the world. Where would you go?</p>
<p><strong>Yasmin</strong>: LONDON, of course!</p>
<p>To learn more about hiring developers in Gaza, visit <a target="_blank" href="https://agency.gazaskygeeks.com/">agency.gazaskygeeks.com</a>.</p>
<p>To apply to the Gaza Code Academy, visit <a target="_blank" href="http://www.gazaskygeeks.com/code">www.gazaskygeeks.com/code</a>.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Rejected? Get inspired by the stories of science/tech giants ]]>
                </title>
                <description>
                    <![CDATA[ By Nezar Assawiel Getting that rejection call or email is not pleasant. You feel disappointed, sad, confused, or teary-eyed. It is especially hard after getting so many no’s, or when you know that you are objectively an excellent candidate for the jo... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/rejected-get-inspired-by-the-stories-of-science-tech-giants-76c1b007d63a/</link>
                <guid isPermaLink="false">66c35de3add0807b8e3fb90e</guid>
                
                    <category>
                        <![CDATA[ Inspiration ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Job Hunting ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Life lessons ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Science  ]]>
                    </category>
                
                    <category>
                        <![CDATA[ technology ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Mon, 17 Dec 2018 22:12:27 +0000</pubDate>
                <media:content url="https://cdn-media-1.freecodecamp.org/images/1*075MvqkChXLP0wbBcN4osQ.jpeg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Nezar Assawiel</p>
<p>Getting that rejection call or email is not pleasant. You feel disappointed, sad, confused, or teary-eyed. It is especially hard after getting so many no’s, or when you know that you are objectively an excellent candidate for the job. You start doubting yourself and wondering what you are missing.</p>
<p>While there is always room for improvement from your end, there is always room for mistakes from the other end. Those mistakes could be the worst ones of their careers and the biggest opportunities of yours. Treat each rejection as what it is — possibly the best thing that ever happened to you.</p>
<p>When doubt starts getting to your head because you received many rejections, remember that some of the greatest scientists and entrepreneurs were rejected many times, too. Those rejections have led to much better outcomes. Here are some of the rejection stories that inspire me to keep going in the face of rejections.</p>
<h3 id="heading-albert-einstein">Albert Einstein</h3>
<p><img src="https://cdn-media-1.freecodecamp.org/images/BSrmwQECMGp53R8k0fxGMKBjs0rWyVsxVa3J" alt="Image" width="600" height="400" loading="lazy"></p>
<p>After graduating with a degree in mathematics and physics in 1900, Albert Einstein could not find anybody to hire him. He got rejected from all the schools and colleges to which he applied for a teaching or a research post.</p>
<p>He was struggling so much to find a job that he thought about switching fields and selling insurance! His father wrote letters to his friends, without telling Einstein, asking if they could get a job for his son, with no success.</p>
<p>After almost two years of unemployment, the desperate Einstein moved to Bern — the Swiss capital — where the father of one of his friends got him a job as a junior patent examiner. He worked there until 1909.</p>
<p>Einstein used to finish his tasks quickly and use the rest of his time to work on scientific research that interested him. During that time — specifically 1905 — he published four of the most important scientific papers ever published. These papers laid the foundation of modern physics in space, time, mass and, energy.</p>
<h3 id="heading-srinivasa-ramanujan">Srinivasa Ramanujan</h3>
<p><img src="https://cdn-media-1.freecodecamp.org/images/xKz-ZhyRdyvFvpXk6DZw92ad1dN43AkXNE7R" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Despite living in poverty for most of his life, receiving little formal education, and passing away at the age of 32, Srinivasa Ramanujan contributed substantially to the field of mathematics.</p>
<p>Ramanujan was able to get a scholarship to attend college. However, his strong interest in mathematics distracted him, thus he failed other subjects and was dropped from the scholarship. He enrolled in another college later and failed other subjects again.</p>
<p>With no college degree, he pursued his mathematical research independently. He lived in poverty and was going door-to-door looking for a clerical job. He would show prospective employers his work and send letters to mathematicians and colleges, detailing advanced theorems that he came up with.</p>
<p>Some didn’t respond to him, some thought he was a fraud, and some were impressed by the work he presented but doubted it was his. There were others, however, who gave him letters of introduction to other notable mathematicians.</p>
<p>His break came as a reply and a sponsorship from G. Hardy — a mathematician at Cambridge University — who recognized the work of a genius. Ramanujan traveled to the UK to work with Hardy, and become one of the youngest Fellows of the Royal Society in history, at the age of 31.</p>
<h3 id="heading-jack-ma">Jack Ma</h3>
<p><img src="https://cdn-media-1.freecodecamp.org/images/f5gv2A4lobsy0bFs03uerC1BXS0xF6gFP9wC" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Jack Ma, the founder of Alibaba and a global business leader, had his fair share of rejections. After graduating college from his home city of Hangzhou, China, he applied for 30 jobs and got rejected from all of them. He applied to be a police officer. Out of five applicants, he was the only one rejected.</p>
<p>He was even rejected by KFC. When they came to his home city, he tried to get a job with them. Out of 24 applicants, he was the only one rejected, he stated.</p>
<p>Later on, the rejections did not stop! Ma tried to get into Harvard Business School ten times, and got rejected every time. When he came to the USA in 2001 to raise $5 million investment, he got rejected. “…we [will] come back raising a little bit more,” he said.</p>
<p>Ma attributes his resilience and success as entrepreneur in part to the rejections he encountered all the way.</p>
<h3 id="heading-brian-acton">Brian Acton</h3>
<p><img src="https://cdn-media-1.freecodecamp.org/images/KNBNj9f2wn58rs7FS1WnE19I62h2vl6GKVi3" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Brian Acton, co-founder of WhatsApp, got his “best thing happened to me” rejections as well. In 2009, Acton —a software engineer with years of experience at Yahoo and Apple —got rejected by Twitter, then Facebook.</p>
<p>As no other company he aspired to join would hire him, he took the entrepreneurship route and started WhatsApp with Jan Koum — another Yahoo alum.</p>
<p>Five years later, the cloud-based messaging company co-founded by Acton changed how people text around the world. The company who rejected him earlier — Facebook — wanted him. This time, they had to pay $19 billion to acquire his company and hire him back.</p>
<h3 id="heading-brian-chesky">Brian Chesky</h3>
<p><img src="https://cdn-media-1.freecodecamp.org/images/rGQMbWaAevl2a5Ltw2u2kf5cUUMR5mlSoBGq" alt="Image" width="600" height="400" loading="lazy"></p>
<p>In 2008, Brian Chesky, co-founder and CEO of Airbnb, was a “nobody” entrepreneur looking for someone to believe in him, his small team, and their idea.</p>
<p>Chesky and his team were looking for $150,000 investment for 10% of Airbnb. One of his friends introduced him to seven potential investors. Five of them rejected him, and the other two didn’t bother to even reply to him.</p>
<p>Ten years later, in 2018, Airbnb is the largest hotel company in the world. Rejecting Chesky’s 10% offer turned to be a $3 billion mistake for those investors now that Airbnb is valued at $30 billion.</p>
<h3 id="heading-kevin-systrom">Kevin Systrom</h3>
<p><img src="https://cdn-media-1.freecodecamp.org/images/Ix-vK98BT-EYy4LMHDgUBwBl8GyXrc94LjpI" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Systrom, the co-founder of Instagram, joined Google right after graduating Stanford.</p>
<p>He worked with Salar Kamangar — a senior Google executive— who was impressed by Systrom, and wanted to transfer him to Googles’s Associate Product Manager (APM) program.</p>
<p>The APM program is an elite rotational program at Google where a select few are chosen and given vital roles in real-impact projects.</p>
<p>Systrom was rejected because the program only accepted candidates with a computer science degree. This occurred despite Salar Kamangar’s efforts to convince his fellow executives to accept Systrom who “is a brilliant self-taught programmer with a history of working closely with engineers to ship products”.</p>
<p>Frustrated by the rejection, Kevin left Google to later co-found Instagram in 2010 and sell it to Facebook for $1 billion two years later.</p>
<h3 id="heading-the-lesson">The lesson</h3>
<p>While rejection is a setback in the short term, it is a necessary step to potential significant outcomes in the long term that are unlikely to happen without it.</p>
<p>We have a choice. We can choose to get depressed over the rejections we receive because “we are not good”. Or we can choose to have faith that our future days want the superiority for us by getting in the way of inferiority. I choose the latter and I trust you do too!</p>
<h3 id="heading-sources">Sources</h3>
<p>[1] Einstein: <a target="_blank" href="https://en.wikipedia.org/wiki/Albert_Einstein">Wikipedia</a>, <a target="_blank" href="https://www.youtube.com/watch?v=Uvpw6Jh1WGQ">The Extraordinary Genius of Albert Einstein</a>.</p>
<p>[2]Srinivasa Ramanujan: <a target="_blank" href="https://en.wikipedia.org/wiki/Srinivasa_Ramanujan">Wikipedia</a>, <a target="_blank" href="https://blog.stephenwolfram.com/2016/04/who-was-ramanujan/">Who Was Ramanujan?</a></p>
<p>[3] Jack Ma: <a target="_blank" href="https://en.wikipedia.org/wiki/Jack_Ma">Wikipedia</a>, <a target="_blank" href="https://www.youtube.com/watch?v=2baJreTbMvs">Rejection — Jack Ma</a>.</p>
<p>[4] Brian Acton: <a target="_blank" href="https://en.wikipedia.org/wiki/Brian_Acton">Wikipedia</a>, <a target="_blank" href="https://www.forbes.com/sites/georgeanders/2014/02/19/he-wanted-a-job-facebook-said-no-in-a-3-billion-mistake/#bdd2cf852441">Forbes</a>.</p>
<p>[5] Brain Chesky: <a target="_blank" href="https://en.wikipedia.org/wiki/Brian_Chesky">Wikipedia</a> , <a target="_blank" href="https://medium.com/@bchesky/7-rejections-7d894cbaa084">Brian Chesky’s Medium</a></p>
<p>[6] Kevin Systrom: <a target="_blank" href="https://en.wikipedia.org/wiki/Kevin_Systrom">Wikipedia</a>, <a target="_blank" href="https://books.google.ca/books?id=fEJ0AwAAQBAJ&amp;printsec=frontcover&amp;source=gbs_ge_summary_r&amp;cad=0#v=onepage&amp;q&amp;f=false">How Google Works</a></p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How I took the first step towards learning to code ]]>
                </title>
                <description>
                    <![CDATA[ By Niamh McCooey A couple of months ago, I was chatting to a developer at work about how I’ve always wanted to learn to code but never tried. Coding always seemed like one of those skills that was incredibly powerful (hence the allure). At the same t... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/the-first-step-towards-learning-to-code-2e4c31e86630/</link>
                <guid isPermaLink="false">66d46041246e57ac83a2c79c</guid>
                
                    <category>
                        <![CDATA[ HTML ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Inspiration ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Life lessons ]]>
                    </category>
                
                    <category>
                        <![CDATA[ General Programming ]]>
                    </category>
                
                    <category>
                        <![CDATA[ tech  ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Sun, 04 Nov 2018 16:05:15 +0000</pubDate>
                <media:content url="https://cdn-media-1.freecodecamp.org/images/1*CFeeiP9bD0riPqSIfCzX6A.jpeg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Niamh McCooey</p>
<p>A couple of months ago, I was chatting to a developer at work about how I’ve always wanted to learn to code but never tried.</p>
<p>Coding always seemed like one of those skills that was incredibly powerful (hence the allure). At the same time coding felt hugely complicated and foreign.</p>
<p>Ever since I was an art student in college, coding, in my mind, always see-sawed between being geeky and glamorous. Glamorous because if you knew how to code that meant you were smart and successful. And geeky because, well, most depictions of programmers in popular culture look like this…</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/nfRdlv1hiH988xDoDqM7-FxSYU14fNJb6VPO" alt="Image" width="600" height="400" loading="lazy"></p>
<p>As a girl growing up in Dublin, I assumed you had to be ‘naturally good’ at computers to understand coding.</p>
<p>But I’ve learned that there is <strong>no such thing as ‘naturally good.’</strong></p>
<h3 id="heading-the-difference-between-techies-amp-non-techies">The Difference Between Techies &amp; Non-Techies</h3>
<p>As a non-programmer, everything to do with tech, for the most part, seems foreign, complex and very difficult to grasp. There’s so much of it, and that becomes overwhelming.</p>
<p>This is exactly where the divide between ‘techies’ and ‘non-techies’ pops up. I’ll use myself as an example here:</p>
<p>When I’m trying to figure something out on my computer — let’s say, how to customize a new application — I’ll try hard at first by focussing on this one problem. I’ll focus on it so much that I also end up focussing on a single solution, over and over again.</p>
<p>Then I’ll get frustrated, then feel bad because I can’t figure it out, and then give up.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/xMgp33dGmO0rpbL3LtnbEoXu36UZ3Wx-20I5" alt="Image" width="600" height="400" loading="lazy"></p>
<p>But when my partner tries to figure something out, he’ll do this:</p>
<ol>
<li><strong>Google</strong></li>
<li><strong>Test something out</strong></li>
<li><strong>Google again</strong></li>
<li><strong>Test something out again</strong></li>
<li><strong>Watch a few youtube tutorials</strong></li>
<li><strong>Read through some forums</strong></li>
<li><strong>Test something again</strong></li>
</ol>
<p>And usually, he’ll solve the problem. (And when he doesn’t, he’s not as frustrated as I usually am.)</p>
<p><strong>I used to think he ‘got it’.</strong></p>
<p>But actually he was curious (like me), and patient (not so much like me). It seems so obvious now. For a long time, I succumbed to thinking that we were two completely different types of people.</p>
<p>I was wrong.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/7i4inG4i9HOeaUHdXNsF5FrrmYnjFrmpSx-s" alt="Image" width="600" height="400" loading="lazy"></p>
<h3 id="heading-the-intimidation-game">The Intimidation Game</h3>
<p>I’m 29, a woman, grew up in Dublin, studied art in college, moved to London to do an MA in writing, where I now live and work. And even though I never considered myself a ‘techie’ person, I’ve always been curious about programming.</p>
<p><strong>I’ve also, always, felt too intimidated to try it.</strong></p>
<p>All I’ve ever known about coding was what I saw in films and TV growing up in Ireland in the early 2000s. I watched nerdy archetypes in movies type at lightning speed, read nonsensical symbols in strange interfaces and hack into the system’s mainframe.</p>
<p>Suffice it to say, I never identified with these characters. And so, unsurprisingly, <strong>never thought of myself as someone who could do it.</strong></p>
<h3 id="heading-why-now">Why Now?</h3>
<p>Cut to 10 weeks ago. I’m chatting to the developer at work about all this alluring code stuff. She tells me about <a target="_blank" href="http://www.codebar.io/">Codebar.</a> It is a weekly meetup aiming to diversify the tech industry. Codebar organizes free coaching sessions for people underrepresented in tech.</p>
<p>Sounded like the thing — a place to learn to code that’s designed to welcome complete newbies like me. So I thought, sure why not?</p>
<h3 id="heading-great-expectations">Great Expectations</h3>
<p>I went along to this meetup telling myself to be ‘realistic’ about what I wanted to achieve. You see when it comes to picking up new hobbies, I often have trouble managing my expectations. Most of the time I don’t have enough patience to wait for my skill set to level up to my enthusiasm. I get distracted by something else and the whole thing often fizzles out.</p>
<p>So walking in I said to myself, “Just take it one problem at a time. Don’t start telling everyone you want to become a developer.”</p>
<p>But here’s the thing: I want to become a developer.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/niNPueDfyi75HA71aRdjE9p7vqfqvnBEYxpe" alt="Image" width="600" height="400" loading="lazy"></p>
<h3 id="heading-i-want-more"><strong>I Want More</strong></h3>
<p>I’ve spent the last 10 weeks learning the most basic HTML and CSS and using it to build my <a target="_blank" href="https://niamhmccoo.github.io/">first ever website</a> (right now I’m experiencing the unprecedented joy of browser testing, so we’ll see how that goes later).</p>
<p>For any other complete beginners out there, I highly recommend the <a target="_blank" href="http://tutorials.codebar.io/">Codebar tutorials</a> for a basic introduction. I recommend <a target="_blank" href="https://flexboxfroggy.com/">Flexbox Froggy</a> for learning some cool front end displays. I recommend <a target="_blank" href="https://flukeout.github.io/">CSS Diner</a> for learning everything there is to know about selectors.</p>
<p>And while it is crazy difficult and there are constantly so many new problems that I had no idea were lurking in the margins, there really is no high like figuring out why some code doesn’t work and then fixing it. My synapses go crazy every single time, and I love it.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/7WzzMmw7cB8gEIQbjhXchHyA94LHGIqVKVR8" alt="Image" width="600" height="400" loading="lazy"></p>
<p>For every problem I’ve come across, I try to be patient while figuring it out. Now I google, and test, and read through forums. I ask lots of questions even if I think they’re stupid because you know what? Who cares. I’m new at this.</p>
<h3 id="heading-whats-the-point"><strong>What’s The Point?</strong></h3>
<p>My goal now is to become a developer in 6 months’ time.</p>
<p>Why 6 months? Because that happens to be when my work frees up. And if other people can do it, so can I, damnit. Just because I didn’t study computer science and didn’t know what Github was until a few weeks ago (still figuring that one out in full, to be honest), doesn’t mean I can’t get there eventually.</p>
<p>If you take one small problem at a time, you can manage it. And if you have kind people around you who are willing to help, all the better (and from my experience so far, the industry doesn’t have any shortage of this ❤).</p>
<p>As a complete code newbie, I’ll be documenting my journey on Medium from here on out. I will share the kinds of experiences and perspectives that I want others to share with me.</p>
<p>Hopefully, it will help other newcomers like myself realize that there are not just 2 types of people out there: those who just get it and those who don’t.</p>
<p>For me, this is lesson number one.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How I analyzed a million Medium articles to learn how many claps great stories get ]]>
                </title>
                <description>
                    <![CDATA[ By Harrison Jansma This article is for the writers of Medium. If you have ever been frustrated with the response your stories get, this article can help you. My name is Harrison Jansma, and I write about data. Over the last few weeks, I collected and... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-i-analyzed-a-million-medium-articles-to-learn-how-many-claps-great-stories-get-d688cf92759f/</link>
                <guid isPermaLink="false">66c34d35a7aea9fc97bdfb66</guid>
                
                    <category>
                        <![CDATA[ Data Science ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Inspiration ]]>
                    </category>
                
                    <category>
                        <![CDATA[ self-improvement  ]]>
                    </category>
                
                    <category>
                        <![CDATA[ tech  ]]>
                    </category>
                
                    <category>
                        <![CDATA[ writing ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Tue, 23 Oct 2018 19:57:30 +0000</pubDate>
                <media:content url="https://cdn-media-1.freecodecamp.org/images/1*Fa8l3RP4Pp4872OwTocfOg.jpeg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Harrison Jansma</p>
<p><em>This article is for the writers of Medium. If you have ever been frustrated with the response your stories get, this article can help you.</em></p>
<p>My name is Harrison Jansma, and I write about data. Over the last few weeks, I collected and analyzed the claps of a million Medium stories. So I could answer the question that bothers me most as a writer on Medium. Namely,</p>
<blockquote>
<p><em>How do my stories compare to those of similar writers on Medium?</em></p>
</blockquote>
<p>Though I am a writer, I am not a particularly creative one. To cope, I have to motivate my writing through competition. Making goals for myself based on either the performance of my past stories, or the performance of stories in my news-feed.</p>
<p><strong>Unfortunately, this comparison is slowly killing my ability to write.</strong></p>
<p>The problem is that I’m setting goals for my writing without knowing if these goals are reasonable.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/G1a8qlikoBp5kKGRTMGbe01prUDNV39tSWJ5" alt="Image" width="600" height="400" loading="lazy">
<em>Which of these is a reasonable goal?</em></p>
<p>Stories in my home-feed range from 40 claps to 30K claps. The first three stories I wrote on Medium ranged from 80 claps to 9K claps. So do I make my goal to get thirty thousand claps? Ten thousand claps? Just how many stories actually reach that level of reader-engagement?</p>
<p>As long as claps appear to vary wildly from story to story, writers can never use this metric to make goals for their writing.</p>
<p>So I made it my goal to understand Medium’s claps better. I collected data from hundreds of thousands of Medium stories, ranging in topic from poetry, to tech, to politics. With this data I found exactly what I was looking for.</p>
<p><strong>I found a way for authors to compare the performance of their writing to other, similar stories on Medium.</strong></p>
<h3 id="heading-scraping-a-million-medium-stories"><strong>Scraping a million Medium stories.</strong></h3>
<p>The first step was collecting information. Specifically, I had to get the claps received from A LOT of Medium articles.</p>
<p>So I strolled around the Medium <a target="_blank" href="https://medium.com/tag/data-science/archive">archives</a> for a few days. Then I created a web-scraper in Python (found on <a target="_blank" href="https://github.com/harrisonjansma/Analyzing_Medium">GitHub</a>). The web-scraper pulled data from thousands of story-cards.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/qiRCymOwTYpuCMzw-ZtM9rR94rwqy5SSNYzl" alt="Image" width="600" height="400" loading="lazy">
<em>Example of data scraped from a story-card.</em></p>
<p><strong>Once data collection was completed,</strong> <strong>I had data on 993K Medium articles.</strong> They covered 36 of the most popular Medium tags, all published in the last year (Aug, 2017-Aug, 2018).</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/BS3XxeyXqDqzguCZTp82GsIzZ5Oe7tTAt1NJ" alt="Image" width="600" height="400" loading="lazy"></p>
<h3 id="heading-analyzing-nearly-a-million-medium-stories">Analyzing (nearly) a million Medium stories</h3>
<p>After removing duplicate-stories and comments from the data, I was left with 720K unique stories from 230K authors and 30K publications. The number of claps received for an article ranged from zero claps to <a target="_blank" href="https://hackernoon.com/im-harvesting-credit-card-numbers-and-passwords-from-your-site-here-s-how-9a8cb347c5b5">215K claps</a>.</p>
<p>To better understand Medium’s clap metric, I needed to answer two questions.</p>
<ol>
<li>How many claps does the average story get?</li>
<li>How many claps does an above average story get?</li>
</ol>
<p>Let’s start with the first question.</p>
<h3 id="heading-how-many-claps-does-the-average-story-get">How many claps does the average story get?</h3>
<p>On Medium, most writers receive mediocre engagement from their readers. This might be because Medium is a free platform for writers. Or maybe because not every writer’s goal is to receive huge numbers of claps from their audience.</p>
<p><strong>Whatever the reason, most articles receive almost no applause</strong>. Of the 720K articles I analyzed, 61.3% received less than 10 claps.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/AaMMtD3kRzB3-tPHI2-0n4jyYr4dSxJO76ZN" alt="Image" width="600" height="400" loading="lazy"></p>
<p><strong>If you are a writer, you should not let this discourage you.</strong></p>
<p>Whether it be the time of day, or the mysteries of Medium’s recommendation engine, the engagement your stories receive is not really up to you.</p>
<p>However, the most successful authors on Medium didn’t get where they are by chance. They posted high-quality content (consistently) for a long time, and gradually built a following.</p>
<p>You can do the same.</p>
<h3 id="heading-how-many-claps-does-an-above-average-story-get">How many claps does an above average story get?</h3>
<p>Now that you know how many claps most stories receive, we will look at the other end of the spectrum: the stories that received more claps than average.</p>
<p>Unfortunately, there isn’t a distinct number of claps an article needs to be above average. What we need is to rephrase the question a bit. Instead we ask:</p>
<p><strong>How many claps do the top 1% of stories get?</strong></p>
<p>Of the 720K stories analyzed, the top 1% most-clapped stories received more than two thousand claps.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/fgxdN41uZIlk2kNyGR-HjmKD00o-t3SycXH5" alt="Image" width="600" height="400" loading="lazy"></p>
<p><em>This cutoff falls at exactly 2000.0 claps, rather than a number like 2112 because of the way the data was collected. Once you pass one thousand claps, Medium abbreviates your claps-received (ex. 2.2K). So the strict cutoff is somewhere between 2K and 2.1K. But two thousand is much cooler sounding… Sooo…</em></p>
<p><strong>So two thousand claps is the cutoff for a story being in the top 1% of Medium stories.</strong> From now on, when you write a story, you can use this as your goal for reader engagement. You can also use this as a benchmark to measure the performance of your past articles.</p>
<p>Two thousand claps is also a pretty good metric for your performance as an author.</p>
<p>Writing a story in the top 1% is no small feat. Of the 230K authors in the data, only 1.2% had written an article with more than two thousand claps.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/8b4Mxfu9zpfXkXoActdoWcd0eCof6fD7b2ck" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Even fewer authors were able to post articles with more than two thousand claps consistently. The following graph shows what I am talking about.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/6PFhMUUA5x-1QzZb-uqeIS2BvOe-x60NIEv9" alt="Image" width="600" height="400" loading="lazy"></p>
<p>But be advised, this cutoff for the top 1% includes articles written for vastly different genres.</p>
<p>Can we really compare the performance of a poetry story to that of a self-improvement story? Each has a vastly different audience, varying in size, taste, and personality.</p>
<p>Luckily, Medium already separates its content with tags. All we need to do is find the top 1% of each tag on Medium.</p>
<h4 id="heading-how-many-claps-do-the-top-1-of-each-tag-get">How many claps do the top 1% of each tag get?</h4>
<p>Here are the 99th percentiles of claps-received by an article for each of the 36 tags in our data.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/fZorT62hzde6AUndHgZ3XNrKjRNfwjmxvumk" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Some of Medium’s most followed tags (Self-Improvement, Productivity, Life-Lessons) have the highest cutoffs for being in the top 1%. While the tag with the most stories (Travel) had the lowest cutoff.</p>
<p>I haven’t been able to come up with a reason for this spread, so I would love to discuss this more in the comments.</p>
<p>Here are the individual 99th percentiles for each of the 36 story tags.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/h5KWt2Db1WcXb0d5XB1he5pjyxmuV9YBV-Cx" alt="Image" width="600" height="400" loading="lazy"></p>
<p>So there we have it! You can use the above numbers to compare the performance of your stories to that of similar authors on Medium.</p>
<p>For example, since this article has a data-science tag, I might make it my goal to get 2900 claps. If I could accomplish that level of reader-engagement, this article would be in the top 1% of data-science related articles on Medium.</p>
<h3 id="heading-conclusion">Conclusion</h3>
<p>Most Medium stories get less than ten claps, and the top 1% of Medium’s stories receive more than two thousand claps. You can use these metrics as benchmarks to measure the performance of your articles, or as a goal in writing future articles.</p>
<p>I also included the cutoff for the top 1% of 36 popular story tags, so you can compare your work to that of similar authors on Medium.</p>
<h4 id="heading-follow-me-if-you-want-more-high-quality-data-science-articles">Follow me if you want more high-quality data science articles. ?</h4>
<p>_There were a few things I learned about Medium that aren’t directly relevant to this article. So I wrote a comprehensive analysis of everything I found<strong>.</strong> If you want to know who were: the most clapped authors, the biggest publications, and much more, look <a target="_blank" href="https://github.com/harrisonjansma/Analyzing_Medium/blob/master/Medium_EDA.ipynb">here</a>._</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Change the world, one line of code at a time ]]>
                </title>
                <description>
                    <![CDATA[ By Usheninte Dangana People like to look at changing the world as a big task. I believe changing the world can be done in little steps. The key is identifying a problem and taking a little step. My journey began on Friday, September 7th, 2018. That w... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/change-the-world-one-line-of-code-at-a-time-5162b229f35e/</link>
                <guid isPermaLink="false">66d4608ba326133d12440a4f</guid>
                
                    <category>
                        <![CDATA[ coding ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Inspiration ]]>
                    </category>
                
                    <category>
                        <![CDATA[ JavaScript ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Life lessons ]]>
                    </category>
                
                    <category>
                        <![CDATA[ tech  ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Mon, 01 Oct 2018 22:22:01 +0000</pubDate>
                <media:content url="https://cdn-media-1.freecodecamp.org/images/1*cHz2cUq8zLjjSsB_e9vexw.jpeg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Usheninte Dangana</p>
<p>People like to look at changing the world as a big task. I believe changing the world can be done in little steps.</p>
<p>The key is identifying a problem and taking a little step.</p>
<p>My journey began on Friday, <strong>September 7th, 2018</strong>. That was the day I decided to build a React plugin for the freeCodeCamp Test Suite. I noticed a problem and I took action.</p>
<p>There is a <a target="_blank" href="https://www.npmjs.com/package/react-fcctest">working version</a> up for installation on the Node Package Manager registry. This is a milestone for me, as the project is my first Open Source contribution.</p>
<p>I used certain key technologies to build the project, like Webpack, React, NPM, and Node.js. I had a lot of fun building it, and I learned a lot, too.</p>
<p>I tried several times (for a whole day actually) before I could even succeed in making the plugin work.</p>
<p>After making it work, implementation in a React app was a challenge. Although I was faced with technical difficulties, in the end, the plugin worked.</p>
<h3 id="heading-the-process">The process</h3>
<p>The idea behind the project was simple. All I wanted to do was find a simple way to add the freeCodeCamp Test Suite to React apps.</p>
<p>My first plan was to build it with Create-React-App.</p>
<p>I felt that since I could use it to build React applications, I could use it to build a plugin. I was wrong.</p>
<p>Create-React-App was too heavy for what I needed to build.</p>
<p>I discovered that to make the plugin easy to export, I would need some extra configuration.</p>
<p>I went online and googled a couple of times, and came across Webpack and react-helmet. What I came across was both amazing and confusing, at first.</p>
<p>Still, I knew they were what I needed. I continued searching some more.</p>
<p>Before Webpack, I had tried exporting and publishing the plugin as a module with no extra configuration. It did not work. Newbie mistake, I know.</p>
<p>This was a big challenge that I had to overcome.</p>
<p>Thankfully, we learn as we grow!</p>
<p>While I was developing the plugin, there were constant power cuts. In Nigeria, the power situation is not very settled.</p>
<p>I had to work until my laptop powered out, then think deeply about what to do when power returned.</p>
<p>All of this happened on the second day (Saturday).</p>
<h3 id="heading-the-magic-the-beauty">The magic, the beauty</h3>
<p>Using Webpack, I began building the plugin.</p>
<p>I placed the core code in an index.js file. Here is the code below:</p>
<pre><code class="lang-js"><span class="hljs-keyword">import</span> React <span class="hljs-keyword">from</span> <span class="hljs-string">'react'</span>;
<span class="hljs-keyword">import</span> { Helmet } <span class="hljs-keyword">from</span> <span class="hljs-string">'react-helmet'</span>;
<span class="hljs-keyword">import</span> <span class="hljs-string">'./styles.css'</span>;

<span class="hljs-keyword">const</span> ReactFCCtest = <span class="hljs-function">() =&gt;</span> {
  <span class="hljs-keyword">return</span> (
    <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">div</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">Helmet</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">script</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"text/javascript"</span> 
                <span class="hljs-attr">src</span>=<span class="hljs-string">"https://cdn.freecodecamp.org/testable-projects-fcc/v1/bundle.js"</span> &gt;</span>
        <span class="hljs-tag">&lt;/<span class="hljs-name">script</span>&gt;</span>
      <span class="hljs-tag">&lt;/<span class="hljs-name">Helmet</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">h5</span>&gt;</span>react-fcctest running<span class="hljs-tag">&lt;/<span class="hljs-name">h5</span>&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span></span>
  );
};

<span class="hljs-keyword">export</span> <span class="hljs-keyword">default</span> ReactFCCtest;
</code></pre>
<p>The code above was all I needed to add the script to the head tag of any React app I desired.</p>
<p>I came across an <a target="_blank" href="https://medium.com/dailyjs/building-a-react-component-with-webpack-publish-to-npm-deploy-to-github-guide-6927f60b3220">article on Medium</a> which was a great help to me.</p>
<p>It helped me understand how to use Webpack to create a node module that I could successfully publish to the Node Package Manager registry.</p>
<p>I followed the instructions in that article. After making some changes, I built the following <strong>webpack.config.js</strong> file:</p>
<pre><code class="lang-js"><span class="hljs-keyword">const</span> path = <span class="hljs-built_in">require</span>(<span class="hljs-string">'path'</span>);
<span class="hljs-keyword">const</span> HtmlWebpackPlugin = <span class="hljs-built_in">require</span>(<span class="hljs-string">"html-webpack-plugin"</span>);
<span class="hljs-keyword">const</span> htmlWebpackPlugin = <span class="hljs-keyword">new</span> HtmlWebpackPlugin({
    <span class="hljs-attr">template</span>: path.join(__dirname, <span class="hljs-string">"demo/src/index.html"</span>),
    <span class="hljs-attr">filename</span>: <span class="hljs-string">"./index.html"</span>
});
<span class="hljs-built_in">module</span>.exports = {
    <span class="hljs-attr">entry</span>: path.join(__dirname, <span class="hljs-string">"demo/src/index.js"</span>),
    <span class="hljs-attr">output</span>: {
        <span class="hljs-attr">path</span>: path.join(__dirname, <span class="hljs-string">"demo/dist"</span>),
        <span class="hljs-attr">filename</span>: <span class="hljs-string">"bundle.js"</span>
    },
    <span class="hljs-attr">module</span>: {
        <span class="hljs-attr">rules</span>: [
            {
                <span class="hljs-attr">test</span>: <span class="hljs-regexp">/\.(js|jsx)$/</span>,
                use: <span class="hljs-string">"babel-loader"</span>,
                <span class="hljs-attr">exclude</span>: <span class="hljs-regexp">/node_modules/</span>
            },
            {
                <span class="hljs-attr">test</span>: <span class="hljs-regexp">/\.css$/</span>,
                use: [<span class="hljs-string">"style-loader"</span>, <span class="hljs-string">"css-loader"</span>]
            }
        ]
    },
    <span class="hljs-attr">plugins</span>: [htmlWebpackPlugin],
    <span class="hljs-attr">resolve</span>: {
        <span class="hljs-attr">extensions</span>: [<span class="hljs-string">".js"</span>, <span class="hljs-string">".jsx"</span>]
    },
    <span class="hljs-attr">devServer</span>: {
        <span class="hljs-attr">port</span>: <span class="hljs-number">3001</span>
    }
};
</code></pre>
<p>Let me explain what this file is doing:</p>
<blockquote>
<blockquote>
<p>First, it is using the HtmlWebpackPlugin to create an HTML file to serve my webpack bundle.</p>
<p>Next it is exporting the plugin I created as a node module.</p>
<p>It is saying that the entry point of my plugin is in the location <code>demo/src/index.js</code>. This means that this is where the code to be exported will be taken from.</p>
<p>Next, it is saying that the output directory of my plugin is  <code>demo/dist</code>. In this directory<strong>, the react-fcctest</strong> plugin will be exported in a file named  <code>bundle.js</code>.</p>
<p>Next it introduces a set of rules for the file that is to be exported.</p>
<p>The rules, tell the file to do two things. One, use babel-loader when working with  <code>.js</code> and <code>.jsx</code> files and do not include the <code>node_modules</code> folder. Two, use style-loader and css-loader when working with <code>.css</code> files.</p>
<p>The resolve and extensions part of the file allowed me to leave of the <code>.js</code> and <code>.jsx</code> from the end of my files while importing them.</p>
<p>Lastly, my development server was on port 3001. This port could have been any other of my choosing.</p>
</blockquote>
<p>I just noticed that beauty involves hard work…</p>
</blockquote>
<p>I added Webpack to the project on Sunday, and then the plugin worked!</p>
<p>With this, I was able to create a module that could be easily exported. This module was <strong>ReactFCCtest</strong>.</p>
<p>I cannot say how much the <strong>read-search-ask</strong> methodology helped me throughout the project.</p>
<p>Here is <a target="_blank" href="https://usheninte.github.io/react-fcctest/">Demo</a> of the finished plugin. It was very fun to build.</p>
<p>I tested it out in a freeCodeCamp project, and it worked perfectly.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*OL4Q9xvDLtsMcgY21--tOQ.gif" alt="Image" width="600" height="400" loading="lazy">
_Credit: [https://giphy.com](https://giphy.com/" rel="noopener" target="<em>blank" title=")</em></p>
<p>I created a <a target="_blank" href="https://github.com/Usheninte/react-fcctest">Github Repository</a> that holds all the open source code for the project.</p>
<h3 id="heading-how-to-install-and-use-react-fcctest"><strong>How to install and use <code>react-fcctest</code></strong></h3>
<p>Run <code>npm i react-fcctest</code> or <code>yarn add react-fcctest</code> to install the React plugin.</p>
<p>Place <code>import ReactFCCtest from 'react-fcctest';</code> in your App.js:</p>
<pre><code class="lang-js"><span class="hljs-keyword">import</span> React, { Component } <span class="hljs-keyword">from</span> <span class="hljs-string">'react'</span>;
<span class="hljs-keyword">import</span> ReactFCCtest <span class="hljs-keyword">from</span> <span class="hljs-string">'react-fcctest'</span>;

<span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">App</span> <span class="hljs-keyword">extends</span> <span class="hljs-title">Component</span> </span>{
  render() {
    <span class="hljs-keyword">return</span> (
      <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">div</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">ReactFCCtest</span> /&gt;</span>
      <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span></span>
    );
  }
};

<span class="hljs-keyword">export</span> <span class="hljs-keyword">default</span> App;
</code></pre>
<p>That is all there is to it!</p>
<h4 id="heading-final-notes">Final notes</h4>
<p>My 2018 so far has been amazing.</p>
<p>I am now the Developer Student Club Lead for my university, in a program powered by <strong>Google Developers</strong> in Sub-Saharan Africa.</p>
<p>I am aiming for greatness, in outer space — perhaps I might just land on a moon. <a target="_blank" href="https://twitter.com/Usheninte">Follow me</a> on my journey.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ The power of the developer community ]]>
                </title>
                <description>
                    <![CDATA[ By Joel Speed In the autumn of 2014, I started my adventure into the world of DevOps. Having just started my degree, I found a society at the university that was in desperate need of some IT love. My home for the next three years was at Warwick Stude... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/the-power-of-the-developer-community-2b6e713fc9ae/</link>
                <guid isPermaLink="false">66c362195c8b3e001e067e74</guid>
                
                    <category>
                        <![CDATA[ Blogging ]]>
                    </category>
                
                    <category>
                        <![CDATA[ community ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Devops ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Inspiration ]]>
                    </category>
                
                    <category>
                        <![CDATA[ tech  ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Thu, 20 Sep 2018 20:28:11 +0000</pubDate>
                <media:content url="https://cdn-media-1.freecodecamp.org/images/1*39yXxTeKLonaag8vJfjg1Q.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Joel Speed</p>
<p>In the autumn of 2014, I started my adventure into the world of DevOps. Having just started my degree, I found a society at the university that was in desperate need of some IT love. My home for the next three years was at <a target="_blank" href="https://warwick.film/">Warwick Student Cinema</a>.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/BufmiJ4tdnK0rolaro76iqb6Cq2n41YlrSBz" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Over the course of my degree, I tore every part of the cinema’s infrastructure apart and rebuilt it from scratch (not all single-handed, mind). Being on a tight budget, approximately £0 annually, the cinema’s infrastructure consisted of a number of hand-me-down machines that the university no longer required and a couple of <a target="_blank" href="https://en.wikipedia.org/wiki/1U">1U</a> Dell pizza boxes they bought as a one-off expense. On this, they hosted their public facing website, as well as a number of internal sites crucial to the running of the cinema.</p>
<p>The most important of these sites was known as EPOS. It was a PHP monolith, intertwined with the main public website that was written about 10 years prior by a handful of enthusiastic students and had been passed over year on year to the next IT officer in line.</p>
<p>This EPOS site was used to sell tickets for the cinema’s screenings approximately 7 times a week. At each screening, over a 30-minute window, we could sell up to 300 tickets. But, more often than not, the site would fall over and our duty managers would have to resort to using raffle tickets to count our attendees. Sadly, the systems had no redundancy, nothing horizontally scaled, and honestly, no one quite knew how anything pieced together.</p>
<p>I’d like to think that by the time I handed the IT Officer hat over to my successor, the infrastructure was in a better state. All of the Linux workloads had been migrated to Docker containers, running on a <a target="_blank" href="https://docs.docker.com/engine/swarm/">Swarm</a>. The container’s Dockerfiles were under source control, with automated builds and deploys using Jenkins.</p>
<p>We now understood the role of each part of the infrastructure, we could see in code what was running and where. The monolith could now horizontally scale and its up-time had greatly increased. I felt like myself and the few colleagues who helped me during this period had really made a difference to the systems we maintained.</p>
<h3 id="heading-nice-story-joel-but-what-has-this-got-to-do-with-community">Nice story Joel, but what has this got to do with community?</h3>
<p>None of what I’ve described above I could have done alone. I’m no genius. I didn’t just instantly know how to write a Dockerfile, or how to set up a Docker Swarm. The redundant firewalls I set up with complicated policy-based routing and <a target="_blank" href="https://en.wikipedia.org/wiki/Virtual_Router_Redundancy_Protocol">VRRP</a> on their internal and external interfaces, it wasn’t guesswork. I barely knew what Linux was when I started university!</p>
<p>Everything I did, everything I learned during this period, came from the internet, the community. I spent countless hours on Google — going from tutorials on topics such as how to generate a <a target="_blank" href="https://en.wikipedia.org/wiki/Certificate_signing_request">CSR</a> to StackOverflow questions which matched the error string I had just encountered. I trawled support forums for <a target="_blank" href="https://www.pfsense.org/">pfSense</a> as I tried to work out how to get traffic routing between multiple <a target="_blank" href="https://en.wikipedia.org/wiki/Virtual_LAN">VLANs</a>. And I read articles on best practices for reducing single points of failures. All of the answers I found, everything I read, had been contributed by people in their spare time.</p>
<p>The community inspired me. There were so many people out there who were willing to give up their time, to share their expertise, to help people by writing, maintaining and responding to issues on open source projects. I feel like I learned so much over the three year period and I genuinely believe I wouldn’t be in my current role without all this. I feel indebted to the community for helping me to get to where I am today.</p>
<h3 id="heading-so-the-community-got-you-where-you-are-today">So the community got you where you are today?</h3>
<p>That’s exactly what I’m saying! Without the time and effort that countless members of the community spent on their blogs and tutorials, I would not have managed most of the projects I took on at the cinema, nor would I have learned so much!</p>
<p>It got me thinking. I wanted to be able to give back, take what I had learned and become an active member of the community. If these people were helping me so much, could I possibly help them and repay the favor?</p>
<p>I came to the conclusion that I might be doing some interesting things at the cinema. Perhaps I had spent enough time learning from others that now I could start contributing back to the community. I bought myself a <a target="_blank" href="https://joelspeed.co.uk/">personal domain</a> and decided that I would start blogging, with the hope that someday people might find my ramblings useful.</p>
<p>This didn’t go quite as planned. It took me a full 3 years from purchasing my domain to actually putting a blog up on it. I’m fortunate that my company, <a target="_blank" href="https://pusher.com/">Pusher</a>, is supportive of my wanting to write and to give back to the community. In March of this year, I managed to write my first blog post and have now been published on <a target="_blank" href="https://thenewstack.io/kubernetes-single-sign-one-less-identity/">The New Stack</a>, and <a target="_blank" href="https://www.infoq.com/articles/tips-running-scalable-workloads-kubernetes">InfoQ</a>. I’ve spoken at 2 meetups and I’ve been pushing to open-source a bunch of projects I’ve worked on since I joined Pusher. Five have been shared so far!</p>
<p>What I have come to realize over the last year is that it’s not as hard to contribute to the community as I thought it would be, and that actually, I have been working on some interesting stuff. I’ve had a number of people reach out to me, talk to me after talks, asking me questions or for more detail on the work I’ve done. A couple of times people have just told me they’ve read my work and used it as a guideline for their own projects. I’m glad I have managed to help these people and started to help others as many others helped me.</p>
<h3 id="heading-why-open-source-your-work">Why Open Source your work?</h3>
<p>The projects we’ve open sourced at Pusher aren’t particularly big and they give us no competitive advantage over any of our competitors. They are related to our Kubernetes infrastructure. Where we couldn’t find an existing solution in the community, we wrote the tools we needed, and now we are sharing them so that other people, trying to solve the same problems, need not spend their time writing their own version.</p>
<p>Perhaps you’ve worked on something that is similar, is it open source? Could it be? I would like to encourage you to share it if you can.</p>
<h3 id="heading-my-plea">My plea</h3>
<p>If you got this far, thank you, I have a favor to ask. Whether you’re a developer or an accountant, whether you work in PR or in Sales, you will know something that someone else doesn’t. You will be an expert at something even if you don’t know that you are. Have a think on that and then put pen to paper (or digital equivalent).</p>
<p>Write an article and share your experience. Write an article and help someone learn, and further themselves. Help them understand something they’ve been trying to wrap their head around for days. Write an article and, like so many did for me, inspire someone.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ I attended the first ever Warri Tech Awareness Event. Here’s what I learned. ]]>
                </title>
                <description>
                    <![CDATA[ By Charles Freeborn In the city of Warri, Delta state of Nigeria, there is a saying that goes “Warri nor dey carry last, if e hard well well na draw”. This translates to “Warri is never behind in the scheme of things (events)”. Not oblivious to the f... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/i-attended-the-first-ever-warri-tech-awareness-event-heres-what-i-learned-fcc8d584cb0a/</link>
                <guid isPermaLink="false">66d45de0182810487e0ce108</guid>
                
                    <category>
                        <![CDATA[ education ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Inspiration ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Life lessons ]]>
                    </category>
                
                    <category>
                        <![CDATA[ startup ]]>
                    </category>
                
                    <category>
                        <![CDATA[ tech  ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Fri, 09 Feb 2018 08:49:28 +0000</pubDate>
                <media:content url="https://cdn-media-1.freecodecamp.org/images/1*DLC28KxrprzMRZtPCUJRRg.jpeg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Charles Freeborn</p>
<p>In the city of Warri, Delta state of Nigeria, there is a saying that goes “<em>Warri nor dey carry last, if e hard well well na draw</em>”. This translates to “<em>Warri is never behind in the scheme of things (events)”.</em></p>
<p>Not oblivious to the fact that technology is changing the course of events across cities, nations, and the world, a group of tech enthusiasts (code named <a target="_blank" href="https://twitter.com/warritechnetwok">Warri Tech Network</a>), led by <a target="_blank" href="https://twitter.com/okoropaul">Paul Okoro</a>, organized the Warri Tech Awareness week 2018, <a target="_blank" href="https://twitter.com/hashtag/wataw18?src=hash">#wataw18</a>.</p>
<p>The Warri Tech Network is driven by the cardinal goals of:</p>
<ol>
<li><p>Developing a vibrant tech ecosystem in the city.</p>
</li>
<li><p>Exposing the technological solutions from Warri to the world.</p>
</li>
<li><p>Inspiring the youths in Warri to make career choices in tech, like becoming software developers.</p>
</li>
<li><p>Encouraging the adoption of technology in the city and the state through collaborations with the Delta state government.</p>
</li>
</ol>
<p>Armed with these goals, they embarked on a week-long awareness campaign. The campaign, which began on January 29, 2018, came to a climax on February 3, 2018 with a summit — The Warri Tech Event.</p>
<p>During the course of the week, the team organized sensitization campaigns like paying visits to a radio station, some business owners, and an interactive session with college students of the Petroleum Training Institute, Effurun, Delta state.</p>
<h4 id="heading-saturday-february-3-2018-the-warri-tech-awareness-event">Saturday, February 3, 2018 — the Warri Tech Awareness event</h4>
<p>A tech awareness event with an attendance of over 50 persons cut across college students, software developers, and a representation from the Delta state government was exciting and inspiring.</p>
<p>It was especially inspiring to have a representative of the commissioner for science and technology deliver the keynote address.</p>
<p>The panel session on Creating a Tech-Enabling Environment in Warri gives credence to the fact that there are seasoned professionals in every city. For instance, I got to meet one of the panelists, <a target="_blank" href="https://www.freecodecamp.org/news/i-attended-the-first-ever-warri-tech-awareness-event-heres-what-i-learned-fcc8d584cb0a/undefined">Omawumi Eyekpimi</a>, an Android developer and writer based in Warri.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/cxZCvuYhOZiZVyP2LlKjROqArNZlA9Egxp8b" alt="Image" width="600" height="400" loading="lazy">
_L-R [Victor Otaigho](https://twitter.com/LeBelleAmi" rel="noopener" target="_blank" title=""&gt;Omawumi Eyekpimi Android Developer, Barr. Austin Ngwu, Benedicta Orioko<strong>, <a href="https://twitter.com/tobyadaz" target="_blank"></a></strong><a href="https://twitter.com/tobyadaz" target="_blank">Tobore Adakaraza</a>, &lt;a href="https://twitter.com/votaigho" rel="noopener" target="<em>blank" title=")</em></p>
<h4 id="heading-key-takeaways">Key Takeaways</h4>
<ol>
<li>Setting up a tech community requires just a few passionate individuals who are willing to contribute their time and resources. And the rest will be history.</li>
<li>People are in search of knowledge and direction. If you have that knowledge, you can help them see further by allowing them to stand on your shoulders.</li>
<li>It turned out that Warri has some amazing software developers. I had an awesome time listening to them talk about their solutions during the technological product exhibition.</li>
</ol>
<p>Learning to code is one of the major steps you’d take when switching into a career in technology. A vibrant tech community can help accelerate your growth. You can sign up with <a target="_blank" href="https://www.freecodecamp.org">freeCodeCamp</a> and start the journey to becoming a web developer.</p>
<p>You can join the <a target="_blank" href="https://web.facebook.com/groups/112469779363884/">freeCodeCamp Warri study group</a>. I created this group some time ago, and I look forward to having coffee with campers who are in Warri.</p>
<p>Follow the twitter handle of <a target="_blank" href="https://twitter.com/warritechnetwok">Warri Tech Network</a> and be a part of the birthing of a tech ecosystem in Warri. You can also reach out to <a target="_blank" href="https://twitter.com/okoropaul/">Paul Okoro</a> and <a target="_blank" href="https://twitter.com/LeBelleAmi">Omawumi Eyekpimi</a>.</p>
<p>Here is a <a target="_blank" href="http://techtins.com/post/wataw18-summit-gallery/">link to the photos</a> from the event.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ To self-doubting developers: are you good enough? ]]>
                </title>
                <description>
                    <![CDATA[ By Sihui Huang Does any of the following sound familiar? You constantly worry that you are not good enough. Look at the developers around you. They seem to have everything together. Their code is cleaner than yours. They debug much faster than you do... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/to-self-doubting-developers-are-you-good-enough-13de8ebdf53a/</link>
                <guid isPermaLink="false">66c3636bef766eb77cd787f8</guid>
                
                    <category>
                        <![CDATA[ Imposter syndrome ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Inspiration ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Life lessons ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Web Development ]]>
                    </category>
                
                    <category>
                        <![CDATA[ women in tech ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Sat, 16 Dec 2017 16:10:51 +0000</pubDate>
                <media:content url="https://cdn-media-1.freecodecamp.org/images/1*6KarxFu-F1o7YYkPxQCWDA.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Sihui Huang</p>
<p>Does any of the following sound familiar?</p>
<p>You constantly worry that you are not good enough.</p>
<p>Look at the developers around you. They seem to have everything together. Their code is cleaner than yours. They debug much faster than you do. They merely glance at documentation before knowing what they need. They are confident. They enjoy coding.</p>
<p>But you, you are worried. You worry that you don’t know enough about the framework and the language you are using. You worry about introducing bugs. You worry about catching up with the hottest technologies. You worry that you are not talented enough. Things don’t come naturally to you. You think to yourself: “Maybe I’m not meant to be a developer.”</p>
<p>If any of these self-doubting thoughts sounds familiar to you, you are not alone. Google “self-doubt developers”, and you will find over 2 million results in less than a second.</p>
<h3 id="heading-i-was-you"><strong>I was you.</strong></h3>
<p>For a period of time, I also experienced intense self-doubt, wondering if I would ever “make it”. It happened in college when I was practicing and preparing for job interviews. Each day, those algorithm problems made me feel like a complete failure. I was stressed and worried, as much as you might be now.</p>
<p>Eventually, my practice paid off and I received multiple job offers from prestigious tech companies. Along the way, I learnt two important lessons that changed my view of programming and eliminated my self-doubting thoughts. I’m sharing them with you now. Hopefully, they help.</p>
<h3 id="heading-lesson-1-learning-programming-is-exactly-the-same-as-building-muscles">Lesson #1: Learning programming is exactly the same as building muscles</h3>
<p>To learn to play soccer, you need to go to the field and play. To build stronger muscles, you need to go to the gym and lift those weights. To learn programming, you need to sit down and code.</p>
<p>After lifting weights, you will feel sore and tired the next day. When stuck on a programming problem, your brain will (literally) hurt and you will get frustrated.</p>
<p>You won’t give up working out simply because of feeling sore. You know it’s part of the process. But when you get stuck while programming, you might start doubting yourself, wondering if you are talented enough. Because: (1) you think getting stuck is your fault, (2) others make it seemed effortless.</p>
<h4 id="heading-1-getting-stuck-is-part-of-the-process"><strong>1. Getting stuck is part of the process.</strong></h4>
<p>Maybe no one has told you that, but it’s absolutely normal to get stuck during programming. It happens even to senior developers. A big part of programming is about figuring out why what you expected to happen didn’t happen. If you agree that expecting a child to be able to walk the first time he or she stands up is absurd, why would you expect the first draft of your code to run perfectly without any bugs?</p>
<p>I remember times when <a target="_blank" href="https://twitter.com/sihui_io/status/940813707646513152">I got stuck for so long that I wanted to bang my head against a wall</a>. I know it’s hard and frustrating (especially when dealing with issues related to dev environments). But hang in there. Dig into the issue. Ask Google. Ask a friend. Take a walk. You will eventually solve it and move on. And as you gain more experience, you will gradually get stuck less.</p>
<p>Next time you get stuck, don’t give yourself a hard time. Remind yourself it’s not your fault. It’s normal. It’s part of the process.</p>
<p><strong>PS — Setting up a dev environment might be the most difficult part of programming.</strong></p>
<p>It’s very common to get stuck and spend days on setting up a development environment. These are moments that might crush your soul. You try to follow the instructions step by step. But random errors keep showing up in every single step. The instructions make it seem easy, but it’s not. It’s not your fault getting stuck. 99.99% of the people reading that tutorial get stuck. The remaining 0.01% are the lucky ones who happen to have the exact same operating system setup as the instructor.</p>
<p>It’s unfortunate that the first step of learning to program is also the most frustrating and soul-crushing part. When you see errors you can’t understand, just copy the exact error message and Google it. (Putting quotes around the error message or just search the first half of the message might help.) Try different solutions until you find the one that works. And move on.</p>
<p>Pardon me for repeating: <strong>getting stuck at this stage is not your fault. We ALL do.</strong> And I promise programming will become a lot more fun once you get past this stage.</p>
<h4 id="heading-2-we-confuse-genetically-smart-with-appeared-smart-because-the-person-has-spent-tons-of-time-on-related-subjects"><strong>2. We confuse “</strong>genetically <strong>smart” with “appeared smart because the person has spent tons of time on related subjects”</strong></h4>
<p>During my last semester in college, my friends were amazed by how well I did in the Advanced Data Structures &amp; Algorithms class. I made it seem effortless while they were struggling.</p>
<p>What they didn’t know was that months before the class, to prepare for interviews, I had spent countless hours practicing coding challenges, which covered the exact same topics as the class: dynamic programming, depth-first search, breadth-first search, etc. <strong>It appeared effortless only because I had already been through these struggles.</strong></p>
<p>When I first self-taught these concepts, I would spend hours staring at a problem and couldn’t figure it out. When I gave up and looked up solutions online, I struggled to understand them. When I finally did, I felt even more frustrated because I doubted I would ever be smart enough to come up with such a solution myself.</p>
<p>Sometimes even when I encountered the exact same problem again, I might’ve still had no clue on how to approach it. I would get so stressed that I had to take long hot showers to calm myself down.</p>
<p>So believe me when I say that I know how it feels to doubt yourself and worry that you can’t make it. I have been there before. And I can assure you that you are not alone. Many great developers have been through the same thing. (Here is <a target="_blank" href="https://devchat.tv/ruby-rogues/271-rr-problems-new-developers-dont-realize-they-have-and-hidden-tradeoffs-to-coding-decisions-developers-have-to-make-with-justin-weiss">a podcast about this topic</a>.)</p>
<p>Next time you are struggling while people around you are excelling, don’t think it’s because you are not talented enough. Most likely, they just have more exposure to the subject, or similar subjects, than you. Their brains have built up the “muscles” to handle this type of subject. After you get through your current struggles, you will appear smart and effortless as well.</p>
<p><strong>It’s all about reps and sets.</strong></p>
<p>You build muscles by exercising them. The more effort you put in, the longer you train, the stronger you become. Learning programming has the exact same process. The more time you spend coding, the more proficient you will be. You reap what you sow.</p>
<h3 id="heading-lesson-2-focus-on-your-craft-not-you">Lesson #2: Focus on your craft, not you</h3>
<p>Stop thinking about how good or how bad of a programmer you are. If you are in the bottom 5% of your team, you want to get better. If you are in the top 5%, you still want to get better. No matter how good or bad you are, there are always people in front of you and people behind you. So why waste time thinking about it?</p>
<p>Instead, focus on your craft. Stop asking how good you are. Ask how good your code is. How can you make it better, faster, more readable? Surround yourself with engineers you admire. Read their code. How is it different than yours? What are the trade-offs they are making?</p>
<p>If you already work as a software engineer, someone is paying you to write code. You should pause and reflect on it, as it means a lot: someone either believes in your coding skill or sees your potential. The only way to live up to that potential is to focus on your craft and improve it relentlessly.</p>
<h3 id="heading-action-item-start-keeping-track-of-small-wins">Action Item: Start keeping track of small wins</h3>
<p>When was the last time you got stuck and weren’t sure if you could solve the problem? How did you eventually solve it?</p>
<p>Open a new Google Doc and write it down.</p>
<p>Next time you doubt yourself, take a look at the doc and remind yourself: if you could solve that last problem, you will solve this one as well.</p>
<p>Use the doc to keep track of challenging problems you overcame and what you learned from them. Always, always celebrate these small wins!</p>
<p>Leave a comment and share the last time you got stuck to remind those who are currently struggling that they are not alone. ?</p>
<p>Want to read about my career in tech? Check out my <a target="_blank" href="http://www.sihui.io/category/career/">other articles</a>.</p>
<p>Have other questions related to programming?</p>
<p>Please shoot me an email: sihui@sihui.io</p>
 ]]>
                </content:encoded>
            </item>
        
    </channel>
</rss>
