<?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: Shifa</title>
    <description>The latest articles on DEV Community by Shifa (@shifa_2).</description>
    <link>https://dev.to/shifa_2</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%2F3044974%2Fd7648ba2-34a3-4645-b052-06d739d6ad67.jpg</url>
      <title>DEV Community: Shifa</title>
      <link>https://dev.to/shifa_2</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/shifa_2"/>
    <language>en</language>
    <item>
      <title>Day 6: String Compression (LeetCode 443)</title>
      <dc:creator>Shifa</dc:creator>
      <pubDate>Sat, 11 Apr 2026 17:34:34 +0000</pubDate>
      <link>https://dev.to/shifa_2/day-6-string-compression-leetcode-443-444n</link>
      <guid>https://dev.to/shifa_2/day-6-string-compression-leetcode-443-444n</guid>
      <description>&lt;h2&gt;
  
  
  Problem Overview
&lt;/h2&gt;

&lt;p&gt;The task is to compress a given array of characters in-place. For each group of consecutive repeating characters:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If the character appears once, it remains unchanged.&lt;/li&gt;
&lt;li&gt;If it appears multiple times, append the character followed by its frequency.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The result must be stored in the same array, and the function should return the new length of the compressed array. The solution must use constant extra space.&lt;/p&gt;




&lt;h2&gt;
  
  
  Approach
&lt;/h2&gt;

&lt;p&gt;To solve this problem efficiently, we use a two-pointer technique:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A &lt;strong&gt;read pointer (&lt;code&gt;i&lt;/code&gt;)&lt;/strong&gt; to traverse the array.&lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;write pointer (&lt;code&gt;index&lt;/code&gt;)&lt;/strong&gt; to overwrite the array with the compressed result.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Steps:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Initialize &lt;code&gt;index = 0&lt;/code&gt; to track the position for writing.&lt;/li&gt;
&lt;li&gt;Traverse the array using pointer &lt;code&gt;i&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;For each character:&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Count how many times it appears consecutively.&lt;/li&gt;
&lt;li&gt;Write the character at &lt;code&gt;index&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;If the count is greater than 1:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Convert the count to a string.&lt;/li&gt;
&lt;li&gt;Write each digit of the count into the array.

&lt;ol&gt;
&lt;li&gt;Continue until the entire array is processed.&lt;/li&gt;
&lt;li&gt;Return the final value of &lt;code&gt;index&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;




&lt;h2&gt;
  
  
  Code Implementation (C++)
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight cpp"&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Solution&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="nl"&gt;public:&lt;/span&gt;
    &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;compress&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;vector&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kt"&gt;char&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&amp;amp;&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;size&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
        &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;index&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;for&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&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="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;n&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="kt"&gt;char&lt;/span&gt; &lt;span class="n"&gt;curr&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
            &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;count&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;while&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="n"&gt;curr&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
                &lt;span class="n"&gt;count&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="p"&gt;}&lt;/span&gt;

            &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;index&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;curr&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="n"&gt;count&lt;/span&gt; &lt;span class="o"&gt;&amp;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="n"&gt;string&lt;/span&gt; &lt;span class="n"&gt;cnt&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;to_string&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;count&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="kt"&gt;char&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;cnt&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                    &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;index&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;c&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;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;index&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;h2&gt;
  
  
  Example
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Input:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"a"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;"a"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;"b"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;"b"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;"c"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;"c"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;"c"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Output:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"a"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;"2"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;"b"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;"2"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;"c"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;"3"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Returned Length:&lt;/strong&gt; &lt;code&gt;6&lt;/code&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Complexity Analysis
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Time Complexity:&lt;/strong&gt; O(n)&lt;br&gt;
Each element is processed once.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Space Complexity:&lt;/strong&gt; O(1)&lt;br&gt;
The compression is done in-place without extra memory.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Key Insights
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;The two-pointer approach allows efficient in-place updates.&lt;/li&gt;
&lt;li&gt;Converting counts to strings ensures correct handling of multi-digit frequencies.&lt;/li&gt;
&lt;li&gt;Careful index management is crucial to avoid overwriting data incorrectly.&lt;/li&gt;
&lt;/ul&gt;




</description>
      <category>algorithms</category>
      <category>interview</category>
      <category>leetcode</category>
      <category>programming</category>
    </item>
    <item>
      <title>Introduction to Server in Backend Development</title>
      <dc:creator>Shifa</dc:creator>
      <pubDate>Tue, 02 Sep 2025 14:58:20 +0000</pubDate>
      <link>https://dev.to/shifa_2/introduction-to-server-in-backend-development-3hkm</link>
      <guid>https://dev.to/shifa_2/introduction-to-server-in-backend-development-3hkm</guid>
      <description>&lt;h2&gt;
  
  
  What is Server?
&lt;/h2&gt;

&lt;p&gt;Before reading the article think of server in your mind , Great did you just saw big hardware devices in front of you placed in a room?&lt;br&gt;
Now let me tell you the Reality&lt;br&gt;
In backend development, a server is not just a physical machine it’s primarily a software application that listens for requests from clients (such as browsers or mobile apps), processes them, and sends back responses. Servers act as the middle layer between the frontend (user interface) and backend logic or database.&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%2F4fsg8za889dg8g44bmja.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%2F4fsg8za889dg8g44bmja.png" alt="Physical Server image" width="750" height="500"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                              **VS**
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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%2Fe87rm6zmo8x8wrsyhckz.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%2Fe87rm6zmo8x8wrsyhckz.png" alt="Cloud Server image" width="768" height="549"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Using Node.js, we can create custom servers to handle data, control access, and manage communication between different parts of an application.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Classic Server Setup (Browser-Based)&lt;/strong&gt;&lt;br&gt;
Before using tools like Postman or frameworks like Express.js, it's useful to understand the basic server setup in Node.js. In the classic approach, we create a server that listens on a specific port and returns a plain message (usually text or HTML) directly in the browser.&lt;/p&gt;

&lt;p&gt;This type of server is helpful for understanding how the request-response cycle works at a low level. When you open a URL like &lt;a href="http://localhost:3000" rel="noopener noreferrer"&gt;http://localhost:3000&lt;/a&gt;, your browser sends a request to the server, which returns a message that gets displayed on the screen.&lt;/p&gt;

&lt;p&gt;There’s no routing logic or data handling in this basic setup—it simply sends a fixed response for every request. This is how many developers start learning server fundamentals.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Handling GET and POST Requests&lt;/strong&gt;&lt;br&gt;
Once you're familiar with the basics, the next step is to handle different HTTP methods, like GET and POST.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;GET&lt;/em&gt; is used to retrieve data. For example, when a user opens a page or fetches information from your server, a GET request is made.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;POST&lt;/em&gt; is used to send data to the server. This is typically used in forms, API calls, or when submitting any kind of user input.&lt;br&gt;
_&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Node.js Server for Postman Testing (GET &amp;amp; POST)&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const http = require('http');

const PORT = 3000;

const server = http.createServer((req, res) =&amp;gt; {
  // Handle GET request to /api/hello
  if (req.method === 'GET' &amp;amp;&amp;amp; req.url === '/api/hello') {
    res.writeHead(200, { 'Content-Type': 'application/json' });
    res.end(JSON.stringify({ message: 'Hello from Node.js server!' }));

  // Handle POST request to /api/data
  } else if (req.method === 'POST' &amp;amp;&amp;amp; req.url === '/api/data') {
    let body = '';

    // Listen for data chunks
    req.on('data', chunk =&amp;gt; {
      body += chunk.toString();
    });

    // Finished receiving data
    req.on('end', () =&amp;gt; {
      try {
        const parsedData = JSON.parse(body); // Convert JSON string to object
        res.writeHead(200, { 'Content-Type': 'application/json' });
        res.end(JSON.stringify({
          message: 'Data received successfully!',
          yourData: parsedData
        }));
      } catch (error) {
        res.writeHead(400, { 'Content-Type': 'application/json' });
        res.end(JSON.stringify({ error: 'Invalid JSON data' }));
      }
    });

  // Handle unknown routes
  } else {
    res.writeHead(404, { 'Content-Type': 'application/json' });
    res.end(JSON.stringify({ error: 'Route not found' }));
  }
});

server.listen(PORT, () =&amp;gt; {
  console.log(`Server is running on http://localhost:${PORT}`);
});

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

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;How to Test in Postman&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Test the GET route
Method: GET&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;URL: &lt;a href="http://localhost:3000/api/hello" rel="noopener noreferrer"&gt;http://localhost:3000/api/hello&lt;/a&gt;&lt;br&gt;
Expected Response:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
  "message": "Hello from Node.js server!"
}

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

&lt;/div&gt;



&lt;p&gt;"For a more detailed explanation, refer to the official documentation."&lt;br&gt;
Reference : &lt;a href="https://www.postman.com/api-platform/api-testing/" rel="noopener noreferrer"&gt;https://www.postman.com/api-platform/api-testing/&lt;/a&gt;&lt;br&gt;
&lt;a href="https://share.google/images/v5EoLNZMRBFBQX6pj" rel="noopener noreferrer"&gt;https://share.google/images/v5EoLNZMRBFBQX6pj&lt;/a&gt;&lt;br&gt;
&lt;a href="https://share.google/images/QByzuPAbnnMdlYLxA" rel="noopener noreferrer"&gt;https://share.google/images/QByzuPAbnnMdlYLxA&lt;/a&gt;&lt;/p&gt;

</description>
      <category>backenddevelopment</category>
      <category>mongodb</category>
      <category>node</category>
    </item>
    <item>
      <title>Introduction to MongoDB and NoSQL — Day 1</title>
      <dc:creator>Shifa</dc:creator>
      <pubDate>Sun, 31 Aug 2025 12:00:06 +0000</pubDate>
      <link>https://dev.to/shifa_2/introduction-to-mongodb-and-nosql-day-1-210i</link>
      <guid>https://dev.to/shifa_2/introduction-to-mongodb-and-nosql-day-1-210i</guid>
      <description>&lt;p&gt;Lets not waste our time on intro directly dive deep into the concept&lt;/p&gt;

&lt;h3&gt;
  
  
  What is MongoDB?
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;MongoDB&lt;/strong&gt; is a &lt;strong&gt;NoSQL database&lt;/strong&gt; that stores data in a flexible, JSON-like format called &lt;strong&gt;documents&lt;/strong&gt;. Unlike traditional databases that require structured tables and fixed columns, MongoDB allows you to store varied data structures within the same collection.&lt;/p&gt;

&lt;p&gt;MongoDB is often used in the &lt;strong&gt;backend&lt;/strong&gt; of applications to manage and store data, but it’s important to note that MongoDB itself is &lt;strong&gt;not a backend framework&lt;/strong&gt; — it is strictly a &lt;strong&gt;database&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Does “NoSQL” Mean?
&lt;/h2&gt;

&lt;p&gt;Many people think "NoSQL" means “no SQL,” but that’s not entirely accurate.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NoSQL&lt;/strong&gt; actually stands for &lt;strong&gt;“Not Only SQL”&lt;/strong&gt;, and it refers to a class of databases that break away from traditional relational models.&lt;/p&gt;

&lt;p&gt;Instead of storing data in rows and columns (like in MySQL or PostgreSQL), NoSQL databases store data in formats like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Key-value pairs&lt;/li&gt;
&lt;li&gt;Wide-column stores&lt;/li&gt;
&lt;li&gt;Graph databases&lt;/li&gt;
&lt;li&gt;Document-oriented databases (like MongoDB)&lt;/li&gt;
&lt;/ul&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%2F39ag2sb734hexsxsfrny.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%2F39ag2sb734hexsxsfrny.png" alt="SQLvsNOsql" width="700" height="350"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  SQL vs NoSQL — What's the Difference?
&lt;/h2&gt;

&lt;p&gt;Here’s a quick comparison to help you understand how MongoDB differs from traditional SQL databases:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;SQL (Relational DB)&lt;/th&gt;
&lt;th&gt;NoSQL (MongoDB)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Data Structure&lt;/td&gt;
&lt;td&gt;Tables (Rows &amp;amp; Columns)&lt;/td&gt;
&lt;td&gt;Documents (JSON-like)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Schema&lt;/td&gt;
&lt;td&gt;Fixed&lt;/td&gt;
&lt;td&gt;Flexible (Schema-less)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Relationships&lt;/td&gt;
&lt;td&gt;Joins, Foreign Keys&lt;/td&gt;
&lt;td&gt;Embedding or Referencing&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Scalability&lt;/td&gt;
&lt;td&gt;Vertical (scale-up)&lt;/td&gt;
&lt;td&gt;Horizontal (scale-out)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Best For&lt;/td&gt;
&lt;td&gt;Structured data&lt;/td&gt;
&lt;td&gt;Dynamic, unstructured data&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Examples&lt;/td&gt;
&lt;td&gt;MySQL, PostgreSQL&lt;/td&gt;
&lt;td&gt;MongoDB, CouchDB, Cassandra&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  MongoDB Structure: Key Terminology
&lt;/h2&gt;

&lt;p&gt;Let’s break down the three most important terms you’ll encounter in MongoDB:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Document&lt;/strong&gt;: A single data record stored in JSON or BSON format.
&lt;em&gt;Example:&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Shifa"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"roll no"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;21&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"email"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"shifa@example.com"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Collection&lt;/strong&gt;: A group of related documents, similar to a table in SQL.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Database&lt;/strong&gt;: A container for collections — the top-level structure in MongoDB.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Why MongoDB is Flexible
&lt;/h2&gt;

&lt;p&gt;In SQL, all records in a table must follow the same schema — same columns, same types. In MongoDB, this restriction doesn’t exist.&lt;/p&gt;

&lt;p&gt;You can store documents with different structures in the same collection.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"sahil"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"age"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;25&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"sam"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"email"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"sam@example.com"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;These two documents live in the same collection, but they have different fields — and that’s completely valid in MongoDB.&lt;/p&gt;




&lt;h2&gt;
  
  
  What You’ll Do Today
&lt;/h2&gt;

&lt;p&gt;As part of Day 1, here’s what students should do to get hands-on experience:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. &lt;strong&gt;Install MongoDB&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Download from &lt;a href="https://www.mongodb.com/try/download/community" rel="noopener noreferrer"&gt;mongodb.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Or create a free cloud database with &lt;a href="https://www.mongodb.com/cloud/atlas" rel="noopener noreferrer"&gt;MongoDB Atlas&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. &lt;strong&gt;Explore MongoDB Compass&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;MongoDB Compass is a GUI that helps you view databases and documents.&lt;/li&gt;
&lt;li&gt;Use it to create a new database and insert your first document.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. &lt;strong&gt;Insert a Document&lt;/strong&gt;
&lt;/h3&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Shifa"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"roll no"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;21&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"course"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"MongoDB Basics"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Congratulations — you’ve just added your first record to a NoSQL database!&lt;/p&gt;




&lt;p&gt;References -&lt;br&gt;
&lt;a href="https://www.mongodb.com/resources/basics/unstructured-data/schemaless" rel="noopener noreferrer"&gt;https://www.mongodb.com/resources/basics/unstructured-data/schemaless&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.integrate.io/blog/the-sql-vs-nosql-difference/" rel="noopener noreferrer"&gt;https://www.integrate.io/blog/the-sql-vs-nosql-difference/&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.mongodb.com/resources/basics/databases/nosql-explained" rel="noopener noreferrer"&gt;https://www.mongodb.com/resources/basics/databases/nosql-explained&lt;/a&gt;&lt;/p&gt;

</description>
      <category>sql</category>
      <category>webdev</category>
      <category>backend</category>
      <category>mongodb</category>
    </item>
    <item>
      <title>Starting My Backend Journey:</title>
      <dc:creator>Shifa</dc:creator>
      <pubDate>Tue, 12 Aug 2025 11:49:25 +0000</pubDate>
      <link>https://dev.to/shifa_2/starting-my-backend-journey-dhl</link>
      <guid>https://dev.to/shifa_2/starting-my-backend-journey-dhl</guid>
      <description>&lt;p&gt;I’ve always felt a little different when it came to backend development. The people around me who knew backend carried an aura in my eyes — something mysterious, powerful, and undeniably cool. And now, here I am, finally stepping into that world and learning a skill I’ve secretly wanted to master.&lt;/p&gt;

&lt;p&gt;Ever since I was a kid, I wanted to know what coding &lt;em&gt;really&lt;/em&gt; was. The idea of writing lines of text and creating something out of nothing fascinated me. But I never got a real opportunity to dive in. My journey truly began with a simple HTML chapter in school — my first exposure to “coding.”&lt;/p&gt;

&lt;p&gt;Yes, I know many people will say HTML isn’t a real programming language, but honestly, I didn’t care then (and still don’t). For me, at that moment, I &lt;em&gt;was&lt;/em&gt; coding. And that was enough to set my imagination on fire. The funniest part? I did all my HTML experiments on my phone because I didn’t have access to a laptop at the time.&lt;/p&gt;

&lt;p&gt;Days passed, and coding became an interior love — a quiet passion I couldn’t really show the world. Years went by, and when I started college, I realized coding wasn’t just about fun or looking “cool” on a black screen filled with colorful text. It’s about battling awkward errors, Googling solutions at 2 AM, and silently celebrating when the code &lt;em&gt;finally&lt;/em&gt; works.&lt;/p&gt;

&lt;p&gt;We can pretend to show off, but deep down, every developer knows that feeling when a single stubborn error line ruins your day — and the joy when it finally disappears.&lt;/p&gt;

&lt;p&gt;So here I am, ready to learn backend development. Ready to move beyond the front-end playground and dive deep into the logic, structure, and heart of how things work behind the scenes.&lt;/p&gt;

&lt;p&gt;This isn’t just about writing code. It’s about building something that can make a real difference in the world. And I’m here for it.&lt;/p&gt;




</description>
      <category>motivation</category>
      <category>backenddevelopment</category>
      <category>webdev</category>
      <category>programming</category>
    </item>
    <item>
      <title>Completed My JavaScript A to Z Series</title>
      <dc:creator>Shifa</dc:creator>
      <pubDate>Thu, 05 Jun 2025 18:05:46 +0000</pubDate>
      <link>https://dev.to/shifa_2/completed-my-javascript-a-to-z-series-4kki</link>
      <guid>https://dev.to/shifa_2/completed-my-javascript-a-to-z-series-4kki</guid>
      <description>&lt;p&gt;&lt;strong&gt;Completed My JavaScript A to Z Series – with almost 50 Articles yayyy!&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;I'm incredibly happy to share that I’ve officially &lt;strong&gt;completed my JavaScript A to Z series&lt;/strong&gt; – a journey of nearly &lt;strong&gt;50 detailed articles&lt;/strong&gt; covering everything from the basics to advanced concepts!&lt;/p&gt;

&lt;p&gt;From &lt;code&gt;var&lt;/code&gt;, &lt;code&gt;let&lt;/code&gt;, and &lt;code&gt;const&lt;/code&gt; to &lt;strong&gt;closures&lt;/strong&gt;, &lt;strong&gt;promises&lt;/strong&gt;, &lt;strong&gt;async/await&lt;/strong&gt;, and even the latest &lt;strong&gt;ES6+ features&lt;/strong&gt; — this series was my way of learning deeply, practicing consistently, and helping others grow along the way. &lt;/p&gt;

&lt;p&gt;Writing almost 50 articles wasn’t always easy, but seeing it all come together has been one of the most fulfilling parts of my learning journey. This is not just a milestone — it's a reminder of what can be achieved with focus and passion.&lt;/p&gt;

&lt;p&gt;A huge thank you to everyone who read, shared, or gave feedback on the series. &lt;br&gt;
And if you're learning JavaScript or want a complete roadmap — this series is for you!&lt;/p&gt;




</description>
    </item>
    <item>
      <title>"The Untold Secret Behind JavaScript's Flexibility: Lexical Scope and Closures Revealed"</title>
      <dc:creator>Shifa</dc:creator>
      <pubDate>Mon, 02 Jun 2025 16:48:42 +0000</pubDate>
      <link>https://dev.to/shifa_2/the-untold-secret-behind-javascripts-flexibility-lexical-scope-and-closures-revealed-41jb</link>
      <guid>https://dev.to/shifa_2/the-untold-secret-behind-javascripts-flexibility-lexical-scope-and-closures-revealed-41jb</guid>
      <description>&lt;p&gt;JavaScript often feels magical to newcomers and even to seasoned developers at times. Some of that “magic” is powered by concepts like &lt;strong&gt;lexical scoping&lt;/strong&gt; and &lt;strong&gt;closures&lt;/strong&gt;—two foundational principles that give JavaScript its flexibility and strength.&lt;/p&gt;

&lt;p&gt;Understanding these concepts not only makes you a better developer, but also unlocks the door to writing more elegant, efficient, and bug-free code.&lt;/p&gt;

&lt;p&gt;In this article, we’ll demystify lexical scoping and closures, demonstrate how they work under the hood, and show you how to harness them like a pro.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;What is Lexical Scoping?&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Lexical scoping&lt;/strong&gt; means that the scope of a variable is determined by its position in the source code—&lt;em&gt;not&lt;/em&gt; where or how it's called.&lt;/p&gt;

&lt;p&gt;When JavaScript compiles your code, it organizes variables into nested scopes based on where they physically appear in the code. This hierarchy allows inner functions to access variables defined in their outer (parent) functions.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Example:&lt;/strong&gt;
&lt;/h3&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;outer&lt;/span&gt;&lt;span class="p"&gt;()&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;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;JavaScript&lt;/span&gt;&lt;span class="dl"&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;inner&lt;/span&gt;&lt;span class="p"&gt;()&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="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Accessible due to lexical scoping&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="nf"&gt;inner&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nf"&gt;outer&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here, &lt;code&gt;inner()&lt;/code&gt; has access to the variable &lt;code&gt;name&lt;/code&gt; defined in its lexical environment, even though &lt;code&gt;name&lt;/code&gt; is not declared within it. Why? Because it’s nested inside &lt;code&gt;outer()&lt;/code&gt;, and lexical scoping ensures access to its parent’s variables.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;Closures: Lexical Scoping in Action&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;A &lt;strong&gt;closure&lt;/strong&gt; is formed when a function "remembers" and continues to access variables from its lexical scope, even after the parent function has finished executing.&lt;/p&gt;

&lt;p&gt;In simpler terms, a closure allows an inner function to retain access to variables defined in an outer function even after the outer function has returned.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Example:&lt;/strong&gt;
&lt;/h3&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;counter&lt;/span&gt;&lt;span class="p"&gt;()&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;count&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="nf"&gt;function &lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nx"&gt;count&lt;/span&gt;&lt;span class="o"&gt;++&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="nx"&gt;count&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;increment&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;counter&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="nf"&gt;increment&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; &lt;span class="c1"&gt;// 1&lt;/span&gt;
&lt;span class="nf"&gt;increment&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; &lt;span class="c1"&gt;// 2&lt;/span&gt;
&lt;span class="nf"&gt;increment&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; &lt;span class="c1"&gt;// 3&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Even though &lt;code&gt;counter()&lt;/code&gt; has returned, the returned function still has access to the &lt;code&gt;count&lt;/code&gt; variable. That’s a closure at work. The function &lt;em&gt;closes over&lt;/em&gt; the &lt;code&gt;count&lt;/code&gt; variable, keeping it alive in memory.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;Why Should You Care About Closures?&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Closures aren’t just a quirky detail of the language. They are essential for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Data Privacy:&lt;/strong&gt; Mimicking private variables&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Callback Functions:&lt;/strong&gt; Used extensively in asynchronous code&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Function Factories:&lt;/strong&gt; Creating reusable, customizable functions&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Maintaining State:&lt;/strong&gt; Especially in React or functional-style JavaScript&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;Common Real-World Use Case: Data Privacy&lt;/strong&gt;
&lt;/h2&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;createUser&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;)&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;loginCount&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="p"&gt;{&lt;/span&gt;
        &lt;span class="nf"&gt;login&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="nx"&gt;loginCount&lt;/span&gt;&lt;span class="o"&gt;++&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="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; logged in &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;loginCount&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; times`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="p"&gt;},&lt;/span&gt;
        &lt;span class="nf"&gt;getLoginCount&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;loginCount&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;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;user&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;createUser&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Alice&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;login&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; &lt;span class="c1"&gt;// Alice logged in 1 times&lt;/span&gt;
&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;login&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; &lt;span class="c1"&gt;// Alice logged in 2 times&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;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getLoginCount&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt; &lt;span class="c1"&gt;// 2&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;loginCount&lt;/code&gt; is &lt;em&gt;not accessible&lt;/em&gt; from the outside, but can be interacted with via the closure returned by &lt;code&gt;createUser()&lt;/code&gt;. This encapsulation is a powerful pattern in JavaScript.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;Lexical Environment and Scope Chain&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Every time a function is created, JavaScript captures its surrounding scope. This is known as the &lt;strong&gt;lexical environment&lt;/strong&gt;. Closures maintain a reference to this environment, and when a variable is not found in the current function scope, JavaScript walks up the &lt;strong&gt;scope chain&lt;/strong&gt; to find it.&lt;/p&gt;

&lt;p&gt;This explains how even deeply nested functions can access variables defined many levels up.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;The Bottom Line&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Lexical scoping and closures are not just academic concepts. They are the backbone of many advanced JavaScript patterns and frameworks. From event listeners to promises, from React hooks to state management—closures are everywhere.&lt;/p&gt;

&lt;p&gt;If you're serious about mastering JavaScript, understanding these concepts isn't optional. It's essential.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Once you grasp lexical scoping and closures, you don’t just write JavaScript—you start &lt;em&gt;thinking&lt;/em&gt; in JavaScript.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;Next Steps&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Revisit your own code and identify where closures are being used.&lt;/li&gt;
&lt;li&gt;Practice writing functions that return other functions.&lt;/li&gt;
&lt;li&gt;Use tools like Chrome DevTools to visualize closures in memory.&lt;/li&gt;
&lt;li&gt;Build a small module that uses closures for encapsulation.&lt;/li&gt;
&lt;/ul&gt;




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

&lt;p&gt;Lexical scoping and closures may seem subtle at first, but they unlock a deeper level of fluency in JavaScript. They make your code more powerful, flexible, and expressive.&lt;/p&gt;

&lt;p&gt;Don’t just memorize the theory—&lt;em&gt;use&lt;/em&gt; it. Explore it. Break it. And above all, experiment with it.&lt;/p&gt;

&lt;p&gt;Because in JavaScript, the magic is not in the syntax. It’s in the &lt;strong&gt;scope&lt;/strong&gt;.&lt;/p&gt;




</description>
      <category>javascript</category>
      <category>react</category>
      <category>reactnative</category>
      <category>advance</category>
    </item>
    <item>
      <title>Getters and Setters in JavaScript</title>
      <dc:creator>Shifa</dc:creator>
      <pubDate>Sun, 01 Jun 2025 17:03:35 +0000</pubDate>
      <link>https://dev.to/shifa_2/getters-and-setters-in-javascript-nba</link>
      <guid>https://dev.to/shifa_2/getters-and-setters-in-javascript-nba</guid>
      <description>&lt;p&gt;In JavaScript, &lt;strong&gt;getters&lt;/strong&gt; and &lt;strong&gt;setters&lt;/strong&gt; are special methods that allow you to control access to the properties of an object. They are primarily used to define object properties dynamically, encapsulate logic, and ensure data integrity. By using getters and setters, developers can control how properties are read and written without directly exposing the underlying data structure.&lt;/p&gt;

&lt;h2&gt;
  
  
  What are Getters and Setters?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Getter&lt;/strong&gt;: A method that gets the value of a specific property.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Setter&lt;/strong&gt;: A method that sets or updates the value of a specific property.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;They are defined using the &lt;code&gt;get&lt;/code&gt; and &lt;code&gt;set&lt;/code&gt; keywords inside an object or class.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Use Getters and Setters?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Encapsulation&lt;/strong&gt;: Hide the internal representation of data.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Validation&lt;/strong&gt;: Apply logic before assigning or retrieving values.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Computed Properties&lt;/strong&gt;: Dynamically calculate values based on other properties.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Consistency&lt;/strong&gt;: Uniform access to data, whether stored or computed.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Syntax
&lt;/h2&gt;

&lt;h3&gt;
  
  
  In Object Literals
&lt;/h3&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;person&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;firstName&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;John&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;lastName&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Doe&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;

  &lt;span class="kd"&gt;get&lt;/span&gt; &lt;span class="nf"&gt;fullName&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="s2"&gt;`&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;firstName&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;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;lastName&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="p"&gt;},&lt;/span&gt;

  &lt;span class="kd"&gt;set&lt;/span&gt; &lt;span class="nf"&gt;fullName&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;name&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;parts&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;split&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt; &lt;/span&gt;&lt;span class="dl"&gt;"&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;firstName&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;parts&lt;/span&gt;&lt;span class="p"&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;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;lastName&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;parts&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="p"&gt;}&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="nx"&gt;person&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;fullName&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// John Doe&lt;/span&gt;
&lt;span class="nx"&gt;person&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;fullName&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Jane Smith&lt;/span&gt;&lt;span class="dl"&gt;"&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="nx"&gt;person&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;firstName&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Jane&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;person&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;lastName&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;  &lt;span class="c1"&gt;// Smith&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  In ES6 Classes
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Rectangle&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nf"&gt;constructor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;width&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;height&lt;/span&gt;&lt;span class="p"&gt;)&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;_width&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;width&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;_height&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;height&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="kd"&gt;get&lt;/span&gt; &lt;span class="nf"&gt;area&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="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;_width&lt;/span&gt; &lt;span class="o"&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;_height&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="kd"&gt;set&lt;/span&gt; &lt;span class="nf"&gt;dimensions&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;width&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;height&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;width&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nx"&gt;height&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&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;_width&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;width&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;_height&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;height&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="k"&gt;throw&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Dimensions must be positive numbers.&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;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;rect&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Rectangle&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;20&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="nx"&gt;rect&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;area&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// 200&lt;/span&gt;
&lt;span class="nx"&gt;rect&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;dimensions&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;15&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;25&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="nx"&gt;rect&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;area&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// 375&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Key Considerations
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Prefixing internal properties with an underscore (e.g., &lt;code&gt;_width&lt;/code&gt;) is a common convention to indicate that they are meant to be private.&lt;/li&gt;
&lt;li&gt;Avoid complex logic inside getters and setters to maintain readability and performance.&lt;/li&gt;
&lt;li&gt;Use getters and setters when there’s a clear benefit, such as validation, transformation, or abstraction.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Use Cases
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Creating derived properties (e.g., &lt;code&gt;fullName&lt;/code&gt; from &lt;code&gt;firstName&lt;/code&gt; and &lt;code&gt;lastName&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Validating input before updating a value.&lt;/li&gt;
&lt;li&gt;Triggering side effects (with caution) when a property changes.&lt;/li&gt;
&lt;li&gt;Protecting private data from being directly manipulated.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;Getters and setters in JavaScript are powerful tools for object-oriented programming and data encapsulation. By defining custom behavior when properties are accessed or modified, you can write more robust, maintainable, and secure code. However, they should be used thoughtfully to avoid unnecessary complexity.&lt;/p&gt;




</description>
    </item>
    <item>
      <title>Understanding `bind()` in JavaScript</title>
      <dc:creator>Shifa</dc:creator>
      <pubDate>Sat, 31 May 2025 17:28:34 +0000</pubDate>
      <link>https://dev.to/shifa_2/understanding-bind-in-javascript-4aoi</link>
      <guid>https://dev.to/shifa_2/understanding-bind-in-javascript-4aoi</guid>
      <description>&lt;p&gt;In JavaScript, functions are first-class objects. This means they can be stored in variables, passed as arguments, and have methods. One such method is &lt;code&gt;bind()&lt;/code&gt;, which plays a crucial role in function context management. Understanding how &lt;code&gt;bind()&lt;/code&gt; works is essential for writing clean, predictable, and maintainable JavaScript code, especially in object-oriented and event-driven programming.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is &lt;code&gt;bind()&lt;/code&gt;?
&lt;/h2&gt;

&lt;p&gt;The &lt;code&gt;bind()&lt;/code&gt; method creates a new function that, when called, has its &lt;code&gt;this&lt;/code&gt; keyword set to the provided value. It also allows optional prepending of arguments, known as &lt;em&gt;partial application&lt;/em&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Syntax
&lt;/h3&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="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;bind&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;thisArg&lt;/span&gt;&lt;span class="p"&gt;[,&lt;/span&gt; &lt;span class="nx"&gt;arg1&lt;/span&gt;&lt;span class="p"&gt;[,&lt;/span&gt; &lt;span class="nx"&gt;arg2&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;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;thisArg&lt;/code&gt;&lt;/strong&gt;: The value to which &lt;code&gt;this&lt;/code&gt; should refer when the bound function is called.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;arg1, arg2, ...&lt;/code&gt;&lt;/strong&gt;: Optional arguments to prefill in the bound function.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why is &lt;code&gt;bind()&lt;/code&gt; Useful?
&lt;/h2&gt;

&lt;p&gt;JavaScript’s &lt;code&gt;this&lt;/code&gt; behaves differently than in many other languages. It is determined by how a function is called, not where it is defined. This can lead to unexpected behavior, particularly in asynchronous code, event handlers, and callbacks.&lt;/p&gt;

&lt;h3&gt;
  
  
  Common Use Cases
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Preserving Context in Event Handlers&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&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;Handler&lt;/span&gt;&lt;span class="p"&gt;()&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;message&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Event triggered&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;span class="nx"&gt;Handler&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;handleClick&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;function &lt;/span&gt;&lt;span class="p"&gt;()&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="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;message&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;handler&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Handler&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getElementById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;btn&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;addEventListener&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;click&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;handler&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;handleClick&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;bind&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;handler&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Without &lt;code&gt;bind()&lt;/code&gt;, &lt;code&gt;this&lt;/code&gt; would refer to the element that triggered the event, not the &lt;code&gt;Handler&lt;/code&gt; instance.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Partial Application&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You can use &lt;code&gt;bind()&lt;/code&gt; to create a function with preset arguments.&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;function&lt;/span&gt; &lt;span class="nf"&gt;multiply&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;b&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;a&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nx"&gt;b&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;double&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;multiply&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;bind&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&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;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="nf"&gt;double&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c1"&gt;// Output: 10&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Working with &lt;code&gt;setTimeout&lt;/code&gt; or &lt;code&gt;setInterval&lt;/code&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&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;Greeter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;)&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;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nx"&gt;Greeter&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;greet&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;function &lt;/span&gt;&lt;span class="p"&gt;()&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="s2"&gt;Hello, &lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&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;name&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;greeter&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Greeter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Alice&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="nf"&gt;setTimeout&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;greeter&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;greet&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;bind&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;greeter&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="mi"&gt;1000&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you don’t bind &lt;code&gt;greet()&lt;/code&gt;, &lt;code&gt;this&lt;/code&gt; will be undefined or refer to the global object.&lt;/p&gt;

&lt;h2&gt;
  
  
  Difference Between &lt;code&gt;call()&lt;/code&gt;, &lt;code&gt;apply()&lt;/code&gt;, and &lt;code&gt;bind()&lt;/code&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;call()&lt;/code&gt;&lt;/strong&gt;: Invokes the function immediately with specified &lt;code&gt;this&lt;/code&gt; and arguments.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;apply()&lt;/code&gt;&lt;/strong&gt;: Same as &lt;code&gt;call()&lt;/code&gt;, but arguments are passed as an array.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;bind()&lt;/code&gt;&lt;/strong&gt;: Returns a new function with bound &lt;code&gt;this&lt;/code&gt; and optional arguments, but does &lt;em&gt;not&lt;/em&gt; invoke it immediately.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;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="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;sayHello&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;greeting&lt;/span&gt;&lt;span class="p"&gt;)&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="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;greeting&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;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&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="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;person&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;John&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="nx"&gt;sayHello&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="nx"&gt;person&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Hi&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;       &lt;span class="c1"&gt;// Output: Hi, John&lt;/span&gt;
&lt;span class="nx"&gt;sayHello&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;apply&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;person&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Hello&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt; &lt;span class="c1"&gt;// Output: Hello, John&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;boundFunc&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;sayHello&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;bind&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;person&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Hey&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nf"&gt;boundFunc&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;                       &lt;span class="c1"&gt;// Output: Hey, John&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Important Characteristics
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;bind()&lt;/code&gt; does &lt;strong&gt;not&lt;/strong&gt; modify the original function.&lt;/li&gt;
&lt;li&gt;The returned function from &lt;code&gt;bind()&lt;/code&gt; can be reused or stored.&lt;/li&gt;
&lt;li&gt;It works seamlessly with object-oriented patterns and ES6+ classes.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;The &lt;code&gt;bind()&lt;/code&gt; method is a powerful feature of JavaScript that helps manage the &lt;code&gt;this&lt;/code&gt; context in a reliable way. It is especially helpful in asynchronous programming, event handling, and functional programming patterns. Mastering &lt;code&gt;bind()&lt;/code&gt; equips developers with deeper control over function execution, leading to more robust and maintainable code.&lt;/p&gt;




</description>
      <category>javascript</category>
      <category>programming</category>
      <category>webdev</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Master OOP in JavaScript and Instantly Level Up Your Code</title>
      <dc:creator>Shifa</dc:creator>
      <pubDate>Fri, 30 May 2025 16:38:43 +0000</pubDate>
      <link>https://dev.to/shifa_2/master-oop-in-javascript-and-instantly-level-up-your-code-2jpc</link>
      <guid>https://dev.to/shifa_2/master-oop-in-javascript-and-instantly-level-up-your-code-2jpc</guid>
      <description>&lt;p&gt;Object-Oriented Programming (OOP) is a programming paradigm built around the concept of "objects" — reusable pieces of code that bundle together data and behavior. While JavaScript is known for its flexibility and support for multiple paradigms, its object-oriented features have grown significantly over time, especially with the introduction of ES6 classes.&lt;/p&gt;

&lt;p&gt;In this article, we’ll explore how OOP works in JavaScript, why it matters, and how you can apply it in real-world development.&lt;/p&gt;

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

&lt;p&gt;At its core, OOP is about modeling software using objects. Each object can represent a real-world entity, containing both:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Properties&lt;/strong&gt; (data/state)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Methods&lt;/strong&gt; (functions/behavior)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The four main principles of OOP are:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Encapsulation&lt;/strong&gt;: Keeping data and related behavior bundled together.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Abstraction&lt;/strong&gt;: Hiding complex implementation details and showing only the necessary parts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Inheritance&lt;/strong&gt;: Creating new classes from existing ones to reuse code.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Polymorphism&lt;/strong&gt;: Using a common interface to interact with different underlying forms (objects).&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  How JavaScript Implements OOP
&lt;/h2&gt;

&lt;p&gt;Unlike classical OOP languages like Java or C++, JavaScript is prototype-based. However, with ES6, JavaScript introduced the &lt;code&gt;class&lt;/code&gt; syntax, which made OOP feel more familiar and accessible.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Creating a Class
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Person&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nf"&gt;constructor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;age&lt;/span&gt;&lt;span class="p"&gt;)&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;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;name&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;age&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;age&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="nf"&gt;greet&lt;/span&gt;&lt;span class="p"&gt;()&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="s2"&gt;`Hi, my name is &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;name&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; and I'm &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;age&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; years old.`&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;person1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Person&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Alice&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;25&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;person1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;greet&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; &lt;span class="c1"&gt;// Output: Hi, my name is Alice and I'm 25 years old.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Inheritance
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Student&lt;/span&gt; &lt;span class="kd"&gt;extends&lt;/span&gt; &lt;span class="nc"&gt;Person&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nf"&gt;constructor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;age&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;grade&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;super&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;age&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;grade&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;grade&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="nf"&gt;study&lt;/span&gt;&lt;span class="p"&gt;()&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="s2"&gt;`&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;name&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; is studying in grade &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;grade&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="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;student1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Student&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Bob&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;12th&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;student1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;greet&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;  &lt;span class="c1"&gt;// Inherited method&lt;/span&gt;
&lt;span class="nx"&gt;student1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;study&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;  &lt;span class="c1"&gt;// New method&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3. Encapsulation and Private Fields
&lt;/h3&gt;

&lt;p&gt;With modern JavaScript, you can use private class fields using the &lt;code&gt;#&lt;/code&gt; symbol:&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;class&lt;/span&gt; &lt;span class="nc"&gt;BankAccount&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="err"&gt;#&lt;/span&gt;&lt;span class="nx"&gt;balance&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="nf"&gt;deposit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;amount&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;amount&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&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="err"&gt;#&lt;/span&gt;&lt;span class="nx"&gt;balance&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="nx"&gt;amount&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="nf"&gt;getBalance&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="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="err"&gt;#&lt;/span&gt;&lt;span class="nx"&gt;balance&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;account&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;BankAccount&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="nx"&gt;account&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;deposit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;100&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="nx"&gt;account&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getBalance&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt; &lt;span class="c1"&gt;// 100&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Attempting to access &lt;code&gt;#balance&lt;/code&gt; directly from outside the class will result in an error, which helps enforce encapsulation.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Polymorphism
&lt;/h3&gt;

&lt;p&gt;Polymorphism is often implemented using method overriding. Here's a basic 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="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Animal&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nf"&gt;speak&lt;/span&gt;&lt;span class="p"&gt;()&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="s2"&gt;Animal speaks&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;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Dog&lt;/span&gt; &lt;span class="kd"&gt;extends&lt;/span&gt; &lt;span class="nc"&gt;Animal&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nf"&gt;speak&lt;/span&gt;&lt;span class="p"&gt;()&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="s2"&gt;Dog barks&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;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;myDog&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Dog&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="nx"&gt;myDog&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;speak&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; &lt;span class="c1"&gt;// Output: Dog barks&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Even though &lt;code&gt;myDog&lt;/code&gt; is an instance of &lt;code&gt;Dog&lt;/code&gt;, we can treat it as an &lt;code&gt;Animal&lt;/code&gt; and call &lt;code&gt;speak&lt;/code&gt;. The overridden method will still run, demonstrating polymorphism.&lt;/p&gt;

&lt;h2&gt;
  
  
  When to Use OOP in JavaScript
&lt;/h2&gt;

&lt;p&gt;OOP is helpful when you're building applications that need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A clear and reusable structure (like user, product, and order objects)&lt;/li&gt;
&lt;li&gt;Complex data relationships&lt;/li&gt;
&lt;li&gt;Encapsulation of logic and data&lt;/li&gt;
&lt;li&gt;Scalable code organization, especially in large front-end or back-end apps&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;However, it’s not always necessary. JavaScript’s functional programming capabilities are strong, and in some scenarios, functions and closures might be a better fit.&lt;/p&gt;

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

&lt;p&gt;Object-Oriented Programming brings a powerful set of tools for organizing and structuring your code in JavaScript. Understanding how to create and extend classes, encapsulate data, and use polymorphism will help you write more maintainable and flexible applications.&lt;/p&gt;

&lt;p&gt;While JavaScript gives you multiple ways to solve problems, mastering OOP is a valuable skill that pays off, especially as your projects grow in complexity.&lt;/p&gt;




</description>
    </item>
    <item>
      <title>V8 Engine, JavaScript APIs, and XMLHttpRequest (XHR)</title>
      <dc:creator>Shifa</dc:creator>
      <pubDate>Thu, 29 May 2025 19:46:10 +0000</pubDate>
      <link>https://dev.to/shifa_2/v8-engine-javascript-apis-and-xmlhttprequest-xhr-5b64</link>
      <guid>https://dev.to/shifa_2/v8-engine-javascript-apis-and-xmlhttprequest-xhr-5b64</guid>
      <description>&lt;p&gt;JavaScript is a foundational language for building dynamic web applications. However, JavaScript does not operate alone. Behind the scenes, it relies on powerful engines and interfaces provided by host environments such as web browsers and server-side runtimes. This article explores three key components in this ecosystem: the V8 engine, JavaScript APIs, and the XMLHttpRequest (XHR) object.&lt;/p&gt;

&lt;h2&gt;
  
  
  The V8 Engine
&lt;/h2&gt;

&lt;p&gt;The V8 engine is an open-source JavaScript engine developed by Google. It is written in C++ and is used in several major platforms, including Google Chrome and Node.js. The primary responsibility of V8 is to compile and execute JavaScript code.&lt;/p&gt;

&lt;h3&gt;
  
  
  Key Features of V8:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Just-In-Time (JIT) Compilation&lt;/strong&gt;: V8 compiles JavaScript code directly into optimized machine code at runtime, improving performance.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Garbage Collection&lt;/strong&gt;: V8 includes an efficient memory management system to automatically handle memory allocation and deallocation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Execution of Core JavaScript&lt;/strong&gt;: It provides execution support for the ECMAScript standard (core JavaScript features).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It is important to note that V8 itself does not include any Web APIs such as &lt;code&gt;XMLHttpRequest&lt;/code&gt;, &lt;code&gt;fetch&lt;/code&gt;, or &lt;code&gt;setTimeout&lt;/code&gt;. These APIs are provided by the environment in which JavaScript runs.&lt;/p&gt;

&lt;h2&gt;
  
  
  JavaScript APIs and the Host Environment
&lt;/h2&gt;

&lt;p&gt;JavaScript APIs refer to the set of interfaces provided by the host environment, which can be a web browser or a runtime like Node.js. These APIs extend the capabilities of JavaScript beyond its core syntax and functions.&lt;/p&gt;

&lt;p&gt;In a web browser, the following are examples of commonly used APIs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;DOM (Document Object Model)&lt;/strong&gt;: Methods to manipulate HTML and CSS (&lt;code&gt;document.querySelector&lt;/code&gt;, &lt;code&gt;getElementById&lt;/code&gt;, etc.).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Timer APIs&lt;/strong&gt;: Methods for managing timed operations (&lt;code&gt;setTimeout&lt;/code&gt;, &lt;code&gt;setInterval&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Networking APIs&lt;/strong&gt;: Interfaces for making HTTP requests (&lt;code&gt;fetch&lt;/code&gt;, &lt;code&gt;XMLHttpRequest&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Storage APIs&lt;/strong&gt;: Access to local storage and session storage (&lt;code&gt;localStorage&lt;/code&gt;, &lt;code&gt;sessionStorage&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These APIs are built into the browser and are accessible to JavaScript code running in that context.&lt;/p&gt;

&lt;h2&gt;
  
  
  XMLHttpRequest (XHR)
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;XMLHttpRequest&lt;/code&gt; is a browser-provided Web API that allows JavaScript to make HTTP requests to a server without requiring a full page reload. It was one of the original technologies that enabled asynchronous web applications, commonly referred to as AJAX (Asynchronous JavaScript and XML).&lt;/p&gt;

&lt;h3&gt;
  
  
  How XMLHttpRequest Works:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;A new &lt;code&gt;XMLHttpRequest&lt;/code&gt; object is created using &lt;code&gt;new XMLHttpRequest()&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;The request is configured using the &lt;code&gt;open()&lt;/code&gt; method (e.g., HTTP method, URL).&lt;/li&gt;
&lt;li&gt;The request is sent using the &lt;code&gt;send()&lt;/code&gt; method.&lt;/li&gt;
&lt;li&gt;The response is handled via event listeners or callback functions.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Example:
&lt;/h3&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;xhr&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;XMLHttpRequest&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="nx"&gt;xhr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;GET&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://api.example.com/data&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="nx"&gt;xhr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;onreadystatechange&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;function &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;xhr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;readyState&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nx"&gt;xhr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;status&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;)&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="s2"&gt;Response:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;xhr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;responseText&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="nx"&gt;xhr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;send&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Modern Alternative: &lt;code&gt;fetch()&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;While &lt;code&gt;XMLHttpRequest&lt;/code&gt; is still widely supported and used, modern JavaScript development often prefers the &lt;code&gt;fetch()&lt;/code&gt; API, which provides a more flexible and promise-based approach to making HTTP requests.&lt;/p&gt;

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

&lt;p&gt;Understanding the distinction between the V8 engine, JavaScript APIs, and specific interfaces like &lt;code&gt;XMLHttpRequest&lt;/code&gt; is crucial for modern JavaScript development. The V8 engine executes core JavaScript, while Web APIs such as &lt;code&gt;XMLHttpRequest&lt;/code&gt; are provided by the browser environment. Together, they enable developers to build rich, interactive web applications.&lt;/p&gt;

&lt;p&gt;By separating concerns between the language engine and the runtime environment, JavaScript remains versatile and powerful, whether running in a browser or on a server.&lt;/p&gt;




</description>
      <category>javascript</category>
      <category>javascriptlibraries</category>
      <category>reactnative</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Understanding Events in JavaScript</title>
      <dc:creator>Shifa</dc:creator>
      <pubDate>Wed, 28 May 2025 17:48:27 +0000</pubDate>
      <link>https://dev.to/shifa_2/understanding-events-in-javascript-44m9</link>
      <guid>https://dev.to/shifa_2/understanding-events-in-javascript-44m9</guid>
      <description>&lt;p&gt;JavaScript is a powerful programming language that enables interactive web experiences. One of its core features is the ability to respond to &lt;strong&gt;events&lt;/strong&gt;—actions that occur in the browser, such as user interactions or system-generated occurrences. Events are central to making web pages dynamic and responsive.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Are Events?
&lt;/h2&gt;

&lt;p&gt;An event is a signal that something has happened. Common examples include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A user clicking a button&lt;/li&gt;
&lt;li&gt;A webpage finishing loading&lt;/li&gt;
&lt;li&gt;A key being pressed&lt;/li&gt;
&lt;li&gt;A form being submitted&lt;/li&gt;
&lt;li&gt;The mouse hovering over an element&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These events can be captured and handled using &lt;strong&gt;event listeners&lt;/strong&gt;, allowing developers to define custom behaviors in response.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Event Model
&lt;/h2&gt;

&lt;p&gt;JavaScript uses an &lt;strong&gt;event-driven model&lt;/strong&gt;, where event handlers (functions) are assigned to respond when specific events occur. The key concepts include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Event Source&lt;/strong&gt;: The HTML element where the event occurs&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Event Type&lt;/strong&gt;: The kind of event (e.g., &lt;code&gt;click&lt;/code&gt;, &lt;code&gt;keydown&lt;/code&gt;, &lt;code&gt;submit&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Event Handler&lt;/strong&gt;: The function that executes in response to the event&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Adding Event Listeners
&lt;/h2&gt;

&lt;p&gt;There are several ways to attach event handlers in JavaScript.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Inline HTML Event Handlers
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;button&lt;/span&gt; &lt;span class="na"&gt;onclick=&lt;/span&gt;&lt;span class="s"&gt;"greet()"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Click Me&lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;script&amp;gt;&lt;/span&gt;
  &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;greet&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nf"&gt;alert&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Hello, world!&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;span class="nt"&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Using DOM Element Properties
&lt;/h3&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;button&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getElementById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;myButton&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;button&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;onclick&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;function &lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nf"&gt;alert&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Button clicked&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;
  
  
  3. Using &lt;code&gt;addEventListener&lt;/code&gt; (Recommended)
&lt;/h3&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;button&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getElementById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;myButton&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;button&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;addEventListener&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;click&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nf"&gt;function &lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nf"&gt;alert&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Clicked using addEventListener&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;p&gt;This approach is preferred because it allows multiple listeners for the same event and offers better control.&lt;/p&gt;

&lt;h2&gt;
  
  
  Common Event Types
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Mouse Events&lt;/strong&gt;: &lt;code&gt;click&lt;/code&gt;, &lt;code&gt;dblclick&lt;/code&gt;, &lt;code&gt;mouseenter&lt;/code&gt;, &lt;code&gt;mouseleave&lt;/code&gt;, &lt;code&gt;mousedown&lt;/code&gt;, &lt;code&gt;mouseup&lt;/code&gt;, &lt;code&gt;mousemove&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Keyboard Events&lt;/strong&gt;: &lt;code&gt;keydown&lt;/code&gt;, &lt;code&gt;keypress&lt;/code&gt;, &lt;code&gt;keyup&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Form Events&lt;/strong&gt;: &lt;code&gt;submit&lt;/code&gt;, &lt;code&gt;change&lt;/code&gt;, &lt;code&gt;focus&lt;/code&gt;, &lt;code&gt;blur&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Window Events&lt;/strong&gt;: &lt;code&gt;load&lt;/code&gt;, &lt;code&gt;resize&lt;/code&gt;, &lt;code&gt;scroll&lt;/code&gt;, &lt;code&gt;unload&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Event Object
&lt;/h2&gt;

&lt;p&gt;When an event occurs, an event object is automatically passed to the event handler. This object contains useful information such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;event.type&lt;/code&gt;: Type of event&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;event.target&lt;/code&gt;: The element that triggered the event&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;event.preventDefault()&lt;/code&gt;: Prevents the default action&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;event.stopPropagation()&lt;/code&gt;: Stops the event from bubbling up&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;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="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getElementById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;myForm&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;addEventListener&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;submit&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nf"&gt;function &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;preventDefault&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; &lt;span class="c1"&gt;// Prevents page reload&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="s2"&gt;Form submitted&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;h2&gt;
  
  
  Event Propagation
&lt;/h2&gt;

&lt;p&gt;There are two main phases in event propagation:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Capturing Phase&lt;/strong&gt;: The event moves from the root to the target element&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bubbling Phase&lt;/strong&gt;: The event bubbles up from the target to the root&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;By default, most events bubble. You can handle events in either phase using &lt;code&gt;addEventListener&lt;/code&gt; with the optional third argument:&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="nx"&gt;element&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;addEventListener&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;click&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;handler&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Capturing&lt;/span&gt;
&lt;span class="nx"&gt;element&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;addEventListener&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;click&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;handler&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Bubbling (default)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Removing Event Listeners
&lt;/h2&gt;

&lt;p&gt;To remove an event listener:&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;function&lt;/span&gt; &lt;span class="nf"&gt;handleClick&lt;/span&gt;&lt;span class="p"&gt;()&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="s2"&gt;Clicked&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;span class="nx"&gt;button&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;addEventListener&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;click&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;handleClick&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;button&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;removeEventListener&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;click&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;handleClick&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Note that the reference to the function must be the same when removing it.&lt;/p&gt;

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

&lt;p&gt;Events are fundamental to creating interactive web applications. Understanding how to work with them effectively—using event listeners, managing propagation, and leveraging the event object—is essential for every JavaScript developer. Mastering these concepts enables you to build responsive, user-friendly interfaces that react to real-time user actions.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>From Zero to Streaking: My 1-Month Journey on DEV</title>
      <dc:creator>Shifa</dc:creator>
      <pubDate>Tue, 27 May 2025 09:31:12 +0000</pubDate>
      <link>https://dev.to/shifa_2/from-zero-to-streaking-my-1-month-journey-on-dev-4h17</link>
      <guid>https://dev.to/shifa_2/from-zero-to-streaking-my-1-month-journey-on-dev-4h17</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"I started with no idea, no support… but I kept going. Today, I stand with a streak, five badges, and a heart full of purpose."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Hey Dev Community 👋&lt;/p&gt;

&lt;p&gt;Exactly &lt;strong&gt;one month ago&lt;/strong&gt;, I took a leap into the unknown. I had no roadmap, no prior audience, and no clue if anyone would even read my words. But I made a promise to myself: I’d show up &lt;em&gt;every day&lt;/em&gt;, no matter what.&lt;/p&gt;

&lt;h3&gt;
  
  
  🎉 1300+ Followers and Growing!
&lt;/h3&gt;

&lt;p&gt;This journey has not only helped me build consistency and confidence—it’s helped me connect with over 1300 amazing developers who now follow my journey.&lt;br&gt;
To each one of you: thank you. Your support means the world to me.&lt;/p&gt;

&lt;h3&gt;
  
  
  🚀 The Start Wasn’t Easy
&lt;/h3&gt;

&lt;p&gt;Let’s be honest—I had no idea how DEV.to worked.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I didn’t know what to write.&lt;/li&gt;
&lt;li&gt;I didn’t think anyone would care.&lt;/li&gt;
&lt;li&gt;I had zero support and almost gave up before even clicking "Publish".&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But then… I hit publish.&lt;br&gt;
That &lt;strong&gt;first article&lt;/strong&gt; was messy, simple, raw—but it was &lt;strong&gt;mine&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  💬 Then Came the Comments
&lt;/h3&gt;

&lt;p&gt;Instead of silence, I got something unexpected: engagement.&lt;br&gt;
People actually &lt;strong&gt;read&lt;/strong&gt; what I wrote. They &lt;strong&gt;commented&lt;/strong&gt;. They &lt;strong&gt;encouraged&lt;/strong&gt; me.&lt;/p&gt;

&lt;p&gt;So I started doing the same.&lt;/p&gt;

&lt;p&gt;I began commenting on others’ posts—not just to be noticed, but to learn, grow, and connect. That interaction sparked a habit, and soon, I earned &lt;strong&gt;three comment streak badges&lt;/strong&gt;. 🎯&lt;/p&gt;

&lt;h3&gt;
  
  
  🏅 The Badges That Told My Story
&lt;/h3&gt;

&lt;p&gt;In just one month, I’ve earned:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🏆 &lt;strong&gt;First Article Badge&lt;/strong&gt; – for taking the first step&lt;/li&gt;
&lt;li&gt;💬 &lt;strong&gt;3 Streak Comment Badges&lt;/strong&gt; – for showing up in conversations&lt;/li&gt;
&lt;li&gt;📅 &lt;strong&gt;Weekly Writing Challenge Badge&lt;/strong&gt; – for participating in the amazing community challenge&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And now, I’m excitedly waiting for my &lt;strong&gt;4-Week Writing Streak Badge&lt;/strong&gt;—because yes, I’ve written &lt;strong&gt;every single day&lt;/strong&gt; for the past month, without missing even one.&lt;/p&gt;

&lt;h3&gt;
  
  
  💡 What I’ve Learned
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Consistency beats perfection&lt;/strong&gt; – I didn’t write the “best” article every day, but I kept writing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The community matters&lt;/strong&gt; – DEV is more than a platform, it’s a support system.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Progress is personal&lt;/strong&gt; – You don’t need a million followers to feel proud. Sometimes, just hitting "Publish" is the biggest win.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🙌 To You, Reading This
&lt;/h3&gt;

&lt;p&gt;If you’re where I was—unsure, nervous, wondering if anyone will care—this is your sign: &lt;strong&gt;Start now&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;You don’t need to be perfect. You just need to begin.&lt;/p&gt;

&lt;p&gt;Thank you to everyone who's read, commented, and supported me in this journey.&lt;br&gt;
I’m just getting started—and I hope to see &lt;em&gt;you&lt;/em&gt; on this path too.&lt;/p&gt;

&lt;p&gt;Let’s keep writing, together. 🖊️🔥&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
