<?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: Jude Eigbiremonlen</title>
    <description>The latest articles on Forem by Jude Eigbiremonlen (@juddee).</description>
    <link>https://forem.com/juddee</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%2F699291%2F5bc1534c-919a-4ca1-a8df-f3723dbfe8ca.jpg</url>
      <title>Forem: Jude Eigbiremonlen</title>
      <link>https://forem.com/juddee</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/juddee"/>
    <language>en</language>
    <item>
      <title>Build Production-Safe API: Crucial Things Most Junior Devs and Beginners Neglect</title>
      <dc:creator>Jude Eigbiremonlen</dc:creator>
      <pubDate>Sat, 07 Mar 2026 06:01:19 +0000</pubDate>
      <link>https://forem.com/juddee/build-production-safe-api-crucial-things-most-junior-devs-and-beginners-neglect-4ofh</link>
      <guid>https://forem.com/juddee/build-production-safe-api-crucial-things-most-junior-devs-and-beginners-neglect-4ofh</guid>
      <description>&lt;p&gt;I will share 3 things you need to understand and implement in every API system you will build or have already built. &lt;/p&gt;

&lt;p&gt;It's important you know that all these principles can be implemented in any language. &lt;/p&gt;

&lt;h2&gt;
  
  
  Learn how to build production-safe API systems:
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Implement CORS:
&lt;/h3&gt;

&lt;p&gt;CORS stands for Cross-Origin Resource Sharing, CORS is a security mechanism that the server uses to allow or reject requests from certain origins from accessing resources.&lt;br&gt;
What this means is you can specifically tell your server to only allow requests from one or multiple domain origins only, and every other request that's not from these origins will be rejected.&lt;br&gt;
There are cases you will want to use the wildcard "*" which tells your server any origin can access its resources. &lt;/p&gt;

&lt;h4&gt;
  
  
  When should I implement this?
&lt;/h4&gt;

&lt;p&gt;This is recommended for all public endpoints. The only case this may not be needed is when you don't want to restrict any origin from accessing server resources. &lt;/p&gt;

&lt;p&gt;Even if that public endpoint is only used by your application or other external systems built by your team, this is even one more reason you must implement CORS, because you don't want anybody out there who discovers this endpoint to access server resources.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Rate Limiting:
&lt;/h3&gt;

&lt;p&gt;This is a mechanism used to control the number of requests a client (an IP of an actual person or bot) can make to your API within a specified time frame. &lt;/p&gt;

&lt;p&gt;So this allows you to set the number of requests an IP can send to your server per second, minute, hour, day etc. This ensures one client doesn't flood your API with requests.&lt;/p&gt;

&lt;p&gt;Rate limiting protects your API from bots, scraping, brute force attacks and DoS attacks, which can &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Either max out your server's allocated resources. &lt;/li&gt;
&lt;li&gt;Increase hosting cost&lt;/li&gt;
&lt;li&gt;Or give third parties unrestricted access to scrape data.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  When should I implement this?
&lt;/h4&gt;

&lt;p&gt;All API systems should implement a rate limiting algorithm. &lt;/p&gt;

&lt;h4&gt;
  
  
  Types of rate limiting algorithms:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Fixed Window Algorithm: &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This sets a fixed number as the limit within a timeframe (e.g 1000 per hour), and every request received is counted. &lt;br&gt;
Once the set fixed number is reached in the set period of time, every other subsequent request will be blocked temporarily.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Token Bucket Algorithm: &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is used for API that want to allow an occasional high number of requests from clients but not every time.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Sliding Window Algorithm:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is similar to the fixed window algorithm but shifts the time window depending on a certain circumstance. A common use case is allowing certain users to have higher priority requests or consistent access within a set time window when there's high usage, while reducing or temporarily blocking requests from other users.&lt;/p&gt;

&lt;p&gt;Note there are several other rate limiting methods that are not mentioned here.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. API Logs:
&lt;/h3&gt;

&lt;p&gt;Yeah, an API log is a structured and detailed record of all requests and responses that your API handles.&lt;br&gt;
API logs are very important because they help in tracking issues, monitoring performance, and spotting security threats &amp;amp; patterns.&lt;/p&gt;

&lt;h4&gt;
  
  
  What you should log:
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;Access logs: Record every request made to the API; this should include request method, timestamp, client IP address, requested URL endpoint, and response status code. &lt;/li&gt;
&lt;li&gt;Error logs: Record every exception and error your API encounters. This should contain the error message, the endpoint where it occurred, the timestamp, the request method, and other related information.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;A detailed and structured API log provides you a bird's-eye view of what's happening in your API system. You don't just build an API and deploy, but you can also see basically how it's being used, user behaviors, performance gaps &amp;amp; trends, and security threats.&lt;/p&gt;

&lt;p&gt;Most times, I wish most beginner tutorials and learning resources out there taught these things; that's why I decided to stop and publish this out here.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>How to Fix Function _load_textdomain_just_in_time Error in WordPress</title>
      <dc:creator>Jude Eigbiremonlen</dc:creator>
      <pubDate>Sun, 22 Feb 2026 22:21:48 +0000</pubDate>
      <link>https://forem.com/juddee/how-to-fix-function-loadtextdomainjustintime-error-in-wordpress-l4d</link>
      <guid>https://forem.com/juddee/how-to-fix-function-loadtextdomainjustintime-error-in-wordpress-l4d</guid>
      <description>&lt;p&gt;Here is how you can resolve this error on your WordPress website. This is the same approach I now use after several attempts to fix this type of error, and it works every time.&lt;/p&gt;

&lt;p&gt;Let's see some of the reasons behind this type of error, and we can then take a step-by-step approach to addressing it.&lt;/p&gt;

&lt;h1&gt;
  
  
  Ok, below are 3 possible reasons why you can get this error:
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;WordPress Version Upgrade Compatibility:&lt;/strong&gt;&lt;br&gt;
WordPress's latest version may not be compatible with one or some of your plugins or the theme currently being used on the website. This usually occurs when your plugins or theme is using a deprecated API, function, or even approach that's no longer supported in the latest WordPress upgrade.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Plugin version upgrade compatibility:&lt;/strong&gt; this is usually when one or several of your plugins are updated but are no longer compatible with either your theme or other plugins or even your current WordPress version. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Theme version upgrade compatibility:&lt;/strong&gt; you can get this error when your current theme version is upgraded, but now one of your plugins is no longer compatible with the latest theme version. &lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;So the next step is to troubleshoot the website to know which of these 3 is actually the cause of the error, and that ultimately determines how we would solve it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Turn on debug mode:
Turn on debug mode from your cPanel from the Softaculous WordPress manager.
&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%2F4lpzn63smuugy9u7w93a.PNG" alt=" " width="800" height="349"&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Or in the wp-config.php file, paste this code there. And remember to reset to false once the issue is fixed.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;define( 'WP_DEBUG', true);
define( 'WP_DEBUG_DISPLAY', true );

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

&lt;/div&gt;



&lt;p&gt;The error can be identified by either visiting the website or reviewing the error log file. If you receive a helpful error message, it may provide instructions on how to resolve the issue; otherwise, please proceed to the next step.&lt;/p&gt;

&lt;h3&gt;
  
  
  Scenario 1:
&lt;/h3&gt;

&lt;p&gt;Rename your plugin folder to old_plugins and visit the site admin dashboard.&lt;br&gt;
Go to the &lt;code&gt;/wp-content/plugins/&lt;/code&gt; folder in your WordPress installation's root directory.&lt;/p&gt;

&lt;p&gt;Note that if you can access the admin dashboard, it means that one of your plugins is causing the problem. We are now one step closer to resolving the issue.&lt;/p&gt;

&lt;h4&gt;
  
  
  Next step:
&lt;/h4&gt;

&lt;p&gt;Rename the folder back to "Plugins" and disable all the plugins for the next.&lt;/p&gt;

&lt;h4&gt;
  
  
  Detecting the culprit plugin:
&lt;/h4&gt;

&lt;p&gt;Enable each plugin one at a time to determine which one causes the initial error. &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%2Fy71g3skvzre17xoph9c6.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%2Fy71g3skvzre17xoph9c6.png" alt=" " width="800" height="475"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Fix (Solution to fixing the problem):
&lt;/h4&gt;

&lt;p&gt;When you identify the specific plugin causing the problem, I recommend rolling back to an older version that is compatible with your site. This is a quick fix for live websites that need to be up and running as soon as possible, while you take your time fixing the plugin code based on the error message displayed on a test or local server.&lt;/p&gt;

&lt;h3&gt;
  
  
  Scenario 2:
&lt;/h3&gt;

&lt;p&gt;If you renamed the plugin folder to old_plugin and you are still unable to access the admin panel. Then, from the cPanel WordPress manager, switch from your current theme to any other one to test.&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%2Fdxspii5zxo3g8fasnuv9.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%2Fdxspii5zxo3g8fasnuv9.png" alt=" " width="800" height="464"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;However, if the admin panel or site loads after changing the theme, the issue is with the theme. &lt;/p&gt;

&lt;p&gt;Follow the same fix approach used for scenario 1 for a quick fix or long-term fix.&lt;/p&gt;

&lt;h3&gt;
  
  
  Scenario 3:
&lt;/h3&gt;

&lt;p&gt;If after changing the theme, you still can't access the site or admin panel, then roll back the WordPress version from cPanel back to an older version. &lt;/p&gt;

&lt;p&gt;Another thing you can also do is to contact the authors of these plugins or themes to update their tools by providing the current version of the WordPress plugin or theme you use that's not compatible, which is helpful to easily simulate the error and figure out the fix.&lt;/p&gt;

</description>
      <category>php</category>
      <category>tutorial</category>
      <category>webdev</category>
      <category>wordpress</category>
    </item>
    <item>
      <title>Get Started with CSVParse for Node.js (csv-parse npm package)</title>
      <dc:creator>Jude Eigbiremonlen</dc:creator>
      <pubDate>Fri, 13 Feb 2026 09:07:52 +0000</pubDate>
      <link>https://forem.com/juddee/get-started-with-csvparse-for-nodejs-csv-parse-npm-package-50oh</link>
      <guid>https://forem.com/juddee/get-started-with-csvparse-for-nodejs-csv-parse-npm-package-50oh</guid>
      <description>&lt;p&gt;The &lt;code&gt;csv-parse&lt;/code&gt; is a parsing package that interprets CSV input into array or object. It uses Nodejs stream API under the hood but has been optimised for easy of use and parsing large datasets.&lt;/p&gt;

&lt;h2&gt;
  
  
  Usage
&lt;/h2&gt;

&lt;p&gt;To get started run the following command to install the package in your existing or new project.&lt;br&gt;
Install the package&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm i csv-parse
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Example CSV (data.csv)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;name,age,email
Alex,33,alex@example.com 
Bekky,20,bekky@example.com 
Carl,27,carl@example.com 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Read and Parse data.csv
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import fs from 'node:fs';
import {parse} from 'csv-parse';

const records =[];

fs.createReadStream('path/data.csv')
.pipe(
   parse{
     columns: true, //use first row as header
     skip_empty_lines: true,
   }
)
.on('data',(row)=&amp;gt;{
   records.push(row);
})
.on('error',(err)=&amp;gt;{
   console.error(err.message);
})
.on('end', ()=&amp;gt;{
    console.log(records);
});
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Output
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[
  { name: 'Alex', age: '33', email: 'alex@example.com' },
  { name: 'Bekky', age: '20', email: 'bekky@example.com' },
  { name: 'Carl', age: '27', email: 'carl@example.com' }
]


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

&lt;/div&gt;



&lt;h3&gt;
  
  
  Here's what you should always remember,
&lt;/h3&gt;

&lt;p&gt;The parse API &lt;code&gt;parse('input',options,callback)&lt;/code&gt; accepts an input which, it then interprets into structured data using the specified parsing rules passed as the options argument. &lt;/p&gt;

&lt;p&gt;&lt;code&gt;input&lt;/code&gt; : string or buffer&lt;br&gt;
&lt;code&gt;options&lt;/code&gt;: parsing rule (optional). e.g {columns:true/false,delimiter:","}&lt;br&gt;
&lt;code&gt;callback(err, records)&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;It is recommended you use &lt;code&gt;fs.createReadStream()&lt;/code&gt; to stream your file piece by piece, instead of loading everything once into memory when using &lt;code&gt;fs.readFile()&lt;/code&gt;.&lt;br&gt;
Stream tells node to read chunks of the file and each chunk is parsed imediately which keeps memory usage low. You can use &lt;code&gt;fs.readFile()&lt;/code&gt; for file that is ≤ 5MB.&lt;/p&gt;

</description>
      <category>data</category>
      <category>javascript</category>
      <category>node</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
