<?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: Umar Sulaiman Mailafiya</title>
    <description>The latest articles on DEV Community by Umar Sulaiman Mailafiya (@devfarouqk).</description>
    <link>https://dev.to/devfarouqk</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F566668%2Fef84920a-a7b8-4a5d-ac68-f210219b0c20.jpg</url>
      <title>DEV Community: Umar Sulaiman Mailafiya</title>
      <link>https://dev.to/devfarouqk</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/devfarouqk"/>
    <language>en</language>
    <item>
      <title>I built an open API for Nigeria's 752 universities, polytechnics, and colleges of education</title>
      <dc:creator>Umar Sulaiman Mailafiya</dc:creator>
      <pubDate>Sat, 22 Aug 2026 23:12:35 +0000</pubDate>
      <link>https://dev.to/devfarouqk/i-built-an-open-api-for-nigerias-752-universities-polytechnics-and-colleges-of-education-2a2p</link>
      <guid>https://dev.to/devfarouqk/i-built-an-open-api-for-nigerias-752-universities-polytechnics-and-colleges-of-education-2a2p</guid>
      <description>&lt;p&gt;If you've ever tried to find a clean, structured, up-to-date list of Nigerian tertiary institutions, you've probably run into the same wall I did: every result is a static blog post or a PDF from a few years ago, half of them contradict each other, and none of them are usable as data — just prose to be re-typed by hand.&lt;/p&gt;

&lt;p&gt;There wasn't an open API for this. So I built one.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it is
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/reality-farouqk/nigeria-tertiary-institutions-api" rel="noopener noreferrer"&gt;&lt;strong&gt;nigeria-tertiary-institutions-api&lt;/strong&gt;&lt;/a&gt; is a free, open-source REST API and dataset covering every Nigerian university, polytechnic, and college of education — &lt;strong&gt;752 institutions&lt;/strong&gt; in total:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Count&lt;/th&gt;
&lt;th&gt;Federal&lt;/th&gt;
&lt;th&gt;State&lt;/th&gt;
&lt;th&gt;Private&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Universities&lt;/td&gt;
&lt;td&gt;312&lt;/td&gt;
&lt;td&gt;77&lt;/td&gt;
&lt;td&gt;67&lt;/td&gt;
&lt;td&gt;168&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Polytechnics&lt;/td&gt;
&lt;td&gt;200&lt;/td&gt;
&lt;td&gt;41&lt;/td&gt;
&lt;td&gt;61&lt;/td&gt;
&lt;td&gt;98&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Colleges of education&lt;/td&gt;
&lt;td&gt;240&lt;/td&gt;
&lt;td&gt;30&lt;/td&gt;
&lt;td&gt;43&lt;/td&gt;
&lt;td&gt;167&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;For each one, it includes category (Federal/State/Private), state, year established where known, and — where publicly available — the faculty/school and department structure underneath it.&lt;/p&gt;

&lt;p&gt;It's not a hosted service you call against my server. It's a &lt;strong&gt;self-hosted&lt;/strong&gt; API: you clone it, run one command, and you have your own instance running locally or deployed wherever you like. That was a deliberate choice — a single free-tier server can't reliably serve production traffic for everyone, but a project that's trivial to self-host can scale to however many people need it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Quick start
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/reality-farouqk/nigeria-tertiary-institutions-api.git
&lt;span class="nb"&gt;cd &lt;/span&gt;nigeria-tertiary-institutions-api
npm &lt;span class="nb"&gt;install
&lt;/span&gt;npm start
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's it. No database server to install, no config file to write, no API key required by default. The whole dataset lives in three CSV files, and a build step compiles them into a local SQLite file at startup — a &lt;code&gt;prestart&lt;/code&gt; script handles that automatically every time.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl http://localhost:3000/api/v1/stats
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When you're ready to put it on the internet, the README walks through Render, Railway, Fly.io, Docker, or a plain VPS — all one-command deploys since there's no database to provision.&lt;/p&gt;

&lt;h2&gt;
  
  
  A quick tour of the API
&lt;/h2&gt;

&lt;p&gt;Search institutions:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="s2"&gt;"http://localhost:3000/api/v1/institutions?type=university&amp;amp;state=Lagos"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Search departments across all 752 institutions at once:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="s2"&gt;"http://localhost:3000/api/v1/departments?q=Computer+Science"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Every department also exposes its course-of-study data:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="s2"&gt;"http://localhost:3000/api/v1/departments/123/courses"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The data model goes four levels deep:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Institution (university | polytechnic | college_of_education)
  └─ School / Faculty / College        e.g. "Faculty of Engineering"
       └─ Department                   e.g. "Computer Engineering"
            └─ Course of study         e.g. "B.Eng. Computer Engineering"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;"Course of study" here means the actual named degree/programme a student enrolls in — &lt;code&gt;B.Sc. Computer Science&lt;/code&gt;, &lt;code&gt;HND Electrical/Electronic Engineering&lt;/code&gt;, &lt;code&gt;NCE Mathematics/Physics&lt;/code&gt; — not an individual class or module.&lt;/p&gt;

&lt;h2&gt;
  
  
  Being honest about what's verified and what isn't
&lt;/h2&gt;

&lt;p&gt;This is the part I think is worth talking about, because it's the difference between a useful dataset and a misleading one.&lt;/p&gt;

&lt;p&gt;The institution → school → department layer was compiled from live research — one institution at a time, checking published faculty structures against official sources. That's slow but solid: it's either backed by something a school actually published, or the record honestly says the structure "isn't clearly itemized in public sources" instead of guessing.&lt;/p&gt;

&lt;p&gt;Course-of-study data is different. Confirming an actual, verified list of conferred qualifications for every one of the 1,700+ parsed departments isn't practical — most institutions don't publish that anywhere indexable, and doing it properly would mean repeating the entire research effort at a much finer grain. So instead, course-of-study rows are &lt;strong&gt;generated&lt;/strong&gt; from a disclosed, documented naming convention: a polytechnic department gets the standard &lt;code&gt;ND&lt;/code&gt; → &lt;code&gt;HND&lt;/code&gt; ladder, a college of education department gets &lt;code&gt;NCE&lt;/code&gt;, and a university department gets a qualification chosen by matching subject keywords against a documented table (&lt;code&gt;"engineering"&lt;/code&gt; → &lt;code&gt;B.Eng.&lt;/code&gt;, &lt;code&gt;"law"&lt;/code&gt; → &lt;code&gt;LL.B.&lt;/code&gt;, and so on, defaulting to &lt;code&gt;B.Sc.&lt;/code&gt;).&lt;/p&gt;

&lt;p&gt;Every single generated row is tagged &lt;code&gt;source: "inferred"&lt;/code&gt; &lt;strong&gt;in the API response itself&lt;/strong&gt; — not just in a README nobody reads. If someone later verifies a specific institution's actual programme list, that's a &lt;code&gt;source: "verified"&lt;/code&gt; tier waiting to be built.&lt;/p&gt;

&lt;h2&gt;
  
  
  A bug the new feature accidentally caught
&lt;/h2&gt;

&lt;p&gt;While building the course-of-study generator, I ran a sanity check on the department names it was about to turn into qualifications — and found things like &lt;code&gt;"ND Aba"&lt;/code&gt; and &lt;code&gt;"HND est. 1992"&lt;/code&gt; in the output. Not great.&lt;/p&gt;

&lt;p&gt;It turned out some source cells append a closing note about an institution — an establishment year, a renaming history, an ownership note — directly inside the &lt;em&gt;last&lt;/em&gt; school's own parentheses, instead of using the separator the parser expected. Something like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Faculty of Science (7-8 faculties per recruitment notice; est. 2023, temporary site at FUNAAB)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Without a check for this, that trailing note gets split exactly like a department list and produces fabricated-looking department names. Once I went looking, this pattern had silently produced about &lt;strong&gt;500 fake department rows&lt;/strong&gt; across the dataset — before it ever became a visible problem, it was just quietly wrong.&lt;/p&gt;

&lt;p&gt;I added a filter that recognizes note-like content (years, ownership/renaming language, sourcing caveats, bare counts like &lt;code&gt;"3 departments"&lt;/code&gt;) and treats it as what it is — a note, not a department — while leaving the original raw text untouched so nothing is lost. It's a good reminder that "never fabricate structure" needs to be a design constraint checked in the data itself, not just a policy in a doc.&lt;/p&gt;

&lt;h2&gt;
  
  
  Locking it down (optional)
&lt;/h2&gt;

&lt;p&gt;By default the API is open. If you're running a public instance and want to control who calls it, set one environment variable:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight properties"&gt;&lt;code&gt;&lt;span class="py"&gt;API_KEY&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;your-secret-here&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Every request under &lt;code&gt;/api/v1/*&lt;/code&gt; then needs to send it back via &lt;code&gt;X-API-Key&lt;/code&gt; or &lt;code&gt;Authorization: Bearer&lt;/code&gt;, while &lt;code&gt;/healthz&lt;/code&gt; stays open so your host's uptime checks keep working. You can also set a comma-separated list of keys to hand out separately per consumer. It's a shared-secret check, not full user auth — good for stopping anonymous scraping of a public instance, not a substitute for a real auth layer if you need per-user access control.&lt;/p&gt;

&lt;h2&gt;
  
  
  Open source, and open to corrections
&lt;/h2&gt;

&lt;p&gt;The code is MIT-licensed, the data is CC0 (public domain) — do whatever you want with either. Nigerian tertiary institutions get renamed, merged, and upgraded to university status a few times a year, so this dataset will drift out of date the moment it's published; corrections and PRs are genuinely welcome, and &lt;code&gt;CONTRIBUTING.md&lt;/code&gt; covers how.&lt;/p&gt;

&lt;p&gt;If you're building anything that touches Nigerian higher education — admissions tools, EdTech products, research — this exists so you don't have to start from a pile of stale blog posts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Repo:&lt;/strong&gt; &lt;a href="https://github.com/reality-farouqk/nigeria-tertiary-institutions-api" rel="noopener noreferrer"&gt;https://github.com/reality-farouqk/nigeria-tertiary-institutions-api&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I'd love feedback, stars, issues, or PRs — especially from anyone who can verify course-of-study data for a specific institution and help move it from "inferred" to "verified."&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>api</category>
      <category>webdev</category>
      <category>node</category>
    </item>
    <item>
      <title>How to host your site on netlify as a beginner developer</title>
      <dc:creator>Umar Sulaiman Mailafiya</dc:creator>
      <pubDate>Thu, 27 Oct 2022 13:43:52 +0000</pubDate>
      <link>https://dev.to/devfarouqk/how-to-host-your-site-on-netlify-as-a-beginner-developer-lp8</link>
      <guid>https://dev.to/devfarouqk/how-to-host-your-site-on-netlify-as-a-beginner-developer-lp8</guid>
      <description>&lt;p&gt;Getting started as a beginner you must be thinking… How can I get my project online? Rest assured. Today will be the last day you’ll think like this. Because the answer is finally here.&lt;/p&gt;

&lt;p&gt;Is your project ready for deployment?&lt;br&gt;
Let’s go!&lt;/p&gt;

&lt;h2&gt;
  
  
  What is netlify?
&lt;/h2&gt;

&lt;p&gt;Netlify is a remote-first cloud computing company that offers a development platform that includes building, deploying, and serverless backend services for web applications and dynamic websites. In simple terms, it’s for getting your project online for the world to see.&lt;br&gt;
&lt;a href="https://media2.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%2Fjts56i2909etefv52pw6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fjts56i2909etefv52pw6.png" alt="Netlify landing page screenshot" width="800" height="388"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There are two significant methods to make deployment on netlify:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;- Drag and drop&lt;/li&gt;
&lt;li&gt;- Connecting your deployed project on GitHub or any remote git repositories to netlify.
We will go through both methods.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Method 1:
&lt;/h2&gt;

&lt;p&gt;Let's start by signing up on netlify. &lt;br&gt;
Sign Up 👉 &lt;a href="https://www.netlify.com/" rel="noopener noreferrer"&gt;Here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After signing up. Click on the sites tab on your dashboard.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fwtw4qafnlprwan40tlli.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fwtw4qafnlprwan40tlli.png" alt="Netlify user dashboard" width="799" height="148"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2F1qt1zrp8mz2au0oj11oa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2F1qt1zrp8mz2au0oj11oa.png" alt="Upload photos Section" width="800" height="177"&gt;&lt;/a&gt;&lt;br&gt;
Drag and drop your files folder 📂 as instructed. &lt;br&gt;
Congrats 🎊 You have deployed your site successfully. &lt;br&gt;
Easy right? :)&lt;/p&gt;

&lt;h2&gt;
  
  
  Method 2:
&lt;/h2&gt;

&lt;p&gt;You still signed up for netlify right? &lt;br&gt;
Alright! For this part, we will be using GitHub as our preferred git repository manager. &lt;br&gt;
Create an account on GitHub.&lt;br&gt;
Go to &lt;a href="https://github.com/" rel="noopener noreferrer"&gt;github.com&lt;/a&gt; to sign up/create one if you don’t have to.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fd5fdu2nimu2lejqy88xh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fd5fdu2nimu2lejqy88xh.png" alt="Github home page" width="800" height="411"&gt;&lt;/a&gt;&lt;br&gt;
Deploy your project to GitHub using git. Check out how to do that &lt;a href="https://docs.github.com/en/get-started/importing-your-projects-to-github/importing-source-code-to-github/adding-locally-hosted-code-to-github" rel="noopener noreferrer"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Go back to your account on netlify. Navigate to your dashboard.&lt;br&gt;
Click on &lt;strong&gt;sites&lt;/strong&gt; tab. then click on add an existing project in the drop-down options.&lt;br&gt;
&lt;a href="https://media2.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%2Fevcukhu5ytxvgzohrl2r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fevcukhu5ytxvgzohrl2r.png" alt="Deploy tab" width="800" height="149"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click GitHub to connect your GitHub account.&lt;br&gt;
&lt;a href="https://media2.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%2Fiea5yjayar3z3h24ulxh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fiea5yjayar3z3h24ulxh.png" alt="Remote git repository" width="800" height="397"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Choose the project you want to host.&lt;br&gt;
&lt;a href="https://media2.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%2Ffihlghy83mrvgz42jt23.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Ffihlghy83mrvgz42jt23.png" alt="Select Project Tab" width="800" height="256"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Wait for the deployment process...&lt;/p&gt;

&lt;p&gt;Congrats 🎊 You just made a deployment.&lt;br&gt;
Your site is now live. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Netlify has a fancy feature where you won't have to make any more updates directly to your netlify deployment. It'll be in total sync with your GitHub repository. That means every time you push a new commit, it'll automatically update your live site.&lt;br&gt;
Cool right 😎?&lt;/p&gt;

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

&lt;p&gt;I hope with this short guide, I am able to help you deploy your project online. Cheers 🥂&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>beginners</category>
      <category>hosting</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>How to connect your android device to github using ssh key with termux</title>
      <dc:creator>Umar Sulaiman Mailafiya</dc:creator>
      <pubDate>Tue, 21 Jun 2022 18:51:00 +0000</pubDate>
      <link>https://dev.to/devfarouqk/how-to-connect-your-android-device-to-github-using-ssh-key-with-termux-4k2d</link>
      <guid>https://dev.to/devfarouqk/how-to-connect-your-android-device-to-github-using-ssh-key-with-termux-4k2d</guid>
      <description>&lt;p&gt;Recently, I tried installing git and github on my phone. So that I can make changes on the go without being on my pc. I started by installing git. With git alone I thought I was already done. I went to my repo to get the link I want to clone. I ran the regular command as you know it &lt;code&gt;git clone  "link🔗"&lt;/code&gt;.  It  prompted me with the username and password authentication prompt. Fast forward… with all the inputting and attempts to connect it to github, still no positive result.  Then I discover I have to use shh in the connection as it appears to be the only way. I've searched for different ways to do it. From reading more than 7 blog articles to watching 2 YouTube Videos. Finally, I found the way ✨🎉. &lt;br&gt;
In this post I'll tell you 5 simple steps I took to install git and &lt;strong&gt;connect it to github successfully&lt;/strong&gt; and how you can too.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1.
&lt;/h2&gt;

&lt;p&gt;Download Termux using termux github build from &lt;br&gt;
url(&lt;a href="https://github.com/termux/termux-app/actions/runs/2518728695" rel="noopener noreferrer"&gt;https://github.com/termux/termux-app/actions/runs/2518728695&lt;/a&gt;)&lt;br&gt;
When you go to the page scroll down to find these builds and download the topmost. &lt;br&gt;
&lt;a href="https://media2.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%2F0cw1nz21sir82anh4st1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2F0cw1nz21sir82anh4st1.png" alt=" " width="720" height="1440"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2.
&lt;/h2&gt;

&lt;p&gt;Run &lt;code&gt;apt update&lt;/code&gt; and &lt;code&gt;apt upgrade&lt;/code&gt; In your termux terminal. &lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3.
&lt;/h2&gt;

&lt;p&gt;Run &lt;code&gt;pkg install git&lt;/code&gt;&lt;br&gt;
    &lt;code&gt;pkg install openssh&lt;/code&gt;&lt;br&gt;
&lt;a href="https://media2.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%2Fmnk0uzztu1ablswz34un.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fmnk0uzztu1ablswz34un.png" alt=" " width="720" height="1440"&gt;&lt;/a&gt;&lt;br&gt;
During the installation process you'll be prompted to create a username and password. You can choose to add or skip by pressing enter. But I'll recommend you skip, you can do that later. &lt;/p&gt;

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

&lt;p&gt;When the ssh installation is done. &lt;br&gt;
Run &lt;code&gt;cat  ./ .ssh/id_rsa.pub&lt;/code&gt;&lt;br&gt;
&lt;a href="https://media2.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%2Fbaobhw5fouvrn5ghhbbj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fbaobhw5fouvrn5ghhbbj.png" alt=" " width="720" height="688"&gt;&lt;/a&gt;&lt;br&gt;
You'll be presented with some text and your GitHub email address you added in the installation of the previous packages. Copy them all together. They're your public ssh key. If the email is not there, replace the email at the end with your GitHub account email address. &lt;/p&gt;

&lt;h2&gt;
  
  
  Step 5.
&lt;/h2&gt;

&lt;p&gt;Next go to your GitHub account settings and click the ssh and gpg keys  option. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fzl9v3tadxxgha2et4fzm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fzl9v3tadxxgha2et4fzm.png" alt=" " width="720" height="1440"&gt;&lt;/a&gt;&lt;br&gt;
Scroll down&lt;br&gt;
&lt;a href="https://media2.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%2Fmg4no1htvir5deyzh4ij.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fmg4no1htvir5deyzh4ij.png" alt=" " width="720" height="1440"&gt;&lt;/a&gt;&lt;br&gt;
Click on add new ssh key. Write a title for the key and paste the key in the provided box below the title.&lt;br&gt;
 &lt;strong&gt;Save.&lt;/strong&gt;&lt;br&gt;
Go back to your termux app and start using github as you would on desktop 🖥. You can test by cloning a repo. &lt;/p&gt;

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

&lt;p&gt;Thank you so much. I hope this helps. &lt;/p&gt;

</description>
      <category>webdev</category>
      <category>termux</category>
      <category>github</category>
      <category>git</category>
    </item>
    <item>
      <title>How to remove "npm WARN config global `--global`, `--local` are deprecated</title>
      <dc:creator>Umar Sulaiman Mailafiya</dc:creator>
      <pubDate>Mon, 13 Jun 2022 00:28:37 +0000</pubDate>
      <link>https://dev.to/devfarouqk/how-to-remove-npm-warn-config-global-global-local-are-deprecated-9ol</link>
      <guid>https://dev.to/devfarouqk/how-to-remove-npm-warn-config-global-global-local-are-deprecated-9ol</guid>
      <description>&lt;p&gt;When trying to create a new react app you happen to encounter such warning &lt;code&gt;npm WARN config global&lt;/code&gt;--global&lt;code&gt;,&lt;/code&gt;--local&lt;code&gt;are deprecated. Use&lt;/code&gt;--location=global&lt;code&gt;instead&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;You've tried different methods to get rid of it and make your app creation work. but to no avail. &lt;/p&gt;

&lt;p&gt;Don't worry you're in the right place. In this guide, I'll try my best to address every possible error that you might have come across or will, by providing these straightforward solutions. Without further ado, let's move into it.&lt;/p&gt;

&lt;p&gt;This is mostly a Windows problem where npm is called via the &lt;code&gt;npm.cmd&lt;/code&gt; in your node installation folder which is at %programfiles%\nodejs 0r %programfiles (x86)%\nodejs. And it is due to the deprecation of &lt;code&gt;-g&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;To resolve it Open the nodejs folder and edit the npm, npx, npx.cmd and npm.cmd files. Edit the &lt;code&gt;prefix -g&lt;/code&gt; to &lt;code&gt;prefix --location=global&lt;/code&gt; in every file. npm at line 23 while npm.cmd at line 12, npx at line 32 while npx.cmd at line 13.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2F13injhfbdvrrph2vkjpe.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2F13injhfbdvrrph2vkjpe.png" alt=" " width="574" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Close your terminal and run your installation command again.&lt;/p&gt;

&lt;p&gt;If it still persists, It means your npm package is likely not up-to-date. To upgrade it.&lt;/p&gt;

&lt;p&gt;This is how to do so: &lt;br&gt;
Ensure that you can execute scripts on your system by running the following command from PowerShell or cmd as an administrator.&lt;br&gt;
&lt;code&gt;Set-ExecutionPolicy Unrestricted -Scope CurrentUser -Force&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Then, to install and use this npm windows upgrade tool, run the following command on PowerShell or cmd also as an administrator.&lt;br&gt;
Note: This tool requires at least Node v8, please install an older version for older versions of Node.js.&lt;br&gt;
&lt;code&gt;npm install --location-global --omit=dev npm-windows-upgrade&lt;br&gt;
npm-windows-upgrade&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The last command will present you with a list of all the published and available versions of npm (including pre-release and beta versions). Choose the one you want to install and wait for it to happen!&lt;/p&gt;

&lt;p&gt;If you want to install the latest version. &lt;br&gt;
Use &lt;code&gt;npm-windows-upgrade --npm-version latest&lt;/code&gt; instead&lt;/p&gt;

&lt;p&gt;After a successful upgrade completion, you're good to go.&lt;/p&gt;

&lt;p&gt;if it still persists. Go to the location where your node files are installed these might be in %programfiles%\nodejs or %programfiles (x86)%\nodejs. Open the nodejs folder and edit the npm, npx, npx.cmd and npm.cmd files. Edit the &lt;code&gt;prefix -g&lt;/code&gt; to &lt;code&gt;prefix --location=global&lt;/code&gt; in every file. npm at line 23 while npm.cmd at line 12, npx at line 32 while npx.cmd at line 13.&lt;/p&gt;

&lt;p&gt;For a failed Upgrade you need to follow these steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Uninstall Node.js (select Uninstall, not the Repair option).&lt;/li&gt;
&lt;li&gt;Go into %programfiles%\nodejs 0r %programfiles (x86)%\nodejs and delete the entire folder.&lt;/li&gt;
&lt;li&gt;Delete %appdata%\npm and %appdata%\npm-cache. You might not happen to find the folders there. Check and delete them at %User%\AppData%\Roaming%\npm, %User%\AppData%\Roaming%\npm-cache and %User%\AppData%\Local%\npm&lt;/li&gt;
&lt;li&gt;Edit your PATH and remove everything that references npm (to do so, search for "Environment Variables").&lt;/li&gt;
&lt;li&gt;Reinstall Node by going to &lt;a href="https://nodejs.org/en/download/" rel="noopener noreferrer"&gt;https://nodejs.org/en/download/&lt;/a&gt;. Note: It is highly recommended to install Node.js and npm using a Node version manager like &lt;a href="https://github.com/nvm-sh/nvm" rel="noopener noreferrer"&gt;nvm&lt;/a&gt;, Next install the npm-windows-upgrade tool - and only use this tool to upgrade npm, do not attempt to run &lt;code&gt;npm install npm&lt;/code&gt;(if you happen to, you might have to repeat the installation process).&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;After successfully installing nodejs. Run these commands:&lt;br&gt;
&lt;code&gt;npm install --location-global --omit=dev npm-windows-upgrade&lt;br&gt;
npm-windows-upgrade&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Remember the last command will present you with a list of all the published and available versions of npm (including pre-release and beta versions). Choose the one you want to install and wait for it to happen!&lt;/p&gt;

&lt;p&gt;If you want to install the latest version. Use &lt;code&gt;npm-windows-upgrade --npm-version latest&lt;/code&gt; instead&lt;/p&gt;

&lt;p&gt;After the upgrade has finished you can confirm it using &lt;code&gt;npm -v&lt;/code&gt; command&lt;/p&gt;

&lt;p&gt;Next, Go to the location where your node files are installed these might be in %programfiles%\nodejs or %programfiles (x86)%\nodejs. Open the nodejs folder and edit the npm, npx, npx.cmd and npm.cmd files. Edit the &lt;code&gt;prefix -g&lt;/code&gt; to &lt;code&gt;prefix --location=global&lt;/code&gt; in every file. npm at line 23 while npm.cmd at line 12, npx at line 32 while npx.cmd at line 13.&lt;/p&gt;

&lt;p&gt;Run Your &lt;code&gt;npx create-react-app app-name&lt;/code&gt; command again, And Voila!! Your installation has begin.&lt;/p&gt;

&lt;p&gt;Thank you for reading this article. If you have any questions. Ask in the comment section below I'll happily answer them. Happy Coding!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>react</category>
      <category>node</category>
      <category>npm</category>
    </item>
    <item>
      <title>How to increase the speed of your website: seven actionable steps to take</title>
      <dc:creator>Umar Sulaiman Mailafiya</dc:creator>
      <pubDate>Sat, 07 May 2022 01:18:05 +0000</pubDate>
      <link>https://dev.to/devfarouqk/how-to-increase-the-speed-of-your-website-seven-actionable-steps-to-take-4g4i</link>
      <guid>https://dev.to/devfarouqk/how-to-increase-the-speed-of-your-website-seven-actionable-steps-to-take-4g4i</guid>
      <description>&lt;p&gt;When it comes to the performance of your website, page speed is crucial.&lt;/p&gt;

&lt;p&gt;Yet, you may find it difficult to improve unless you understand how this metric works — and more specifically, the factors that influence it.&lt;/p&gt;

&lt;p&gt;It is critical that your web pages load fast and smoothly to reduce your bounce rate and increase visitor engagement.&lt;/p&gt;

&lt;p&gt;A site that is optimized for speed not only improves the user experience (UX) but can also help you rank higher in search engines.&lt;/p&gt;

&lt;p&gt;In this article, I’ll explain why it's important, and show you how to measure it. Then I'll give you seven solutions for improving page loading speed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why is page speed important?&lt;/strong&gt;&lt;br&gt;
As before stated, site speed can quickly determine whether a user stays on your website. But it's even more significant than that. When determining which websites to show at the top of search engine results pages, search engines, particularly Google, place a high-value on-site speed when determining which websites show at the top of the search engine results page(SERP). Website speed optimization improves search engine optimization (SEO), so it shouldn’t be overlooked.&lt;/p&gt;

&lt;p&gt;For measuring page speed, &lt;a href="https://pagespeed.web.dev/" rel="noopener noreferrer"&gt;Google's PageSpeed Insights&lt;/a&gt; is fit for that. &lt;a href="https://pagespeed.web.dev/" rel="noopener noreferrer"&gt;Google's PageSpeed Insights&lt;/a&gt; is a website speed testing tool that ranks your site's speed on a scale of 0 to 100, with higher scores being better.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fozir5zwvx6w0wv4mjxhj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fozir5zwvx6w0wv4mjxhj.png" alt=" " width="799" height="391"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fn9utfxwm6gnnwflfu0fr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fn9utfxwm6gnnwflfu0fr.png" alt=" " width="799" height="349"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Google PageSpeed Insights will generate tests for both desktop and mobile, as well as recommendations for how to improve your speed score.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to increase your page speed
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Optimize images&lt;/strong&gt;&lt;br&gt;
Most web pages are slow due to large image files which causes an enormous increase in load time for pages. When setting up your assets for a page. Optimize your images by reducing the file size or by replacing the file format. Optimize your images using &lt;a href="//tinyjpg.com"&gt;tinyjpg.com&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Use jpg or webp(recommended) file format if you’re going for smaller sizes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Minify Html, CSS, and js&lt;/strong&gt;&lt;br&gt;
By optimizing your code, you can increase your page speed. Also remove code comments, formatting, and unused code. &lt;a href="https://developers.google.com/speed/docs/insights/MinifyResources" rel="noopener noreferrer"&gt;Google recommends using HtmlMinifier, CSSNano, and UglifyJS&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use browser caching&lt;/strong&gt;&lt;br&gt;
Browser caching is one of the most popular methods for increasing page speed. By caching a large amount of information in your visitors' browsers. The browser does not have to reload the entire page when they return. Learn more about leveraging browser caching &lt;a href="https://code.google.com/speed/page-speed/docs/caching.html" rel="noopener noreferrer"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use a content delivery network(CDN)&lt;/strong&gt;&lt;br&gt;
Content delivery networks (CDNs), also known as content distribution networks are server networks that distribute the load of delivering content. Essentially, copies of your site are stored at multiple, geographically diverse data centers so that users can access your site more quickly and reliably. Learn how to use CDN on your site &lt;a href="https://www.pingdom.com/blog/a-beginners-guide-to-using-cdns-2/" rel="noopener noreferrer"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Reduce redirects&lt;/strong&gt;&lt;br&gt;
When a page redirects to another page, your visitor must wait for the HTTP request-response cycle to complete. For instance, if your mobile redirect pattern is as follows:&lt;/p&gt;

&lt;p&gt;example.com -&amp;gt; &lt;a href="http://www.example.com" rel="noopener noreferrer"&gt;www.example.com&lt;/a&gt; -&amp;gt; m.example.com -&amp;gt; m.example.com/home&lt;/p&gt;

&lt;p&gt;Each redirect slows down the load time of your page.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Remove render-blocking JavaScript&lt;/strong&gt;&lt;br&gt;
Before they can render a page, browsers must first construct a DOM tree by parsing HTML. If your browser comes across a script during this process, it must stop and execute it before proceeding.&lt;/p&gt;

&lt;p&gt;Scripts that are not critical to the initial render should be made asynchronous or deferred until after the first render. Scripts required to render page content can be inlined to avoid extra network requests; but, inlined content must be small and fast to deliver good performance. Learn more on how to Remove render-blocking JavaScript &lt;a href="https://developers.google.com/speed/docs/insights/BlockingJS" rel="noopener noreferrer"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Improve server response time&lt;/strong&gt;&lt;br&gt;
The amount of traffic you receive, the resources used by each page, the software on your server, and the hosting solution you use all have an impact on your server response time. Look for performance bottlenecks such as slow database queries, slow routing, or a lack of enough memory, and fix them to improve your server response time. The ideal server response time is less than 200ms. Learn more on how to improve server response time &lt;a href="https://developers.google.com/speed/docs/insights/Server" rel="noopener noreferrer"&gt;here &lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When you checkmark all these step perfectly, Your site will be at its top speed.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>seo</category>
    </item>
  </channel>
</rss>
