<?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: Jude Eigbiremonlen</title>
    <description>The latest articles on DEV Community by Jude Eigbiremonlen (@juddee).</description>
    <link>https://dev.to/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>DEV Community: Jude Eigbiremonlen</title>
      <link>https://dev.to/juddee</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/juddee"/>
    <language>en</language>
    <item>
      <title>How not to build a login &amp; signup system</title>
      <dc:creator>Jude Eigbiremonlen</dc:creator>
      <pubDate>Mon, 08 Jun 2026 01:45:10 +0000</pubDate>
      <link>https://dev.to/juddee/how-not-to-build-a-login-signup-system-4fc5</link>
      <guid>https://dev.to/juddee/how-not-to-build-a-login-signup-system-4fc5</guid>
      <description>&lt;p&gt;You shouldn't build a login &amp;amp; signup system that only securely and effectively authenticates users; instead, create a system that makes sure your application does more than just securely authenticate users by adding an extra layer of security, which includes the following:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create a login attempt tracker&lt;/li&gt;
&lt;li&gt;Always add a CAPTCHA to your signup/registration form.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Yeah, this is information that you may get from a senior dev or probably too late after your system or user has been exploited. Note these concepts can be implemented with any programming language. &lt;/p&gt;

&lt;p&gt;So let's explain the reasons and how to properly implement these extra layers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Reason
&lt;/h2&gt;

&lt;p&gt;The reason why you should always add CAPTCHA to your signup/registration form is to prevent automated systems or bots from flooding your servers and creating fake accounts. &lt;/p&gt;

&lt;p&gt;The login page doesn't necessarily always require a captcha because it is not a good user experience to always require an already existing user to answer the captcha every time they login. &lt;/p&gt;

&lt;p&gt;Instead, you create a system that tracks user login attempts and shows the CAPTCHA when they reach a certain number of failed login attempts. &lt;/p&gt;

&lt;p&gt;This will prevent unauthorized individuals from guessing your user's login credentials and also protect your server from potential brute-force attacks. &lt;/p&gt;

&lt;h2&gt;
  
  
  How to properly implement the login attempt tracker security layer
&lt;/h2&gt;

&lt;p&gt;You need to create a database table to store login attempt details, increase the counts every time and create an httpOnly cookie "attemptCounts" for server-side access only. The main reason to save the details to a database and not cookies only is to prevent attackers from altering the data and also to be able to identify and track clients even if they switch devices, locations or IP addresses. &lt;/p&gt;

&lt;p&gt;So you can either identify &amp;amp; track each attempt by a user email/IP/username/phone-number using any of these single options or combine them based on the data you collect.&lt;/p&gt;

&lt;p&gt;Example of a simple login attempt table:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;serial&lt;/span&gt;
&lt;span class="na"&gt;email&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;string //email or username or phonenumber&lt;/span&gt;
&lt;span class="na"&gt;ip&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;string&lt;/span&gt;
&lt;span class="na"&gt;counts&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;integer&lt;/span&gt;
&lt;span class="na"&gt;createdAt&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;timeStamp&lt;/span&gt;
&lt;span class="na"&gt;updatedAt&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;timeStamp&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The maximum failed login attack should be 5. Some enterprise and financial systems may set it to only 3 attempts; between 3 and 5 works fine.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The next thing to do if they exceed the allowed login attempts:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Implement the CAPTCHA mechanism&lt;/strong&gt;: Show the captcha on the login form and make it compulsory every time until the user login successfully and then update the login attempt to 0 in the db.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Implement time-lockout mechanism&lt;/strong&gt;: Prevent the client from being able to submit the login form for a specific timeframe. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Block the account and force a password reset&lt;/strong&gt;: Send a password reset to the user's email if it exists, or the user has to visit your office physically. This option is mostly used by banking apps &amp;amp; fintech. &lt;/p&gt;

&lt;p&gt;You can implement any of them or combine them as you like. Some applications use all three, while most apps implement only captcha or time-lockout mechanism.  &lt;/p&gt;

&lt;p&gt;Make sure you track IP address and username/email/phone-number so that even if they try from another device or IP, your system is still able to detect and identify them.&lt;/p&gt;

&lt;p&gt;Ok, that will be all for now.&lt;/p&gt;

</description>
      <category>backend</category>
      <category>security</category>
      <category>tutorial</category>
      <category>webdev</category>
    </item>
    <item>
      <title>One of Those Days: Building from Zero EP001</title>
      <dc:creator>Jude Eigbiremonlen</dc:creator>
      <pubDate>Sun, 07 Jun 2026 19:32:54 +0000</pubDate>
      <link>https://dev.to/juddee/one-of-those-days-building-from-zero-ep001-o8i</link>
      <guid>https://dev.to/juddee/one-of-those-days-building-from-zero-ep001-o8i</guid>
      <description>&lt;p&gt;This post is the first in this series, which I'm starting with the goal of documenting my journey as an indie developer building a product from zero. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Brief Introduction:&lt;/strong&gt;&lt;br&gt;
I'm a full-stack software developer, and my name is Jude Eigbiremonlen. &lt;/p&gt;

&lt;p&gt;I'm currently building &lt;strong&gt;Moriod&lt;/strong&gt;, an AI powered exam preparation platform that helps students study smarter, understand their courses better and achieve excellent grades. Starting with students at the university, where I'm furthering my education. The platform is tailored specifically for students at the university.&lt;/p&gt;

&lt;h2&gt;
  
  
  When I started:
&lt;/h2&gt;

&lt;p&gt;I started building this project last year and deployed it to production in December 2025. Without building every feature before deploying, I just focused on the core features. &lt;/p&gt;

&lt;p&gt;And for the past 5 months, my focus has been mainly on distribution and adding user-requested features with a goal of having a stable web version and then building a mobile version by the end of 2026.&lt;/p&gt;

&lt;h2&gt;
  
  
  Journey:
&lt;/h2&gt;

&lt;p&gt;I focused on distribution and adding features requested by users because I've worked at a product-led startup at its early stage and this has helped me discard the popular assumption that having just a good product or a product that solves a particular problem alone is enough, which is not entirely true.&lt;/p&gt;

&lt;p&gt;I'm bootstrapping from zero with no investor or any kind of funding yet and documenting the whole journey here.&lt;br&gt;
So I'm sticking till the end.&lt;/p&gt;

&lt;p&gt;In my next post I will share how we got our first 20 signups (all active recurring users), the challenges I encountered, my expectations &amp;amp; dose of reality and what I decided to do.&lt;/p&gt;

&lt;p&gt;Product Stats:&lt;br&gt;
Revenure: $0&lt;br&gt;
Published: December 2025.&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%2Fhmx2xnc977zqz7uj83r3.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%2Fhmx2xnc977zqz7uj83r3.PNG" alt=" " width="800" height="307"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <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://dev.to/juddee/build-production-safe-api-crucial-things-most-junior-devs-and-beginners-neglect-4ofh</link>
      <guid>https://dev.to/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://dev.to/juddee/how-to-fix-function-loadtextdomainjustintime-error-in-wordpress-l4d</link>
      <guid>https://dev.to/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://dev.to/juddee/get-started-with-csvparse-for-nodejs-csv-parse-npm-package-50oh</link>
      <guid>https://dev.to/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>
