<?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[ Taisuke Mino - 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[ Taisuke Mino - freeCodeCamp.org ]]>
            </title>
            <link>https://www.freecodecamp.org/news/</link>
        </image>
        <generator>Eleventy</generator>
        <lastBuildDate>Tue, 19 May 2026 04:42:46 +0000</lastBuildDate>
        <atom:link href="https://www.freecodecamp.org/news/author/taisuke/rss.xml" rel="self" type="application/rss+xml" />
        <ttl>60</ttl>
        
            <item>
                <title>
                    <![CDATA[ Solidity Tutorial – How to Create NFTs with Hardhat ]]>
                </title>
                <description>
                    <![CDATA[ I'm a developer who's mostly been writing JavaScript, so the Solidity development environment was a bit hard to learn.  About four months ago, I switched to Hardhat from Truffle. This cool new kid on the block drastically improved my coding experienc... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/solidity-tutorial-hardhat-nfts/</link>
                <guid isPermaLink="false">66b99a2f9aaac6f19de58aff</guid>
                
                    <category>
                        <![CDATA[ Blockchain ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Ethereum ]]>
                    </category>
                
                    <category>
                        <![CDATA[ NFT ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Smart Contracts ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Solidity ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Taisuke Mino ]]>
                </dc:creator>
                <pubDate>Mon, 17 May 2021 14:39:55 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2021/05/hardhat_nft-1.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>I'm a developer who's mostly been writing JavaScript, so the Solidity development environment was a bit hard to learn. </p>
<p>About four months ago, I switched to <a target="_blank" href="https://hardhat.org/">Hardhat</a> from Truffle. This cool new kid on the block drastically improved my coding experience. So today I want to share it with my fellow Solidity developers.</p>
<p>In this post, I will walk you through the initial set-up, compilation, testing, debugging, and finally deployment.</p>
<p>At the end of this post, you will be able understand how to deploy an NFT contract to the local network with Hardhat. </p>
<p>The goal of this post is to make you familiar with Hardhat. I won’t talk about how to write a test or Solidity syntax. However, you should be able to follow along without any Solidity knowledge if you know how to write JavaScript.</p>
<p>See <a target="_blank" href="https://github.com/taisukemino/hardhat-nft-tutorial">this repo</a> for the code.</p>
<h2 id="heading-how-to-set-up-the-project">How to Set Up the Project</h2>
<p>Let’s start an npm project first:</p>
<pre><code>npm init --yes
</code></pre><p>Then install the Hardhat package:</p>
<pre><code>npm install --save-dev hardhat
</code></pre><p>Cool! Now you are ready to create a new Hardhat project:</p>
<pre><code>npx hardhat
</code></pre><p>Choose <code>Create an empty hardhat.config.js</code>:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/05/image-1.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>This will create <code>hardhat.config.js</code> in your root directory with the solidity compiler version specified:</p>
<pre><code class="lang-js"><span class="hljs-comment">/**
 * <span class="hljs-doctag">@type </span>import('Hardhat/config').HardhatUserConfig
 */</span>
<span class="hljs-built_in">module</span>.exports = {
  <span class="hljs-attr">solidity</span>: <span class="hljs-string">"0.7.3"</span>,
};
</code></pre>
<h2 id="heading-how-to-write-and-compile-the-contract">How to Write and Compile the Contract</h2>
<p>All right, we will start writing a simple contract and then we'll compile it.</p>
<p>Make a new Solidity file within a new <code>contracts</code> directory:</p>
<pre><code> mkdir contracts &amp;&amp; cd contracts &amp;&amp; touch MyCryptoLions.sol
</code></pre><p>We'll use the open-zeppelin package to write our NFT contract. So first, install the open-zeppelin package:</p>
<pre><code>npm install --save-dev @openzeppelin/contracts
</code></pre><p>Here is the contract code we will be compiling:</p>
<pre><code class="lang-solidity"><span class="hljs-meta"><span class="hljs-keyword">pragma</span> <span class="hljs-keyword">solidity</span> ^0.7.3;</span>

<span class="hljs-keyword">import</span> <span class="hljs-string">"@openzeppelin/contracts/token/ERC721/ERC721.sol"</span>;

<span class="hljs-class"><span class="hljs-keyword">contract</span> <span class="hljs-title">MyCryptoLions</span> <span class="hljs-keyword">is</span> <span class="hljs-title">ERC721</span> </span>{
    <span class="hljs-function"><span class="hljs-keyword">constructor</span>(<span class="hljs-params"><span class="hljs-keyword">string</span> <span class="hljs-keyword">memory</span> name, <span class="hljs-keyword">string</span> <span class="hljs-keyword">memory</span> symbol</span>)
        <span class="hljs-title">ERC721</span>(<span class="hljs-params">name, symbol</span>)
    </span>{}
}
</code></pre>
<p>The first thing you need to do in any solidity file is to declare the compiler version. Then we can import the ERC721 contract (NFT contract) from open-zeppelin just like you do in JavaScript.</p>
<p>Solidity is a contract-oriented language. Just like an object-oriented language, contracts can have members such as functions and variables. In our code, we have only the constructor, which will be called when we deploy our contract.</p>
<p>Our contract inherits the ERC721 and then passes the <code>name</code> and <code>symbol</code> arguments which are going to be passed to the ERC721 contract. They literally decide the name and symbol of your NFT token.</p>
<p>We will pass whatever values we want to <code>name</code> and <code>symbol</code> at the point of deployment.</p>
<p>To compile it, run:</p>
<pre><code>npx hardhat compile
</code></pre><p>You might get some warnings but we'll ignore them to keep things simple. You should see <code>Compilation finished successfully</code> at the bottom.</p>
<p>You should also notice that the <code>/arfifacts</code> and <code>/cache</code> directories were generated. You don’t have to worry about them for this post, but it’s good to keep in mind that you can use <code>abi</code> in the artifacts if you want to interact with the contract when you build the frontend.</p>
<h2 id="heading-how-to-test-the-contract">How to Test the Contract</h2>
<p>Since smart contracts are mostly financial applications – and they're also hard to change – testing is critical.</p>
<p>We will use some packages for testing. Install with the command below:</p>
<pre><code>npm install --save-dev @nomiclabs/hardhat-waffle ethereum-waffle chai @nomiclabs/hardhat-ethers ethers
</code></pre><p><code>ethereum-waffle</code> is a testing framework for smart contracts. <code>chai</code> is an assertion library. We'll write tests in waffle using Mocha alongside Chai. <code>ethers.js</code> is a JavaScript SDK for interacting with the Ethereum blockchain. The other two packages are plugins for Hardhat.</p>
<p>Now, let’s make a new directory <code>test</code> in the root directory and make a new file called <code>test.js</code> in it:</p>
<pre><code>mkdir test &amp;&amp; cd test &amp;&amp; touch test.js
</code></pre><p>Make sure you require <code>@nomiclabs/hardhat-ethers</code> in the <code>hardhat.config.js</code> to make it available everywhere:</p>
<pre><code><span class="hljs-built_in">require</span>(<span class="hljs-string">"@nomiclabs/hardhat-ethers"</span>);
</code></pre><p>Here is a simple test:</p>
<pre><code class="lang-js"><span class="hljs-keyword">const</span> { expect } = <span class="hljs-built_in">require</span>(<span class="hljs-string">"chai"</span>);

describe(<span class="hljs-string">"MyCryptoLions"</span>, <span class="hljs-function"><span class="hljs-keyword">function</span> (<span class="hljs-params"></span>) </span>{
  it(<span class="hljs-string">"Should return the right name and symbol"</span>, <span class="hljs-keyword">async</span> <span class="hljs-function"><span class="hljs-keyword">function</span> (<span class="hljs-params"></span>) </span>{
    <span class="hljs-keyword">const</span> MyCryptoLions = <span class="hljs-keyword">await</span> hre.ethers.getContractFactory(<span class="hljs-string">"MyCryptoLions"</span>);
    <span class="hljs-keyword">const</span> myCryptoLions = <span class="hljs-keyword">await</span> MyCryptoLions.deploy(<span class="hljs-string">"MyCryptoLions"</span>, <span class="hljs-string">"MCL"</span>);

    <span class="hljs-keyword">await</span> myCryptoLions.deployed();
    expect(<span class="hljs-keyword">await</span> myCryptoLions.name()).to.equal(<span class="hljs-string">"MyCryptoLions"</span>);
    expect(<span class="hljs-keyword">await</span> myCryptoLions.symbol()).to.equal(<span class="hljs-string">"MCL"</span>);
  });
});
</code></pre>
<p>This code deploys our contract to the local Hardhat network and then checks if the <code>name</code> and <code>symbol</code> values are what we expect.</p>
<p>Run the test:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/05/image-2.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Awesome, it passed the test!</p>
<h3 id="heading-how-to-use-consolelog-in-hardhat">How to Use console.log() in Hardhat</h3>
<p>Now here is the coolest thing you can do with Hardhat. You can use <code>console.log()</code> just like you do in JavaScript, which was not possible before. <code>console.log()</code> alone is more than enough reason to switch to Hardhat. </p>
<p>Let’s go back to your solidity file and use <code>console.log()</code>.</p>
<pre><code>pragma solidity ^<span class="hljs-number">0.7</span><span class="hljs-number">.3</span>;

<span class="hljs-keyword">import</span> <span class="hljs-string">"@openzeppelin/contracts/token/ERC721/ERC721.sol"</span>;
<span class="hljs-keyword">import</span> <span class="hljs-string">"hardhat/console.sol"</span>;

contract MyCryptoLions is ERC721 {
    <span class="hljs-keyword">constructor</span>(string memory name, string memory symbol) ERC721(name, symbol) {
        <span class="hljs-built_in">console</span>.log(<span class="hljs-string">"name"</span>, name);
        <span class="hljs-built_in">console</span>.log(<span class="hljs-string">"symbol"</span>, symbol);
        <span class="hljs-built_in">console</span>.log(<span class="hljs-string">"msg.sender"</span>, msg.sender); <span class="hljs-comment">//msg.sender is the address that initially deploys a contract</span>
    }
}
</code></pre><p>And run the test again with <code>npx hardhat test</code>. Then the command will compile the contract again, and then run the test. You should be able to see some values logged from the contract.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/05/image-3.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>This makes debugging a lot easier for you.</p>
<p>One caveat is that it supports only these data types:</p>
<ul>
<li>uint</li>
<li>string</li>
<li>bool</li>
<li>address</li>
</ul>
<p>But other than that, you can use it as if you are writing JavaScript.</p>
<h2 id="heading-how-to-deploy-the-contract">How to Deploy the Contract</h2>
<p>All right! Now let’s deploy our contract. We can deploy our contract to one of the testing networks, the Mainnet, or even a mirrored version of the Mainnet in local. </p>
<p>But in this post, we will deploy to the local in-memory instance of the Hardhat Network to keep things simple. This network is run on startup by default.</p>
<p>Make a new directory called <code>scripts</code> in the root directory and <code>deploy.js</code> in it.</p>
<pre><code>mkdir scripts &amp;&amp; cd scripts &amp;&amp; touch deploy.js
</code></pre><p>Here is the deploy script. You deploy along with constructor values:</p>
<pre><code class="lang-js"><span class="hljs-keyword">async</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">main</span>(<span class="hljs-params"></span>) </span>{
  <span class="hljs-keyword">const</span> MyCryptoLions = <span class="hljs-keyword">await</span> hre.ethers.getContractFactory(<span class="hljs-string">"MyCryptoLions"</span>);
  <span class="hljs-keyword">const</span> myCryptoLions = <span class="hljs-keyword">await</span> MyCryptoLions.deploy(<span class="hljs-string">"MyCryptoLions"</span>, <span class="hljs-string">"MCL"</span>);

  <span class="hljs-keyword">await</span> myCryptoLions.deployed();

  <span class="hljs-built_in">console</span>.log(<span class="hljs-string">"MyCryptoLions deployed to:"</span>, myCryptoLions.address);
}

main()
  .then(<span class="hljs-function">() =&gt;</span> process.exit(<span class="hljs-number">0</span>))
  .catch(<span class="hljs-function">(<span class="hljs-params">error</span>) =&gt;</span> {
    <span class="hljs-built_in">console</span>.error(error);
    process.exit(<span class="hljs-number">1</span>);
  });
</code></pre>
<p>You might want to remove <code>console.log()</code> before you deploy. And then run this deploy script with:</p>
<pre><code>npx hardhat run scripts/deploy.js
MyCryptoLions deployed to: <span class="hljs-number">0x5FbDB2315678afecb367f032d93F642f64180aa3</span>
</code></pre><p>Boom! Now your NFT contract is deployed to the local network. </p>
<p>You can target any network configured in the <code>hardhat.config.js</code> depending on your needs. You can find more about configuration <a target="_blank" href="https://hardhat.org/config/">here</a>.</p>
<h2 id="heading-wrapping-up">Wrapping Up</h2>
<p>Hardhat has some other cool features like helpful stack trace, support for multiple Solidity compiler versions, a robust Mainnet forking, great TypeScript support and contract verification in Etherescan. But that’s for another time!</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How I Became a Software Developer Without a CS Degree ]]>
                </title>
                <description>
                    <![CDATA[ I've recently founded a crypto startup and built a mobile crypto wallet from scratch. When I was freelancing, my hourly rate as a programmer quintupled in a few years. And now I am confident that I can program anything if I invest my time into it. It... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-i-became-a-software-developer-without-a-cs-degree/</link>
                <guid isPermaLink="false">66b99a2c489480391dfe7a1f</guid>
                
                    <category>
                        <![CDATA[ learning to code ]]>
                    </category>
                
                    <category>
                        <![CDATA[ self-improvement  ]]>
                    </category>
                
                    <category>
                        <![CDATA[ software development ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Taisuke Mino ]]>
                </dc:creator>
                <pubDate>Wed, 10 Feb 2021 00:12:16 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2021/02/tai-story-header-image.jpeg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>I've recently founded a crypto startup and built a mobile crypto wallet from scratch. When I was freelancing, my hourly rate as a programmer quintupled in a few years. And now I am confident that I can program anything if I invest my time into it.</p>
<p>It took some time to get here. I started coding a few years after my college graduation. I wish I'd started earlier. Even after I started to program, I struggled to gain momentum.</p>
<p>What blocked me from starting and gaining momentum was a combination of my biased preconceptions, creative excuses, and wrong approaches. </p>
<p>If you are interested in programming but haven’t started yet, my story might help you to start right now. If you've started already but have been struggling to gain momentum, this story might help you build that momentum up.</p>
<h2 id="heading-how-my-preconceptions-blocked-me-from-starting-earlier">How My Preconceptions Blocked Me From Starting Earlier</h2>
<p>I was mostly brought up in a small city in the western part of Japan. In this city, almost nobody cared about computer technology. I was not an exception. </p>
<p>In my school, the computer lab was usually filled only with machines, and we humans were outside playing football. My family had an old Windows computer in the corner of a living room but nobody cared about it much. </p>
<p>Having been heavily influenced by my environment, I didn’t use a computer much up until high school. In college, I got my first cheap HP computer that my cousin chose for me. But I used it only for taking notes and surfing the Internet.</p>
<p>About a year and a half later, I was typing on a computer in a Silicon Valley startup during my summer vacation. I wish I had started coding back then, but no. I was not even planning to go there. I was there merely because this internship program looked more challenging in comparison to other options. </p>
<p>I remember that one of the interns there was teaching himself Perl. This was one of a few occasions where I was exposed to programming. But I didn’t even pay much attention to it. The idea of teaching myself programming didn’t even cross my mind.</p>
<p>Ever since I was labeled as a non-engineering student in high school (we have to choose between a humanities courses and science courses for a college exam), I had this almost unconscious preconception that I could not learn to code because I was not an engineering major. </p>
<p>Well, this was absurd. You don’t need a degree as long as you have a basic understanding of math. I’m talking about elementary school level math such as arithmetic operations that small kids are often able to learn within a month. </p>
<p><strong>So don’t disqualify yourself</strong>. Everybody can learn to code. <a target="_blank" href="https://www.businessinsider.com/homeless-coders-trees-for-cars-app-2013-12">This amazing homeless person</a> with no programming experience launched his iOS app in three months.</p>
<p>After graduating from college, I went to design school for my master’s degree. At this point, I was heavily inspired by the Silicon Valley startup culture through books and another visit there. That was one of the reasons why I chose to go to a design school. I wanted to teach myself how to design a product.</p>
<p>During a crash course prior to first semester, one class taught the basics of programming. Looking back, this was another good chance to get started, but I didn’t. I thought it was too late. </p>
<p>It’s funny that people in their early twenties (like my previous self) say that they are too old to start programming. If you google something like “programming am I too old”, you can find a bunch of examples of people who started relatively later in life <a target="_blank" href="https://news.ycombinator.com/item?id=1444486">like this one</a>. </p>
<p><a target="_blank" href="https://twitter.com/realchrishawkes">Chris Hawkes</a> began programming at the age of 27. You can see that he knows an incredible amount of stuff if you watch <a target="_blank" href="https://www.youtube.com/user/noobtoprofessional/videos">his videos</a>. </p>
<p>Is he too young for you? Jens Skou started programming at 70. And <a target="_blank" href="https://www.aarp.org/work/working-at-50-plus/info-2018/worlds-oldest-app-developer-fd.html">this woman built her first app at the age of 82</a>! It’s <strong>too soon to say it's too late</strong>.</p>
<p>I came up with other nonsensical excuses such as “Soon AI is gonna code for us!” Looking back, those excuses probably came from my defense mechanism to avoid pain. </p>
<p>If you want to be a programmer, you should <strong>be willing to be the dumbest person in the room</strong> and embarrass yourself as a noob. And you know what, that’s how we improve ourselves. I don’t want to be the smartest person in a room. That’s the wrong room for me. I want to be surrounded only by smarter people. </p>
<p>I also don’t want to be the strongest person in a gym. I want to be the weakest so that I can learn from others and push myself harder. Learning to program is a great opportunity for you to be the dumbest.</p>
<h2 id="heading-how-excuses-and-the-wrong-approach-lead-to-false-starts">How excuses and the wrong approach lead to false starts</h2>
<p>My first serious attempt was when I started a lab project in grad school. We were prototyping an IoT device for pets. To see some activity in this device, we decided to make a mobile app. </p>
<p>Although we already had a programmer on our team, I volunteered to build the app with them. At that time, I didn’t even know what the heck HTML is. </p>
<p>With no basic knowledge, I ambitiously started to teach myself Objective-C, which is the language to build iOS apps. The other programmer had already started building, and I was told to buy a thick book about Objective-C. </p>
<p>I started to read the book and understood basic concepts like variables and functions, but it was boring. I remember I could not reason about it when the other programmer explained to me what his code was doing. </p>
<p>The gibberish code was overwhelming and I was confused. I couldn’t even explain what I didn’t know. I didn’t know where to start.</p>
<p>You want to be careful when you decide what to build initially. I should have <strong>started small and slowly layered up from there</strong>. The mobile app for the IoT device was too complex for me to wrap my head around back then. </p>
<p>Also, working with another programmer might not be a good idea initially unless the goal of a project is for you to learn. You want to <strong>learn at your own pace first</strong>.</p>
<p>In this first attempt, I gave up in less than a month. I told myself, “It doesn’t click for me. I should focus on my strengths.” </p>
<p>Now I want to tell my previous self that <strong>a programmer is the scribe of today</strong>. It is hard to imagine but people used to think that not everybody had to learn to read and write. </p>
<p>In our time, most of us still seem to think that not everybody has to read and write computer language. My hunch is that, in a not so distant future, everybody in this world is going to program. </p>
<p>Some progressive schools teach it already. Your kids will be surprised that you don’t know how to code. Programming will be both more essential and less professional as it spreads widely in our society.</p>
<p>Before the second year began, I ended up dropping out of grad school to work on a startup with my friend. I could design a bit back then, but I was mostly a marketing guy. </p>
<p>At that time I had to face my harsh reality: I was useless. Non-programmers are usually not helpful in the early stage of a tech startup because the most important thing at this stage is to get to a product-market fit. </p>
<p>To get there, we needed to build a prototype quickly, launch it early and often, test the idea, and then iterate on this process. It was frustrating and I was jealous to see other folks building a product.</p>
<p>After I left this startup, out of this creator envy, I applied to work as a software engineer intern in a small startup. I had spent some time going over some courses online, and luckily they let me in. </p>
<p>There were only two full-time developers, and they asked that I show some tangible results. They were writing Ruby on Rails, and again, I struggled to learn. </p>
<p>Unlike the first attempt, I was actually writing some code, but I still didn’t know what I was doing. I was simultaneously taking some online courses as well, but I didn’t feel like I was making good progress.</p>
<p>When you work for a company, you might have to build on top of other people’s code. This is what happened to me. All I did was fix their bugs or add small features. I didn’t know how the whole code worked, and I did not know what I was doing. </p>
<p>It’s great to work for a company because you might be able to meet a great mentor. But I don’t recommend committing to their existing code base at first because you might fail to understand the foundation. I’d say it's best to <strong>start by building something from scratch</strong>.</p>
<h2 id="heading-put-yourself-in-a-situation-where-you-have-to-code">Put Yourself in a Situation Where You Have to Code</h2>
<p>I left this startup pretty quickly, and I was thinking about what to do to brush up on my coding skills. Then when I was talking to my friend about it, he told me that he got a small gig online without even knowing how to get it done. </p>
<p>I liked this reckless idea, so I went to a crowdsourcing site and got a small gig. The gig was to build a simple form but I didn’t even know how to do that back then. But I <strong>faked it until I made it</strong>. The client was a bit angry at me (sorry!), but I somehow shipped the code.</p>
<p>I liked this approach for two reasons. The first was that I could build something from scratch as I mentioned before. The second was that this absolute necessity to code has become a forcing function for me. </p>
<p>I could've also done the work for my friends for free, but I liked that I was getting paid for the gig because then I had to get it done no matter what. <strong>Put yourself in a situation where you have to code</strong>.</p>
<p>You might feel that you are not ready to take a job, but I’d say it’s usually a good idea to start before you feel ready. </p>
<p>I am not saying that you don’t have to understand programming fundamentals. But we programmers are often required to start building with the minimum knowledge and learn on the fly anyway. We tend to do what we can’t. So <strong>start building before you feel ready</strong>.</p>
<p>I could have come up with what I wanted to build and worked on it but I didn’t. I think this was because I was trying to build something big or novel. If you are in the same situation, <strong>don’t let perfectionism or ambition stop you from starting</strong>. It’s not gonna be your last application.</p>
<p>Now I think of the learning process as climbing a wall. Initially, you don’t want to attempt the wall that is too high because it discourages you from starting. You might get exhausted and give up even if you do start. </p>
<p>Instead, <strong>deliberately try out a wall that is just beyond your current ability</strong>. Then climb that wall no matter what, learn a lot in the process, try out the higher wall next, and repeat. Eventually, you will find yourself building something complex.</p>
<p>The small gig was my turning point. After that, I took more jobs to build some landing pages and WordPress sites. From there, I made more dynamic applications such as other WordPress sites, and an e-commerce site for a client. </p>
<p>Along the way, I also built my own projects with ReactJS and Electron. I became unstoppable. I had finally gained momentum.</p>
<h2 id="heading-coding-is-the-closest-thing-we-have-to-a-superpower">Coding Is the Closest Thing We Have to a Superpower</h2>
<p>I made many mistakes along the way. If I was free from biased preconceptions and avoided creative excuses and wrong approaches, I could have gained momentum a lot earlier. </p>
<p>But I can say this: <strong>learning to program was one of the best decisions I’ve ever made in my life</strong>. </p>
<p>Programming has given me so much. It has taught me how to solve problems. It has allowed me to understand cutting edge technology in depth. It has given me the joy of building things. And it has given me the power to build a product and ship it to the world only with a small laptop.</p>
<blockquote>
<p>“Coding is the closest thing we have to a superpower.”<br>Drew Houston, the Founder of Dropbox</p>
</blockquote>
<p>Good luck! 💪</p>
 ]]>
                </content:encoded>
            </item>
        
    </channel>
</rss>
