<?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: AD</title>
    <description>The latest articles on DEV Community by AD (@ashokdey_).</description>
    <link>https://dev.to/ashokdey_</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%2F98922%2F62b22bc1-9b07-47be-940b-4d3b84d8a304.png</url>
      <title>DEV Community: AD</title>
      <link>https://dev.to/ashokdey_</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ashokdey_"/>
    <language>en</language>
    <item>
      <title>Smallest popular Javascript Library</title>
      <dc:creator>AD</dc:creator>
      <pubDate>Mon, 01 Jun 2020 14:35:51 +0000</pubDate>
      <link>https://dev.to/ashokdey_/smallest-popular-javascript-library-5cn0</link>
      <guid>https://dev.to/ashokdey_/smallest-popular-javascript-library-5cn0</guid>
      <description>&lt;h1&gt;
  
  
  Which is the most used smallest Javascript Open Source Library?
&lt;/h1&gt;

&lt;p&gt;I am going to start with reading source codes. Can you help me in listing out the popularly used Javascript library?&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Can you implement forEach() correctly?</title>
      <dc:creator>AD</dc:creator>
      <pubDate>Fri, 15 May 2020 10:57:20 +0000</pubDate>
      <link>https://dev.to/ashokdey_/can-you-implement-foreach-9e1</link>
      <guid>https://dev.to/ashokdey_/can-you-implement-foreach-9e1</guid>
      <description>&lt;p&gt;So if you're into JavaScript you may be using &lt;strong&gt;forEach()&lt;/strong&gt; daily. Let's dive deep into and see whether we can implement our own forEach() or not. &lt;/p&gt;

&lt;h2&gt;
  
  
  forEach() usage
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;The forEach() method executes a provided function once for each array element. - MDN&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;arr&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;ashok&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="nx"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;forEach&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;el&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;el&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;


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

&lt;/div&gt;
&lt;p&gt;So how you'll move forward with implementing your own &lt;strong&gt;forEach()&lt;/strong&gt;?&lt;br&gt;
We have to iterate through the elements with the given callback, Simple!&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;

&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;myEach&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;callback&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;for &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nf"&gt;callback&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;


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

&lt;/div&gt;
&lt;p&gt;Done? No, you will say we can make it even more realistic by adding it to the Array prototype chain and rule like a King.&lt;/p&gt;

&lt;p&gt;Ok, here you go!&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;

&lt;span class="nb"&gt;Array&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;prototype&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;myEach&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;myEach&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;callback&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;for &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nf"&gt;callback&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;


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

&lt;/div&gt;
&lt;p&gt;I hope now it's complete. Yay!&lt;/p&gt;
&lt;h2&gt;
  
  
  Voila!
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;The above implementation floating around the web is wrong.&lt;/strong&gt; Find the &lt;a href="https://www.ecma-international.org/ecma-262/6.0/#sec-array.prototype.foreach" rel="noopener noreferrer"&gt;ECMA Specification here&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Know your forEach() better
&lt;/h2&gt;

&lt;p&gt;forEach() calls a provided callback function once for each element in an array in ascending order.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It is not invoked for index properties that have been deleted or are uninitialized&lt;/strong&gt;&lt;sup&gt;1&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;The above point is something people are not caring about when implementing forEach, to keep things simple, I am skipping the implementation of the 3rd argument &lt;strong&gt;this&lt;/strong&gt; as you can see in the signature &lt;code&gt;arr.forEach(callback(currentValue [, index [, array]])[, thisArg])&lt;/code&gt;&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;

&lt;span class="nb"&gt;Array&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;prototype&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;myEach&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;myEach&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;callback&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;for &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nf"&gt;callback&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;arr&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;ashok&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="c1"&gt;// let's delete one of the elements&lt;/span&gt;
&lt;span class="k"&gt;delete&lt;/span&gt; &lt;span class="nx"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;

&lt;span class="c1"&gt;// native&lt;/span&gt;
&lt;span class="nx"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;forEach&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;el&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;el&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;-------&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="c1"&gt;// testing myEach()&lt;/span&gt;
&lt;span class="nx"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;myEach&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;el&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;el&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;



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

&lt;/div&gt;
&lt;p&gt;Can you guess the output of the above two? Here is the output:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fcfem8ggx32qaql50ukfb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fcfem8ggx32qaql50ukfb.png" alt="Code Output"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Did you notice that our implementation of the &lt;strong&gt;myEach()&lt;/strong&gt; enumerates on deleted indexes as well? &lt;/p&gt;

&lt;p&gt;This has something to do with &lt;strong&gt;Prototype Chain&lt;/strong&gt; I am not willing to cover it here but we can fix this using &lt;code&gt;.hasOwnProperty()&lt;/code&gt;&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;

&lt;span class="nb"&gt;Array&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;prototype&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;myEach&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;myEach&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;callback&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;for &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;Object&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;hasOwnProperty&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;call&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nf"&gt;callback&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;


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

&lt;/div&gt;
&lt;p&gt;We can step further and can reduce some code if we can directly run &lt;code&gt;hasOwnProperty()&lt;/code&gt; on the current instance i.e &lt;strong&gt;this&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;

&lt;span class="nb"&gt;Array&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;prototype&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;myEach&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;myEach&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;callback&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;for &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;hasOwnProperty&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nf"&gt;callback&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;



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

&lt;/div&gt;
&lt;p&gt;Now you can test this and celebrate that we covered the most distinctive feature of &lt;strong&gt;forEach()&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Few people are implementing the built-in JS methods&lt;/strong&gt; Have a look here:&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/knaxus" rel="noopener noreferrer"&gt;
        knaxus
      &lt;/a&gt; / &lt;a href="https://github.com/knaxus/native-javascript" rel="noopener noreferrer"&gt;
        native-javascript
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Can you re-implement your own version of JavaScript built-in functions? Let's try it out. 
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;p&gt;&lt;a href="https://github.com/vinitshahdeo/HacktoberFest" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/42fbac4b16889e2deef632fd73c50eea9227ff1e87d9858da0b757ea3e0a3ba0/68747470733a2f2f6261646765732e66726170736f66742e636f6d2f6f732f76322f6f70656e2d736f757263652e7376673f763d313033" alt="Open Source Love"&gt;&lt;/a&gt;
&lt;a href="https://opensource.org/licenses/MIT" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/6cd0120cc4c5ac11d28b2c60f76033b52db98dac641de3b2644bb054b449d60c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d79656c6c6f772e737667" alt="License: MIT"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Native JavaScript&lt;/h1&gt;

&lt;/div&gt;

&lt;p&gt;Let's implement the built in functions again!&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;How to Contribute?&lt;/h2&gt;

&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;Try to use native functions and operators&lt;/li&gt;
&lt;li&gt;Avoid ES6+ features&lt;/li&gt;
&lt;li&gt;Your solution file should contain the MDN Link of the method you impleneted&lt;/li&gt;
&lt;li&gt;Your solution file should also contain some introduction about the method and few examples&lt;/li&gt;
&lt;li&gt;We will provide review to your implemenation&lt;/li&gt;
&lt;li&gt;Your PR should contain commented test cases&lt;/li&gt;
&lt;li&gt;We'll add our test cases during the review as well.&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Spread&lt;/h3&gt;

&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;Star the repo if you liked the efforts of the initiators&lt;/li&gt;
&lt;li&gt;Tweet about it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All the best&lt;/p&gt;

&lt;/div&gt;
&lt;br&gt;
&lt;br&gt;
  &lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/knaxus/native-javascript" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


&lt;p&gt;I hope you liked it! For digging deeper, here is one more article: &lt;a href="https://alligator.io/js/foreach-array-method/" rel="noopener noreferrer"&gt;https://alligator.io/js/foreach-array-method/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>node</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Let's try to scale an API</title>
      <dc:creator>AD</dc:creator>
      <pubDate>Fri, 01 May 2020 07:11:48 +0000</pubDate>
      <link>https://dev.to/ashokdey_/building-a-scalable-system-4l41</link>
      <guid>https://dev.to/ashokdey_/building-a-scalable-system-4l41</guid>
      <description>&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%2Fi%2F228847fx5bgi8lyp4zg4.jpg" 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%2Fi%2F228847fx5bgi8lyp4zg4.jpg" alt="cover" width="800" height="318"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  I previously wrote about:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://dev.to/ashokdey_/my-first-open-source-project-to-cross-100-stars-232l"&gt;Open Source JavaScript Data structures &amp;amp; Algorithms&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/ashokdey_/highly-scalable-codebase-architecture-4b"&gt;Highly Scalable Codebase Architecture&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In this article, we'll get to know the preliminary steps you can take as a &lt;strong&gt;Software Engineer&lt;/strong&gt; for improving your code and scaling it. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Let's see how we can decrease loadtest time from 187s to 31s&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; I'll be using &lt;strong&gt;Node.js&lt;/strong&gt; but don't skip reading, try to absorb the concept, especially if you're a beginner. &lt;/p&gt;

&lt;h3&gt;
  
  
  Here is the task:
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Build a server with only one &lt;code&gt;GET&lt;/code&gt; request to return the highest Prime number between 0 - N&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  My Setup
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;I've used pure Node.js (Not &lt;code&gt;express.js&lt;/code&gt;) for the creation of my server and routes as well, you are free to use &lt;code&gt;express.js&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;You can use this idea with any language, so don't skip reading but you can skip the code/code repo.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Let's Start!
&lt;/h3&gt;

&lt;p&gt;I used this as one of my assignments for hiring (experienced) devs. The session used to be a pair-programming setup where the &lt;strong&gt;candidate was free to use the Internet&lt;/strong&gt; and tools of his/her choice. Considering the kind of my routine work, such assignments are really helpful.&lt;/p&gt;

&lt;h3&gt;
  
  
  When you wrote a brute-force approach
&lt;/h3&gt;

&lt;p&gt;Let's assume you created your server with the basic algorithm to find a Prime Number. Here is an brute force approach example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// just trying the first thought in mind&lt;/span&gt;
&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;isPrime&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;n&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sqrt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;n&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;n&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
      &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;calculateGreatestPrimeInRange&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;num&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;primes&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[];&lt;/span&gt;
    &lt;span class="k"&gt;for &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="nx"&gt;num&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;isPrime&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="nx"&gt;primes&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;push&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;primes&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="nx"&gt;primes&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;pop&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You'll try to use it in your &lt;code&gt;GET&lt;/code&gt; route say like this &lt;code&gt;https:localhost:9090/prime?num=20&lt;/code&gt;, it will work fine and you'll feel good. You tried it with some numbers like &lt;code&gt;?num=10, 55, 101, 1099&lt;/code&gt; you will get instant response and life feels good :)&lt;/p&gt;

&lt;h4&gt;
  
  
  Hold On!
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;As soon as you try a large number&lt;/strong&gt; say &lt;code&gt;num=10101091&lt;/code&gt; you will feel the lag (I've tried it in the browser, you can use &lt;strong&gt;Postman&lt;/strong&gt;)&lt;/p&gt;

&lt;p&gt;Since we are not using &lt;strong&gt;PM2&lt;/strong&gt; right now (which does a ton of things many of the beginners are not aware of), you'll notice that when you try to open a new tab and try for a smaller number, your tab will be waiting for the result of the previous tab.&lt;/p&gt;

&lt;h3&gt;
  
  
  What can you do now?
&lt;/h3&gt;

&lt;p&gt;Let's bring in concurrency!&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cluster mode at the rescue!&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here is the block of code showing Cluster mode in action. If you are not aware of &lt;em&gt;Cluster Module&lt;/em&gt; please read about it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;http&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;http&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;cluster&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;cluster&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;os&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;os&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;routes&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./routes&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;cpuCount&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;cpus&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;// check if the process is the master process&lt;/span&gt;
&lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;cluster&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;isMaster&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;// print the number of CPUs&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`Total CPUs are: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;cpuCount&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="k"&gt;for &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="nx"&gt;cpuCount&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nx"&gt;cluster&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;fork&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

  &lt;span class="c1"&gt;// when a new worker is started&lt;/span&gt;
  &lt;span class="nx"&gt;cluster&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;on&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;online&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;worker&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`Worker started with Worker Id: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;worker&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; having Process Id: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;worker&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;pid&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;

  &lt;span class="c1"&gt;// when the worker exits&lt;/span&gt;
  &lt;span class="nx"&gt;cluster&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;on&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;exit&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;worker&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// log&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`Worker with Worker Id: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;worker&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; having Process Id: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;worker&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;pid&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; went offline`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="c1"&gt;// let's fork another worker&lt;/span&gt;
    &lt;span class="nx"&gt;cluster&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;fork&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;// when the process is not a master process, run the app status&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;server&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;http&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;createServer&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;routes&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;handleRequests&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;listen&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;9090&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;App running at http://localhost:9090&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Voila!
&lt;/h3&gt;

&lt;p&gt;After implementing the Cluster Module, you'll see a drastic change!&lt;/p&gt;

&lt;p&gt;You can notice after this using threads, the browser tab with a smaller number will get the response quickly, meanwhile the other tab is busy doing the calculations (you can try it out in Postman as well)&lt;/p&gt;

&lt;p&gt;For those who are not using Node.js, cluster mode refers to running your app in concurrent mode, utilizing the available threads on the CPU. &lt;/p&gt;

&lt;p&gt;Now we have a bit of relaxation, but what else can we do to make it even more performant, because our single requests with large numbers are still lagging?&lt;/p&gt;

&lt;h3&gt;
  
  
  Algorithms at your rescue!
&lt;/h3&gt;

&lt;p&gt;I know this is a haunting word but it is an essential tool you cannot ignore and in the end, after implementing a new algorithm you'll get to realize the worth of Algorithms.&lt;/p&gt;

&lt;p&gt;So for prime numbers, we have a &lt;strong&gt;&lt;a href="https://www.geeksforgeeks.org/sieve-of-eratosthenes/" rel="noopener noreferrer"&gt;Sieve of Eratosthenes&lt;br&gt;
&lt;/a&gt;&lt;/strong&gt;We have to tweak it a bit so as to fit this in our use-case. You can find the complete code in the repo inside the class &lt;code&gt;Prime&lt;/code&gt;. &lt;/p&gt;

&lt;p&gt;Let's have a look at the &lt;strong&gt;Loadtesting Results&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Brute force approach for &lt;code&gt;num=20234456&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Command passed to the &lt;strong&gt;loadtest module&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;loadtest &lt;span class="nt"&gt;-n&lt;/span&gt; 10 &lt;span class="nt"&gt;-c&lt;/span&gt; 10 &lt;span class="nt"&gt;--rps&lt;/span&gt; 200 &lt;span class="s2"&gt;"http://localhost:9090/prime?num=20234456"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Result:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;INFO Total &lt;span class="nb"&gt;time&lt;/span&gt;:          187.492294273 s
INFO Requests per second: 0
INFO Mean latency:        97231.6 ms
INFO 
INFO Percentage of the requests served within a certain &lt;span class="nb"&gt;time
&lt;/span&gt;INFO   50%      108942 ms
INFO   90%      187258 ms
INFO   95%      187258 ms
INFO   99%      187258 ms
INFO  100%      187258 ms &lt;span class="o"&gt;(&lt;/span&gt;longest request&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Using SOE with modifications for &lt;code&gt;num=20234456&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Command passed to the &lt;strong&gt;loadtest module&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;loadtest &lt;span class="nt"&gt;-n&lt;/span&gt; 10 &lt;span class="nt"&gt;-c&lt;/span&gt; 10 &lt;span class="nt"&gt;--rps&lt;/span&gt; 200 &lt;span class="s2"&gt;"http://localhost:9090/prime?num=20234456"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Result:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;INFO Total &lt;span class="nb"&gt;time&lt;/span&gt;:          32.284605092999996 s
INFO Requests per second: 0
INFO Mean latency:        19377.3 ms
INFO 
INFO Percentage of the requests served within a certain &lt;span class="nb"&gt;time
&lt;/span&gt;INFO   50%      22603 ms
INFO   90%      32035 ms
INFO   95%      32035 ms
INFO   99%      32035 ms
INFO  100%      32035 ms &lt;span class="o"&gt;(&lt;/span&gt;longest request&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can compare both the results above and can see SOE is a clear winner here.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can we improve it further?
&lt;/h3&gt;

&lt;p&gt;Yes, we can, we can add a &lt;strong&gt;cache&lt;/strong&gt;, a plain Object in Javascript which can be used as a &lt;strong&gt;HashMap&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;Using a cache will store the result for a given number N, if we get a request again for N, we can simply return it from the store instead of doing the calculations.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;REDIS will do a much better job here&lt;/strong&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Let's see the results
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Brute force approach with &lt;strong&gt;cache&lt;/strong&gt; for &lt;code&gt;num=20234456&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;INFO Target URL:          http://localhost:9090/prime?num&lt;span class="o"&gt;=&lt;/span&gt;20234456
INFO Max requests:        10
INFO Concurrency level:   10
INFO Agent:               none
INFO Requests per second: 200
INFO 
INFO Completed requests:  10
INFO Total errors:        0
INFO Total &lt;span class="nb"&gt;time&lt;/span&gt;:          47.291413455000004 s
INFO Requests per second: 0
INFO Mean latency:        28059.6 ms
INFO 
INFO Percentage of the requests served within a certain &lt;span class="nb"&gt;time
&lt;/span&gt;INFO   50%      46656 ms
INFO   90%      46943 ms
INFO   95%      46943 ms
INFO   99%      46943 ms
INFO  100%      46943 ms &lt;span class="o"&gt;(&lt;/span&gt;longest request&lt;span class="o"&gt;)&lt;/span&gt;

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

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Using SOE with modifications &amp;amp; &lt;strong&gt;cache&lt;/strong&gt; for &lt;code&gt;num=20234456&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;
INFO Target URL:          http://localhost:9090/prime-enhanced?num&lt;span class="o"&gt;=&lt;/span&gt;20234456
INFO Max requests:        10
INFO Concurrency level:   10
INFO Agent:               none
INFO Requests per second: 200
INFO 
INFO Completed requests:  10
INFO Total errors:        0
INFO Total &lt;span class="nb"&gt;time&lt;/span&gt;:          31.047955697999996 s
INFO Requests per second: 0
INFO Mean latency:        19081.8 ms
INFO 
INFO Percentage of the requests served within a certain &lt;span class="nb"&gt;time
&lt;/span&gt;INFO   50%      23192 ms
INFO   90%      32657 ms
INFO   95%      32657 ms
INFO   99%      32657 ms
INFO  100%      32657 ms &lt;span class="o"&gt;(&lt;/span&gt;longest request&lt;span class="o"&gt;)&lt;/span&gt;

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

&lt;/div&gt;



&lt;h3&gt;
  
  
  Time Analysis
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Conditions&lt;/th&gt;
&lt;th&gt;Time&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;With basic algo&lt;/td&gt;
&lt;td&gt;187.492294273 s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;With Cache&lt;/td&gt;
&lt;td&gt;47.291413455000004 s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;With SOE&lt;/td&gt;
&lt;td&gt;32.284605092999996 s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;With SOE &amp;amp; Cache&lt;/td&gt;
&lt;td&gt;31.047955697999996 s&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Finally
&lt;/h3&gt;

&lt;p&gt;I hope you understood the benefits of the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Multithreading&lt;/li&gt;
&lt;li&gt;Algorithms&lt;/li&gt;
&lt;li&gt;Caching a.k.a Memoization&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I hope you liked this short note, your suggestions are welcome. Hre is the code repo: &lt;a href="https://github.com/knaxus/highest-prime-number" rel="noopener noreferrer"&gt;find-highest-prime&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can find me on &lt;a href="https://github.com/ashokdey" rel="noopener noreferrer"&gt;Github&lt;/a&gt;, &lt;a href="https://linkedin.com/in/ashokdey" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;, and, &lt;a href="https://twitter.com/ashokdey_" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>opensource</category>
      <category>node</category>
      <category>redis</category>
    </item>
    <item>
      <title>Highly Scalable Codebase Architecture</title>
      <dc:creator>AD</dc:creator>
      <pubDate>Thu, 30 Apr 2020 09:58:50 +0000</pubDate>
      <link>https://dev.to/ashokdey_/highly-scalable-codebase-architecture-4b</link>
      <guid>https://dev.to/ashokdey_/highly-scalable-codebase-architecture-4b</guid>
      <description>&lt;p&gt;Hello Folks! &lt;/p&gt;

&lt;p&gt;Back in time, I was preparing for a live-code session where I demonstrated adding a layer of &lt;strong&gt;GraphQL to an existing REST API&lt;/strong&gt;. The session went well, and after that, I noticed my way of writing code and organizing files have really helped me adding the GraphQL layer very smoothly, the codebase architecture really made it feel like a hot knife on butter.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;You can find the code repo here (do star it! :P) &lt;a href="https://github.com/knaxus/rest-and-graphql"&gt;rest-and-graphql&lt;/a&gt;&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Let's explore the codebase.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--xZ7Ai127--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/bcabdrrd8fg3qem78cf4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--xZ7Ai127--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/bcabdrrd8fg3qem78cf4.png" alt="codebase"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The source files are inside the &lt;code&gt;/src&lt;/code&gt; folder. Let's define the roles of the folders inside &lt;code&gt;/src&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;config&lt;/code&gt;: contains the &lt;code&gt;.env&lt;/code&gt; files&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;controllers&lt;/code&gt;: contains the route handlers using methods inside &lt;code&gt;routes&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;db&lt;/code&gt;: contains the database connection logic&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;graphql&lt;/code&gt;: contains the resolvers and definitions &lt;/li&gt;
&lt;li&gt;
&lt;code&gt;routes&lt;/code&gt;: contains the definition of the routes using &lt;code&gt;services&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;services&lt;/code&gt;: contains the logic to fetch data from DB&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;utils&lt;/code&gt;: contains the globally used util functions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As you can see, the codebase is organized as per the entities. What really helped me to scale here is the &lt;code&gt;services&lt;/code&gt; folder, it is the real gem here &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I wrote the services only once&lt;/strong&gt; for the &lt;strong&gt;REST APIs&lt;/strong&gt; and due to the patterns I followed made the construction of the &lt;strong&gt;GraphQL&lt;/strong&gt; layer very easy. &lt;strong&gt;I only had to call the service inside the resolvers instead of writing it again and again for different layers&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;One added benefit of this kind of codebase is that you can easily split it into independent microservices just by taking out the entities from routes, services, controllers folder&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Feel free to explore the repo on Github: &lt;a href="https://github.com/knaxus/rest-and-graphql"&gt;rest-and-graphql&lt;/a&gt;, you can also browse my other projects. And with time I will try to extend this article in detail.&lt;/p&gt;

&lt;p&gt;Let me know your thoughts! &lt;/p&gt;

&lt;p&gt;Find me on &lt;a href="https://linkedin.com/ashokdey"&gt;LinkedIn&lt;/a&gt; and &lt;a href="https://twitter.com/ashokdey_"&gt;Twitter&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>node</category>
      <category>opensource</category>
      <category>graphql</category>
    </item>
    <item>
      <title>Open-source JavaScript Data Structures &amp; Algorithms</title>
      <dc:creator>AD</dc:creator>
      <pubDate>Tue, 28 Apr 2020 06:40:25 +0000</pubDate>
      <link>https://dev.to/ashokdey_/my-first-open-source-project-to-cross-100-stars-232l</link>
      <guid>https://dev.to/ashokdey_/my-first-open-source-project-to-cross-100-stars-232l</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--HThnhQMx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/njthg41i3njz39avhthi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--HThnhQMx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/njthg41i3njz39avhthi.png" alt="cover"&gt;&lt;/a&gt;&lt;/p&gt;
Repo having 99% coverage, 350+ unit tests 



&lt;p&gt;&lt;em&gt;If you are too excited, here you have it &lt;a href="https://github.com/knaxus/problem-solving-javascript"&gt;Problem Solving using JavaScript&lt;/a&gt;! Do star/share the repo if you like it.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Back in time
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;I always wanted to implement the most commonly used Data Structures&lt;/strong&gt;&lt;/em&gt; &lt;/p&gt;

&lt;p&gt;Although I am very active on &lt;strong&gt;&lt;a href="https://github.com/ashokdey"&gt;GitHub&lt;/a&gt;&lt;/strong&gt;, with JavaScript as my primary language, I was having no intentions to implement the Data Structures using JavaScript. &lt;strong&gt;C++&lt;/strong&gt; was my first preference.&lt;/p&gt;

&lt;p&gt;But due to my busy work schedule, I was not able to do it for a long time. (&lt;strong&gt;I am working as a Fullstack JavaScript Engineer since 2017&lt;/strong&gt;, for more, you can peep into my &lt;strong&gt;&lt;a href="https://linkedin.com/in/ashokdey"&gt;LinkedIn&lt;/a&gt;&lt;/strong&gt; profile)&lt;/p&gt;

&lt;h3&gt;
  
  
  Today, Problem Solving using JavaScript
&lt;/h3&gt;

&lt;p&gt;I started solving interview questions in JavaScript and initiated a repo back in December 2018, fast forward August 2019, the thought of having a Data Structure repo pop up in my mind again. This time without thinking any further, I started implementing the common Data Structures using JavaScript.&lt;/p&gt;

&lt;h4&gt;
  
  
  List of Data Structures
&lt;/h4&gt;

&lt;p&gt;This repo has the implementation of the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Linked Lists (SLL, DLL)&lt;/li&gt;
&lt;li&gt;Stack &amp;amp; Queue&lt;/li&gt;
&lt;li&gt;Bloom Filter &amp;amp; Set&lt;/li&gt;
&lt;li&gt;Binary Tree, Binary Search Tree &amp;amp; Suffix Tree&lt;/li&gt;
&lt;li&gt;Heaps &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can find a long list here: &lt;a href="https://github.com/knaxus/problem-solving-javascript/blob/master/TOC.md"&gt;Table of Contents&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  What are the perks
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--qBM9wDhp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/e4a6nbwvo4gnhm3xp9i9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--qBM9wDhp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/e4a6nbwvo4gnhm3xp9i9.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;
Travis CI running the tests



&lt;p&gt;The repo hash the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Most commonly used/asked Data Structures&lt;/li&gt;
&lt;li&gt;Commonly asked interview questions with solutions&lt;/li&gt;
&lt;li&gt;Unit Tests for every Data Structures and Problem Solutions&lt;/li&gt;
&lt;li&gt;CI integration with Travis CI&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;strong&gt;Actively Maintained&lt;/strong&gt;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Open for anyone willing to contribute&lt;/li&gt;
&lt;li&gt;Human-friendly PR resolution &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Future
&lt;/h3&gt;

&lt;p&gt;I would like people who are interested should come forward and contribute to this repo. &lt;/p&gt;

&lt;p&gt;This repo is very helpful for beginners to learn a lot of stuff like: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Learning about Data Structures&lt;/li&gt;
&lt;li&gt;Learning about open source contributions &lt;/li&gt;
&lt;li&gt;Learn about the importance of Testing&lt;/li&gt;
&lt;li&gt;Learn best practices and tools like ESLint, Prettier&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Thank You
&lt;/h4&gt;

</description>
      <category>javascript</category>
      <category>opensource</category>
      <category>datastructures</category>
      <category>algorithms</category>
    </item>
  </channel>
</rss>
