<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Articles by Efe]]></title><description><![CDATA[Articles by Efe]]></description><link>https://fefe-writes.hashnode.dev</link><generator>RSS for Node</generator><lastBuildDate>Thu, 08 Oct 2026 07:27:03 GMT</lastBuildDate><atom:link href="https://fefe-writes.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Elevating My Open Source Journey with the GitSkilled Education Program]]></title><description><![CDATA[Open source has always fascinated me. For a long time, I thought of it as something beyond my reach because I saw it as a community where only experienced developers could contribute. Although I was already familiar with Git and GitHub, I saw Open so...]]></description><link>https://fefe-writes.hashnode.dev/elevating-my-open-source-journey-with-the-gitskilled-education-program</link><guid isPermaLink="true">https://fefe-writes.hashnode.dev/elevating-my-open-source-journey-with-the-gitskilled-education-program</guid><category><![CDATA[Open Source]]></category><category><![CDATA[GitHub]]></category><category><![CDATA[womenwhocode]]></category><dc:creator><![CDATA[Efe Akhigbe]]></dc:creator><pubDate>Tue, 08 Jul 2025 08:00:27 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1752245329106/295fc4af-0e78-4fee-b755-ad9543ff11f9.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Open source has always fascinated me. For a long time, I thought of it as something beyond my reach because I saw it as a community where only experienced developers could contribute. Although I was already familiar with Git and GitHub, I saw Open source as a complex space, one where only unique, groundbreaking code had a place.</p>
<p>But like everything I'm passionate about, I began reading articles and exploring Open source projects on GitHub. I was blown away by how thousands of people could contribute different lines of code, and it would still all come together to make sense.</p>
<p>As a designer, I believed Open source was exclusive to developers, that there was no room for designers or non-coders. It became overwhelming at some point, and I eventually took a break.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1751927503705/ed9a0aa4-886c-4e78-9d96-3170df4c482b.png" alt class="image--center mx-auto" /></p>
<h2 id="heading-wait-designers-can-contribute-to-open-source"><strong>Wait... Designers Can Contribute to Open Source?</strong></h2>
<p>Everything changed when I stumbled upon <a target="_blank" href="https://mautic.org/">Mautic</a>, an Open source marketing product that welcomes non-code contributions. You can imagine my joy when I saw the opportunity to contribute through design. It felt like a dream come true.</p>
<p>I made my first contribution by <a target="_blank" href="https://github.com/orgs/mautic/projects/21/views/5?pane=issue&amp;itemId=83073834&amp;issue=mautic%7Clow-no-code%7C43">designing visual imagery</a> for the <a target="_blank" href="https://mautic.org/blog/mautic-5-2-pleiades-a-new-star-in-marketing-automation/">Mautic 5.2.0</a> release. I was thrilled when my contribution was accepted and even more excited when I saw my name listed in the <a target="_blank" href="https://mautic.org/blog/mautic-5-2-pleiades-a-new-star-in-marketing-automation/">credits</a> section of the blog post announcing the release.</p>
<p>That same month, I won a case study challenge. My entry, AccessPalette, was centered on accessibility and Open source. It’s a tool that helps designers and developers choose accessible text and background color combinations that meet <a target="_blank" href="https://www.w3.org/WAI/standards-guidelines/wcag/">Web Content Accessibility Guidelines (WCAG)</a> standards. I was excited that my idea was recognized and awarded.</p>
<p>At that point, I had to decide: would AccessPalette remain just a case study, or could I turn it into a real product? I believed it could be a valuable tool for designers and developers alike, but reality hit, I had no idea how to start an Open source project.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1751927658067/81b8ae2f-79ff-4f47-9f94-0cccdec51d3c.png" alt class="image--center mx-auto" /></p>
<h2 id="heading-discovering-the-gitskilled-education-program"><strong>Discovering the GitSkilled Education Program</strong></h2>
<p>I searched endlessly, reading articles, browsing forums, and digging through resources on how to launch an Open source project. While I found helpful content, nothing provided the practical guidance I needed, not just to contribute, but to maintain an Open source project.</p>
<p>I didn’t know what license to use, how to set up an issue template, contribution guidelines, and so on. It felt like too much, and I became overwhelmed. Eventually, I abandoned the idea until I discovered the <a target="_blank" href="https://github.com/gitskilled">GitSkilled Education Program</a> through the <a target="_blank" href="https://shecodeafrica.org/">She Code Africa</a> community.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1751927729512/8efcbd48-61d8-4329-8d07-de6d844615a3.png" alt class="image--center mx-auto" /></p>
<h2 id="heading-what-is-gitskilled"><strong>What Is GitSkilled?</strong></h2>
<p>The <a target="_blank" href="https://github.com/gitskilled">GitSkilled Education Program</a> helps aspiring developers and contributors get started with Open source. It offers both guidance and resources for contributing meaningfully to Open source projects, including exam vouchers for the GitHub Certification, covering the cost entirely.</p>
<p>This was exactly what I needed to revive AccessPalette. Through the program, I gained access to the <a target="_blank" href="https://learn.microsoft.com/en-us/collections/w1nebonx2g64nw">Microsoft Learn Platform</a>, where I learned things I’d never explored before like setting up a GitHub organization and managing work with GitHub Projects.</p>
<p>I also discovered how to foster engagement through GitHub Discussions, something that will be very useful when contributors begin joining the project. Plus, I got to try out features like GitHub Codespaces and GitHub Copilot. Mind-blowing right!</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1751927826524/1a71c37c-f8e3-487e-9361-cf184e36ae3a.png" alt class="image--center mx-auto" /></p>
<h2 id="heading-the-github-foundation-learning-path"><strong>The GitHub Foundation Learning Path</strong></h2>
<p>This experience opened up a whole new world for me. I completed the 8-module <a target="_blank" href="https://learn.microsoft.com/en-us/training/paths/github-foundations/">GitHub Foundations Learning Path</a> and earned my <a target="_blank" href="https://learn.microsoft.com/api/achievements/share/en-us/EfeAkhigbe-3779/9Y2Q8TEU?sharingId=43C841452F50034">completion trophy</a>. I learned more than I ever imagined, especially about features that are foundational to starting a successful project.</p>
<p>I realized that I could actually do this. The skills I gained weren’t just theoretical, they were practical and empowering.</p>
<h2 id="heading-joining-the-gitskilled-africa-community"><strong>Joining the GitSkilled Africa Community</strong></h2>
<p>Completing the course gave me access to the GitSkilled Africa Community, a supportive group of like-minded individuals passionate about open source. The atmosphere was welcoming and inspiring. I met people who had already launched their own projects, and reading about their journeys gave me the motivation to keep going.</p>
<p>I'm incredibly grateful to be part of this community.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1751927885375/caf61872-4a74-4278-a76c-642e2176af35.png" alt class="image--center mx-auto" /></p>
<h2 id="heading-becoming-github-certified"><strong>Becoming GitHub Certified</strong></h2>
<p>Preparing for the <a target="_blank" href="https://examregistration.github.com/">GitHub Certification Exam</a> was a challenge but a worthwhile one. Even though the voucher covered the cost, I didn’t want to take the opportunity for granted.</p>
<p>I revisited several modules, carefully studied every topic in the <a target="_blank" href="https://assets.ctfassets.net/wfutmusr1t3h/1kmMx7AwI4qH8yIZgOmQlP/79e6ff1dfdee589d84a24dd763b1eef7/github-foundations-exam-study-guide__1_.pdf">examination prep guide</a>, and found helpful resources like a <a target="_blank" href="https://ghcertified.com/practice_tests/foundations/">practice test</a> and a <a target="_blank" href="https://www.freecodecamp.org/news/github-foundations-certified-exam-prep-guide/">FreeCodeCamp article</a> that explained the exam topics in depth.</p>
<p>I was overjoyed to pass the exam and receive my certificate and <a target="_blank" href="https://www.credly.com/badges/06f10f8c-2ea2-449f-8d53-121ff1f7c5b2/public_url">badge</a> almost immediately. Becoming GitHub Certified means a lot to me, it’s proof that I have the skills to lead and build Open source projects.</p>
<h2 id="heading-gratitude"><strong>Gratitude</strong></h2>
<p>I'm truly grateful to the <a target="_blank" href="https://github.com/gitskilled">GitSkilled Education Program</a> for helping make my open-source dream a reality. With the knowledge I gained, I was finally able to start <a target="_blank" href="https://github.com/EfeAkhigbe/AccessPalette">AccessPalette</a>.</p>
<p>Thank you for equipping me with all the tools I need to succeed.</p>
<p>A big thank you to <a target="_blank" href="https://shecodeafrica.org/">She Code Africa</a> for bringing this opportunity to my attention, for checking in on us, and for helping us stay focused from start to finish. Your support has been invaluable.</p>
<p>If you’d like to contribute to <a target="_blank" href="https://github.com/EfeAkhigbe/AccessPalette">AccessPalette</a>, that would be amazing! You’ll find the repository <a target="_blank" href="https://github.com/EfeAkhigbe/AccessPalette">here</a>. Don’t forget to drop a star ⭐. Thank you!</p>
<h2 id="heading-useful-links"><strong>Useful Links</strong></h2>
<ul>
<li><p><a target="_blank" href="https://github.com/gitskilled">About GitSkilled</a></p>
</li>
<li><p><a target="_blank" href="https://learn.microsoft.com/en-us/training/paths/github-foundations/">The GitHub Foundations Learning Path</a></p>
</li>
<li><p><a target="_blank" href="https://github.com/EfeAkhigbe/AccessPalette">Contribute to AccessPalette</a></p>
</li>
<li><p><a target="_blank" href="https://opensource.com/resources/what-open-source">What is Open Source?</a></p>
</li>
<li><p><a target="_blank" href="https://www.freecodecamp.org/news/github-foundations-certified-exam-prep-guide/">FreeCodeCamp Article on the GitHub Foundation Exam Guide</a></p>
</li>
<li><p><a target="_blank" href="https://ghcertified.com/practice_tests/foundations/">GitHub Foundation Practice Test</a></p>
</li>
</ul>
<h2 id="heading-lets-connect"><strong>Let’s Connect!</strong></h2>
<ul>
<li><p><a target="_blank" href="https://www.linkedin.com/in/efeakhigbe">LinkedIn</a></p>
</li>
<li><p><a target="_blank" href="https://www.x.com/efe_akhigbe">Twitter</a></p>
</li>
<li><p><a target="_blank" href="https://github.com/EfeAkhigbe">GitHub</a></p>
</li>
</ul>
]]></content:encoded></item><item><title><![CDATA[Set Up a React Project with Create-React-App]]></title><description><![CDATA[React is a JavaScript library for building user interfaces. React lets you break down a complex UI into reusable components.
The easiest and fastest way to set up a react project is the create-react-app tool. With this method, you do not need to inst...]]></description><link>https://fefe-writes.hashnode.dev/set-up-a-react-project-with-create-react-app</link><guid isPermaLink="true">https://fefe-writes.hashnode.dev/set-up-a-react-project-with-create-react-app</guid><category><![CDATA[React]]></category><category><![CDATA[create-react-app]]></category><category><![CDATA[JavaScript]]></category><category><![CDATA[Beginner Developers]]></category><category><![CDATA[Web Development]]></category><dc:creator><![CDATA[Efe Akhigbe]]></dc:creator><pubDate>Thu, 22 Apr 2021 11:23:31 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1752245192272/d930f9f3-b51e-417a-9276-83eed1b6621c.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>React is a JavaScript library for building user interfaces. React lets you break down a complex UI into reusable components.</p>
<p>The easiest and fastest way to set up a react project is the create-react-app tool. With this method, you do not need to install Babel or Webpack.</p>
<p>In this tutorial, we'll focus on setting up a react project by running the simple command <code>npx create-react-app my-app</code>.</p>
<h2 id="heading-prerequisite">Prerequisite</h2>
<ul>
<li><p>Knowledge of React.</p>
</li>
<li><p>Knowledge of the terminal.</p>
</li>
<li><p>Browser installed on your machine.</p>
</li>
</ul>
<p>Before we create-react-app, we need to install some useful tools. Let's get started.</p>
<h2 id="heading-install-nodejs">Install Node.js</h2>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1618677278880/DBkWAfySz.png" alt="node.png" /></p>
<p>To install Node.js, go to <a target="_blank" href="https://nodejs.org/en/download/">nodejs.org</a>. If you already have Node.js installed on your machine, run the command below on your terminal to confirm the version of the Node.js on your machine. You will need a version greater than or equal to 10.16.</p>
<pre><code class="lang-plaintext">node --version
</code></pre>
<p>Node package manager(npm) automatically comes with node installation. To check the version of npm on your machine, run the command below</p>
<pre><code class="lang-plaintext">npm --version
</code></pre>
<p>You will need a version of npm greater than or equal to 5.6. If you have a version below the ones listed, update Node.js and npm on your device.</p>
<h2 id="heading-download-and-install-a-code-editor">Download and install a code editor</h2>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1618941913493/u0nMhRZjO.png" alt="Code editor.png" /></p>
<p>You can use any code editor of your choice. If you don't have any installed, I recommend Visual Studio Code (VS Code). Go to <a target="_blank" href="https://code.visualstudio.com/download">code.visualstudio.com</a> to download VS Code.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1618677729973/YFf8JDB0w.png" alt="vscode.png" /></p>
<h2 id="heading-run-create-react-app-command">Run create-react-app command</h2>
<p>If you've ever installed create-react-app <strong>globally</strong> on your device using the command <code>npm install -g create-react-app</code>, you have to uninstall the package. Run the command below to uninstall:</p>
<pre><code class="lang-plaintext">npm uninstall -g create-react-app
</code></pre>
<p>or</p>
<pre><code class="lang-plaintext">yarn global remove create-react-app
</code></pre>
<p>Now, you can run the command below in your terminal</p>
<pre><code class="lang-plaintext">npx create-react-app my-app
</code></pre>
<p>It will take a few minutes to setup and at the end, a message will be displayed similar to the one below.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1618937400769/bdcJkELxA.png" alt="Terminal.png" /></p>
<p><code>npx</code> is a package runner tool that comes with npm version 5.2.</p>
<p>After running the <code>npx create-react-app my-app</code>, a folder will appear on your device called <code>my-app</code>.</p>
<p>Open up the <code>my-app</code> folder with a code editor. It contains a good number of files you will need for your project.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1618937052317/d7kWvcuV0.png" alt="Folder-structure.png" /></p>
<h2 id="heading-start-the-react-development-server">Start the React development server</h2>
<p>In your terminal, change the directory to the <code>my-app</code> folder.</p>
<pre><code class="lang-plaintext">cd my-app
</code></pre>
<p>Next, run the command below to start the development server.</p>
<pre><code class="lang-plaintext">npm start
</code></pre>
<p>After running the command, a tab will automatically open up in your browser that points to <code>http://localhost:3000/</code>. This tab will display a page similar to the image below.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1618676579372/qDog8GBcA.png" alt="react.png" /></p>
<p>There you have it! You've set up a react project with the create-react-app tool. Now, you can go back to your code editor and code away.</p>
]]></content:encoded></item><item><title><![CDATA[A Beginner's Guide to Git and Github]]></title><description><![CDATA[Git and Github are essential tools to programmers. They keep track of changes in a file and also encourages collaboration between programmers.
Think of Git and Github as a time machine that can go back in time to provide information on what happened,...]]></description><link>https://fefe-writes.hashnode.dev/a-beginners-guide-to-git-and-github</link><guid isPermaLink="true">https://fefe-writes.hashnode.dev/a-beginners-guide-to-git-and-github</guid><category><![CDATA[GitHub]]></category><category><![CDATA[Git]]></category><category><![CDATA[Beginner Developers]]></category><category><![CDATA[#codenewbies]]></category><category><![CDATA[Web Development]]></category><dc:creator><![CDATA[Efe Akhigbe]]></dc:creator><pubDate>Fri, 09 Apr 2021 11:23:20 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1752244975018/4db285f6-5510-4b7e-954b-6d0324c3f572.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Git and Github are essential tools to programmers. They keep track of changes in a file and also encourages collaboration between programmers.</p>
<p>Think of Git and Github as a time machine that can go back in time to provide information on what happened, how it happened, and who caused a change in the past.</p>
<p>In this article, you'll learn how to:</p>
<ul>
<li><p>Install and configure git</p>
</li>
<li><p>Create a local git repository</p>
</li>
<li><p>Create a remote repository</p>
</li>
<li><p>Push files to github</p>
</li>
</ul>
<h2 id="heading-what-is-git">What is git?</h2>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1617880065453/WjG3cyJX5.jpeg" alt="git.jpg" /></p>
<p>Git is open-source software that tracks changes made to a file. It records snapshots of changes made. Linus Torvalds developed git in 2005.</p>
<p>A Software that tracks changes made to a file is known as Version Control System (VCS). There are various version control systems, like Subversion, Mercurial, but git is the most widely used.</p>
<h2 id="heading-reasons-why-you-should-use-git">Reasons why you should use git</h2>
<ul>
<li><p>Git makes it easy to view the timeline of changes made to a project.</p>
</li>
<li><p>Git encourages collaboration among developers.</p>
</li>
<li><p>Git allows you to view, restore and make changes to the previous version of a code.</p>
</li>
<li><p>Git lets you push projects to a remote repository.</p>
</li>
</ul>
<h2 id="heading-download-install-and-configure-git">Download, install and configure git</h2>
<p>Click on one of the links below to download and install git on your device</p>
<ul>
<li><p><a target="_blank" href="https://git-scm.com/download/win">Windows</a></p>
</li>
<li><p><a target="_blank" href="https://git-scm.com/download/mac">MacOS</a></p>
</li>
<li><p><a target="_blank" href="https://git-scm.com/download/linux">Linux/Unix</a></p>
</li>
</ul>
<p>Now open up git and run your first git command.</p>
<pre><code class="lang-plaintext">git --version
</code></pre>
<p>The command above will return the current version of git on your device.</p>
<p>The next step is to configure git. Git has to know who you are, therefore include your username and email address. Git uses this information to document the contributor whenever there is a change to the code.</p>
<pre><code class="lang-plaintext">git config --global user.name "myusername"
</code></pre>
<pre><code class="lang-plaintext">git config --global user.email "myemail@mail.com"
</code></pre>
<p>Hurray! You've successfully installed git and run your first git command. Now the real work begins.</p>
<h2 id="heading-working-with-git">Working with git</h2>
<p>Let's imagine you have a project and you want to track this project with version control. Follow the steps below to start working with git</p>
<h3 id="heading-step-1-initialize-a-git-repository">Step 1: Initialize a git repository</h3>
<p>A git repository is the <code>.git/</code> folder inside a project. It tracks and records all the various versions of the project. The <code>.git/</code> folder is hidden by default on your machine.</p>
<p>To initialize a git repository in a project, open the project with git or open git and change directory <code>cd</code> to the project root directory.</p>
<pre><code class="lang-plaintext">cd /Users/user/my_project
</code></pre>
<p>Next, initialize a git repository in the project by running the command below</p>
<pre><code class="lang-plaintext">git init
</code></pre>
<p>At this point, there is nothing for git to track because you've not told git the files you want to track.</p>
<h3 id="heading-step-2-add-files">Step 2: Add files</h3>
<p>Run the command <code>git add</code> to specify the files you want git to track.</p>
<pre><code class="lang-plaintext">git add index.html
</code></pre>
<pre><code class="lang-plaintext">git add style.css
</code></pre>
<pre><code class="lang-plaintext">git add app.js
</code></pre>
<p>Adding files one after the other can be time-consuming. The command below adds all file in your project folder at once:</p>
<pre><code class="lang-plaintext">git add .
</code></pre>
<p>If don't want to add a file, simply remove the file by running this command <code>git rm --cached filename</code>. For example</p>
<pre><code class="lang-plaintext">git rm --cached style.css
</code></pre>
<p>Now, you've specified the files you want git to track. The next step is to save all the changes with a commit.</p>
<h3 id="heading-step-3-commit-changes">Step 3: Commit changes</h3>
<p>A "git commit" command saves all the changes to the local repository. It captures a snapshot of a project along with a description from the user and the user identity.</p>
<p>To commit the tracked files to the local repository, use the <code>commit</code> command along with a short message <code>-m "short message"</code>. For example</p>
<pre><code class="lang-plaintext">git commit -m "Initial commit"
</code></pre>
<p>Make sure your commit message is in the present tense.</p>
<p>Now, git has a record of the current state of your project. If you make any change to the file and want to commit that version to git, you have to run the <code>git add</code> command and <code>git commit</code> command with a git message describing the change.</p>
<p>Note that the project is located on your machine and can be accessed only through your machine. This is where Github comes in. Github hosts your project on the web, making it easy to access from any device and by anyone(if you choose to keep your repository public).</p>
<h2 id="heading-what-is-github">What is Github?</h2>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1617879908605/kou8-QYMP.jpeg" alt="github.jpg" /></p>
<p>Github is a code hosting platform for version control and collaboration. Github has all the benefits of git and even more.</p>
<h2 id="heading-reasons-why-you-should-use-github">Reasons why you should use GitHub</h2>
<ul>
<li><p>Github hosts your repository for free on the web.</p>
</li>
<li><p>Github encourages collaboration with other developers around the world.</p>
</li>
<li><p>Github lets you clone projects you love to your machine and start working on them immediately.</p>
</li>
<li><p>You can never lose your file on Github except you intentionally delete it.</p>
</li>
<li><p>Github allows you to contribute to any open source projects of your choice.</p>
</li>
<li><p>Github is a community of over a 56million developers. It is a great place to showcase your work to the world and learn from others.</p>
</li>
</ul>
<h2 id="heading-join-github-and-create-a-remote-repository">Join Github and create a remote repository</h2>
<p>Creating a GitHub account is very simple. Go to <a target="_blank" href="https://github.com/">github.com</a> and signup with your email address and password.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1617900083270/xUpIhtbfP.png" alt="Github.png" /></p>
<p>To create a GitHub repository, follow the steps below:</p>
<p>Step 1: Go to the top right corner of your GitHub homepage. Click on the plus button. Next, click on the new repository.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1617900125492/ZhqfWpHWP.png" alt="New repository.png" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1617960792142/pCEUtJ5lN.png" alt="New Repository2.png" /></p>
<p>Step 2: Input a name for your repository</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1617900152990/RpF27m3lP.png" alt="Repository name.png" /></p>
<p>Step 3: Initialize the repository with a README file.</p>
<p>A <a target="_blank" href="https://docs.github.com/en/github/creating-cloning-and-archiving-repositories/about-readmes">README</a> file contains important information about your project. It's a form of documentation that gives a detailed explanation of your project.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1617900274042/Ub7J4V-2K.png" alt="Add a READ Me.png" /></p>
<p>Step 4: Click the "create repository" button.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1617900199722/e6viTPebC.png" alt="Create Repository.png" /></p>
<p>You've created a remote repository. It's time to push your project.</p>
<h2 id="heading-push-your-project-to-github">Push your project to GitHub</h2>
<p>To push your project to GitHub, make sure you are currently in the project directory and you've committed all changes, then run the command below on git.</p>
<pre><code class="lang-plaintext">git branch -M main
</code></pre>
<pre><code class="lang-plaintext">git remote add origin https://github.com/yourusername/repositoryname.git
</code></pre>
<pre><code class="lang-plaintext">git push -u origin main
</code></pre>
<p>Since this is your first time pushing to GitHub, GitHub will require you to validate your credentials by asking you to log in. Next, refresh your GitHub page and, you will see your project on Github.</p>
<p>If you make any change to your local repository and you would like to push the change to GitHub, you don't have to initialize a repository again since you've done that already. Just add the changes using the <code>git add</code> command, commit your changes and push to Github.</p>
<h2 id="heading-other-git-commands-you-should-know">Other git commands you should know.</h2>
<p><code>git status</code> lets you know the changes that are tracked and those that are not.</p>
<p><code>git log</code> displays the history of commits on your local repository.</p>
<p><code>git clone</code> downloads a copy of a remote repository to your machine.</p>
<p><code>git pull</code> pulls the latest update from a remote repository to the local version on your machine.</p>
<p><code>git branch</code> lets you create or delete a branch</p>
<h2 id="heading-conclusion">Conclusion</h2>
<p>Git and Github are tools you will work with as a developer. They may seem hard to learn on the first try, but with constant practice, you will be comfortable using these tools. I hope this article was helpful. If you have any questions, feel free to ask in the comment section below.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1617905227554/CnraJ44qk.png" alt="Working with Git and Github 1.png" /></p>
<h2 id="heading-resources">Resources</h2>
<ul>
<li><p><a target="_blank" href="https://git-scm.com/book/en/v2/Getting-Started-What-is-Git%3F">Pro git book</a></p>
</li>
<li><p><a target="_blank" href="https://guides.github.com/activities/hello-world/">Github Guides</a></p>
</li>
<li><p><a target="_blank" href="https://www.katacoda.com/courses/git/">Learn Git Version Control using Interactive Browser-Based Scenarios</a></p>
</li>
</ul>
]]></content:encoded></item><item><title><![CDATA[How to Make a Webpage Responsive]]></title><description><![CDATA[During the early years of the web, only a computer could access a website, but today we can access the web using a mobile phone, tablet, and even tv. All these devices have various screen sizes. Web developers must create websites that can adapt to a...]]></description><link>https://fefe-writes.hashnode.dev/how-to-make-a-webpage-responsive</link><guid isPermaLink="true">https://fefe-writes.hashnode.dev/how-to-make-a-webpage-responsive</guid><category><![CDATA[CSS]]></category><category><![CDATA[CSS3]]></category><category><![CDATA[Web Development]]></category><category><![CDATA[Responsive Web Design]]></category><category><![CDATA[Frontend Development]]></category><dc:creator><![CDATA[Efe Akhigbe]]></dc:creator><pubDate>Sat, 06 Feb 2021 09:52:10 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1752244715062/a31a15af-e6ba-4966-9c0b-57d7374fcc2f.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>During the early years of the web, only a computer could access a website, but today we can access the web using a mobile phone, tablet, and even tv. All these devices have various screen sizes. Web developers must create websites that can adapt to any screen size. This article explores the ways we can make a website responsive.</p>
<h2 id="heading-what-is-responsiveness">What is responsiveness?</h2>
<p>Responsiveness is a website's ability to adapt to the browser's viewport automatically. The layout of this blog on a mobile device is different from that on a laptop. You will notice that on a laptop device, the like, share, and Twitter buttons are displayed beside the article, while on a mobile phone, they appear below the article. That is because this website is responsive.</p>
<h2 id="heading-think-mobile-first">Think mobile-first</h2>
<p>Mobile devices account for over 50% of global website traffic. What this means is that half of the internet users access the web through their mobile devices. In the US alone, over 40 million internet users are mobile-only. With this high number of internet users accessing the web through their mobile devices, it is advisable to build your website mobile-first before adapting your designs for other devices. With this approach, you can be sure that your website is fully responsive on mobile devices.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1612553123896/FcmYax_6X.png" alt="mobile-first.png" /></p>
<h2 id="heading-do-not-forget-the-viewport-meta-tag">Do not forget the viewport meta tag</h2>
<p>The viewport is the area of a web page visible to the user. The viewport does not have a fixed size but varies from one device to another. A desktop has a larger viewport compared to that of a mobile device.</p>
<p>The viewport meta tag is an HTML tag found in the <code>&lt;head&gt;</code> of an HTML document. It tells the browser how to render a webpage.</p>
<pre><code class="lang-plaintext">&lt;head&gt;
    …
    &lt;meta name="viewport" content="width=device-width, initial-scale=1"&gt;
    …
&lt;/head&gt;
</code></pre>
<p><code>width=device-width</code> sets the width of the content to the width of the device. <code>initial-scale=1</code> sets the initial zoom level when a user visits the page.</p>
<p>If you omit the viewport meta tag, mobile devices will display a webpage at desktop screen width, making it difficult to read.</p>
<h2 id="heading-apply-media-query">Apply media query</h2>
<p>A media query is a feature of CSS3 that tells a browser to modify a webpage if it fulfills a condition. Media queries help to achieve responsiveness by customizing webpages to support various screen sizes. They target a device property such as screen resolution, orientation, width, etc, then add styles that make it responsive.</p>
<p>The width media feature specifies the width of the viewport. It is one of the media queries you will certainly use to achieve responsiveness. This can be an exact number(for example 768px) or a range using <code>min-width</code> and <code>max-width</code>.</p>
<pre><code class="lang-plaintext">/* When the viewport is at least 700px and above */
@media screen and (min-width: 700px) {
  .element {
    /* Apply some styles */
  }
}
</code></pre>
<pre><code class="lang-plaintext">/* When the viewport is between 500px and 800px wide */
@media only screen and (min-width: 500px) and (max-width: 800px) {
  .element {
    /*Apply some styles*/
  }
}
</code></pre>
<h2 id="heading-layout-with-css-flexbox-and-css-grid">Layout with CSS Flexbox and CSS Grid</h2>
<p>Flexbox and grid layout are the easiest and most effective ways of creating a responsive layout without using positioning or float.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1612555696123/FsgwdBfbA.png" alt="flexbox-and-grid.png" /></p>
<h3 id="heading-css-flexbox">CSS Flexbox</h3>
<p>Flexbox is a layout method in one dimension. With flexbox, you can arrange content in rows **or **columns. Flexbox is efficient because contents can grow to fill out space <code>flex-grow</code> or shrink to prevent overflow <code>flex-shrink</code>.</p>
<pre><code class="lang-plaintext">.container {
    display: flex;
}
</code></pre>
<h3 id="heading-css-grid">CSS Grid</h3>
<p>CSS Grid is a two-dimensional layout method for laying out items in rows **and **columns. CSS Grid aids in dividing a page into various segments. Grid layout is the most effective way of creating a responsive layout in CSS.</p>
<pre><code class="lang-plaintext">.container {
    display: grid;
}
</code></pre>
<h2 id="heading-make-images-flexible">Make images flexible</h2>
<p>A picture is worth a thousand words</p>
<p>There is no doubt that images play a vital role on web pages. Images are appealing and easy to understand compared to blocks of text. A poorly laid out image can mess up the layout of a website preventing visitors from returning. The code snippet below makes images responsive.</p>
<pre><code class="lang-plaintext">img {
 max-width: 100%;
}
</code></pre>
<p>The code prevents images from exceeding the width of their container. You can apply this for video content too.</p>
<p>If you want to display a cropped version of an image for smaller screen sizes, an understanding of art direction is essential. You can learn more about this <a target="_blank" href="https://developer.mozilla.org/en-US/docs/Learn/HTML/Multimedia_and_embedding/Responsive_images#art_direction">here</a></p>
<h2 id="heading-use-relative-units">Use relative units</h2>
<p>Units are vital when creating a responsive layout. There are several units in CSS, each one of them displays content differently. For example, pixel <code>px</code> is a fixed unit and it prevents users from altering the font size of a website while <code>em</code> and other relative units give users the freedom to adjust the font size from their device settings.</p>
<p>Relative units specify a length of an element in reference to another element. Relative units are practical in creating a scalable layout.</p>
<p>Examples of relative units and their description:</p>
<ul>
<li><p><code>rem</code> is relative to the font size of the root element.</p>
</li>
<li><p><code>em</code> is relative to the font size of the parent element.</p>
</li>
<li><p><code>vh</code> is relative to 1% of the viewport's height.</p>
</li>
<li><p><code>vw</code> is relative to 1% of the viewport's width.</p>
</li>
</ul>
<h2 id="heading-conclusion">Conclusion</h2>
<p>Responsiveness of a website on all screen sizes should be top priority when creating a website. The simple and effective steps in this article will certainly make your website responsive across all devices.</p>
]]></content:encoded></item><item><title><![CDATA[Recursion simplified]]></title><description><![CDATA[Recursion is a process in which a function calls itself. This function is called a recursive function. A simple example of recursion is candy inside a matryoshka doll.


Matryoshka dolls are a set of ]]></description><link>https://fefe-writes.hashnode.dev/recursion-simplified</link><guid isPermaLink="true">https://fefe-writes.hashnode.dev/recursion-simplified</guid><category><![CDATA[JavaScript]]></category><dc:creator><![CDATA[Efe Akhigbe]]></dc:creator><pubDate>Fri, 15 Jan 2021 08:00:00 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1752244484105/607b8db4-ac64-418e-991f-b6a038409ee4.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Recursion is a process in which a function calls itself. This function is called a recursive function. A simple example of recursion is candy inside a matryoshka doll.</p>
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1610554279922/YMEk-9cVr.jpeg" alt="Traditional_Russian_Matryoshka.jpg" />

<p>Matryoshka dolls are a set of wooden dolls of decreasing size placed one inside another. To get the candy, we would take the following steps as shown in the diagram below:</p>
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1610637711804/zWlc7bmD9.png" alt="recursion.png" />

<p>This procedure is recursive.</p>
<h2>Features of a recursive function</h2>
<pre><code class="language-plaintext">function recurse() {
    if (condition) {
        //base case
    } else {
        recurse(); //recursive case
    }
}
</code></pre>
<p>A recursive function has two parts:</p>
<p>Recursive case: A recursive case is a part of the function that calls itself. Without a recursive case, a recursive function will not exist.</p>
<p>Base case: A base case is a terminating condition that tells the function when to stop calling itself. If omitted, the recursive function will run continuously and eventually crash your program.</p>
<h2>Example of recursion</h2>
<p>A good example of recursion is factorial.</p>
<p>Factorial is the product of an integer and all the positive integers below it. For example</p>
<ul>
<li><p>the factorial of 9 is <code>9! = 9 x 8 x 7 x 6 x 5 x 4 x 3 x 2 x 1</code></p>
</li>
<li><p>the factorial of 3 is <code>3! = 3 x 2 x 1 = 6</code></p>
</li>
</ul>
<p>This is what the code will look like in JavaScript</p>
<pre><code class="language-plaintext">function factorial(num) {
    if (num == 1 || num == 0) {
        return 1;  //base case
    } else {
        return num * factorial(num - 1);   //recursive case
    }
}

factorial(3);
//6
</code></pre>
<p>From the above code we can see that the function calls itself again <code>factorial(num - 1)</code> but this time, minus one which makes it recursive.</p>
<h2>Now, let's examine what happens when we pass 3 into the function argument</h2>
<p>Since <code>3</code> is not equal to <code>1</code> or <code>0</code>it will skip the base case and proceed to the recursive case which, results in <code>3 * factorial(3 - 1)</code></p>
<pre><code class="language-plaintext">3 * factorial(2)
</code></pre>
<p><code>factorial(2)</code> will go through the same process. <code>2</code> is not equal to <code>1</code> or <code>0</code> it will skip the base case and proceed to the recursive case which, will result in <code>2 * factorial(2 - 1)</code></p>
<pre><code class="language-plaintext">2 * factorial(1)
</code></pre>
<p><code>factorial(1)</code> will go through the same process but will return <code>1</code> since it fulfills our base case.</p>
<pre><code class="language-plaintext">return 1
</code></pre>
<p>At this stage, we have decreased the argument by one on each function call and, our base case is true. The function will return in order from inner to outer because recursion is a group of nested function calls.</p>
<p><code>factorial(1)</code> returns <code>1</code></p>
<p><code>factorial(2)</code> returns <code>2 * factorial(1)</code> or <code>2 * 1</code></p>
<p><code>factorial(3)</code> returns <code>3 * factorial(2)</code> or <code>3 * 2 * 1</code></p>
<p><code>3 * 2 * 1 = 6</code></p>
<p>Below is a diagram showing the procedure.</p>
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1610637753241/x6ZoikFUA.png" alt="factorial.png" />

<p>Recursion can also solve the problems below:</p>
<ul>
<li><p><a href="https://www.youtube.com/watch?v=ngS5aZVmqok">Fibonacci sequence</a></p>
</li>
<li><p><a href="https://www.youtube.com/watch?v=rf6uf3jNjbo">Towers of Hanoi</a></p>
</li>
<li><p><a href="https://www.geeksforgeeks.org/quick-sort/">Quick sort</a></p>
</li>
<li><p><a href="https://javascript.info/recursion#linked-list">Linked list</a></p>
</li>
<li><p><a href="https://www.geeksforgeeks.org/merge-sort/">Merge sort</a></p>
</li>
</ul>
<h2>Alternative to recursion</h2>
<p>Iteration is an alternative to recursion. Iteration is the process of executing a set of instructions repeatedly. Any recursive function can be written iteratively and vice versa.</p>
<p>Let us solve the factorial problem iteratively</p>
<pre><code class="language-plaintext">function factorialize(num) {
  if (num === 0 || num === 1)
    return 1;
  for (var i = num - 1;  i &gt;= 1;  i--) {
    num *= i;
  }
  return num;
}
factorialize(3);
//6
</code></pre>
<p>We can see that recursion is an easy way to write and understand code compared to iteration, but recursion is not always the best option.</p>
<p>Recursion takes more memory space by building stacks which, eventually makes the program slow, while iteration use state variables for stacking and counting.</p>
<p>Some problems are simple to solve using recursion, especially when the efficiency of the program is not a concern. In such a case, recursion is a more preferred option.</p>
<h2>Advantages of recursion</h2>
<p>The following are reasons why you should use recursion.</p>
<ul>
<li><p>Recursion makes code easy to understand.</p>
</li>
<li><p>It is a direct way to solve complex problems.</p>
</li>
<li><p>It makes code clean and precise.</p>
</li>
<li><p>It is an alternative to iteration.</p>
</li>
<li><p>It helps manipulate the tree structures of an object.</p>
</li>
</ul>
<h2>Disadvantages of recursion</h2>
<ul>
<li><p>Recursion requires more memory space because all the function calls store in the recursion call stack.</p>
</li>
<li><p>Recursion is slow compared to iteration because it consumes more memory space.</p>
</li>
<li><p>Poorly written recursive function leads to stack overflow. A stack overflow occurs when a function calls itself repeatedly until it exceeds the memory(call stack) allocated to it.</p>
</li>
</ul>
<h2>Conclusion</h2>
<ul>
<li><p>Recursion is a process in which a function calls itself.</p>
</li>
<li><p>A recursive function must have a base case and a recursive case.</p>
</li>
<li><p>A base case tells the function when to stop.</p>
</li>
<li><p>A recursive case is a part of the function that calls itself.</p>
</li>
<li><p>Factorial is the product of an integer and all the positive integers below it.</p>
</li>
<li><p>Recursive functions can be written iteratively and vice versa.</p>
</li>
<li><p>Recursion makes code precise and easy to understand.</p>
</li>
</ul>
]]></content:encoded></item></channel></rss>