<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Andrew James Okpainmo</title>
    <description>The latest articles on DEV Community by Andrew James Okpainmo (@okpainmo).</description>
    <link>https://dev.to/okpainmo</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F619863%2F323c18a7-9dbc-475d-b90e-052a5e01917e.jpg</url>
      <title>DEV Community: Andrew James Okpainmo</title>
      <link>https://dev.to/okpainmo</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/okpainmo"/>
    <language>en</language>
    <item>
      <title>5 Selected Platforms To Find Web3 Jobs In 2024</title>
      <dc:creator>Andrew James Okpainmo</dc:creator>
      <pubDate>Sun, 28 Apr 2024 11:58:24 +0000</pubDate>
      <link>https://dev.to/web3mastery/5-selected-platforms-to-find-web3-jobs-in-2024-dmo</link>
      <guid>https://dev.to/web3mastery/5-selected-platforms-to-find-web3-jobs-in-2024-dmo</guid>
      <description>&lt;p&gt;The long-awaited crypto/web3 bull run is here and it's truly an awesome time to be in the web3 space.&lt;/p&gt;

&lt;p&gt;With Bitcoin hitting a new all-time high of over $70K, and the general web3 space doing quite well for a while now, the potential&lt;br&gt;
of getting hired as a blockchain/web3 professional is now higher.&lt;/p&gt;

&lt;p&gt;Whether you're from a technical web3 background or not, this is a great time to put your acts together and make the best &lt;br&gt;
of all your efforts towards securing your next web3 job.&lt;/p&gt;

&lt;p&gt;In this article, I'm listing out 5 &lt;strong&gt;carefully hand-picked&lt;/strong&gt; web3 platforms where you can find web3 jobs in 2024. These platforms &lt;br&gt;
were carefully selected based on different relevant criteria to prevent this article from becoming just another spam "X platforms to find web3 jobs" article.&lt;/p&gt;

&lt;p&gt;Below are the &lt;strong&gt;"5 Selected Platforms to help you find web3 jobs in 2024"&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. &lt;a href="https://web3.career/" rel="noopener noreferrer"&gt;Web.career&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5ng6mz761i5clhjpuwb4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5ng6mz761i5clhjpuwb4.png" alt="screenshot from the web3.career website" width="800" height="446"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Web3.career is a web3 jobs platform that I've been using personally. &lt;/p&gt;

&lt;p&gt;Somehow, this platform has made itself a stand-out platform when it comes to finding web3 jobs. It's Probably the most popular web3 &lt;br&gt;
jobs platform currently available.&lt;/p&gt;

&lt;p&gt;Even though I generally haven't had the best experience with using the platform, I trust that it's still one of the best platforms to&lt;br&gt;
help you find your next web3 job in 2024.&lt;/p&gt;

&lt;p&gt;Do check it out and explore your chances. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Link&lt;/strong&gt;: &lt;a href="https://web3.career/" rel="noopener noreferrer"&gt;Web.career&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  2. &lt;a href="https://cryptojobslist.com/" rel="noopener noreferrer"&gt;CryptoJobsList&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy51esae3mjpmm37a298r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy51esae3mjpmm37a298r.png" alt="screenshot from the CryptoJobsList website" width="800" height="464"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;CryptoJobsList, is one of the most impressive web3 jobs platforms you will find out there. From a beautiful user interface to the &lt;br&gt;
highly professional service offerings on the platform, CryptoJobsList almost made it to number 1 in this article.&lt;/p&gt;

&lt;p&gt;There's even more. &lt;/p&gt;

&lt;p&gt;The platform goes way beyond with a dedicated Telegram channel(currently having over 10K subscribers). With Telegram, &lt;br&gt;
you can certainly receive notifications about new job postings all on the go.&lt;/p&gt;

&lt;p&gt;You can also find links on the platform to help you access their bot provisions for Telegram and Discord.&lt;/p&gt;

&lt;p&gt;In all, CryptoJobsList is one of the best platforms to help you get a web3 job as fast and as conveniently as possible.&lt;/p&gt;

&lt;p&gt;I highly recommend CryptoJobsList.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Link&lt;/strong&gt;: &lt;a href="https://cryptojobslist.com/" rel="noopener noreferrer"&gt;CryptoJobsList&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  3. &lt;a href="https://wellfound.com/web3" rel="noopener noreferrer"&gt;Wellfound(Web3)&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdtfm4qepglqp5wzrf09x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdtfm4qepglqp5wzrf09x.png" alt="screenshot from the Wellfound website" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I bet you never knew that Wellfound(formerly "AngelistList Talent") has a dedicated web3 section on their web platform. &lt;/p&gt;

&lt;p&gt;Well, now you know!&lt;/p&gt;

&lt;p&gt;Wellfound remains one of the most popular and well-established job platforms on the planet. With a section dedicated to web3, this helps streamline your search and makes the process of finding web3-only jobs much easier compared to a platform like Linkedin.&lt;/p&gt;

&lt;p&gt;Wellfound boasts of helping top web3 companies like &lt;a href="https://opensea.io/" rel="noopener noreferrer"&gt;Opensea&lt;/a&gt; and &lt;a href="https://uniswap.org/" rel="noopener noreferrer"&gt;Uniswap&lt;/a&gt;, in building &lt;br&gt;
their engineering teams. Wellfound is definitely one of the best platforms to try out if you wish to find a top web3 job in 2024.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Link&lt;/strong&gt;: &lt;a href="https://wellfound.com/web3" rel="noopener noreferrer"&gt;Wellfound(Web3)&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  4. &lt;a href="https://calyptus.co/" rel="noopener noreferrer"&gt;Calyptus&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5byls6bva4ruryy5id2g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5byls6bva4ruryy5id2g.png" alt="screenshot from the the Calyptus website" width="800" height="427"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Calyptus is another web3 platform to help you find your next web3 job in 2024.&lt;/p&gt;

&lt;p&gt;Beyond just jobs, Calyptus is a more vast platform that provides educational support by providing various web3 resources to users.&lt;/p&gt;

&lt;p&gt;I added Calyptus to this list thanks to how active the platform is with regards to hiring on Linkedin. &lt;/p&gt;

&lt;p&gt;You can also follow Calyptus on Linkedin to increase of your chances of securing that next web3 role.&lt;/p&gt;

&lt;p&gt;Wishing you all the best.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Link&lt;/strong&gt;: &lt;a href="https://calyptus.co/" rel="noopener noreferrer"&gt;Calyptus&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  5. &lt;a href="https://www.linkedin.com/jobs/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr36xkskgav06bzbv9cye.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr36xkskgav06bzbv9cye.png" alt="Image description" width="800" height="572"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And yes, LinkedIn made it into the list. &lt;/p&gt;

&lt;p&gt;LinkedIn remains one of the best platforms to find web3 jobs at the moment. The most important &lt;br&gt;
point that accounts for that is the fact that LinkedIn is the most popular professional/job-based social media platform currently &lt;br&gt;
available. By effectively combining the ability to easily connect with the recruiter/job poster, You can easily apply cold-emailing&lt;br&gt;
strategies and further increase your chances of getting hired.&lt;/p&gt;

&lt;p&gt;LinkedIn might not be the perfect place to find the most web3 jobs, but it certainly remains one of the most important.&lt;/p&gt;

&lt;p&gt;Go ahead and hop on Linkedin, build your profile, connect with other professionals in the web3 space, and engage and apply for jobs.&lt;/p&gt;

&lt;p&gt;Wishing you all the best.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Link&lt;/strong&gt;: &lt;a href="https://www.linkedin.com/jobs/" rel="noopener noreferrer"&gt;Linkedin&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;There you have it folks - "5 awesome platforms to help you find web3 jobs in 2024". &lt;/p&gt;

&lt;p&gt;I'm confident that this article will be one you remember as a result of how it enabled you explore the web3 jobs platform that finally lands you your next web3 role.&lt;/p&gt;

&lt;p&gt;I hope it does.&lt;/p&gt;

&lt;p&gt;Thanks for reading.&lt;/p&gt;

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

</description>
      <category>web3</category>
      <category>webcareer</category>
      <category>web3jobs</category>
      <category>blockchain</category>
    </item>
    <item>
      <title>How To Learn Solidity In 2024</title>
      <dc:creator>Andrew James Okpainmo</dc:creator>
      <pubDate>Wed, 17 Apr 2024 01:49:21 +0000</pubDate>
      <link>https://dev.to/web3mastery/how-to-learn-solidity-in-2024-47ll</link>
      <guid>https://dev.to/web3mastery/how-to-learn-solidity-in-2024-47ll</guid>
      <description>&lt;p&gt;&lt;em&gt;post banner credit: &lt;a href="https://soliditylang.org/" rel="noopener noreferrer"&gt;https://soliditylang.org/&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I suppose you know by now, what &lt;a href="https://soliditylang.org/" rel="noopener noreferrer"&gt;Solidity&lt;/a&gt;(the programming language) is all about. &lt;/p&gt;

&lt;p&gt;Just in case you do not, no worries as I'll be explaining that in just a bit. &lt;/p&gt;

&lt;p&gt;For short, Solidity is a programming language that is used for building smart contracts.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Smart contracts are autonomous computer programs that are executed in a decentralized manner - without the need&lt;br&gt;
of a centralized or third-party entity. They are basically sets of computer codes that control the execution of &lt;br&gt;
agreements/transactions on top of blockchains. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;To give you a first-hand look of how smart contracts are written in Solidity, just below is some Solidity smart contract code, &lt;br&gt;
The code below shows how to use variables, structs(a data type), functions and a lot more in Solidity.&lt;/p&gt;

&lt;p&gt;As can be easily deduced, the smart contract creates a new user(programmaticPerson), provides for assigning certain data to the &lt;br&gt;
person(through the person struct), and then also provides for obtaining those individual data (that were added) about the person.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// solidity code

    // SPDX-License-Identifier: MIT

    pragma solidity ^0.8.0;

    contract PracticeContract {
        uint private myNumber;

        struct PersonStruct {
            string name;
            uint favouriteNumber;
            bool isMale;
        }

        PersonStruct private programmaticPerson;

        function setPerson(
            string memory _name,
            uint _favouriteNumber,
            bool _isMale
        ) public {
            programmaticPerson = PersonStruct({
                name: _name,
                favouriteNumber: _favouriteNumber,
                isMale: _isMale
            });
        }

        function getProgrammaticPerson() public view returns (PersonStruct memory) {
            return programmaticPerson;
        } 

        // Function to get the name of the programmatic person
        function getProgrammaticPersonName() public view returns (string memory) {
            return programmaticPerson.name;
        }

        // Function to get the favorite number of the programmatic person
        function getProgrammaticPersonFavouriteNumber() public view returns (uint) {
            return programmaticPerson.favouriteNumber;
        }

        // Function to get the gender of the programmatic person
        function getProgrammaticPersonGender() public view returns (bool) {
            return programmaticPerson.isMale;
        }
    }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In this article, I'll be sharing some important details about Solidity, and also giving you some pro-guidance on how best to &lt;br&gt;
approach learning Solidity - especially if you want to become a blockchain/smart-contract developer in 2024.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I'll be using the above code-snippet more in this article, so as to help your understanding and drive home the message a &lt;br&gt;
lot better.&lt;/strong&gt; &lt;/p&gt;
&lt;h2&gt;
  
  
  A little more about Solidity.
&lt;/h2&gt;

&lt;p&gt;According to the &lt;a href="https://soliditylang.org/" rel="noopener noreferrer"&gt;Solidity website&lt;/a&gt;; &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Solidity is "A statically-typed curly-braces programming language designed for developing smart contracts that run on &lt;br&gt;
&lt;a href="https://ethereum.org/" rel="noopener noreferrer"&gt;Ethereum&lt;/a&gt;"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Even though Solidity can also be used on &lt;a href="https://solana.com" rel="noopener noreferrer"&gt;Solana&lt;/a&gt; as explained &lt;br&gt;
&lt;a href="https://www.quicknode.com/guides/solana-development/solidity/solang-get-started" rel="noopener noreferrer"&gt;in this article&lt;/a&gt;, Solidity was primarily &lt;br&gt;
created for programming smart contracts on Ethereum.&lt;/p&gt;

&lt;p&gt;Now that you've gotten a good introduction as to what Solidity is all about, Let's move on to explaining how you should approach &lt;br&gt;
learning solidity in 2024 - expecially if you're intending to become a smart contract developer.&lt;/p&gt;

&lt;p&gt;This article is best suited for folks that are totally new to programming - especially those who are just at the beginning &lt;br&gt;
of their software engineering/development careers - with Solidity as their first programming language. It's also a perfect &lt;br&gt;
resource for folks who have some programming experience, but have not learnt or used Javascript earlier. &lt;/p&gt;

&lt;p&gt;It's also important to note that the inspiration for this article came through my personal experience. I hope my experience &lt;br&gt;
helps you discover a better approach that empowers you to learn Solidity in a way that will be more rewarding.  &lt;/p&gt;
&lt;h2&gt;
  
  
  How you should approach learning Solidity in 2024.
&lt;/h2&gt;

&lt;p&gt;Below are some key-notes to consider if you wish to Learn Solidity for smart contract development in 2024.&lt;/p&gt;
&lt;h3&gt;
  
  
  1. Learn Javascript first.
&lt;/h3&gt;

&lt;p&gt;The main reason why I recommended this, is the fact that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;As a Solidity developer, you will most-likely need Javascript when working with your smart contracts&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Whether you're a seasoned programmer with experience in working with different programming languages, or just a starter&lt;br&gt;
in the tech space. As long as you intend to become a smart contract developer, learning Javascript is a task you'll hardly &lt;br&gt;
escape.&lt;/p&gt;

&lt;p&gt;A practical example of this, is when working with Hardhat. Hardhat is a javascript-based smart contract development framework&lt;br&gt;
/suite that provides blockchain developers with the necessary stack of tools they need to work with smart contracts. It is&lt;br&gt;
an all-in-one tool for developing, testing, deploying and even interacting with smart contracts.&lt;/p&gt;

&lt;p&gt;In the case of using Hardhat, even though your smart contracts are written in Solidity, you will still need Javascript to &lt;br&gt;
write you test and script like your deployment script(s), or scripts to interract with functionalities provided in &lt;br&gt;
the smart contact.&lt;/p&gt;

&lt;p&gt;Furthermore, when it comes to interracting with your smart contracts(especially in a front-end application) after &lt;br&gt;
deploying them, you'll still need libraries likely &lt;a href="https://docs.ethers.org/v6/" rel="noopener noreferrer"&gt;Ethers js&lt;/a&gt; and &lt;br&gt;
&lt;a href="https://web3js.readthedocs.io/en/v1.10.0/" rel="noopener noreferrer"&gt;Web3 js&lt;/a&gt; or more robust tools like &lt;br&gt;
&lt;a href="https://docs.moralis.io/" rel="noopener noreferrer"&gt;Moralis&lt;/a&gt; and &lt;a href="https://wagmi.sh/" rel="noopener noreferrer"&gt;Wagmi&lt;/a&gt; - &lt;strong&gt;which are all Javascript based&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It's all boils down to the fact that - you'll certainly need Javascript at one point or the other in your career as a blockchain&lt;br&gt;
developer. &lt;/p&gt;

&lt;p&gt;You might still be wondering why you need to "learn Javascript &lt;strong&gt;first&lt;/strong&gt;" - this next point addresses that.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Javascript is a simpler and loose programming language - hence will be more easy to learn than Solidity&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Javascript is a simple programming langauge. To add to this, is the fact that it is also a dynamically-typed(you don't need to &lt;br&gt;
declare types) and loosely typed(it's ability to do &lt;strong&gt;"super-silly"&lt;/strong&gt; things like adding/concatenating a &lt;strong&gt;string&lt;/strong&gt; to/with a &lt;br&gt;
&lt;strong&gt;number&lt;/strong&gt;) programming language, unlike Solidity which is a statically-typed programming language.&lt;/p&gt;

&lt;p&gt;All these &lt;strong&gt;disadvatages&lt;/strong&gt; of using Javascript, do serve as potential advantages to folks who are learning it for the first time.&lt;br&gt;
The loose and dynamically-typed nature of Javascript saves you from a "nosy tantrum-throwing compiler" &lt;br&gt;
that keeps complaining about your code until you get it right. Those complaints can be frustrating - especially for&lt;br&gt;
newbies.&lt;/p&gt;

&lt;p&gt;The third reason why it's a good-idea to learn Javascript before Solidity, has to do with &lt;strong&gt;similarity in syntax&lt;/strong&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Solidity is quite similar to Javascript syntax-wise&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The two code-snippets below, show how to write two selected functions from the above smart contract in both Solidity and &lt;br&gt;
Javascript.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// solidity code

    // SPDX-License-Identifier: MIT

    ...

        function setPerson(
            string memory _name,
            uint _favouriteNumber,
            bool _isMale
        ) public {
            programmaticPerson = PersonStruct({
                name: _name,
                favouriteNumber: _favouriteNumber,
                isMale: _isMale
            });
        }

        function getProgrammaticPerson() public view returns (PersonStruct memory) {
            return programmaticPerson;
        } 

    ...

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

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// javascript code&lt;/span&gt;

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

        &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;setPerson&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
            &lt;span class="nx"&gt;_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="nx"&gt;_favouriteNumber&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="nx"&gt;_isMale&lt;/span&gt;
        &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
           &lt;span class="nx"&gt;programmaticPerson&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="na"&gt;favouriteNumber&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;_favouriteNumber&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="na"&gt;isMale&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;_isMale&lt;/span&gt;
            &lt;span class="p"&gt;};&lt;/span&gt;

           &lt;span class="cm"&gt;/* do something with programmaticPerson like 
           using it to update a database, then 'returning' to end the function*/&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;

        &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;getProgrammaticPerson&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;programmaticPerson&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt; 

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

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

&lt;/div&gt;



&lt;p&gt;The code snippets above, reveal very practically - the similarity in syntax between Javascript and Solidity.&lt;/p&gt;

&lt;p&gt;Both syntax are very similar - except for some extra foreign/unique concepts in both language like how they declare variables&lt;br&gt;
differently, types and return-types, visibility, and storage - all in solidity, and more other differences. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Combining the above factor about syntax-similarity and the previous ones - especially the one about Javascript being easier to&lt;br&gt;
learn, it's simply a no-brainer to learn Javascript before taking on Solidity.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;
  
  
  2. Learn Typescript next.
&lt;/h3&gt;

&lt;p&gt;After learning Javascript, there's still one more hurdle I recommend that you cross before proceeding to learn Solidity. &lt;br&gt;
&lt;strong&gt;That's Typescript&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;If you're not new to software development, I bet you've heard about Typescript by now. But Just in case you have not;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Typescript is a &lt;strong&gt;superset&lt;/strong&gt; of Javascript. Not really a "programming language" Per se. but more like a tool/compiler that &lt;br&gt;
serves as a type-checking wrapper for Javascript. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The term &lt;strong&gt;superset of Javascript&lt;/strong&gt; simply means that every Javascript is&lt;br&gt;
valid Typescript. Typescript simply improves Javascript by introducing &lt;strong&gt;types&lt;/strong&gt;, hence serving as a statically-typed version of&lt;br&gt;
Javascript that makes up for it's shortcomings.&lt;/p&gt;

&lt;p&gt;Below are three code snippets showing a similar way to write the same code in Javascript, Typescript, and Solidity.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// javascript code&lt;/span&gt;

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

    &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;programmaticPerson&lt;/span&gt;

    &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;setPerson&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="nx"&gt;_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="nx"&gt;_favouriteNumber&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="nx"&gt;_isMale&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nx"&gt;programmaticPerson&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="na"&gt;favouriteNumber&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;_favouriteNumber&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="na"&gt;isMale&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;_isMale&lt;/span&gt;
        &lt;span class="p"&gt;};&lt;/span&gt;

        &lt;span class="cm"&gt;/* do something with programmaticPerson like 
        using it to update a database, then 'returning' to end the function */&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt; 

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

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

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// typescript code&lt;/span&gt;


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

    &lt;span class="kd"&gt;type&lt;/span&gt; &lt;span class="nx"&gt;Person&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="nl"&gt;favouriteNumber&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;number&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="nl"&gt;isMale&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;boolean&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;programmaticPerson&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;Person&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;setPerson&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="nx"&gt;_name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
        &lt;span class="nx"&gt;_favouriteNumber&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;number&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
        &lt;span class="nx"&gt;_isMale&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;boolean&lt;/span&gt;
        &lt;span class="p"&gt;):&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nx"&gt;programmaticPerson&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="na"&gt;favouriteNumber&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;_favouriteNumber&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="na"&gt;isMale&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;_isMale&lt;/span&gt;
        &lt;span class="p"&gt;};&lt;/span&gt;

         &lt;span class="cm"&gt;/* do something with programmaticPerson like 
        using it to update a database, then 'returning' to end the function */&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

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

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

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// solidity code

    ...

    struct Person {
        string name;
        uint favouriteNumber;
        bool isMale;
    }

    Person private programmaticPerson;

    function setPerson(
        string memory _name,
        uint _favouriteNumber,
        bool _isMale
    ) public {
        programmaticPerson = Person({
            name: _name,
            favouriteNumber: _favouriteNumber,
            isMale: _isMale
        });
    }

    ...

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

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;As can be seen after a close look at all three code snippets above, it obviously can be deduced that the Typescript code looks&lt;br&gt;
more like Solidity. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This makes so much sense.&lt;/p&gt;

&lt;p&gt;Even though learning Typescript before Solidity is very important(especially in today's current JS/TS ecosystem where Typescript &lt;br&gt;
is more preferred to Javascript, due to the fact that it helps to write more robust and reliable code), it will still not be &lt;br&gt;
a compulsory recommendation that you learn Typescript before Solidity - &lt;strong&gt;as long as you already know or can use another &lt;br&gt;
statically-typed programming language&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;If you &lt;strong&gt;do not&lt;/strong&gt; have a previous experience of working with any statically-typed programming language, then I'll say you should &lt;br&gt;
take out some time and learn Typescript before proceeding to learn Solidity. A week or two of hardwork should be more than &lt;br&gt;
enough for that.&lt;/p&gt;

&lt;p&gt;Solidity will appear harder and more-complex to learn - if you know only Javascript(or only another dynamically typed programming&lt;br&gt;
language). The main reason for that is the static-typing in Solidity. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Having to work with types for the first time can be challenging. And I really won't recommend that you learn to do that &lt;br&gt;
with a programming language like Solidity.&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The summary here is very simply: Learn Javascript first due to all the facts explained earlier, then learn typescript&lt;br&gt;
Since the transition process from Javascript to Typescript will be pretty easier.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  3. Proceed to take some Solidity crash courses.
&lt;/h3&gt;

&lt;p&gt;Now you're ready to take on Solidity. &lt;/p&gt;

&lt;p&gt;But from my years of experience with learning programming languages and/or tools, libraries and frameworks, I still won't recommend that you go "right all in" just yet.&lt;/p&gt;

&lt;p&gt;I'll suggest that you start with a crash course first.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Look around for some(at least 3) Solidity crash content or courses(videos, articles, PDFs or whatever, - &lt;br&gt;
videos should not exceed 2 hours) and go through them.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;By taking a crash course, you'll easily get a good grasp of foundational concepts. This will also help you get coding and building&lt;br&gt;
real projects faster - &lt;strong&gt;which in turn increases/improves the fulfillment level and makes the learning process more rewarding&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This &lt;a href="https://www.youtube.com/watch?v=RQzuQb0dfBM" rel="noopener noreferrer"&gt;"Learn Solidity in 20 Minutes!"&lt;/a&gt; video from the &lt;a href="https://www.youtube.com/@DappUniversity" rel="noopener noreferrer"&gt;Dapp University Youtube channel&lt;/a&gt; is one gem of a resource that&lt;br&gt;
I'll recommend to anyone who is working or intending to work with Solidity - &lt;strong&gt;Whether a complete newbie or a good-ole&lt;br&gt;
blockchain pro&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzykwc0qcyd54x4izm5cp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzykwc0qcyd54x4izm5cp.png" alt="Dapp university youtube video screenshot" width="800" height="454"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Do look it up.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Go all in - into the rabbit-hole.
&lt;/h3&gt;

&lt;p&gt;If you follow the blue-prints in this article from scratch, at this point(after following points 1,2 and 3), &lt;br&gt;
you will be good with smart-contract to a certain degree already.&lt;/p&gt;

&lt;p&gt;Now you can go all in and take any Solidity developer course - irrespective of how monsterous the course may be.&lt;/p&gt;

&lt;p&gt;With respect to recommended courses, two awesome ones will be.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The &lt;a href="https://www.youtube.com/watch?v=gyMwXuJrbJQ&amp;amp;pp=ygUSMzIgaG91cnNlIHNvbGlkaXR5" rel="noopener noreferrer"&gt;Learn Blockchain, Solidity, and Full Stack Web3 Development with JavaScript
– 32-Hour Course&lt;/a&gt; by 
&lt;a href="https://twitter.com/PatrickAlphaC" rel="noopener noreferrer"&gt;Patrick Collins&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7301vy3pdi9dkxrdzofd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7301vy3pdi9dkxrdzofd.png" alt="screenshot of the 'Learn Blockchain, Solidity, and Full Stack Web3 Development with JavaScript&amp;lt;br&amp;gt;
 – 32-Hour Course'" width="800" height="474"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The 3 part &lt;strong&gt;Learn Solidity, Blockchain Development, &amp;amp; Smart Contracts | Powered By AI - Full Course&lt;/strong&gt;
also by &lt;a href="https://twitter.com/PatrickAlphaC" rel="noopener noreferrer"&gt;Patrick Collins&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Part 1&lt;/strong&gt;: &lt;a href="https://www.youtube.com/watch?v=umepbfKp5rI" rel="noopener noreferrer"&gt;https://www.youtube.com/watch?v=umepbfKp5rI&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Part 2&lt;/strong&gt;: &lt;a href="https://www.youtube.com/watch?v=sas02qSFZ74" rel="noopener noreferrer"&gt;https://www.youtube.com/watch?v=sas02qSFZ74&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Part 3&lt;/strong&gt;: &lt;a href="https://www.youtube.com/watch?v=wUjYK5gwNZs" rel="noopener noreferrer"&gt;https://www.youtube.com/watch?v=wUjYK5gwNZs&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Both of these course(individually - which ever you choose) are more than enough to make you a world class blockchain &lt;br&gt;
 developer. And best deal - "all for free on Youtube"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Wrapping up.
&lt;/h2&gt;

&lt;p&gt;There you have it friends, I've done my best in this article - sharing from my learnings: &lt;br&gt;
 "The best way I think possible, to learn Solidity in 2024". &lt;/p&gt;

&lt;p&gt;I hope it helped/helps.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;This post was originally published on the &lt;a href="https://www.web3mastery.org/" rel="noopener noreferrer"&gt;Web3 Mastery Website&lt;/a&gt;. Explore &lt;a href="https://www.web3mastery.org/" rel="noopener noreferrer"&gt;Web3 Mastery&lt;/a&gt; for more awesome content like this article.&lt;/p&gt;
&lt;/blockquote&gt;

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

</description>
      <category>solidity</category>
      <category>ethereum</category>
      <category>blockchain</category>
      <category>web3</category>
    </item>
    <item>
      <title>3 possible reasons why your job applications keep getting rejected.</title>
      <dc:creator>Andrew James Okpainmo</dc:creator>
      <pubDate>Thu, 05 Oct 2023 12:52:06 +0000</pubDate>
      <link>https://dev.to/okpainmo/3-possible-reasons-why-your-job-applications-keep-getting-rejected-3bf4</link>
      <guid>https://dev.to/okpainmo/3-possible-reasons-why-your-job-applications-keep-getting-rejected-3bf4</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Credit: The original version of this article was first published on the Jobjo Start-now blog. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;h1&gt;
  
  
  Introduction.
&lt;/h1&gt;

&lt;p&gt;The tech job market is currently at a very low point. With the layoffs that we’re yet to recover from, and the threats of Artificial intelligence taking over our jobs, it will be fair to conclude that there has never been a more threatening season in the tech space than this one we are currently experiencing.&lt;/p&gt;

&lt;p&gt;I’ll say there has never been a harder time to be in tech - than now.&lt;/p&gt;

&lt;p&gt;In this article, I’ll be discussing three of those possible reasons why you keep getting rejections, and I’ll be sharing very potent tips to help you remedy them.&lt;/p&gt;

&lt;h1&gt;
  
  
  1. The Fierce Competition.
&lt;/h1&gt;

&lt;p&gt;2023 is the most horrific year I’ve witnessed so far as a tech professional. Thousands lost their jobs due to being laid off by their companies. And since The influx of junior job seekers into the job market has not stopped, the competition level became even more tight, leading to many job rejections, especially for junior or inexperienced job seekers.&lt;/p&gt;

&lt;p&gt;Here are some tips to help you beat the competition no matter how severe and increase your chances of getting noticed and hopefully landing an interview as well.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;You can still beat the competition no matter how severe, and increase your chances of getting noticed and hopefully landing an interview soon.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Be intentional.
&lt;/h3&gt;

&lt;p&gt;Being intentional simply means you have to be very focused on the job search process. In simple terms, “the job search should be considered as one of your new jobs”. Don’t take the process lightly. You can go as hard as setting a timeline within which you desire to get a job, and then working hard to crush that goal. You should keep track/record of every application you send out, then follow up with the next point below. Be ready to send out as many as "hundreds" of applications.&lt;/p&gt;

&lt;h3&gt;
  
  
  Be Persistent.
&lt;/h3&gt;

&lt;p&gt;Understanding that the competition rate is at a very high point at the moment, should leave you with nothing but a fiery desire to find your way in no matter how hard it would be.&lt;/p&gt;

&lt;p&gt;A very practical way to practice persistence is through following up on your applications by sending referral-seeking emails to employees within the company you are applying to.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Simply do a Google search or LinkedIn search or use any other means you can use to find employees(best to search for executive employees) that work within the company. Then send them polite, convincing and well-crafted emails/messages informing them about your application which you sent in.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You should do this as repeatedly(politely and persistently) as possible until you finally get a reply - which would either be “great news” or a rejection. Either way, you had nothing to lose in trying.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;Understanding that the competition rate is at a very high point at the moment, should leave you with nothing but a fiery desire to find your way in no matter how hard it would be.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Apply to smaller companies or startups(preferably those with around 1 to 10 employees).
&lt;/h3&gt;

&lt;p&gt;While Applying to smaller companies might not solve the problem of tight competition, it definitely helps now that you have learnt the persistence/staff-emailing tip shared above.&lt;/p&gt;

&lt;p&gt;Applying to smaller companies will increase your chances of getting picked because smaller companies(especially those operating as startups) usually consist of small teams that likely share the same round table at work, chat casually with each other, and probably don’t have “formal” or strict operational processes.&lt;/p&gt;

&lt;p&gt;This increases your chances of getting noticed by all members of the team once a single member receives your email or message.&lt;/p&gt;

&lt;p&gt;To know the size of companies, simply search the company on any job platform that will help you discover the size of the team. I believe platforms like LinkedIn and Glassdoor should help with this.&lt;/p&gt;

&lt;h1&gt;
  
  
  2. Your CV/Resume is Horrible.
&lt;/h1&gt;

&lt;p&gt;Now it's time for us to get more realistic.&lt;/p&gt;

&lt;p&gt;The truth is, no matter how intentional, persistent, qualified, or focused you are, you will hardly find a job if your CV/Resume is in a horrible or un-optimized state.&lt;/p&gt;

&lt;p&gt;Considering how tight the market currently is, you just have to ensure you leave no stone unturned with regard to optimizing your CV. Except if you're ready to keep experiencing more rejections.&lt;/p&gt;

&lt;p&gt;You can seek the service of a professional CV/Resume expert to help access your CV, and hopefully your cover letter too. This will help a lot.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;With &lt;a href="https://www.jobjo.co/start-now"&gt;Jobjo Start-now&lt;/a&gt;, you can get quality CV/Resume and cover letter services at very affordable prices. Follow &lt;a href="https://www.jobjo.co/start-now/services"&gt;this link&lt;/a&gt; to pick from the service that currently suits your needs and get awesome career help.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h1&gt;
  
  
  3. You do not have enough experience.
&lt;/h1&gt;

&lt;p&gt;Lack of experience is a flaw(understandably not your fault though) that is very incompatible with the current state of the tech job market.&lt;/p&gt;

&lt;p&gt;Especially if you’re a junior, my recommendation is that you seek the counsel of a career coach who will guide you on what to do next because continuing to send out those countess applications might not be the solution in this case.&lt;/p&gt;

&lt;p&gt;With the current state of the tech market, you might just need to stop wasting valuable time applying to jobs and instead proceed to upskill and gain more experience, or do other experience-building side-hustles like contributing to opensource, participating in hackathons, and creating a blog or a YouTube channel where you can build projects and showcase/share while becoming better and more experienced, and at the same time gaining the thrills and fulfilment of things like an increasing subscriber count, an increasing number of views and hopefully the sight of earnings when you finally get monetized. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;This article will be super helpful - &lt;a href="https://www.jobjo.co/start-now/blog/stop-applying-to-jobs-do-this-instead"&gt;stop-applying-to-jobs-do-these-instead&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You might also decide to start out as your own boss by building a SaaS software and creating a startup.&lt;/p&gt;

&lt;p&gt;The problem now is “How then will you get to know the next best step to take” - which is where getting a career coach becomes necessary.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Beyond just CV/Resume or Cover letter services, you can sign up for career coaching on &lt;a href="https://www.jobjo.co/start-now"&gt;Jobjo Start-now&lt;/a&gt; where you’ll receive personalized coaching directions on what step is best for you to take to help you advance your career.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h1&gt;
  
  
  Conclusion.
&lt;/h1&gt;

&lt;p&gt;The tech job market is currently experiencing a bear run. And nothing helps than knowing what you might be doing wrong that has resulted in you getting so many job rejections. I hope this article has helped - especially with the different solutions to these possible problems that have been shared.&lt;/p&gt;

&lt;p&gt;Thanks for reading.&lt;/p&gt;

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

</description>
      <category>career</category>
      <category>careerdevelopment</category>
      <category>jobs</category>
    </item>
    <item>
      <title>Stop applying to jobs - do these instead.</title>
      <dc:creator>Andrew James Okpainmo</dc:creator>
      <pubDate>Thu, 05 Oct 2023 11:55:13 +0000</pubDate>
      <link>https://dev.to/okpainmo/stop-applying-to-jobs-do-these-instead-7hh</link>
      <guid>https://dev.to/okpainmo/stop-applying-to-jobs-do-these-instead-7hh</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Credit: The original version of this article was first published on the Jobjo Start-now blog. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;h1&gt;
  
  
  Introduction.
&lt;/h1&gt;

&lt;p&gt;The “tech streets” are still “cold” as the job market is yet to fully recover from the painful results of the layoffs that occurred in different companies, and other recent developments in the global tech space.&lt;/p&gt;

&lt;p&gt;Finding a job seems to be a source of frustration for many tech workers because of how competitive the tech market is currently.&lt;/p&gt;

&lt;p&gt;Continuing to send out those countless applications and having to drink from the painful cup of frustration that is being served to tech professionals(especially juniors) will only leave you more miserable.&lt;/p&gt;

&lt;p&gt;Why don’t you take a break and pick some great ideas from this article that you can implement to help you become better and also increase your chances of getting hired when next you return to job hunt.&lt;/p&gt;

&lt;p&gt;These suggestions will not be perfect for everyone since it’s hard to really tell if pausing your job search is the correct decision. You might need to get the help of a career coach who can offer you a listening ear and give you a personalized prescription on how to advance your career.&lt;/p&gt;

&lt;p&gt;The good news is that you can try out these ideas while spending less time continuing with your job hunt. But it’s best to seek the help of a career coach either way.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;You can seek the service of a career coach on &lt;a href="https://jobjo.co/start-now"&gt;Jobjo Start-now&lt;/a&gt; and get personalized advice for your career so you don’t continue wasting precious time sending out applications that just won’t work.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You might also want to check this article to find some extra help with your job search: &lt;a href="https://www.jobjo.co/start-now/blog/3-possible-reasons-why-your-job-applications-keep-getting-rejected"&gt;3 possible reasons why your job applications keep getting rejected&lt;/a&gt;.&lt;/p&gt;

&lt;h1&gt;
  
  
  4 Important Endeavors To Help You Become A More Valuable Tech Professional Before Returning to Job Hunt.
&lt;/h1&gt;

&lt;h2&gt;
  
  
  1. Contribute to opensource.
&lt;/h2&gt;

&lt;p&gt;Anyone in tech should know about opensource. Just in case you don’t, opensource is simply a way of building products and services by using a system that grants public access so that anyone can contribute in any relevant way they can to the project but without requesting payment.&lt;/p&gt;

&lt;p&gt;Even though opensource can involve certain contributors getting paid/compensated, the main foundation of opensource is the “free will” of the project contributors.&lt;/p&gt;

&lt;p&gt;The most popular opensource collaboration platform is Github. And beyond words, there are more than enough opensource projects to contribute to as long as you’re willing. Whether you’re a programmer, designer, copywriter, or anything else - as long as you can play any role in the selected opensource project, then there's nothing stopping you.&lt;/p&gt;

&lt;p&gt;Below are some awesome benefits of contributing to opensource.&lt;/p&gt;

&lt;h3&gt;
  
  
  - You get to gain valuable experience.
&lt;/h3&gt;

&lt;p&gt;While the current situation in the global tech space has led to companies keeping their doors closed “a lot”, you can still find your way into similar companies(which might be even better and bigger) that depend on opensource contributions. The only trade-off is that you wouldn’t be getting any payments in return.&lt;/p&gt;

&lt;p&gt;Are we still talking trade-off here??? - all you need is to gain experience right?&lt;/p&gt;

&lt;p&gt;With this, you can get to work on real-life projects and contribute just like(probably even more than) you would on a project in a company where you’ll get paid for the work you do.&lt;/p&gt;

&lt;p&gt;As long as you have a present source of sustenance/income, contributing to opensource will be a great and very rewarding journey towards helping you gain valuable work experience.&lt;/p&gt;

&lt;h3&gt;
  
  
  - You get to make valuable friends and connections.
&lt;/h3&gt;

&lt;p&gt;Opensource is a universe of its own. A world full of passionate enthusiasts of different calibre. Some seniors, some executives, some juniors, and so much more. When contributing to opensource, you get to meet a lot of new people, make a lot of friends, and build a very strong circle of connections that can help you land “dream” opportunities now and/or in the future.&lt;/p&gt;

&lt;h3&gt;
  
  
  - You might get the opportunity to land a full-time role on the opensource project/company that you’re contributing to.
&lt;/h3&gt;

&lt;p&gt;This is one of the best things about opensource. Once you’ve selected a perfect project(one that fits your skills, and interests) to contribute to, and you go in aggressively by making back-to-back contributions, you’ll easily get noticed by the project maintainer(s) and/or company executives.&lt;/p&gt;

&lt;p&gt;Once you’ve proven your skills(a chance you never got after countless number of applications), the folks in charge can choose to hire you as a maintainer, or as a full-time staff if it’s a company project.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Diversify: Learn and master a different “in-demand” or “rising-demand” skill.
&lt;/h2&gt;

&lt;p&gt;This is a very important point that can be easily overlooked when you continue to (insanely) pursue opportunities in your current tech domain.&lt;/p&gt;

&lt;p&gt;Despite the fact that jobs are scarce. It’s still true that other domains like DevOps, blockchain/web3, Machine Learning, and Artificial intelligence are still very much less competitive - especially if you master them to pro-level.&lt;/p&gt;

&lt;p&gt;Why don’t you switch from your current domain and set a month or some months of deep learning/hard work apart, then learn and master one of these technologies? That way, you’ll be increasing your chances of getting hired more easily.&lt;/p&gt;

&lt;p&gt;If you choose not to switch over completely to another domain, you can decide to learn other less popular or difficult-to-learn(hence less competitive) programming languages or frameworks/libraries like Elixir, NET(“dotnet”) or Rust.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;You can sign up for career coaching on Jobjo Start-now. Where you’ll receive personalized coaching directions on the technology or skill that will best help you advance your career. &lt;a href="http://jobjo.co/start-now"&gt;Simply get started here.&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  3. Start a YouTube channel and create top-notch content.
&lt;/h2&gt;

&lt;p&gt;One thing you fail to get because of application/job rejections is the chance to prove yourself/skills - &lt;strong&gt;while learning on the job&lt;/strong&gt;. I am convinced that this is one of the reasons why landing a junior role is even harder at this point, because It can be easily predicted that the job market still has a lot of unemployed seniors who were laid off from their jobs. Hence you'll hardly find opportunities that have room for &lt;strong&gt;learning on the job&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Starting a YouTube channel gives you the absolute opportunity to prove your skills while &lt;strong&gt;learning on the job and still remaining your own boss&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Simply start a YouTube channel and begin posting quality/top-notch tutorials. There is truly no better portfolio than a YouTube channel especially if you’re a coding-based techie.&lt;/p&gt;

&lt;p&gt;One very interesting side of starting a YouTube channel is the thrills that come with increasing views and subscriber counts. Finally, if you’re really good and consistent at it, you’ll get monetized quickly - this point is one of the "coolest" Youtuber “high-points”.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;You can seek the service of a career coach on &lt;a href="http://jobjo.co/start-now"&gt;Jobjo Start-now&lt;/a&gt;, and get personalized advice on how to get started with a career in YouTube content creation.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;With YouTube, you actually don't need to show your face and go through the harder grind of creating tutorials/courses. You can simply build a faceless YouTube channel where you'll hire talents to help you build, run and manage the YouTube channel(s). The only caveat with this method is that it'll be more cost-intensive. This won't continue to be a problem once you begin earning profitable returns as a result of monetization.&lt;/p&gt;

&lt;p&gt;One great thing to note is that, before you get monetized by becoming a YouTube partner, you can begin making very impressive incomes by applying different sales and marketing strategies to the tutorials/courses/videos you post on the channel.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Start a blog and build a career in technical writing.
&lt;/h2&gt;

&lt;p&gt;While the technical writing space is currently pretty competitive, a blog can still provide a good number of advantages as does a YouTube channel(as described in the previous point). &lt;/p&gt;

&lt;p&gt;Starting a blog will give you a platform to share your progress by “building in public”. And best of all, it’ll give you the opportunity to “Learn on the job”. A blog can also help you generate good income in a number of ways.&lt;/p&gt;

&lt;p&gt;It’s very easy to start a blog nowadays. You can literally have a complete blog up within minutes (if you don’t want to build a custom one) - all thanks to platforms like &lt;a href="https://hashnode.com"&gt;Hashnode&lt;/a&gt;, &lt;a href="https://medium.com"&gt;Medium&lt;/a&gt;, and right here on &lt;a href="https://dev.to"&gt;Dev&lt;/a&gt;.&lt;/p&gt;

&lt;h1&gt;
  
  
  Conclusion.
&lt;/h1&gt;

&lt;p&gt;With all these points that I’ve shared here, I believe you can agree that quitting job-hunting will be very beneficial for a good number of folks out there who are still struggling with sending out countless applications only to get back frustrating rejections in return.&lt;/p&gt;

&lt;p&gt;It's also very important to note that beyond these 4 endeavours listed in this article, there are other very rewarding activities that tech folks can engage in to help them forget about the current downturn that is being experienced in the global tech space. Some of those include participating in hackathons, building and selling/monetizing APIs, and the one which I love most - building your own SaaS software either to sell it or to create your own startup.&lt;/p&gt;

&lt;p&gt;You can actually make a living(one better than you ever dreamed of) by focusing on building and selling SaaS software.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Jobjo Start-now is also offering a special startup bonus to aspiring tech founders/Entrepreneurs. You can take advantage of this bonus to bring your startup dream to reality. With only $1000, you can hire the design, software, and marketing team at Jobjo to build you a SaaS application/startup of any magnitude, and also give you free promotions until you hit your "first 100 sign-ups milestone". Proceed to the Start-now startup bonus page to learn more including the attached terms and conditions.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The possibilities that come with being a tech professional are endless. You just need to believe this fact and embrace the many other opportunities that are available at your disposal.&lt;/p&gt;

&lt;p&gt;Stop frustrating yourself with endless applications that will only return rejections and discouragement.&lt;/p&gt;

&lt;p&gt;I hope you found value in reading this article. Thanks for reading.&lt;/p&gt;

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

</description>
      <category>career</category>
      <category>careerdevelopment</category>
    </item>
    <item>
      <title>5 things I wish I did earlier in my software engineering career.</title>
      <dc:creator>Andrew James Okpainmo</dc:creator>
      <pubDate>Fri, 07 Apr 2023 16:42:28 +0000</pubDate>
      <link>https://dev.to/okpainmo/5-things-i-wish-i-did-earlier-in-my-software-engineering-career-44eh</link>
      <guid>https://dev.to/okpainmo/5-things-i-wish-i-did-earlier-in-my-software-engineering-career-44eh</guid>
      <description>&lt;h3&gt;
  
  
  INTRODUCTION.
&lt;/h3&gt;

&lt;p&gt;So far, it's been an awesome time doing this thing that I love so much - coding.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;When it comes to doing what you love, I truly have this to say -&lt;br&gt;
"when you do what you love, you'll end up getting paid for having fun".&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Even though I am very proud of the current state of my software development career, I must admit, that it has been a bitter-sweet tale. A story of ups and downs, moments of discomfort, and sometimes moments of fulfilling celebrations.&lt;/p&gt;

&lt;p&gt;2022 was my best year yet in tech, and I am so confident that 2023 holds just wayyyy so much more.&lt;/p&gt;

&lt;p&gt;I know for sure, that I could have been far better than who I am today as a software engineer. I also agree that I could have gone farther and faster in my career if only I did certain things better.&lt;/p&gt;

&lt;p&gt;One of my greatest burdens in mentoring other upcoming techies today, is that they make so much less or even no mistakes, compared to the ones I made while coming up as a developer.&lt;/p&gt;

&lt;p&gt;I wrote this article, to help you discover mistakes that I've made so far in my developer career. Mistakes that caused me delays, lost opportunities, and maybe - even tears too.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I wrote this article to help you see things that I could have done earlier to make my tech career a more fulfilling one than it is today.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I just hope you enjoy the read and learn a lot along the line.&lt;br&gt;
Best of all, I hope you begin doing those things I missed to do early enough with immediate effect 🙏🙏🙏.&lt;/p&gt;
&lt;h4&gt;
  
  
  5 THINGS I WISH I DID EARLIER IN MY SE CAREER.
&lt;/h4&gt;

&lt;p&gt;Here they are:&lt;/p&gt;
&lt;h4&gt;
  
  
  Fully embracing mentorship - earlier on the journey.
&lt;/h4&gt;

&lt;p&gt;I've come to full awareness of the power of mentorship. My experiences taught me a lot.&lt;/p&gt;

&lt;p&gt;As stated above, one mistake that I made as a beginner, was my inability to fully embrace mentorship.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Mentorship especially in tech has so many benefits - Just so many.&lt;/li&gt;
&lt;li&gt;Mentorship enables you to learn and advance faster.&lt;/li&gt;
&lt;li&gt;Mentorship can help you to start earning earlier compared to folks without a mentor.&lt;/li&gt;
&lt;li&gt;Mentorship can open you to opportunities that would normally be hard or impossible to come across - thanks to recommendations and endorsements from your mentor.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The opportunities are just so many.&lt;/p&gt;

&lt;p&gt;Currently being a mentor of a number of tech beginners, I can fully attest to the many opportunities that abound for tech newbies who have mentors - especially if those mentors are already well-established software engineers.&lt;/p&gt;

&lt;p&gt;If you're currently a tech newbie, I highly encourage you to find a mentor.&lt;/p&gt;

&lt;p&gt;While you go about trying to do so, here's a tip to help.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;As a mentee who is seeking a mentor, you'll win a mentor more easily when you bring something to the table. Offer to return the kind gesture of mentorship with a promise to be highly committed and dedicated. You can even offer to do petty things like cleaning the office/work space for free.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Just ensure to have something to offer as well.&lt;/p&gt;

&lt;p&gt;On my part, I actually had mentors, but for some reasons, I managed to not fully embrace all the good things that my mentors had to offer.&lt;/p&gt;

&lt;p&gt;Two reasons that I believe made me fail to fully enjoy mentorship, are:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;My confidence in my brilliance and abilities to do it on my own. Probably because of my "founder/startup" centric mentality.&lt;br&gt;
Tech is a thing you just cannot do on your own. You'll need help. You'll need the support of a circle or community.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;My introverted nature: being an introvert, made me a huge fan of working alone. I enjoy and make much progress while working on my one - even in school.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;As a result of this, I tend to stay on my own quite much.&lt;br&gt;
While under my mentors, my introverted nature just seemed to not allow me free-up and associate as much as I could have possibly done.&lt;/p&gt;

&lt;p&gt;Even though there should indeed be a time for private hardwork, the truth is - tech just does not support such levels of introversion.&lt;/p&gt;

&lt;p&gt;I needed to come out of my shell and associate.&lt;/p&gt;

&lt;p&gt;I strongly believe that these two reasons were reasons that made me fail to fully explore the opportunity of having mentors earlier in my tech pursuit. While other reasons might exist, I believe these are the most obvious ones.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If you find yourself struggling in any of the above areas and finding it hard to fully explore the blessings of having a mentor, pls learn from my mistakes and make a quick turnaround.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;Follow your mentor(s) instructions as much as possible.&lt;/li&gt;
&lt;li&gt;ALWAYS accompany them to tech events they're attending.&lt;/li&gt;
&lt;li&gt;Be around them as much as possible. Watch them code and do the things they do. You can learn certain best practices just by watching your mentor code.&lt;/li&gt;
&lt;li&gt;Build projects and collaborate with them.&lt;/li&gt;
&lt;li&gt;Lastly, be very open and friendly.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;
  
  
  Beginning to connect and attend tech events - earlier enough.
&lt;/h4&gt;

&lt;p&gt;This second mistake of my SE career so far seems to be the one that has had much effect on me.&lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1637059795160125447-711" src="https://platform.twitter.com/embed/Tweet.html?id=1637059795160125447"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1637059795160125447-711');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1637059795160125447&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;p&gt;I just seemed to have "played the introvert" so well to a negative extent.&lt;/p&gt;

&lt;p&gt;My inability to associate, caused me to miss opportunities and valuable connections that I could have made.&lt;/p&gt;

&lt;p&gt;I strongly believe that some reasons why new techies fail to attend meetups and make good relationships and connections include:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Being shy or introvertish in nature.&lt;/li&gt;
&lt;li&gt;Being shy or ashamed to expose their beginner statuses.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;No matter how much of a beginner you are, never be shy to begin attending tech meetups and events.&lt;/p&gt;

&lt;p&gt;Just go out there, and you'll be glad you did.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Tech thrives on mutualism. Tech thrives on community.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h4&gt;
  
  
  Seeking real-world experience more aggressively - early enough.
&lt;/h4&gt;

&lt;p&gt;This point is one point that has greatly affected me as well.&lt;br&gt;
As a growing techie, it is important that you begin seeking real-world experiences early enough in the form of internships, and other related opportunities WHETHER PAID OR NOT.&lt;/p&gt;

&lt;p&gt;Even if you spent only a week on the job, the importance of that role can be so loud on your resume to a point you don't imagine.&lt;br&gt;
Real-world experiences are very important in tech. Begin pursuing experience as soon as possible.&lt;/p&gt;

&lt;p&gt;A resume full of real-world engineering experience, will be very very instrumental in helping you land that first "big/dream role".&lt;br&gt;
Just keep putting yourself out there. Keep seeking an opportunity to put that little experience you've got to practice in real-world projects - while working along with a team - preferably in a registered firm no matter how small it may be.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Start seeking now - I mean immediately!!!&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Start aggressively.&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Quick Tip: You can offer to start without pay. Once you get your foot in the door, you'll most likely remain to the point when they'll be convinced to start paying you -depending on how much value you bring to the team.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h4&gt;
  
  
  Beginning blogging, strategic social media engagements, and technical writing early enough.
&lt;/h4&gt;

&lt;p&gt;🤦🤦🤦 - I just can't stress this point enough.&lt;/p&gt;

&lt;p&gt;I greatly and deeply regret my failure/inability to explore the world of blogging and technical writing earlier enough.&lt;br&gt;
With platforms like Hashnode, Dev, and Medium, developer blogging has been made so easy.&lt;/p&gt;

&lt;p&gt;Having come to a very good knowledge of all the opportunities that blogging, social media engagements, and technical writing gives developers, I truly can't stress my pain enough.&lt;br&gt;
Technical writing and blogging offer developers so many great opportunities like.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Earning your first income in tech through technical writing even before building your first project.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Blogging and technical writing might even serve as a MASSIVE side income while you continue in your SE career.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Giving you a voice as a thought leader in the tech social media space.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Opening you to even more opportunities. As you begin connecting and impacting lives.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;As a tech person whether a starter or not, technical writing, blogging and strategic social media engagements can help put you out there in a big way you can't imagine.&lt;/p&gt;

&lt;p&gt;These things(especially technical writing and blogging) can help make your progress in tech to be very smooth thanks to their abilities to help you earn by the side.&lt;/p&gt;

&lt;p&gt;In case you're a beginner who is thinking about getting started with paid technical writing and blogging, just remember that tech blogs/platforms need beginner contents too. If you can properly present the little you already know, you might begin to land technical writing roles that can help smoothen your tech journey as a beginner.&lt;/p&gt;

&lt;p&gt;To drive home this point, check out &lt;a href="https://javascript.plainenglish.io/how-i-made-30-000-from-writing-in-1-year-30a127d53fd0"&gt;this article by Ankur Tyagi&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Being more active in sharing my projects and progress on social media.
&lt;/h4&gt;

&lt;p&gt;The tech global tech community is a generous one. Sharing your projects and progress on social media can spark some very loving reactions and comments that will be very inspiring.&lt;/p&gt;

&lt;p&gt;Tech beginners need to shove off the fear or shame of thinking what they've built or the progress they've made is very small or insignificant.&lt;/p&gt;

&lt;p&gt;The understanding that folks out there who know less than you do will appreciate and greatly celebrate that "little" achievement of yours, should be a driving force to make you put yourself out there.&lt;/p&gt;

&lt;p&gt;Besides, someone might just be somewhere watching how impressively you're growing and how much quality your projects are beginning to have.&lt;/p&gt;

&lt;p&gt;That "someone" might just end up hiring you.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;We seem to forget that platfoms like twitter and linkedin are social media too. I mean those pictures, and videos of you - yes post them on linkedin and twitter too. Photos have a way of pulling attention - even on linkedin and twitter as well.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Simply post those photos of you, and add some professionally relevant text content along. Probably one about your progress or some challenges you're currently facing. Just ensure that you stay moderate and professional.&lt;/p&gt;

&lt;p&gt;I bet you'll be gald over the reach that such posts will command.&lt;br&gt;
So go ahead, and share that progress you've made, or that side project you just finished.&lt;/p&gt;

&lt;p&gt;Just believe me and do it, then come thank me later 🙂🙂🙂.&lt;/p&gt;

&lt;h3&gt;
  
  
  WRAPPING UP.
&lt;/h3&gt;

&lt;p&gt;This is life, and we're all prone to making mistakes. I've made my own share of mistakes, and I've learnt from them.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Thanks to those mistakes, this article is birthed.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I believe you've learnt a whole lot from these mistakes of mine.&lt;br&gt;
Whether you're a beginner yet to begin making any of these mistakes, or you're already well on your way in tech. I encourage you to learn from these mistakes of mine and begin doing those things I failed to do IMMEDIATELY.&lt;/p&gt;

&lt;p&gt;Let my mistakes and shortfalls make your career a way better one.&lt;br&gt;
I promise that if you practice these things I've outlined, you'll experience a massive boost in the way you progress in your software development career.&lt;/p&gt;

&lt;p&gt;I wish you all the best in your journey ahead.&lt;br&gt;
Thanks a lot for reading this far.&lt;/p&gt;

&lt;p&gt;Cheers to a fulfilling tech journey ahead.&lt;/p&gt;

</description>
      <category>careerdevelopment</category>
      <category>growth</category>
      <category>softwareengineering</category>
    </item>
    <item>
      <title>How To Add Light And Dark Theme-Toggle To A NextJs App Using Tailwindcss</title>
      <dc:creator>Andrew James Okpainmo</dc:creator>
      <pubDate>Fri, 07 Apr 2023 16:15:10 +0000</pubDate>
      <link>https://dev.to/okpainmo/how-to-add-light-and-dark-theme-toggle-to-a-nextjs-app-using-tailwindcss-3113</link>
      <guid>https://dev.to/okpainmo/how-to-add-light-and-dark-theme-toggle-to-a-nextjs-app-using-tailwindcss-3113</guid>
      <description>&lt;h3&gt;
  
  
  Introduction
&lt;/h3&gt;

&lt;p&gt;The world of programming is a "world of trends". Trends come and go. While some last for just a little while, others can last very long - some might even get to stay forever.&lt;/p&gt;

&lt;p&gt;Such trends can be in the form of preferences for certain programming languages, libraries/frameworks or the use of certain design/development patterns.&lt;/p&gt;

&lt;p&gt;One trend that impresses me quite well, is the "theme-ing" trend. It's very common nowadays to see applications or websites with the theme-toggle functionality - a feature that enables users to select themes or color preferences with which they wish to explore the app or website.&lt;/p&gt;

&lt;p&gt;The most common theme functionality is the light-dark mode selection.&lt;/p&gt;

&lt;h3&gt;
  
  
  Is Color/Theme-Toggling Even A Necessity At All?
&lt;/h3&gt;

&lt;p&gt;While some might argue that this feature Is not necessary for apps or websites, I beg to differ. It's fine if the scope and/or demands of the project does not require it.&lt;br&gt;
Here are four reasons why adding the theme toggle functionality to your app will be a great choice.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;The first reason is the health benefit. You don't want to wake up in the morning and feel scared to look into your gadgets because you don't want your eyes to burn as a result of their bright screens. The effect of bright screen lights that we come in contact with daily, can become a huge problem if we don't minimize them. This is where being able to toggle into dark mode becomes really important.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;My second reason for liking the theme-toggle functionality is the fact that this functionality just seem to add some "extra" touch of excellence to your app or website. Kind of some extra "quality" that appeals more to the user.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The third reason why I implement this feature a lot, is how easy it is to implement if only you get to understand the logic behind how to implement it.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;My final argument on behalf of this trend, falls back to user experience. You just can't underestimate the comfort and better experience that users get from being able to toggle between themes while on your app or website.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Now, that we know it's an important feature, let's learn how to implement this functionality in a NextJs app. We'll be doing so with the awesome superpowers of tailwindcss.&lt;/p&gt;

&lt;p&gt;NextJs is a Javascript framework that is built on top of ReactJs. It's more like ReactJs with extra "super-powers". Tailwindcss on the other hand, is an amazing utility-first CSS framework that helps you build user interface with ease and speed. It's a CSS framework that I've come to love so much.&lt;/p&gt;
&lt;h3&gt;
  
  
  Understanding The Logic Behind Theme Toggling In A NextJs App.
&lt;/h3&gt;

&lt;p&gt;The combined forces of NextJs, tailwindcss, and this simple logic that I've been using, makes implementing the theme-toggle functionality very easy and developer friendly.&lt;/p&gt;

&lt;p&gt;Here is a summary of how it works.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;It starts with customizing your CSS color classes by selecting a color for light mode, and then another color for dark mode. The usual design pattern, is to choose the same color, but make it lighter when dark mode it selected, and darker when light mode is selected.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Secondly, You'll need to Understand the "dark" class-toggle logic. This logic simply requires you to set light mode to default during styling. Then trigger a "global" change of colors by applying a "dark" class to the root/parent element of you app or website.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;
  
  
  Setting Up The Tutorial Project
&lt;/h3&gt;

&lt;p&gt;This logic will better be understood when we implement it. So let's jump right in.&lt;/p&gt;
&lt;h4&gt;
  
  
  Creating The Project.
&lt;/h4&gt;

&lt;p&gt;The project will be very detailed. First, let's create a NextJs app. We'll name the app "theme-toggle-tutorial-app". I'll be adding a link to a Github repository for the project at the end to help you grasp the tutorial even further.&lt;/p&gt;
&lt;h4&gt;
  
  
  Setting Up The NextJs App
&lt;/h4&gt;

&lt;p&gt;The tailwindcss framework guide for NextJs has a very detailed step by process for setting up a NextJs project with tailwindcss. Do check it out to get more help.&lt;/p&gt;

&lt;p&gt;First, we'll run the following command to create a NextJs app.&lt;br&gt;
npx create-next-app@latest theme-toggle-tutorial-app.&lt;/p&gt;

&lt;p&gt;Follow the resulting prompt to install the app. Feel free to make the selections as you wish if you're confident enough that you'll find you way through.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;First type in "y" to continue.&lt;/li&gt;
&lt;li&gt;Next, select "No" for typescript.&lt;/li&gt;
&lt;li&gt;Similarly, select "No" for eslint.&lt;/li&gt;
&lt;li&gt;Also select "No" for the "src/" directory. We'll be using the 
page directory for this project.&lt;/li&gt;
&lt;li&gt;Select "No" as well for the experimental "app/" directory.&lt;/li&gt;
&lt;li&gt;Ignore the "import alias" prompt, and click enter.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Then wait for the app to install.&lt;/p&gt;

&lt;p&gt;Now, let's switch into our app directory.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cd theme-toggle-tutorial-app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Add the code below(if you're using vscode), to open a new vscode window for our project.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;code .
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Next, create a trash folder and move all unwanted files into it. We'll move the "api" folder and all the css files in the "styles" folder into it.&lt;/p&gt;

&lt;p&gt;Next, let's create our own css file - still name it "globals.css" and leave it empty for now.&lt;/p&gt;

&lt;h4&gt;
  
  
  Adding Tailwindcss To The Project.
&lt;/h4&gt;

&lt;p&gt;Run the following commands to add tailwindcss to the project.&lt;br&gt;
npm install -D tailwindcss postcss autoprefixer&lt;br&gt;
Next, run the "init" command to generate the tailwindcss config files.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npx tailwindcss init -p
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Configuring Tailwindcss.
&lt;/h4&gt;

&lt;p&gt;Now, update the "tailwind.config.js" file to look like this;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/** @type {import('tailwindcss').Config} */
module.exports = {
  content: [
    './pages/**/*.{js,ts,jsx,tsx}',
    './components/**/*.{js,ts,jsx,tsx}',
    './app/**/*.{js,ts,jsx,tsx}',
  ],
  plugins: [],

  darkMode: 'class',

  theme: {
    extend: {},
  },
};
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The "Darkmode: class" part of the above code is super important - it's actually what performs the toggle magic. After everything, try commenting that part of the code and see. The theme-toggling will stop working.&lt;/p&gt;

&lt;p&gt;Now add tailwindcss directives to the "globals.css" file you created.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@tailwind base;
@tailwind components;
@tailwind utilities;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;By now, your app structure should look more like the one below.&lt;br&gt;
Next, delete all the content of the "index.js file" completely, and add this code snippet as seen on the screen into it. simply copy it from below.&lt;/p&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import React from 'react';

function index() {
  return (
    &amp;lt;h1 className='text-3xl font-bold underline text-blue-500'&amp;gt;Hello world!&amp;lt;/h1&amp;gt;
  );
}
export default index;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Next, start the app with the command below.&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;If your app successfully starts with a screen looking like the one below, then everything is fine, this means our NextJs and tailwindcss installations are in good shape. &lt;/p&gt;

&lt;p&gt;The underline style and the blue color of the text are all as a result of the tailwindcss styles that we added in the "index.js" file.&lt;/p&gt;

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

&lt;p&gt;Please note that you can switch your javascript files to jsx by using the ".jsx" file extension instead of the ".js" extension. I prefer using ".jsx", but for this tutorial, let's leave that out and use the ".js" option instead.&lt;/p&gt;

&lt;h4&gt;
  
  
  Building The App Pages And Components
&lt;/h4&gt;

&lt;p&gt;The NextJs file-based routing system, makes it very easy to create pages. Simply create a new file in the pages directory, and it automatically becomes a page, and whatever you name it becomes the route/link to that page.&lt;/p&gt;

&lt;p&gt;The "index.js" file serves as the landing page.&lt;/p&gt;

&lt;p&gt;Now let's create two new pages aside the landing page - a demo about-page(about.js) and a demo contacts-page(contacts.js) - all inside the "pages" directory.&lt;/p&gt;

&lt;p&gt;Navigating between pages, will help to confirm how effectively our theme-toggling is working.&lt;/p&gt;

&lt;p&gt;Up next, let's create a nice-looking navbar component where we'll add navigation links, and the theme-toggle switch. To do that, we'll create a "components" folder inside our project.&lt;/p&gt;

&lt;p&gt;The NextJs page-based routing prohibits adding of components into the pages directory. Only page based files should stay in the pages folder.&lt;br&gt;
Hence, All components including this navbar component as shown below, will stay inside of the components folder.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import React from 'react';
import Link from 'next/link';

function Navbar() {
  return (
    &amp;lt;nav className='navbar w-full px-20 py-3 shadow-lg'&amp;gt;
      &amp;lt;div className='flex items-center'&amp;gt;
        &amp;lt;section className='nav-left font-bold mr-auto text-xl'&amp;gt;TTTA&amp;lt;/section&amp;gt;
        &amp;lt;ul className='nav-links flex gap-16 items-center'&amp;gt;
          &amp;lt;Link href='/'&amp;gt;
            &amp;lt;li&amp;gt;Home&amp;lt;/li&amp;gt;
          &amp;lt;/Link&amp;gt;
          &amp;lt;Link href='/about'&amp;gt;
            &amp;lt;li&amp;gt;About&amp;lt;/li&amp;gt;
          &amp;lt;/Link&amp;gt;
          &amp;lt;Link href='/contacts'&amp;gt;
            &amp;lt;li&amp;gt;Contacts&amp;lt;/li&amp;gt;
          &amp;lt;/Link&amp;gt;
        &amp;lt;/ul&amp;gt;
      &amp;lt;/div&amp;gt;
    &amp;lt;/nav&amp;gt;
  );
}
export default Navbar;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now, update the code in the "index.js" file to look like the one below.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import React from 'react';
import Navbar from '@/components/Navbar';

function Home() {
  return (
    &amp;lt;main className='min-h-screen text--colors_default bg--default'&amp;gt;
      &amp;lt;Navbar /&amp;gt;
      &amp;lt;h1 className='text-3xl font-bold underline text--colors_primary px-20 py-12'&amp;gt;
        This is the landing page.
      &amp;lt;/h1&amp;gt;
    &amp;lt;/main&amp;gt;
  );
}
export default Home;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Also update the "about.js" and the "contacts.js" files to look like the ones below.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import React from 'react';
import Navbar from '@/components/Navbar';

function AboutPage() {
  return (
    &amp;lt;main className='min-h-screen'&amp;gt;
      &amp;lt;Navbar /&amp;gt;
      &amp;lt;h1 className='text-3xl font-bold underline text-blue-500 px-20 py-12'&amp;gt;
        This is the about page.
      &amp;lt;/h1&amp;gt;
    &amp;lt;/main&amp;gt;
  );
}
export default AboutPage;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import React from 'react';
import Navbar from '@/components/Navbar';

function ContactsPage() {
  return (
    &amp;lt;main className='min-h-screen'&amp;gt;
      &amp;lt;Navbar /&amp;gt;
      &amp;lt;h1 className='text-3xl font-bold underline text-blue-500 px-20 py-12'&amp;gt;
        This is the contacts page.
      &amp;lt;/h1&amp;gt;
    &amp;lt;/main&amp;gt;
  );
}
export default ContactsPage;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now that we've imported our navbar into all our pages, let's give the app a routing test by navigating across all the pages before we proceed.&lt;/p&gt;

&lt;p&gt;Your app landing page, and the other pages should look as clean as the one shown below by now.&lt;/p&gt;

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

&lt;h4&gt;
  
  
  Adding Our Color Options
&lt;/h4&gt;

&lt;p&gt;Here comes the part where we'll explore some awesome superpowers of tailwindcss.&lt;/p&gt;

&lt;p&gt;Now, update the "globals.css" file with the code below.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
@tailwind base;
@tailwind components;
@tailwind utilities;

/*
=========================================================
colour configuration using native tailwind css colours
=========================================================
*/

/** customized texts **/

.text--colors_default {
  @apply text-slate-900 dark:text-white;
}

.text--colors_primary {
  @apply text-blue-500 dark:text-blue-300;
}

/** customized backgrounds **/
.bg--default {
  @apply bg-white dark:bg-slate-900;
}

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

&lt;/div&gt;



&lt;p&gt;In the above code, we used the tailwindcss color classes, to customize how we want our text to look while on dark mode, and while on light mode. We also customized the background colors.&lt;br&gt;
Next, do the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;replace the "text-blue-500" class in "index.js", "about.js", and "contacts.js" with the "text - colors_primary" class that we created in out "globals.css" file above.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;If you check in your app after doing so, you will not notice any difference, because we customized the "text - colors_primary" class to still be "text-blue-500" when on light mode.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;Similarly, add both the "text - colors_default" and "bg - default" classes to the "main" HTML tag in "index.js", "contacts.js", and "about.js".&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;
  
  
  Building The Theme Toggle Logic/Function
&lt;/h4&gt;

&lt;p&gt;Up till this point, we still have not created out theme-toggle switch. This will be one of the most important part of this tutorial.&lt;br&gt;
Now, create a new component in the "components" folder, and name it "ThemeSwitcher.js". Add the following code to it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import React, { useState, useEffect } from 'react';

function ThemeSwitcher() {
  const storedTheme = window.localStorage.getItem('prefered-theme');
  const checkTheme = () =&amp;gt; {
    if (storedTheme === 'darkTheme') {
      return false;
    }
    return true;
  };
  const [isLight, setIsLight] = useState(checkTheme);
  function setLightTheme() {
    setIsLight(true);
    window.localStorage.setItem('prefered-theme', 'lightTheme');
  }
  function setDarkTheme() {
    setIsLight(false);
    window.localStorage.setItem('prefered-theme', 'darkTheme');
  }
  useEffect(() =&amp;gt; {
    const setTheme = () =&amp;gt; {
      const root = window.document.documentElement;
      const operatingSystemThemeDark = window.matchMedia(
        '(prefers-color-scheme: dark)'
      );
      if (storedTheme === 'darkTheme' &amp;amp;&amp;amp; operatingSystemThemeDark.matches) {
        root.classList.add('dark');
      }
      if (storedTheme === 'darkTheme') {
        root.classList.add('dark');
      }
      if (storedTheme === 'lightTheme') {
        root.classList.remove('dark');
      }
    };
    setTheme();
    console.log(`${storedTheme} selected`);
  }, [storedTheme]);
  return (
    &amp;lt;div className='theme-switcher items-center ml-12 hidden'&amp;gt;
      &amp;lt;button
        type='button'
        className={`dark-mode-switch cursor-pointer mr-6 w-[40px] h-[40px] p-[10px] rounded-[100%]
        border ${!isLight &amp;amp;&amp;amp; 'hidden'}`}
        onClick={setDarkTheme}
      &amp;gt;
        &amp;lt;svg
          xmlns='http://www.w3.org/2000/svg'
          // width="20"
          // height="20"
          fill='currentColor'
          className='bi bi-moon-stars-fill w-[18px] h-[18px]'
          viewBox='0 0 16 16'
        &amp;gt;
          &amp;lt;path d='M6 .278a.768.768 0 0 1 .08.858 7.208 7.208 0 0 0-.878 3.46c0 4.021 3.278 7.277 7.318 7.277.527 0 1.04-.055 1.533-.16a.787.787 0 0 1 .81.316.733.733 0 0 1-.031.893A8.349 8.349 0 0 1 8.344 16C3.734 16 0 12.286 0 7.71 0 4.266 2.114 1.312 5.124.06A.752.752 0 0 1 6 .278z' /&amp;gt;
          &amp;lt;path d='M10.794 3.148a.217.217 0 0 1 .412 0l.387 1.162c.173.518.579.924 1.097 1.097l1.162.387a.217.217 0 0 1 0 .412l-1.162.387a1.734 1.734 0 0 0-1.097 1.097l-.387 1.162a.217.217 0 0 1-.412 0l-.387-1.162A1.734 1.734 0 0 0 9.31 6.593l-1.162-.387a.217.217 0 0 1 0-.412l1.162-.387a1.734 1.734 0 0 0 1.097-1.097l.387-1.162zM13.863.099a.145.145 0 0 1 .274 0l.258.774c.115.346.386.617.732.732l.774.258a.145.145 0 0 1 0 .274l-.774.258a1.156 1.156 0 0 0-.732.732l-.258.774a.145.145 0 0 1-.274 0l-.258-.774a1.156 1.156 0 0 0-.732-.732l-.774-.258a.145.145 0 0 1 0-.274l.774-.258c.346-.115.617-.386.732-.732L13.863.1z' /&amp;gt;
        &amp;lt;/svg&amp;gt;
      &amp;lt;/button&amp;gt;
      &amp;lt;button
        type='button'
        className={`light-mode-switch cursor-pointer mr-6 w-[40px] h-[40px] p-[10px] rounded-[100%]
        border ${isLight &amp;amp;&amp;amp; 'hidden'}`}
        onClick={setLightTheme}
      &amp;gt;
        &amp;lt;svg
          xmlns='http://www.w3.org/2000/svg'
          // width="20"
          // height="20"
          fill='currentColor'
          className='bi bi-brightness-high w-[18px] h-[18px]'
          viewBox='0 0 16 16'
        &amp;gt;
          &amp;lt;path d='M8 11a3 3 0 1 1 0-6 3 3 0 0 1 0 6zm0 1a4 4 0 1 0 0-8 4 4 0 0 0 0 8zM8 0a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 0zm0 13a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 13zm8-5a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2a.5.5 0 0 1 .5.5zM3 8a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2A.5.5 0 0 1 3 8zm10.657-5.657a.5.5 0 0 1 0 .707l-1.414 1.415a.5.5 0 1 1-.707-.708l1.414-1.414a.5.5 0 0 1 .707 0zm-9.193 9.193a.5.5 0 0 1 0 .707L3.05 13.657a.5.5 0 0 1-.707-.707l1.414-1.414a.5.5 0 0 1 .707 0zm9.193 2.121a.5.5 0 0 1-.707 0l-1.414-1.414a.5.5 0 0 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .707zM4.464 4.465a.5.5 0 0 1-.707 0L2.343 3.05a.5.5 0 1 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .708z' /&amp;gt;
        &amp;lt;/svg&amp;gt;
      &amp;lt;/button&amp;gt;
    &amp;lt;/div&amp;gt;
  );
}
export default ThemeSwitcher;

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

&lt;/div&gt;



&lt;p&gt;From the code as seen above, two important things that the toggle logic/function does, are.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;To toggle between light and dark mode.&lt;/li&gt;
&lt;li&gt;To check for the selected theme, and to also have it stored on the user's browser using local storage. That way, even when the user goes off you site and returns, the color/theme preferences will still take effect.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Do take some more time to go through the function. You might even get to grasp it well and improve it for yourself.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Also, do feel free to use the code in any of your projects - with no copyright fears. You have my full permission.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h4&gt;
  
  
  Resolving Issues With Accessing The Window Object In NextJs.
&lt;/h4&gt;

&lt;p&gt;NextJs is a Javascript framework that does pre-rendering by default. This means NextJs generates the code for web-app pages before-hand on a server before it reaches the browser. As a result of this, trying to access the window object in NextJs will not work on loading the page, since the server will not recognize a window - like the browser would.&lt;/p&gt;

&lt;p&gt;As a result of this, our NextJs app will throw an error - crying out about a window it doesn't seem to understand or know about.&lt;/p&gt;

&lt;p&gt;See the screenshot below.&lt;/p&gt;

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

&lt;p&gt;Now, we have to find a way around it.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I was able to come up with a pretty good fix for this, thanks to "dynamic import" - an advanced feature that NextJs has.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You can learn more about dynamic import on NextJs' website if you wish, but the screenshot below provides a summary of how we can use "dynamic import"(dynamic) along with the "no ssr" option to fix this problem.&lt;/p&gt;

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

&lt;h4&gt;
  
  
  Implementing the toggle functionality.
&lt;/h4&gt;

&lt;p&gt;Now we can import "dynamic" from NextJs, and wrap it around our "ThemeSwitcher" component so that we can then use it inside of our navbar component.&lt;br&gt;
Our navbar component(Navbar.js) will now get updated to be as shown below.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import React from 'react';
import Link from 'next/link';
import dynamic from 'next/dynamic';

const DynamicThemeSwitcher = dynamic(() =&amp;gt; import('./ThemeSwitcher'), {
  ssr: false,
});
function Navbar() {
  return (
    &amp;lt;nav className='navbar w-full px-20 py-3 shadow-lg'&amp;gt;
      &amp;lt;div className='flex items-center'&amp;gt;
        &amp;lt;section className='nav-left font-bold mr-auto text-xl'&amp;gt;TTTP&amp;lt;/section&amp;gt;
        &amp;lt;ul className='nav-links flex  gap-16 items-center'&amp;gt;
          &amp;lt;Link href='/'&amp;gt;
            &amp;lt;li&amp;gt;Home&amp;lt;/li&amp;gt;
          &amp;lt;/Link&amp;gt;
          &amp;lt;Link href='/about'&amp;gt;
            &amp;lt;li&amp;gt;About&amp;lt;/li&amp;gt;
          &amp;lt;/Link&amp;gt;
          &amp;lt;Link href='/contacts'&amp;gt;
            &amp;lt;li&amp;gt;Contacts&amp;lt;/li&amp;gt;
          &amp;lt;/Link&amp;gt;
        &amp;lt;/ul&amp;gt;
        &amp;lt;DynamicThemeSwitcher /&amp;gt;
      &amp;lt;/div&amp;gt;
    &amp;lt;/nav&amp;gt;
  );
}
export default Navbar;

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

&lt;/div&gt;



&lt;p&gt;Now, let's give our theme-toggle functionality a test. Check the screenshots below, to see how beautiful our app looks on both light and dark modes.&lt;/p&gt;

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

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

&lt;h4&gt;
  
  
  A Summary On How To Add Extra Themes/Color Options To Support Light and Dark Mode.
&lt;/h4&gt;

&lt;p&gt;Having understood the logic behind the theme-toggle funtionality, I believe you can now build on this and go even more "extreme".&lt;br&gt;
You might even wish to go as far as adding extra theme options on top of dark/light theme selection. More like being able to choose dark or light theme with different colors combinations for buttons and other parts of the website or app.&lt;br&gt;
It's all up to you.&lt;/p&gt;

&lt;p&gt;Simply follow the patterns stated out in this article, add more relevant color customizations, then improve the toggle logic to get your desired result - if need be.&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;Like I mentioned earlier, I am a big fan of the theme-toggle trend. Since I figured out how to implement this feature, I've been implementing it in most of the projects I've worked on. Almost all my side projects have this feature.&lt;/p&gt;

&lt;p&gt;I believe this article has equipped you with all you need to begin shipping more appealing and user-friendly apps and websites - thanks to theme-toggling. I trust you enjoyed the article.&lt;br&gt;
Even though this tutorial is NextJs based, the logic can be easily applied to any other Javascript framework or library of choice using tailwindcss. Implementing it in ReactJs will be very similar.&lt;/p&gt;

&lt;p&gt;Here is &lt;a href="https://github.com/Okpainmo/theme-toggle-tutorial-app" rel="noopener noreferrer"&gt;a link to the github repository&lt;/a&gt; hosting the project.&lt;/p&gt;

&lt;p&gt;Thanks a lot for reading. I am glad you followed up to this point. Cheers!!!&lt;/p&gt;

</description>
      <category>frontend</category>
      <category>nextjs</category>
      <category>tailwindcss</category>
      <category>react</category>
    </item>
    <item>
      <title>MY LIFE AS A NEW HNG SEASON 8 INTERN.</title>
      <dc:creator>Andrew James Okpainmo</dc:creator>
      <pubDate>Mon, 16 Aug 2021 18:35:18 +0000</pubDate>
      <link>https://dev.to/okpainmo/my-life-as-a-new-hng-season-8-intern-i0e</link>
      <guid>https://dev.to/okpainmo/my-life-as-a-new-hng-season-8-intern-i0e</guid>
      <description>&lt;p&gt;My life as an intern first began only few days ago, thanks to the &lt;br&gt;
&lt;a href="https://hng.tech/"&gt;HNG internship&lt;/a&gt; – season 8. The experience feels great as the days go by. Although the process is not without the fears of what to expect, I really want to admit that I am enjoying the journey so far.&lt;/p&gt;

&lt;p&gt;Internship is a common trend in the professional world. In tech, internship is almost an inevitable fate - whether it is a paid one or not. It is this fate that has caught up with me and the other thousands of people that have enrolled in the ongoing season 8 of the HNG internship.&lt;/p&gt;

&lt;h2&gt;
  
  
  About the HNG internship
&lt;/h2&gt;

&lt;p&gt;The HNG internship, is an awesome, challenging and competitive non-paid remote internship that is organized by a Nigerian Agency called &lt;a href="//www.hotels.ng"&gt;Hotels.ng&lt;/a&gt;. As much as I know, The internship is co-supported by &lt;a href="https://zuri.team"&gt;Zuri&lt;/a&gt; and &lt;a href="https://ingressive.org/"&gt;Ingressive for good (I4G)&lt;/a&gt;. The internship supports different skill tracks like Backend web development, frontend web development, Mobile development, UI/UX designing, and more. &lt;strong&gt;My track is frontend web development&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I have been into frontend web development for some years now. My coding dream is to someday become a professional full stack software developer and a versatile world class programmer. I have gained some considerable skills over the years in frontend web development, and My current stack is HTML, CSS, SASS, Bootstrap, Jquery and Vanilla Javascript. I started a React.Js course some weeks ago, and I also use Gulp.Js when building websites. &lt;/p&gt;

&lt;p&gt;In case you are new to web development, all the tools I listed above are front end web development tools/skills that are used in building websites. And if you really want to become a front end web developer, below are a number of relevant beginner courses that will help you on that journey.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. A Figma Tutorial
&lt;/h3&gt;

&lt;p&gt;Figma is a tool for building web interfaces.&lt;br&gt;
It is important for every web developer to at least, get a basic knowledge of how to use Figma to design web interfaces - even if you are not a UI/UX designer. Knowledge of it will help you work with designs done by UI/UX designers. So go ahead and find as much help in &lt;a href="https://www.headway.io/event-series/figma-tutorials-for-beginners"&gt;this Figma tutorial&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. A Git and Github Tutorial
&lt;/h3&gt;

&lt;p&gt;Git is a version control system (VCS). It is used in web development to help developers keep track of their work at different stages of building a project. I believe Git is a tool that every web developer &lt;strong&gt;“must” know how to use&lt;/strong&gt;. &lt;a href="https://product.hubspot.com/blog/git-and-github-tutorial-for-beginners"&gt;This Git and Github tutorial&lt;/a&gt; will help you get your hands on Git, and Github too.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. HTML Tutorial.
&lt;/h3&gt;

&lt;p&gt;HTML stands for HyperText MarkUp Language. It is the main building block of front end websites. Learning HTML, is really the beginning of your front end web developer journey. Let &lt;a href="https://www.w3schools.com/html/"&gt;this beginner friendly HTML tutorial&lt;/a&gt; help you out.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. A Javascript Tutorial.
&lt;/h3&gt;

&lt;p&gt;After building websites with HTML and styling them, Javascript is a programming language that is used to add dynamism to websites.  Javascript, is another “must” tool for every front end web developer. It is even referred to as the programming language of the web. &lt;a href="https://www.w3schools.com/js/js_intro.asp"&gt;This tutorial&lt;/a&gt; will help you get you hands on Javascript.&lt;/p&gt;

&lt;p&gt;Now back to the main business.&lt;/p&gt;

&lt;p&gt;It is in a bid to become a better skilled and qualified frontend web developer that I enrolled in this season of the HNG internship. I hope to further strengthen my frontend web development skills before i proceed into backend web development.&lt;br&gt;
The first task for my track (frontend web development) was given just yesterday. Writing this article is one out of other demands of the task.&lt;/p&gt;

&lt;h2&gt;
  
  
  My goals for this internship.
&lt;/h2&gt;

&lt;p&gt;Life as an intern has so far been very interesting. My goals for this internship are clear and direct. Some may be tough and really demanding, But I am determined to follow through until I achieve everyone of them. By the end of 8 week,&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;I hope to have connected as much as possible with other passionate and like minded interns. I hope to join as many important tech circles as possible.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;As an intern with some considerable knowledge of frontend web development knowledge, I hope to help other interns who do not know as much. I hope to help out and make as much impact as possible in this season of the HNG internship.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;I plan to learn alot. I really intend to learn so much from this internship. After all that is one of the primary reasons for my enrolling in this internship – to learn and become a better frontend web developer.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;I plan to follow up on every task with as much passion and disciplined effort as i can possibly put in. I hope to build a lot – to build and work on every project with so much passion.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Finally, I hope to join the final ones that will make it into the HNG internship season 8 finals – i hope to emerge as one of the finalist. In fact, I hope to emerge as the best intern in my track and also to win as much available awards as possible.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Life as a HNG intern so far has been good. The first task is not a tough one. I pray I will be able to handle all the remaining tasks in this internship as good as I am handling this first one. I pray to achieve all my set out goals by the end of this internship as well. &lt;/p&gt;

&lt;p&gt;So go ahead and wish me good luck in the comments area.&lt;/p&gt;

&lt;p&gt;Thanks for reading and CHEERS!!!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Fixing gulp-sass issues in gulp 4.</title>
      <dc:creator>Andrew James Okpainmo</dc:creator>
      <pubDate>Fri, 30 Apr 2021 15:29:26 +0000</pubDate>
      <link>https://dev.to/okpainmo/fixing-gulp-sass-issues-in-gulp-4-24o1</link>
      <guid>https://dev.to/okpainmo/fixing-gulp-sass-issues-in-gulp-4-24o1</guid>
      <description>&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe3px8t6vpul6wzwicr4v.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe3px8t6vpul6wzwicr4v.PNG" alt="Alt Text"&gt;&lt;/a&gt;&lt;br&gt;
Gulp is super cool - no doubt about that. This article is not the full definitive gulp article that I promised to post. This article is an important fix for gulp-sass in gulp 4.&lt;/p&gt;

&lt;p&gt;I got to know about gulp while building a bootstrap blog template. While navigating the themes on &lt;a href="https://themes.getbootstrap.com/" rel="noopener noreferrer"&gt;Bootstrap&lt;/a&gt;, I got informed about a very important tool that web developers were using - That tool was gulp.&lt;br&gt;
I started using gulp this year, and I've found a very superb tool in it. &lt;br&gt;
Gulp is so helpful especially with cool things like minifying and autoprefixing - Gulp does even more. &lt;/p&gt;

&lt;p&gt;While setting up gulp, I encountered some challenges. One of which was with the gulp-sass plugin.&lt;br&gt;
Gulp-sass is a gulp plugin that enables developers to use sass through gulp. &lt;/p&gt;

&lt;p&gt;I believe that the same issues that I encountered with gulp-sass drove a lot of developers away from using gulp to other options like grunt.&lt;/p&gt;

&lt;p&gt;Setting up gulp was kind of tedious for me since it was my first time using it. Anyway, things finally worked out. But then, not everything worked out fine as &lt;strong&gt;"sass modules will not be processed"&lt;/strong&gt; - Somehow, gulp failed to process my sass modules.&lt;br&gt;
Sass partials were not working. Both the &lt;strong&gt;@use&lt;/strong&gt; and the &lt;strong&gt;@import&lt;/strong&gt; rules failed to pull in a sass module.&lt;/p&gt;

&lt;p&gt;After so many searches online - thanks to google, I found a stack overflow page that &lt;strong&gt;"saved my gulp"&lt;/strong&gt;.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhmpe344zkajf4942xj2t.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhmpe344zkajf4942xj2t.PNG" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

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

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

&lt;p&gt;Gulp seems not to have a good community base where releases and latest updates are published and discussed - maybe there is one I don't know of. But it took me days to finally figure out what was wrong with my gulp-sass plugin.&lt;/p&gt;

&lt;p&gt;I made the following discoveries about gulp-sass. And with some more homework, I finally got my gulp working perfectly - at least as much as I know now. &lt;/p&gt;

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

&lt;ol&gt;
&lt;li&gt;Node-sass is the default compiler of sass inside of gulp. So if you fail to set the compiler to "sass" in your gulp.js script, Node-sass steps in as default. And sass will not be fully explored. Node-sass won't process sass completely, it seems outdated(deprecated). &lt;/li&gt;
&lt;li&gt;You need to set your sass compiler to "sass" (Dart-sass) to completely process sass inside of gulp. &lt;/li&gt;
&lt;li&gt;The docs on the NPM gulp-sass page need some important updating. &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;With the above discoveries, I got my gulp well set up after making some changes. &lt;/p&gt;

&lt;p&gt;Here are some steps to getting your gulp-sass plugin well set in case you got stuck with it as I did.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Upgrade gulp-sass to the latest version if you have been using it(gulp-sass) for a long time.&lt;/li&gt;
&lt;li&gt;Install &lt;a href="https://sass-lang.com/dart-sass" rel="noopener noreferrer"&gt;Dart-sass&lt;/a&gt; by typing out the command below if you use NPM.&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;"npm install --save-dev sass"&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;Update your gulp task as necessary.&lt;/li&gt;
&lt;li&gt;Set your sass compiler to sass (Dart-sass)&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;"sass.compiler = require('sass');"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here is my own gulp tasks script. &lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsxmlkdhk2rxa4wtlyo7s.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsxmlkdhk2rxa4wtlyo7s.PNG" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If properly executed, these few steps should help get your sass(gulp-sass) running well in gulp.&lt;/p&gt;

&lt;p&gt;This article may not be as detailed enough for a total gulp beginner, But with some more hard work, even beginners should be able to get over their gulp-sass issues with the tips in this article.&lt;/p&gt;

&lt;p&gt;I hope this article helps to get someone in the gulp-sass mess out as quickly as possible.&lt;/p&gt;

&lt;p&gt;Cheers.&lt;/p&gt;

</description>
      <category>css</category>
      <category>sass</category>
      <category>gulpjs</category>
    </item>
    <item>
      <title>My first Dev.to post.</title>
      <dc:creator>Andrew James Okpainmo</dc:creator>
      <pubDate>Sun, 25 Apr 2021 15:30:42 +0000</pubDate>
      <link>https://dev.to/okpainmo/my-first-dev-to-post-3hnc</link>
      <guid>https://dev.to/okpainmo/my-first-dev-to-post-3hnc</guid>
      <description>&lt;p&gt;Hey, I am Andrew Okpainmo. I am a Front end web developer. This is my first post on Dev.to. I am so glad you are reading this post. &lt;br&gt;
I came on Dev.to to start out my developer blogging career. I have been coding for some years now, and I believe that I have got some good knowledge that will be of much good to fellow developers on Dev.to. &lt;br&gt;
I am an aspiring full-stack Js developer, but for now, I build websites with frontend web development technologies. &lt;br&gt;
I am always open to help, at least that's one primary reason why we are all here. anytime soon, I will be rolling out some good articles. &lt;br&gt;
It's great being on Dev.to, and I hope to really make some good impact.&lt;br&gt;
If you are interested in how to get your Gulp workflow up and running so well. Then check out my next article. It's going to be the most definitive article about setting up Gulp that you've ever read.&lt;br&gt;
I'll be sharing how to set gulp for your project in 2021. Thanks to all the troubles I faced while setting mine up.&lt;br&gt;
you can't miss it.&lt;br&gt;
Cheers.&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
