<?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>Forem: Arinze Chianumba</title>
    <description>The latest articles on Forem by Arinze Chianumba (@achianumba).</description>
    <link>https://forem.com/achianumba</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%2F914919%2F9c4acc76-bef6-4adc-b148-f37c464da030.jpeg</url>
      <title>Forem: Arinze Chianumba</title>
      <link>https://forem.com/achianumba</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/achianumba"/>
    <language>en</language>
    <item>
      <title>Should you be scared of your wireless earphones or what?</title>
      <dc:creator>Arinze Chianumba</dc:creator>
      <pubDate>Sun, 29 Sep 2024 11:17:00 +0000</pubDate>
      <link>https://forem.com/achianumba/should-you-be-scared-of-your-wireless-earphones-or-what-1fm1</link>
      <guid>https://forem.com/achianumba/should-you-be-scared-of-your-wireless-earphones-or-what-1fm1</guid>
      <description>&lt;p&gt;&lt;em&gt;&lt;a href="https://www.pexels.com/photo/wireless-earbuds-on-wooden-bowl-7494832/" rel="noopener noreferrer"&gt;Photo by SpotwizardLee&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Call me &lt;em&gt;old school&lt;/em&gt;, but I've never liked wireless earpieces. Not because I'm averse to progress, but because of the &lt;em&gt;tiny&lt;/em&gt; latency in wireless communication and because it's too easy to lose wireless earphones.&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%2Fqz2co135b3mw5w4leelp.jpeg" 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%2Fqz2co135b3mw5w4leelp.jpeg" alt="exploded samsung earbuds" width="749" height="998"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;a href="https://www.reddit.com/r/galaxybuds/comments/1fnvdim/according_to_this_samsung_members_post_the_buds/" rel="noopener noreferrer"&gt;Image source: Buds FE exploded while in her ear.&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Just when I was starting to get comfortable with them, &lt;a href="https://www.yahoo.com/tech/samsung-galaxy-buds-fe-reportedly-172748806.html" rel="noopener noreferrer"&gt;a Samsung earbud reportedly exploded the other day, causing its user permanent hearing loss&lt;/a&gt;. So now, I no longer dislike wireless earphones; I'm SCARED of them.&lt;/p&gt;

&lt;p&gt;Wireless earphones are powered by lithium batteries, you know?&lt;/p&gt;

&lt;p&gt;Anyone who's tinkered with lithium-ion/polymer batteries knows &lt;a href="https://www.osha.gov/sites/default/files/publications/shib011819.pdf" rel="noopener noreferrer"&gt;they're basically explosives waiting for the right condition(s) to explode&lt;/a&gt;. So, to paraphrase &lt;a href="https://youtu.be/Gx4UVJOGLQ0?feature=shared" rel="noopener noreferrer"&gt;Rossmann&lt;/a&gt;, &lt;em&gt;why are you so comfortable about voluntarily wearing explosives just a few inches from your brain?&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;I might be exaggerating, but if you take the fact that people are voluntarily wearing explosive material just inches from their brains and multiply it by supply chain attacks, like &lt;a href="https://edition.cnn.com/2024/09/27/middleeast/israel-pager-attack-hezbollah-lebanon-invs-intl/index.html" rel="noopener noreferrer"&gt;the one that hit Lebanon the other day&lt;/a&gt;, you just might have the perfect recipe for murder by earpiece staring you in the face!&lt;/p&gt;

&lt;p&gt;I know, I know... &lt;em&gt;murder by earpiece&lt;/em&gt; sounds far-fetched. What isn't far-fetched is the &lt;strong&gt;Find device&lt;/strong&gt; feature that uses a high-decibel tone to alert users to the location of their wireless earphones when they're nearby.&lt;/p&gt;

&lt;p&gt;While convenient, manufacturers clearly state that this sound-based "find device" solution can cause hearing damage if used while the earbuds are in one’s ears.&lt;/p&gt;

&lt;p&gt;What happens if a threat actor connects to your earbuds before you and decides to help you find your earbuds when said earbuds are already plugged into your ears?&lt;/p&gt;

</description>
      <category>earbuds</category>
      <category>samsung</category>
      <category>explosion</category>
      <category>security</category>
    </item>
    <item>
      <title>Security: You might want to quit peppering Passwords Now!</title>
      <dc:creator>Arinze Chianumba</dc:creator>
      <pubDate>Wed, 29 May 2024 07:45:59 +0000</pubDate>
      <link>https://forem.com/achianumba/reminder-you-might-want-to-quit-peppering-password-now-1eem</link>
      <guid>https://forem.com/achianumba/reminder-you-might-want-to-quit-peppering-password-now-1eem</guid>
      <description>&lt;p&gt;Memorized peppers are one of the oldest &lt;a href="https://www.cloudflare.com/learning/access-management/what-is-two-factor-authentication/" rel="noopener noreferrer"&gt;2FA&lt;/a&gt; tricks up the sleeves of password manager users. &lt;/p&gt;

&lt;h2&gt;
  
  
  The Good
&lt;/h2&gt;

&lt;p&gt;As long as you had a few 8- to 12-character peppers memorized and manually added to autofilled passwords, you had some assurances against a leaked master password.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Bad and the Ugly
&lt;/h2&gt;

&lt;p&gt;However, with the ongoing &lt;em&gt;wide&lt;/em&gt; adoption of &lt;a href="https://safety.google/authentication/passkey/" rel="noopener noreferrer"&gt;passkeys&lt;/a&gt;, that is no longer the case because:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;As an offline password manager user, your leaked master password and a copy of your password database would grant attackers access to your stored passkeys and therefore, your online accounts unless you've setup an alternative 2FA method for the database.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The same applies to cloud-based password manager users except, instead of their password database file, an attacker would need their password manager's URL and username in addition to their master password.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Unlike password authentication methods where the user has total control of the password &lt;em&gt;generation&lt;/em&gt; process, you don't get to manually generate passkeys.&lt;/li&gt;
&lt;li&gt;Each passkey is unique, and it'll be quite a hassle to 1.) memorize a section of the keys; 2.) manually add the memorized fragments to your private key before authenticating to a passkey service for each login.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Am I saying You shouldn't adopt Passkeys?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Hell no&lt;/strong&gt;, passkeys are awesome!&lt;/p&gt;

&lt;p&gt;This post is aimed at pointing out how memorizing your password pepper for website &lt;strong&gt;X&lt;/strong&gt; &lt;em&gt;might&lt;/em&gt; be futile if you have saved passkeys of website &lt;strong&gt;X&lt;/strong&gt; in the same password vault/database.&lt;/p&gt;

&lt;h2&gt;
  
  
  What You should do instead...
&lt;/h2&gt;

&lt;p&gt;Consider adding an alternative 2FA method such as a key file or TOTP to your password manager. If you aren't using passkeys for a given platform (yet), then manually adding a pepper to its autofilled password might still serve as a 3rd factor auth mechanism.&lt;/p&gt;

&lt;p&gt;Do you still memorize your password peppers? Am I maybe overreacting because am paranoid? What do you think about passkeys? Will you finally stop memorizing password peppers? Tell me all about it in the comments section!&lt;/p&gt;

</description>
      <category>security</category>
      <category>password</category>
      <category>passkeys</category>
    </item>
    <item>
      <title>What Really is an API?</title>
      <dc:creator>Arinze Chianumba</dc:creator>
      <pubDate>Thu, 25 Aug 2022 14:59:16 +0000</pubDate>
      <link>https://forem.com/achianumba/what-really-is-an-api-2ajo</link>
      <guid>https://forem.com/achianumba/what-really-is-an-api-2ajo</guid>
      <description>&lt;p&gt;I could tell you API stands for &lt;strong&gt;Application Programming Interface&lt;/strong&gt;, but you probably know that already. So, what &lt;em&gt;really&lt;/em&gt; is an API?&lt;/p&gt;

&lt;p&gt;Let me explain APIs to you with an analogy of what happens when you order pizza.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  High-level Pizza API
&lt;/h3&gt;

&lt;p&gt;Say you’re having friends over for movie night so you decide to order a box of pizza to share with them. The process of placing and receiving your order may go as follows:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;You call the pizza vendor and tell them the details of your order. These might include your home address and what spices you’d like on your pizza.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The vendor verifies your order and tells you how soon they can deliver a box of pizza to you.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You sit back and wait for the pizza delivery person.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Your doorbell rings, you answer the door, receive your order and pay the delivery person.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Mission accomplished, right?&lt;/p&gt;

&lt;p&gt;Well, you forgot to tip the delivery person but that’s a discussion for another day.&lt;/p&gt;

&lt;p&gt;The important point in the above transaction is that you ordered and received a box of pizza without knowing specific details such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;how the pizza was cooked&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;what materials were used to fabricate its wrappings, or;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;what route the delivery person took&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Similar to how you can order pizza without knowing exactly how it is prepared, APIs allow you to programmatically perform complex operations without knowing the exact details of each step of the operation. It’s like knowing the light in your bedroom will come on when you flip the light switch without knowing exactly why the switch can turn on the light.&lt;/p&gt;



&lt;h3&gt;
  
  
  Examples
&lt;/h3&gt;

&lt;p&gt;For example, the &lt;a href="https://www.w3.org/TR/WD-DOM/introduction.html" rel="noopener noreferrer"&gt;Document Object Model&lt;/a&gt; (DOM) is an API which defines and manages the logical structure of HTML and XML documents. It provides an easily accessible programming interface for element/node creation, modification, and removal on a web page&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;document&lt;/code&gt; object in JavaScript provides a simple interface which programmers use to access and manipulate DOM elements without having low-level knowledge of how the browser performs such operations.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;document.querySelector(‘.list-item’).remove()&lt;/code&gt;, for example is a chain of &lt;code&gt;document&lt;/code&gt; methods which remove the first element of the &lt;code&gt;.list-item&lt;/code&gt; class from the DOM of a web page. A regular JavaScript developer who writes this command knows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;document&lt;/code&gt; is an object representing the HTML document&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;querySelector(CSS-selectors)&lt;/code&gt; is a &lt;code&gt;document&lt;/code&gt; method which selects the DOM element matching the CSS-selectors passed as the method’s arguments.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;calling the &lt;code&gt;remove()&lt;/code&gt; method on an already selected element removes the element from the DOM.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The developer doesn’t have to understand or write the source code defining the &lt;code&gt;document&lt;/code&gt; object or its &lt;code&gt;remove&lt;/code&gt; or &lt;code&gt;querySelector&lt;/code&gt; methods before using them. This sort of abstraction is what makes APIs so important in software development.&lt;/p&gt;

&lt;p&gt;Another example of an API is the &lt;a href="https://developer.mozilla.org/en-US/docs/Web/API/Web_Animations_API" rel="noopener noreferrer"&gt;Web Animation API&lt;/a&gt; which provides a common language for describing and handling animated DOM elements.&lt;/p&gt;



&lt;h3&gt;
  
  
  Not All APIs Are REST APIs
&lt;/h3&gt;

&lt;p&gt;Spending a lot of time on tech Twitter and YouTube as a newbie may have misled you into thinking all APIs must be some (third-party) web server resource. This is because:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Web developers are some of the most vocal/popular groups on tech Twitter; and,&lt;/li&gt;
&lt;li&gt;When web developers speak of an API, they’re usually referring to REST APIs which are accessible through web server endpoints.
However, if you’ve been paying attention, you will notice the Web Animation and DOM APIs mentioned above are not server resources. They’re built into web browsers. In fact, MDN has compiled a large &lt;a href="https://developer.mozilla.org/en-US/docs/Web/API" rel="noopener noreferrer"&gt;collection of web (not necessarily REST) APIs&lt;/a&gt; used in web browsers. So, not all APIs are REST APIs.
Still, REST APIs are some of the most used APIs today. &lt;a href="https://openweathermap.org/api" rel="noopener noreferrer"&gt;OpenWeather API&lt;/a&gt;, for example, provides a REST API for retrieving weather forecasts in JSON, XML, or HTML format.
Going back to the pizza example from earlier, if a developer wishes to order the weather forecast of a given city, the developer needs to:&lt;/li&gt;
&lt;li&gt;procure an API key which provides access to OpenWeather API’s weather information&lt;/li&gt;
&lt;li&gt;specify relevant parameters (longitude/latitude or city name and API key) in the API endpoint’s URL&lt;/li&gt;
&lt;li&gt;initiate a HTTP GET request to that URL and receive the desired weather forecast.
The developer doesn’t need to have deep knowledge of meteorology, have access to a meteorology satellite, or learn how to operate such a satellite before retrieving weather forecasts from the API.
I hope you find this post helpful. Also, I probably didn’t cover all aspects of APIs which may shine more light on the subject. So, please leave your contributions and questions in the comments.&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;
  
  
  Further Reading
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://developer.mozilla.org/en-US/docs/Glossary/API" rel="noopener noreferrer"&gt;API&lt;/a&gt; by MDN&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://developer.mozilla.org/en-US/docs/Glossary/REST" rel="noopener noreferrer"&gt;REST&lt;/a&gt; by MDN&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://computersciencewiki.org/index.php/Abstraction" rel="noopener noreferrer"&gt;Abstraction&lt;/a&gt; by Computer Science Wiki&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;
&lt;br&gt;&lt;br&gt;
The cover image in this article was provided by &lt;em&gt;&lt;a href="https://pixabay.com/users/geralt-9301/?utm_source=link-attribution&amp;amp;utm_medium=referral&amp;amp;utm_campaign=image&amp;amp;utm_content=6492491" rel="noopener noreferrer"&gt;Gerd Altmann&lt;/a&gt; from &lt;a href="https://pixabay.com//?utm_source=link-attribution&amp;amp;utm_medium=referral&amp;amp;utm_campaign=image&amp;amp;utm_content=6492491" rel="noopener noreferrer"&gt;Pixabay&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>api</category>
      <category>programming</category>
      <category>beginners</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
