<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[InsideTech]]></title><description><![CDATA[Learning and Sharing]]></description><link>https://blog.meetabhinav.com</link><generator>RSS for Node</generator><lastBuildDate>Sun, 12 Apr 2026 13:49:21 GMT</lastBuildDate><atom:link href="https://blog.meetabhinav.com/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[The Magic of this, call(), apply(), and bind() in JavaScript]]></title><description><![CDATA[If you ask five different developers what this means, you might get five different answers. But the secret to understanding this is simple: It refers to the object that is currently executing the func]]></description><link>https://blog.meetabhinav.com/js-this</link><guid isPermaLink="true">https://blog.meetabhinav.com/js-this</guid><category><![CDATA[ChaiCode]]></category><category><![CDATA[this keyword]]></category><dc:creator><![CDATA[Abhinav]]></dc:creator><pubDate>Sun, 15 Mar 2026 16:54:38 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/6815b28437922044be2f12c2/390cd473-b6b3-4a27-a606-20bec88cb3a1.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>If you ask five different developers what <code>this</code> means, you might get five different answers. But the secret to understanding <code>this</code> is simple: <strong>It refers to the object that is currently executing the function.</strong> Think of it like the word "me" in English. When I say "me," I mean Abhinav. When you say "me," you mean you. The meaning changes depending on <strong>who</strong> is speaking.</p>
<h2>The Golden Rule: Who is the Caller?</h2>
<p>In JavaScript, <code>this</code> is determined by <strong>how</strong> a function is called, not where it is defined.</p>
<ul>
<li><p><strong>Inside a normal function:</strong> In a standalone function, <code>this</code> usually refers to the global object (the window in a browser).</p>
</li>
<li><p><strong>Inside an object method:</strong> When a function is part of an object, <code>this</code> refers to the object itself.</p>
</li>
</ul>
<pre><code class="language-plaintext">// Example 1: Normal Function
function showThis() {
  console.log(this); 
}
showThis(); // Output: Window object

// Example 2: Object Method
const user = {
  name: "InsideTech",
  greet: function() {
    console.log("Hi, I am " + this.name);
  }
};

user.greet(); // Output: Hi, I am InsideTech (The 'user' called greet)
</code></pre>
<hr />
<h2>The Manual Overrides: Call, Apply, and Bind</h2>
<p>Sometimes, you want to tell a function exactly what <code>this</code> should be, regardless of who called it. We use three power-tools for this: <code>call()</code>, <code>apply()</code>, and <code>bind()</code>.</p>
<h4><code>call()</code> <strong>— Borrowing Methods</strong></h4>
<p><code>call()</code> invokes a function immediately and lets you pass arguments one by one. It’s perfect for "borrowing" a method from one object to use on another.</p>
<pre><code class="language-plaintext">const runner = { name: "Flash" };
user.greet.call(runner); // Output: Hi, I am Flash
</code></pre>
<h4><code>apply()</code> <strong>— The Array Specialist</strong></h4>
<p><code>apply()</code> is exactly like <code>call()</code>, but instead of passing arguments one by one, you pass them as an <strong>array</strong>.</p>
<h4><code>bind()</code> <strong>— The Long-Term Commitment</strong></h4>
<p>Unlike the others, <code>bind()</code> <strong>does not</strong> run the function immediately. Instead, it creates a new copy of the function with <code>this</code>permanently "locked" to a specific object. You can save this function and use it later.</p>
<pre><code class="language-plaintext">const greetFlash = user.greet.bind(runner);
greetFlash(); // Output: Hi, I am Flash (even 10 minutes later!)
</code></pre>
<hr />
<h2>Conclusion</h2>
<p>The <code>this</code> keyword is JavaScript's way of keeping code flexible. Instead of hardcoding names, we use <code>this</code> so our functions can work across different objects. Once you master <code>call</code>, <code>apply</code>, and <code>bind</code>, you have full control over the "context" of your code—giving you the power to borrow logic and reuse functions like a pro.</p>
]]></content:encoded></item><item><title><![CDATA[Understanding Object-Oriented Programming in JavaScript]]></title><description><![CDATA[In the previous lesson, we created objects manually. But what if you’re building a racing game with 100 different cars? Writing out a new object for every single car would be exhausting.
Object-Orient]]></description><link>https://blog.meetabhinav.com/js-oop</link><guid isPermaLink="true">https://blog.meetabhinav.com/js-oop</guid><category><![CDATA[ChaiCode]]></category><category><![CDATA[oop]]></category><dc:creator><![CDATA[Abhinav]]></dc:creator><pubDate>Sun, 15 Mar 2026 16:42:11 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/6815b28437922044be2f12c2/ade4d61e-04f4-450a-9fad-0462929127bf.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In the previous lesson, we created objects manually. But what if you’re building a racing game with 100 different cars? Writing out a new object for every single car would be exhausting.</p>
<p><strong>Object-Oriented Programming (OOP)</strong> is a style of programming that allows us to create a "blueprint" once and use it to build as many objects as we need.</p>
<p>Topics that we are going to cover in this blog are as follows</p>
<ul>
<li><p>What Object-Oriented Programming (OOP) means</p>
</li>
<li><p>Real-world analogy (blueprint → objects)</p>
</li>
<li><p>What is a class in JavaScript</p>
</li>
<li><p>Creating objects using classes</p>
</li>
<li><p>Constructor method</p>
</li>
<li><p>Methods inside a class</p>
</li>
<li><p>Basic idea of encapsulation</p>
</li>
</ul>
<hr />
<h2>The Real-World Analogy: Blueprint vs. Object</h2>
<p>Think of an architect’s blueprint for a house. The blueprint itself isn't a house—you can’t live in it. However, you can use that one blueprint to build 50 identical houses.</p>
<ul>
<li><p><strong>The Class:</strong> This is the <strong>blueprint</strong>. It defines what properties (color, speed) and actions (drive, brake) a car should have.</p>
</li>
<li><p><strong>The Object (Instance):</strong> This is the <strong>actual car</strong> built from the blueprint.</p>
</li>
</ul>
<hr />
<h2>What is a Class in JavaScript?</h2>
<p>A <strong>Class</strong> is a reserved keyword in JavaScript used to create this blueprint. It groups data (properties) and behavior (methods) together.</p>
<hr />
<h2>The <code>constructor</code> Method</h2>
<p>Inside every class, there is a special function called the <code>constructor</code>. It’s the "setup" phase of your object. It runs automatically the moment you create a new object from the class.</p>
<pre><code class="language-plaintext">class Car {
  constructor(brand, color) {
    this.brand = brand; // "this" refers to the specific car being built
    this.color = color;
  }
}
</code></pre>
<hr />
<h2>Creating Objects (Instantiations)</h2>
<p>To build an object from our class, we use the <code>new</code> keyword.</p>
<pre><code class="language-plaintext">const myCar = new Car("Tesla", "Red");
const friendsCar = new Car("BMW", "Blue");

console.log(myCar.brand); // Output: Tesla
console.log(friendsCar.brand); // Output: BMW
</code></pre>
<hr />
<h2>Adding Methods</h2>
<p>A blueprint doesn't just describe how a car <em>looks</em>; it describes what it <em>does</em>. We add functions inside a class (without the <code>function</code> keyword) called <strong>methods</strong>.</p>
<pre><code class="language-plaintext">class Car {
  constructor(brand, color) {
    this.brand = brand;
    this.color = color;
  }

  // This is a method
  drive() {
    console.log(this.brand + " is now driving!");
  }
}

const myCar = new Car("Tesla", "Red");
myCar.drive(); // Output: Tesla is now driving!
</code></pre>
<hr />
<h2>A Basic Idea of Encapsulation</h2>
<p><strong>Encapsulation</strong> sounds fancy, but the idea is simple: it’s about <strong>bundling</strong> data and the methods that use that data into one single unit (the class).</p>
<p>By keeping everything inside the class "capsule," we make our code more organized and prevent other parts of our program from accidentally messing with our car's data.</p>
<hr />
<h2>Why Use OOP?</h2>
<ul>
<li><p><strong>Reusability:</strong> Build the logic once, create infinite objects.</p>
</li>
<li><p><strong>Organization:</strong> It keeps related data and behavior in one place.</p>
</li>
<li><p><strong>Scalability:</strong> It's much easier to manage 100 "Students" or "Products" when they all follow the same blueprint.</p>
</li>
</ul>
<hr />
<h2>Conclusion</h2>
<ul>
<li><p><strong>The Blueprint:</strong> A <code>class</code> is just the plan; it doesn't "exist" until you use the <code>new</code> keyword to create an instance.</p>
</li>
<li><p><strong>The Constructor:</strong> This is your setup shop. It’s where you take raw data (arguments) and assign them to the object using <code>this</code>.</p>
</li>
<li><p><strong>Encapsulation:</strong> By keeping data (properties) and actions (methods) inside one class, your code becomes cleaner, safer, and much easier to scale.</p>
</li>
</ul>
]]></content:encoded></item><item><title><![CDATA[Understanding Objects in JavaScript]]></title><description><![CDATA[In our previous post, we learned that Arrays are great for lists. But what if you want to describe a specific person? Using an array like ["InsideTech", 21, " Engineering"] is confusing. Does "21" mea]]></description><link>https://blog.meetabhinav.com/js-object</link><guid isPermaLink="true">https://blog.meetabhinav.com/js-object</guid><category><![CDATA[ChaiCode]]></category><category><![CDATA[Objects]]></category><dc:creator><![CDATA[Abhinav]]></dc:creator><pubDate>Sun, 15 Mar 2026 16:09:29 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/6815b28437922044be2f12c2/afdd5066-def6-4805-bfa2-aeb9c3b2ee4b.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In our previous post, we learned that <strong>Arrays</strong> are great for lists. But what if you want to describe a specific person? Using an array like <code>["InsideTech", 21, " Engineering"]</code> is confusing. Does "21" mean age, or is it a roll number?</p>
<p><strong>Objects</strong> solve this by using a <strong>Key-Value Pair</strong> structure. Instead of just storing data, we give every piece of data a label (a key).</p>
<p>Topics we are going to cover in this blog are as follows</p>
<ul>
<li><p>Creating objects</p>
</li>
<li><p>Accessing properties (dot notation and bracket notation)</p>
</li>
<li><p>Updating object properties</p>
</li>
<li><p>Adding and deleting properties</p>
</li>
<li><p>Looping through object keys</p>
</li>
</ul>
<hr />
<h2><strong>What is an Object?</strong></h2>
<p>An object is a collection of related data and/or functionality. It is the closest thing in code to a real-world entity.</p>
<hr />
<h2>Creating an Object</h2>
<p>We use curly braces <code>{}</code> to define an object literal.</p>
<pre><code class="language-plaintext">const user = {
  name: "InsideTech",
  age: 21,
  city: "Ahmedabad",
  isStudent: true
};
</code></pre>
<hr />
<h2>Accessing Properties</h2>
<p>There are two ways to get data out of an object:</p>
<ul>
<li><p><strong>Dot Notation (</strong><code>.</code><strong>):</strong> This is the most common and readable method.</p>
<ul>
<li><code>console.log(user.name); // "InsideTech"</code></li>
</ul>
</li>
<li><p><strong>Bracket Notation (</strong><code>[]</code><strong>):</strong> Essential if your key name is stored in a variable or has spaces.</p>
<ul>
<li><code>console.log(user["city"]); // "Ahmedabad"</code></li>
</ul>
</li>
</ul>
<hr />
<h2>Updating, Adding, and Deleting</h2>
<p>Objects are dynamic. You can modify them even after they are created.</p>
<pre><code class="language-plaintext">// 1. Updating
user.age = 20;

// 2. Adding a new property
user.hobby = "3D Modeling";

// 3. Deleting a property
delete user.isStudent;
</code></pre>
<hr />
<h2>Understand through the below Table diagram</h2>
<img src="https://cdn.hashnode.com/uploads/covers/6815b28437922044be2f12c2/376f41bc-0977-4a22-892b-352fa9ee0c73.png" alt="" style="display:block;margin:0 auto" />

<hr />
<h2>Looping Through Objects</h2>
<p>Unlike arrays, you can't use a standard <code>for</code> loop with an index. Instead, we use the <code>for...in</code> loop to iterate through the keys.</p>
<pre><code class="language-plaintext">for (let key in user) {
  console.log(key + ": " + user[key]);
}
// Output: name: InsideTech, age: 20, city: Ahmedabad, hobby: 3D Modeling
</code></pre>
<hr />
<h2>Conclusion</h2>
<p>Objects are the "containers" of the JavaScript world. By mastering them, you can now structure complex data efficiently. This is a massive step you've moved from writing simple scripts to managing data structures that modern apps are built on.</p>
]]></content:encoded></item><item><title><![CDATA[Arrow Functions in JavaScript: A Simpler Way to Write Function]]></title><description><![CDATA[Introduced in ES6 (2015), Arrow Functions are a more concise way to write function expressions. They’ve become the industry standard for modern web development because they strip away the "boilerplate]]></description><link>https://blog.meetabhinav.com/arrow-function</link><guid isPermaLink="true">https://blog.meetabhinav.com/arrow-function</guid><category><![CDATA[ChaiCode]]></category><category><![CDATA[#arrowfunction]]></category><dc:creator><![CDATA[Abhinav]]></dc:creator><pubDate>Sun, 15 Mar 2026 15:46:43 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/6815b28437922044be2f12c2/ad87b064-459a-4f4c-9947-37e7585ef8ac.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Introduced in ES6 (2015), <strong>Arrow Functions</strong> are a more concise way to write function expressions. They’ve become the industry standard for modern web development because they strip away the "boilerplate" and let you focus on the logic.</p>
<p>Topics which we are going to cover in this blog are as follows</p>
<ul>
<li><p>What arrow functions are</p>
</li>
<li><p>Basic arrow function syntax</p>
</li>
<li><p>Arrow functions with one parameter</p>
</li>
<li><p>Arrow functions with multiple parameters</p>
</li>
<li><p>Implicit return vs explicit return</p>
</li>
<li><p>Basic difference between arrow function and normal function</p>
</li>
</ul>
<hr />
<h2>From Normal to Arrow: The Transformation</h2>
<p>Let’s see how a standard function expression evolves into an arrow function.</p>
<p>The Traditional Way:</p>
<pre><code class="language-plaintext">const square = function(n) {
  return n * n;
};
</code></pre>
<p>The Arrow Way:</p>
<pre><code class="language-plaintext">const square = (n) =&gt; {
  return n * n;
};
</code></pre>
<hr />
<h2>Breaking Down the Syntax</h2>
<p>The name comes from the <code>=&gt;</code> symbol (the "fat arrow"). Here is how it works depending on your parameters:</p>
<ul>
<li><p><strong>Zero Parameters:</strong> You must use empty parentheses.</p>
<ul>
<li><code>const sayHi = () =&gt; console.log("Hi!");</code></li>
</ul>
</li>
<li><p><strong>One Parameter:</strong> You can actually skip the parentheses!</p>
<ul>
<li><code>const double = n =&gt; n * 2;</code></li>
</ul>
</li>
<li><p><strong>Multiple Parameters:</strong> Parentheses are required.</p>
<ul>
<li><code>const add = (a, b) =&gt; a + b;</code></li>
</ul>
</li>
</ul>
<hr />
<h2>Implicit vs. Explicit Return</h2>
<p>This is the "magic" of arrow functions.</p>
<ul>
<li><p><strong>Explicit Return:</strong> If you use curly braces <code>{ }</code>, you <strong>must</strong> use the <code>return</code> keyword.</p>
</li>
<li><p><strong>Implicit Return:</strong> If your function is only one line, you can remove the braces and the <code>return</code> keyword. JavaScript simply "knows" to return that value.</p>
</li>
</ul>
<pre><code class="language-plaintext">// Explicit (needs return)
const add = (a, b) =&gt; { 
  return a + b; 
};

// Implicit (clean and short!)
const addSimple = (a, b) =&gt; a + b;
</code></pre>
<hr />
<h2>Arrow vs. Normal Functions: What’s the Catch?</h2>
<p>While arrow functions are great, they aren't a 100% replacement for normal functions.</p>
<ul>
<li><p><strong>No</strong> <code>this</code> <strong>binding:</strong> Arrow functions don't have their own <code>this</code>. They inherit it from the code around them. (This is great for some things, but bad for others like object methods).</p>
</li>
<li><p><strong>No</strong> <code>arguments</code> <strong>object:</strong> You can't use the <code>arguments</code> keyword inside an arrow function.</p>
</li>
<li><p><strong>Not for Constructors:</strong> You cannot use <code>new</code> with an arrow function to create an object.</p>
</li>
</ul>
<hr />
<h2>Conclusion</h2>
<p>Arrow functions are about <strong>readability</strong>. By removing the <code>function</code> and <code>return</code> keywords, your code starts to look more like a mathematical formula and less like a wall of text. They are especially powerful when used inside other methods like <code>map</code>and <code>filter</code>.</p>
]]></content:encoded></item><item><title><![CDATA[Function Declaration vs Function Expression: What’s the Difference?]]></title><description><![CDATA[In programming, a function is a reusable block of code. Think of it like a "mini-machine": you build it once, and then you can press a button to run it whenever you need to perform a specific task, li]]></description><link>https://blog.meetabhinav.com/functions</link><guid isPermaLink="true">https://blog.meetabhinav.com/functions</guid><category><![CDATA[ChaiCode]]></category><category><![CDATA[functions]]></category><dc:creator><![CDATA[Abhinav]]></dc:creator><pubDate>Sun, 15 Mar 2026 15:11:12 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/6815b28437922044be2f12c2/25ab3f70-5ee8-42fe-bb47-d8493bc98965.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In programming, a function is a <strong>reusable block of code</strong>. Think of it like a "mini-machine": you build it once, and then you can press a button to run it whenever you need to perform a specific task, like calculating a sum or formatting a user's name.</p>
<p>Topics that we are going to discuss in this blog are as follows.</p>
<ul>
<li><p>Why Do We Need Functions?</p>
</li>
<li><p>Function Declaration</p>
</li>
<li><p>Function Expression</p>
</li>
<li><p>Key differences between declaration and expression</p>
</li>
<li><p>Basic idea of hoisting (very high level)</p>
</li>
<li><p>When to use each type</p>
</li>
</ul>
<hr />
<h2>Why Do We Need Functions?</h2>
<p>Imagine you need to multiply two numbers in ten different places in your code. Instead of writing <code>a * b</code> ten times, you write a function once. If you ever need to change how that calculation works (e.g., adding tax), you only change it in one-place.</p>
<hr />
<h2>Function Declaration (The Standard Way)</h2>
<p>A <strong>Function Declaration</strong> is the most common way to define a function. You use the <code>function</code> keyword, give it a name, and define its logic.</p>
<pre><code class="language-plaintext">// Function Declaration
function multiply(a, b) {
  return a * b;
}

console.log(multiply(5, 4)); // Output: 20
</code></pre>
<hr />
<h2>Function Expression (The Variable Way)</h2>
<p>A <strong>Function Expression</strong> is when you create a function and assign it to a variable. In this case, the function is often "anonymous" (it doesn't have its own name) because the variable name is used to call it.</p>
<pre><code class="language-plaintext">// Function Expression
const multiplyExpr = function(a, b) {
  return a * b;
};

console.log(multiplyExpr(5, 4)); // Output: 20
</code></pre>
<hr />
<h2>The "Hoisting" Difference (High Level)</h2>
<p>This is where things get interesting. In JavaScript, <strong>Hoisting</strong> is a behavior where the engine moves declarations to the top of the code before running it.</p>
<ul>
<li><p><strong>Declarations are hoisted:</strong> You can call a function <em>before</em> you even define it in your code.</p>
</li>
<li><p><strong>Expressions are NOT hoisted:</strong> If you try to call a function expression before it’s defined, your code will crash.</p>
</li>
</ul>
<pre><code class="language-plaintext">// This works! (Hoisted)
sayHello(); 
function sayHello() {
  console.log("Hello from the declaration!");
}

// This crashes! (Not hoisted)
sayHi(); 
const sayHi = function() {
  console.log("Hi from the expression!");
};
</code></pre>
<hr />
<h2>When to Use Which?</h2>
<ul>
<li><p><strong>Use Declarations</strong> when you want a function to be available everywhere in your script or for general utility functions.</p>
</li>
<li><p><strong>Use Expressions</strong> when you want to keep your code organized, limit where a function can be accessed, or when you’re passing functions into other methods (like <code>map</code> or <code>filter</code>).</p>
</li>
</ul>
<hr />
<h2>Conclusion</h2>
<p>Whether you prefer the traditional declaration or the modern expression, the goal is the same: <strong>reusability</strong>. By moving your logic into functions, you make your code more organized and much easier to debug. Checkout the cover image to brush up this blog.</p>
]]></content:encoded></item><item><title><![CDATA[Array Methods You Must Know]]></title><description><![CDATA[Think of an array as a toolbox. In our last post, we learned how to look inside the box. Now, we’re learning how to add, remove, and transform the tools inside without breaking a sweat.
Following are ]]></description><link>https://blog.meetabhinav.com/array-methods</link><guid isPermaLink="true">https://blog.meetabhinav.com/array-methods</guid><category><![CDATA[ChaiCode]]></category><category><![CDATA[array methods]]></category><dc:creator><![CDATA[Abhinav]]></dc:creator><pubDate>Sun, 15 Mar 2026 14:09:38 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/6815b28437922044be2f12c2/05ae4e4a-1eee-4597-b738-600c880f5ec0.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Think of an array as a toolbox. In our last post, we learned how to look inside the box. Now, we’re learning how to add, remove, and transform the tools inside without breaking a sweat.</p>
<p>Following are the topics that we are going to cover in this blog...</p>
<ul>
<li><p>push() and pop()</p>
</li>
<li><p>shift() and unshift()</p>
</li>
<li><p>map()</p>
</li>
<li><p>filter()</p>
</li>
<li><p>reduce() (basic explanation only)</p>
</li>
<li><p>forEach()</p>
</li>
</ul>
<hr />
<h2>Adding &amp; Removing (The Fast Track)</h2>
<p>These methods allow you to quickly change the contents of your array.</p>
<ul>
<li><p><code>push()</code> <strong>/</strong> <code>pop()</code><strong>:</strong> Work at the <strong>end</strong> of the array.</p>
</li>
<li><p><code>unshift()</code> <strong>/</strong> <code>shift()</code><strong>:</strong> Work at the <strong>beginning</strong> of the array.</p>
</li>
</ul>
<pre><code class="language-plaintext">let stack = ["Book1", "Book2"];

stack.push("Book3"); // ["Book1", "Book2", "Book3"] - Add to end
stack.pop();         // ["Book1", "Book2"] - Remove from end

stack.unshift("Newspaper"); // ["Newspaper", "Book1", "Book2"] - Add to start
stack.shift();              // ["Book1", "Book2"] - Remove from start
</code></pre>
<hr />
<h2>Transformation Methods: <code>map()</code>, <code>filter()</code>, &amp; <code>forEach(), reduce()</code></h2>
<p>These are the heavy hitters. They allow you to process every item in an array in one go.</p>
<h4><code>forEach()</code> <strong>— The Elegant Loop</strong></h4>
<p>Instead of writing a complex <code>for</code> loop, <code>forEach</code> simply performs an action for every item. it will <strong>return the output on same array that was earlier.</strong></p>
<pre><code class="language-plaintext">let users = ["Alice", "Bob", "Charlie"];
users.forEach(name =&gt; console.log("User: " + name));
</code></pre>
<h4><code>map()</code> <strong>— The Transformer</strong></h4>
<p><code>map()</code> creates a <strong>new array</strong> by performing an operation on every element. It doesn’t change the original; it gives you a modified copy.</p>
<pre><code class="language-plaintext">let prices = [10, 20, 30];
let discountedPrices = prices.map(p =&gt; p * 0.9); 

console.log(discountedPrices); // [9, 18, 27]
</code></pre>
<h4><code>filter()</code> <strong>— The Security Guard</strong></h4>
<p><code>filter()</code> creates a <strong>new array</strong> containing only the items that pass a specific "test."</p>
<pre><code class="language-plaintext">let ages = [12, 25, 17, 30];
let adults = ages.filter(age =&gt; age &gt;= 18);

console.log(adults); // [25, 30]
</code></pre>
<h3><code>reduce()</code> <strong>— The Accumulator</strong></h3>
<p><code>reduce()</code> is used when you want to take an entire array and "squash" it into a <strong>single value</strong> (like a total sum).</p>
<p>Think of it like a snowball rolling down a hill it keeps gathering more until it reaches the bottom.</p>
<pre><code class="language-plaintext">let bills = [50, 100, 25];
let total = bills.reduce((accumulator, current) =&gt; accumulator + current, 0);

console.log(total); // 175
</code></pre>
<hr />
<h2>Conclusion</h2>
<p>Using methods like <code>map()</code> and <code>filter()</code> is a milestone in your journey. It marks the transition from writing code that simply "works" to writing code that is <strong>functional, clean, and professional</strong>.</p>
]]></content:encoded></item><item><title><![CDATA[JavaScript Arrays 101]]></title><description><![CDATA[Imagine you are building a grocery list app. Without arrays, you’d have to create a new variable for every single item:

let item1 = "Milk";

let item2 = "Eggs";

let item3 = "Bread";


That works for]]></description><link>https://blog.meetabhinav.com/arrays</link><guid isPermaLink="true">https://blog.meetabhinav.com/arrays</guid><category><![CDATA[ChaiCode]]></category><category><![CDATA[array]]></category><dc:creator><![CDATA[Abhinav]]></dc:creator><pubDate>Sun, 15 Mar 2026 13:53:59 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/6815b28437922044be2f12c2/d97b847d-d38d-4d32-8dbc-878706d8abb0.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Imagine you are building a grocery list app. Without arrays, you’d have to create a new variable for every single item:</p>
<ul>
<li><p><code>let item1 = "Milk";</code></p>
</li>
<li><p><code>let item2 = "Eggs";</code></p>
</li>
<li><p><code>let item3 = "Bread";</code></p>
</li>
</ul>
<p>That works for three items, but what if you have 50? This is where <strong>Arrays</strong> come to the rescue. An array is a single variable that can hold a collection of values, stored in a specific order.</p>
<p>Topics we are going to cover in this particular blogs are...</p>
<ul>
<li><p>How to create an array</p>
</li>
<li><p>Accessing elements using index</p>
</li>
<li><p>Updating elements</p>
</li>
<li><p>Array length property</p>
</li>
<li><p>Basic looping over arrays</p>
</li>
</ul>
<hr />
<h2>How to Create an Array?</h2>
<p>Creating an array is as simple as using square brackets <code>[]</code> and separating your items with commas.</p>
<pre><code class="language-plaintext">// An array of strings
let fruits = ["Apple", "Banana", "Mango", "Orange"];

// An array of numbers
let testMarks = [85, 92, 78, 95];
</code></pre>
<hr />
<h2>Accessing Elements (The "Index" Rule)</h2>
<p>To get an item out of an array, you use its <strong>index</strong> (its position number).</p>
<p><strong>Crucial Note:</strong> JavaScript uses <strong>Zero-based Indexing</strong>. This means the computer starts counting from <strong>0</strong>, not 1.</p>
<ul>
<li><p>The 1st item is at index <code>0</code>.</p>
</li>
<li><p>The 2nd item is at index <code>1</code>.</p>
</li>
</ul>
<pre><code class="language-plaintext">let fruits = ["Apple", "Banana", "Mango"];

console.log(fruits[0]); // Output: Apple
console.log(fruits[1]); // Output: Banana
</code></pre>
<hr />
<h2>Updating Elements</h2>
<p>Arrays are not set in stone. You can change any value inside them just by referencing its index.</p>
<pre><code class="language-plaintext">let tasks = ["Clean Room", "Exercise", "Study"];

// Change "Exercise" to "Go for a Run"
tasks[1] = "Go for a Run";

console.log(tasks); // ["Clean Room", "Go for a Run", "Study"]
</code></pre>
<hr />
<h2>The <code>.length</code> Property</h2>
<p>How do you know how many items are in your list? You use the <code>.length</code> property. This is incredibly useful when you don't know the size of your data beforehand.</p>
<pre><code class="language-plaintext">let students = ["Alice", "Bob", "Charlie", "David"];
console.log(students.length); // Output: 4
</code></pre>
<hr />
<h2>Looping Over Arrays</h2>
<p>The real power of arrays comes when you combine them with the loops we learned in the last blog. You can use a <code>for</code> loop to go through every item in an array automatically.</p>
<pre><code class="language-plaintext">let colors = ["Red", "Green", "Blue", "Yellow"];

for (let i = 0; i &lt; colors.length; i++) {
  console.log("Color " + i + " is " + colors[i]);
}
</code></pre>
<hr />
<h2>Conclusion</h2>
<p><strong>Arrays</strong> are the first real step toward building data-driven applications. Instead of managing a messy room full of individual variables, you’ve now learned how to organize everything into a clean, indexed shelf.</p>
]]></content:encoded></item><item><title><![CDATA[Control Flow in JavaScript: If, Else, and Switch Explained]]></title><description><![CDATA[In the real world, we make decisions constantly:

If it is raining, then take an umbrella.

Else, leave it at home.


In programming, this is called Control Flow. By default, code runs in a straight l]]></description><link>https://blog.meetabhinav.com/control-flow</link><guid isPermaLink="true">https://blog.meetabhinav.com/control-flow</guid><category><![CDATA[ChaiCode]]></category><category><![CDATA[control flow]]></category><dc:creator><![CDATA[Abhinav]]></dc:creator><pubDate>Sun, 15 Mar 2026 13:34:31 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/6815b28437922044be2f12c2/f58c2be4-2b0d-4ee8-a2d5-1ab83f84e477.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In the real world, we make decisions constantly:</p>
<ul>
<li><p><strong>If</strong> it is raining, <strong>then</strong> take an umbrella.</p>
</li>
<li><p><strong>Else</strong>, leave it at home.</p>
</li>
</ul>
<p>In programming, this is called <strong>Control Flow</strong>. By default, code runs in a straight line from top to bottom. Control flow allows us to create "forks in the road," where the computer chooses which path to take based on the conditions we set.</p>
<hr />
<h2>The <code>if</code> Statement (The Basic Choice)</h2>
<p>The <code>if</code> statement is the simplest form of control. If a condition is true, the code inside the curly braces runs. If it's false, the computer simply skips it.</p>
<pre><code class="language-plaintext">let marks = 45;

if (marks &gt;= 33) {
  console.log("You passed!");
}
</code></pre>
<hr />
<h3><strong>The</strong> <code>if-else</code> <strong>Statement (The Fork in the Road)</strong></h3>
<p>What if you want something else to happen when the condition is false? That’s where <code>else</code> comes in.</p>
<img src="https://cdn.hashnode.com/uploads/covers/6815b28437922044be2f12c2/100c91cb-1f90-4086-ba26-c795758f989c.png" alt="" style="display:block;margin:0 auto" />

<pre><code class="language-plaintext">let age = 16;

if (age &gt;= 18) {
  console.log("You can vote.");
} else {
  console.log("Too young to vote.");
}
</code></pre>
<hr />
<h3><strong>The</strong> <code>else if</code> <strong>Ladder (Multiple Options)</strong></h3>
<p>Life isn't always "Yes" or "No." Sometimes there are several possibilities. The <code>else if</code> ladder lets you check multiple conditions in order. The computer stops at the <strong>first</strong> true condition it finds.</p>
<pre><code class="language-plaintext">let time = 14; // 2:00 PM

if (time &lt; 12) {
  console.log("Good Morning");
} else if (time &lt; 17) {
  console.log("Good Afternoon");
} else {
  console.log("Good Evening");
}
</code></pre>
<hr />
<h2>The <code>switch</code> Statement (The Organized List)</h2>
<p>When you have one variable and you want to check it against many specific values (like days of the week or menu items), an <code>else if</code> ladder can get messy. The <code>switch</code> statement is a cleaner way to handle this.</p>
<p>Why do we need <code>break</code>?</p>
<p>Think of <code>break</code> as your exit strategy. Without it, the code will "fall through" and execute every single case below the one that matched, even if they aren't true!</p>
<pre><code class="language-plaintext">let fruit = "Apple";

switch (fruit) {
  case "Banana":
    console.log("Yellow and curved.");
    break;
  case "Apple":
    console.log("Red and crunchy.");
    break;
  default:
    console.log("Unknown fruit.");
}
</code></pre>
<hr />
<h2>When to use <code>switch</code> vs <code>if-else</code>?</h2>
<img src="https://cdn.hashnode.com/uploads/covers/6815b28437922044be2f12c2/5436db19-155d-4264-a106-e2bbca524d93.png" alt="" style="display:block;margin:0 auto" />

<hr />
<h2>Conclusion</h2>
<p>Control flow is the brain of your application. By mastering <code>if-else</code> and <code>switch</code>, you’ve moved from just writing "scripts" to building "logic." Whether you're validating a login form or determining the path of a player in a game, these structures are the foundation of every decision your program will ever make.</p>
]]></content:encoded></item><item><title><![CDATA[JavaScript Operators: The Basics You Need to Know]]></title><description><![CDATA[Now as we understand the meaning of variable and constant in previous blog. Now we are going to understand the meaning of operators and why we need them. Follow are the topics that we are going to cov]]></description><link>https://blog.meetabhinav.com/operator</link><guid isPermaLink="true">https://blog.meetabhinav.com/operator</guid><category><![CDATA[ChaiCode]]></category><category><![CDATA[Operators]]></category><dc:creator><![CDATA[Abhinav]]></dc:creator><pubDate>Sun, 15 Mar 2026 08:28:48 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/6815b28437922044be2f12c2/8f0f70ea-b910-41e9-90e0-6167391497dd.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Now as we understand the meaning of variable and constant in previous blog. Now we are going to understand the meaning of operators and why we need them. Follow are the topics that we are going to cover inside this blog.</p>
<ul>
<li><p>What operators are?</p>
</li>
<li><p>Arithmetic operators (+, -, *, /, %)</p>
</li>
<li><p>Comparison operators (==, ===, !=, &gt;, &lt;)</p>
</li>
<li><p>Logical operators (&amp;&amp;, ||, !)</p>
</li>
<li><p>Assignment operators (=, +=, -=)</p>
</li>
</ul>
<hr />
<h2>What operators are...</h2>
<p>Operators are the symbols which exhibit a specific meaning <strong>in programming that represent specific mathematical, logical, or assignment actions performed on data, known as operands.</strong></p>
<hr />
<h2>Arithmetic Operators (The Math Stuff)</h2>
<p>These are used to perform basic mathematical calculations.</p>
<pre><code class="language-plaintext">let a = 10;
let b = 3;

console.log(a + b); // Addition: 13
console.log(a - b); // Subtraction: 7
console.log(a * b); // Multiplication: 30
console.log(a / b); // Division: 3.333...
console.log(a % b); // Modulo (Remainder): 1 (because 3 goes into 10 thrice, with 1 left over)
</code></pre>
<hr />
<h2>Comparison Operators (The Decision Makers)</h2>
<p>Comparison operators check the relationship between two values and return <code>true</code> or <code>false</code></p>
<p>The Big Difference: <code>==</code> vs <code>===</code></p>
<ul>
<li><p><code>==</code> <strong>(Loose Equality):</strong> Checks only the <strong>value</strong>, ignoring the type. (e.g., <code>5 == "5"</code> is <code>true</code>).</p>
</li>
<li><p><code>===</code> <strong>(Strict Equality):</strong> Checks both the <strong>value AND the type</strong>. This is the one you should use most often to avoid bugs.</p>
</li>
</ul>
<pre><code class="language-plaintext">let x = 5;
let y = "5";

console.log(x == y);  // true (Value is the same)
console.log(x === y); // false (Number vs String)
console.log(x != y);  // false (Loose "not equal")
console.log(10 &gt; 5);  // true (Greater than)
console.log(3 &lt; 1);   // false (Less than)
</code></pre>
<hr />
<h2>Logical Operators (The "And/Or" Logic)</h2>
<p>These allow you to combine multiple conditions together.</p>
<ul>
<li><p><code>&amp;&amp;</code> <strong>(AND):</strong> Returns <code>true</code> only if <strong>both</strong> sides are true.</p>
</li>
<li><p><code>||</code> <strong>(OR):</strong> Returns <code>true</code> if <strong>at least one</strong> side is true.</p>
</li>
<li><p><code>!</code> <strong>(NOT):</strong> Reverses the value (<code>true</code> becomes <code>false</code>).</p>
</li>
</ul>
<pre><code class="language-plaintext">let isAdult = true;
let hasTicket = false;

console.log(isAdult &amp;&amp; hasTicket); // false (needs both)
console.log(isAdult || hasTicket); // true (needs at least one)
console.log(!isAdult);             // false (reverses true)
</code></pre>
<hr />
<h2>Assignment Operators (The Shorthands)</h2>
<p>Assignment operators are used to assign values to variables. You can also combine them with math to write shorter code.</p>
<pre><code class="language-plaintext">let score = 10; // Simple assignment

score += 5; // Same as: score = score + 5 (Result: 15)
score -= 2; // Same as: score = score - 2 (Result: 13)

console.log(score); // 13
</code></pre>
<hr />
<h2>Conclusion</h2>
<p>Mastering these basics might feel small, but they are the constant "moving parts" in every complex app, from a simple calculator to a massive supply chain dashboard.</p>
]]></content:encoded></item><item><title><![CDATA[Understanding Variables and Data Types in JavaScript]]></title><description><![CDATA[We are now driving into the world of JavaScript and following are the topics mentioned below which are being covered in this particular blog.

What variables are and why they are needed?

How to decla]]></description><link>https://blog.meetabhinav.com/tdz</link><guid isPermaLink="true">https://blog.meetabhinav.com/tdz</guid><category><![CDATA[ChaiCode]]></category><category><![CDATA[JavaScript]]></category><dc:creator><![CDATA[Abhinav]]></dc:creator><pubDate>Tue, 10 Mar 2026 20:58:47 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/6815b28437922044be2f12c2/ab76aa0c-49ff-4ad8-8b7b-63d3d9d54d11.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>We are now driving into the world of JavaScript and following are the topics mentioned below which are being covered in this particular blog.</p>
<ul>
<li><p>What variables are and why they are needed?</p>
</li>
<li><p>How to declare variables using <code>var</code>, <code>let</code>, and <code>const</code> ?</p>
</li>
<li><p>Primitive data types (string, number, boolean, null, undefined)</p>
</li>
<li><p>Basic difference between <code>var</code>, <code>let</code>, and <code>const</code></p>
</li>
<li><p>What is scope (very beginner-friendly explanation)?</p>
</li>
</ul>
<hr />
<h2>What variables are and why they are needed?</h2>
<p>Variables are like a box or you can say an area to store values which can be replaced or override with new values depending on use case or future dependancy. For example: Take the example of your home ( Reference Indian Mom managing the box to store various daily use products ) , Someone bring a product in your home ie <strong>Bourn-vita,</strong> when you or your younger siblings consume all the Bourn-vita after some days then your mom use that box of Bourn-vita to store spices , sugar, salts etc🥲.</p>
<p>So, what is a Variable here? Yes, you guessed right <strong>Bourn-vita Box</strong> is the variable here, but what do we mean by overwrite or replaced value? Yes , you again guessed the right <strong>the product or material which is inside the Bourn-vita Box over the time passed</strong>.</p>
<p>Now, <strong>you can think of why variables are needed?</strong> It's because sometimes you need to modify or change something depending on the requirements at that moment.So, we need to have something which can modify themselves depending on situations to execute or fulfil the needs.</p>
<hr />
<h2>Let's see how we declare the variable?</h2>
<ul>
<li><p><code>var</code> <strong>---&gt;</strong> This is used for defining a Variable.</p>
</li>
<li><pre><code class="language-plaintext">var Bourn_vita = "protein";    // A variable name Bourn_vita having protein as value.
</code></pre>
</li>
<li><p><code>let</code> <strong>---&gt;</strong> This is also used for defining a Variable.</p>
</li>
<li><pre><code class="language-plaintext">let name = "InsideTech"; 
let age = 21;
</code></pre>
</li>
<li><p><code>const</code> <strong>---&gt;</strong> This is used for defining a Constant (the value which can't be modified in any case scenario after assigning once)</p>
</li>
<li><pre><code class="language-plaintext">const hrsInDay = 24;
</code></pre>
</li>
</ul>
<hr />
<h2>What are primitive data-types? and what is data-types?</h2>
<p>Data-types are basically the different ways of representing a data such as boolean (true and false) , number(Integers), string (group of characters) etc.</p>
<p>Now what do <strong>we mean by primitive data-types?</strong> It is basically pre-defined data-types provided by a programming language to represent a simple single values like integers, boolean, strings etc.</p>
<p>Important thing to focus on some data-types like <strong>NaN</strong> and <strong>undefined</strong>. Let's understand these two in more detail.</p>
<ul>
<li><p><code>NaN</code> : It is something which is not a Number. This will be your output in various different cases like converting a string into number which is not a valid or meaningful.</p>
</li>
<li><pre><code class="language-plaintext">let myName = "InsideTech";
console.log(Number(myName)); // Output: NaN
</code></pre>
</li>
<li><p><code>undefined</code> : It is completely understandable if you know the meaning of <code>undefined</code> which means "not defined".</p>
</li>
<li><p><code>null</code> : This is little bit confusing to them who have't ever heard of this earlier. Because it means <strong>empty in Javascript</strong>. <strong>Keep in mind that empty doesn't mean '0'.</strong> Because 0 is itself a value. Empty isn't mean value is just mean empty!!!!!! nothing there !!!!</p>
</li>
</ul>
<hr />
<h2>Basic difference between 'var' , 'let' and 'const'</h2>
<ul>
<li><p>var (Hoisting)</p>
</li>
<li><pre><code class="language-plaintext">## CASE 1

var age = 21;
console.log(age);  // Output : 21

age = 42;
console.log(age);  // Output : 42


## CASE 2 (Hoisting)

console.log(nickname); // Output: undefined
var nickname = "Flash";
console.log(nickname); // Output: "Flash"
</code></pre>
</li>
<li><p>let (Hoisting + Explanation )</p>
</li>
<li><pre><code class="language-plaintext">## CASE 1

let name = "Javascript";
console.log(name);  // Output: Javascript

name = "Blog";
console.log(name);  // Output: Blog


## CASE 2 (Hoisting + Explanation)

// --- Start of Temporal Dead Zone (TDZ) for 'price' ---
console.log(price); // ❌ ReferenceError: Cannot access 'price' before initialization

let price = 100;    // --- End of TDZ ---
console.log(price); // ✅ Output: 100
</code></pre>
</li>
<li><p>const</p>
</li>
<li><pre><code class="language-plaintext">## CASE 1

const monthInYear = 12;
console.log(monthInYear);  // Output : 12


## CASE 2

// --- Start of TDZ for 'API_KEY' ---
console.log(API_KEY); // ❌ ReferenceError: Cannot access 'API_KEY' before initialization

const API_KEY = "SECRET_123"; // --- End of TDZ ---
console.log(API_KEY);         // ✅ Output: "SECRET_123"
</code></pre>
</li>
</ul>
<hr />
<h2>Understand the TDZ with the help of Diagram</h2>
<p>TDZ stands for Temporal Dead Zone, which is basically an area of no interest or no access of any variables before initialisation of it. It is most commonly occurs in <code>let</code> and <code>const</code> .</p>
<img src="https://cdn.hashnode.com/uploads/covers/6815b28437922044be2f12c2/146dcc2f-3d9a-4b7d-bd00-241c05c8b419.png" alt="" style="display:block;margin:0 auto" />

<hr />
<h2>What is scope (very beginner-friendly explanation)?</h2>
<p>Scope is more understandable if you think about your house building and your society's other buildings. Let's suppose you talked about something in your house, Will the people of other building be able to hear it? answer is NO! this is the simplest meaning of SCOPE.</p>
<p><strong>Scope is a defined area within which a variable can be declared and used without disturbing any outer or global variables.</strong> Often enclosed in " { } " called as <strong>braces</strong>.</p>
<pre><code class="language-plaintext">let request = 24;                  // Global variable
function myFunction(){
    let response = "Hello From InsideTech";    // Local variable

    console.log(response);     // Output : Hello From InsideTech
    console.log(request);      // Output : 24
}

console.log(response)     // Error: Initialise the "response" variable
</code></pre>
<p>In the above code you can see that there are two types of variables mentioned <code>Global</code> and <code>Local</code></p>
<ul>
<li><p>Local : It can't be used or accessed from the outside of defined scope area. As you can see <code>console.log(response)</code> is throwing the error.</p>
</li>
<li><p>Global : It can be used or accessed inside the local scope and also outside because it's globally declared. As you can see we are able to access the <code>request</code> variable inside the scope of <code>response</code> variable and <code>console.log(request)</code> is outputting the value as 24.</p>
</li>
</ul>
<hr />
<h2>Conclusion</h2>
<p>We now know about the variable and constant and how the hosting affects in different variables. Also got to know about the data-types (NaN , undefined and NULL) then we understand the meaning of scope (Global and Local).</p>
]]></content:encoded></item><item><title><![CDATA[Emmet for HTML: A Beginner’s Guide to Writing Faster Markup]]></title><description><![CDATA[Topics to cover in this blog.

What Emmet is (in very simple terms)?

Why Emmet is useful for HTML beginners?

How Emmet works inside code editors?

Basic Emmet syntax and abbreviations

Creating HTML elements using Emmet

Adding classes, IDs, and at...]]></description><link>https://blog.meetabhinav.com/emmet</link><guid isPermaLink="true">https://blog.meetabhinav.com/emmet</guid><category><![CDATA[ChaiCode]]></category><category><![CDATA[Emmet]]></category><dc:creator><![CDATA[Abhinav]]></dc:creator><pubDate>Sun, 01 Feb 2026 16:09:33 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1769962129196/a23a35c4-359a-497e-bde8-51afddeff444.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Topics to cover in this blog.</p>
<ul>
<li><p>What Emmet is (in very simple terms)?</p>
</li>
<li><p>Why Emmet is useful for HTML beginners?</p>
</li>
<li><p>How Emmet works inside code editors?</p>
</li>
<li><p>Basic Emmet syntax and abbreviations</p>
</li>
<li><p>Creating HTML elements using Emmet</p>
</li>
<li><p>Adding classes, IDs, and attributes</p>
</li>
<li><p>Creating nested elements</p>
</li>
<li><p>Repeating elements using multiplication</p>
</li>
<li><p>Generating full HTML boilerplate with Emmet</p>
</li>
</ul>
<hr />
<h2 id="heading-what-emmet-is">What Emmet is?</h2>
<p>Emmet is a shortcut language for HTML. Instead of writing full HTML code, you write a short abbreviation, press Tab, and your editor expands it into proper HTML.</p>
<hr />
<h2 id="heading-where-can-you-use-emmet-and-how-emment-works-inside-code-editors">Where can you use Emmet and how emment works inside code editors?</h2>
<p>Emmet works inside most modern code editors:</p>
<ul>
<li><p>VS Code</p>
</li>
<li><p>Sublime Text</p>
</li>
<li><p>Atom</p>
</li>
</ul>
<p>You don’t need a specific editor to learn Emmet. The concepts stay the same everywhere.How it works:</p>
<ol>
<li><p>You type an Emmet abbreviation</p>
</li>
<li><p>Press <strong>Tab</strong></p>
</li>
<li><p>The editor converts it into proper HTML code</p>
</li>
</ol>
<p>That’s it. No magic setup needed.</p>
<hr />
<h2 id="heading-basic-emmet-syntax-and-abbreviations">Basic Emmet syntax and abbreviations</h2>
<p>Emmet uses symbols that represent HTML structure</p>
<pre><code class="lang-plaintext"> Symbol  Meaning         

 `&gt;`     Child element   
 `+`     Sibling element 
 `*`     Repeat element  
 `.`     Class           
 `#`     ID              
 `[]`    Attributes
</code></pre>
<hr />
<h2 id="heading-creating-html-elements-using-emmet">Creating HTML elements using Emmet</h2>
<p>To create an HTML element, just type the tag name.</p>
<pre><code class="lang-plaintext">p
</code></pre>
<p>Enter <code>Tab</code>, if become</p>
<pre><code class="lang-plaintext">&lt;p&gt; &lt;/p&gt;
</code></pre>
<hr />
<h2 id="heading-adding-classes-ids-and-attributes">Adding classes, IDs, and attributes</h2>
<p>Adding a class</p>
<pre><code class="lang-plaintext">div.container
</code></pre>
<p>Output:</p>
<pre><code class="lang-plaintext">&lt;div class="container"&gt;&lt;/div&gt;
</code></pre>
<p>Adding an ID</p>
<pre><code class="lang-plaintext">section#about
</code></pre>
<p>Output:</p>
<pre><code class="lang-plaintext">&lt;section id="about"&gt;&lt;/section&gt;
</code></pre>
<hr />
<h2 id="heading-creating-nested-elements">Creating nested elements</h2>
<p>To create elements <strong>inside</strong> another element, use <code>&gt;</code></p>
<pre><code class="lang-plaintext">div&gt;p
</code></pre>
<p>Output:</p>
<pre><code class="lang-plaintext">&lt;div&gt;
  &lt;p&gt;&lt;/p&gt;
&lt;/div&gt;
</code></pre>
<hr />
<h2 id="heading-repeating-elements-using-multiplication">Repeating elements using multiplication</h2>
<p>If you want multiple same elements, use <code>*</code></p>
<pre><code class="lang-plaintext">li*3
</code></pre>
<p>Output:</p>
<pre><code class="lang-plaintext">&lt;li&gt;&lt;/li&gt;
&lt;li&gt;&lt;/li&gt;
&lt;li&gt;&lt;/li&gt;
</code></pre>
<p>With nesting:</p>
<pre><code class="lang-plaintext">ul&gt;li*3
</code></pre>
<p>Output:</p>
<pre><code class="lang-plaintext">&lt;ul&gt;
  &lt;li&gt;&lt;/li&gt;
  &lt;li&gt;&lt;/li&gt;
  &lt;li&gt;&lt;/li&gt;
&lt;/ul&gt;
</code></pre>
<hr />
<h2 id="heading-generating-full-html-boilerplate-with-emmet">Generating full HTML boilerplate with Emmet</h2>
<p>Just type:</p>
<pre><code class="lang-plaintext">!
</code></pre>
<p>Press <code>Tab</code></p>
<pre><code class="lang-xml"><span class="hljs-meta">&lt;!DOCTYPE <span class="hljs-meta-keyword">html</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">html</span> <span class="hljs-attr">lang</span>=<span class="hljs-string">"en"</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">head</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">meta</span> <span class="hljs-attr">charset</span>=<span class="hljs-string">"UTF-8"</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">meta</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"viewport"</span> <span class="hljs-attr">content</span>=<span class="hljs-string">"width=device-width, initial-scale=1.0"</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">title</span>&gt;</span>Document<span class="hljs-tag">&lt;/<span class="hljs-name">title</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">head</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">body</span>&gt;</span>

<span class="hljs-tag">&lt;/<span class="hljs-name">body</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">html</span>&gt;</span>
</code></pre>
<hr />
<h2 id="heading-conclusion">Conclusion</h2>
<p>If you are learning HTML, <strong>Emmet is not optional it’s a superpower</strong>. Start small, practice basic abbreviations, and slowly you’ll write HTML faster than you ever imagined.</p>
]]></content:encoded></item><item><title><![CDATA[CSS Selectors 101: Targeting Elements with Precision]]></title><description><![CDATA[Topics that we are going to cover in this blog.

Why CSS selectors are needed?

Element selector

Class selector

ID selector

Group selectors

Descendant selectors

Basic selector priority (very high level)



Why CSS selectors are needed?
While you...]]></description><link>https://blog.meetabhinav.com/css</link><guid isPermaLink="true">https://blog.meetabhinav.com/css</guid><category><![CDATA[ChaiCode]]></category><category><![CDATA[CSS]]></category><dc:creator><![CDATA[Abhinav]]></dc:creator><pubDate>Sun, 01 Feb 2026 13:40:09 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1769953136560/ea466052-b215-4012-98a4-4e7af22a6b8b.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Topics that we are going to cover in this blog.</p>
<ul>
<li><p>Why CSS selectors are needed?</p>
</li>
<li><p>Element selector</p>
</li>
<li><p>Class selector</p>
</li>
<li><p>ID selector</p>
</li>
<li><p>Group selectors</p>
</li>
<li><p>Descendant selectors</p>
</li>
<li><p>Basic selector priority (very high level)</p>
</li>
</ul>
<hr />
<h2 id="heading-why-css-selectors-are-needed">Why CSS selectors are needed?</h2>
<p>While you write your HTML code it comes with default user agent stylesheet( default browser styling) which is different in every browser so to make them looks same in every browser we need to cascade them. So, we need selectors to target the HTML elements and change there property.</p>
<p>There is a difference between Overwrite and Cascading, if you change one property and it results in change in all properties than its called Overwrite whereas <strong>if we change one property and it results in change in only the selected properties than its called Cascading Stylesheet</strong>. So, this is how CSS named , you will definitely never forgot that.</p>
<hr />
<h2 id="heading-element-selector">Element Selector</h2>
<p>Its like selecting the HTML tags by there names. For example</p>
<pre><code class="lang-plaintext">h1 {
    background-color: #414141;                    // hexcode of a colour
}
</code></pre>
<hr />
<h2 id="heading-class-selector">Class Selector</h2>
<p>This is helpfull when your HTML tags belongs to various different class or groups. Target such class is done by <code>.className</code> ,<strong>they are having priority higher than Element selector.</strong></p>
<pre><code class="lang-plaintext">.group-one{
    color: #213121;
    font-size: 20px;
}
</code></pre>
<hr />
<h2 id="heading-id-selector">ID Selector</h2>
<p>Its like calling your friend on his/her number. And id should be unique for everyone. <strong>They are having more priority than the class selector</strong> and you can access the id by using <code>#idName</code>.</p>
<pre><code class="lang-plaintext">#id-name {
    color: #313131;
    font-family: TImes-new-Roman;
}
</code></pre>
<hr />
<h2 id="heading-group-selector">Group Selector</h2>
<p>Its like targeting group of HTML element at once by there comman id,class or just name selector.</p>
<pre><code class="lang-plaintext">.group-one , h1{

    display: flex;
    margin: 20px auto;

}
</code></pre>
<hr />
<h2 id="heading-descendant-selectors">Descendant selectors</h2>
<p>Its like accessing the child or grandchild form the parent elements or tags. It is done similar to group selector but here we don’t use the comma ( , ). We use space ( ) and we go from outside to inside to access everything in order. for example we have a <code>&lt;section&gt;</code> and inside it there is a <code>&lt;div&gt;</code> and inside div a <code>&lt;h1&gt;</code> tag is present. How you access the h1 now?</p>
<pre><code class="lang-plaintext">section div h1{

    color : #66ff1e;
    background-color: #414141;

}
</code></pre>
<hr />
<h2 id="heading-basic-selector-priority">Basic Selector Priority</h2>
<p>Every selector has its priority. As we know, CSS executes its code from top to bottom. So, it is possible if you write the same name selector twice with the same property but different values, the last value is taken as the current value. Whereas if we talk about Class selectors and Element selectors, the Class selector always has a higher priority to override the Element selector properties. If we talk about the ID selector, then it has the highest priority among all. But once you use inline CSS, which is basically just going into your HTML file and mentioning any CSS property directly to your target tag, then no other CSS selector (ID, Class, normal, or any) can change or override it. Because it’s like picking the caller of the opponent in the fight.</p>
<p>We also have a <code>!important</code> which is used to directly mention that its having the highest priority whether its element selector , ID selector or class selector nothing effects it.</p>
<hr />
<h2 id="heading-conclusion">Conclusion</h2>
<p>CSS is something interesting to learn, now you have to seach about what is difference between Tailwind vs CSS and second ShadCn vs Tailwind. Also Search about the Atomic CSS what are those and what are the difference it posses with normal CSS that we just discussed in this blog.</p>
]]></content:encoded></item><item><title><![CDATA[Understanding HTML Tags and Elements]]></title><description><![CDATA[Topics that we are going to cover in this blog are mentioned below.

What HTML is and why we use it?

What an HTML tag is?

Opening tag, closing tag, and content?

What an HTML element means?

Self-closing (void) elements

Block-level vs inline eleme...]]></description><link>https://blog.meetabhinav.com/html</link><guid isPermaLink="true">https://blog.meetabhinav.com/html</guid><category><![CDATA[ChaiCode]]></category><category><![CDATA[HTML]]></category><dc:creator><![CDATA[Abhinav]]></dc:creator><pubDate>Sun, 01 Feb 2026 11:01:44 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1769943639655/09a91ce8-9bc7-4674-ad33-31d9d98f08b1.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Topics that we are going to cover in this blog are mentioned below.</p>
<ul>
<li><p>What HTML is and why we use it?</p>
</li>
<li><p>What an HTML tag is?</p>
</li>
<li><p>Opening tag, closing tag, and content?</p>
</li>
<li><p>What an HTML element means?</p>
</li>
<li><p>Self-closing (void) elements</p>
</li>
<li><p>Block-level vs inline elements</p>
</li>
<li><p>Commonly used HTML tags</p>
</li>
</ul>
<hr />
<h2 id="heading-what-is-html-and-why-we-use-it">What is HTML and why we use it?</h2>
<p>Before jumping to HTML directly first understand from where it comes. We know server response to the request sent by the users. But is that possible to give access of server to everyone? Answer is no, so how to handle the access, WWW(world wide web a standard for HTML,HTTP, URL structure) come up with the protocol of http(hyper text transfer protocol) which consists of <code>http:// IP address or port / &lt;file_name&gt;</code> format URL which helps the server to find the <code>&lt;file_name&gt;</code> and transfer it to client’s brower through application layer (OSI Model) by doing this we stop giving access to the server.</p>
<p><strong>But the problem is not yet solved. Earlier the response that is sent by the server is not in readable format. Because server don’t know what is heading, what is paragraph etc. So,</strong> <a target="_blank" href="https://en.wikipedia.org/wiki/Tim_Berners-Lee"><strong>Tim Berners-Lee</strong></a> <strong>come up with the idea of Hyper Text, which is basically how a server treat the text in more readable and good format so language is called HTML</strong> now. You can understand the name of Hyper Text Markup Language(HTML).So, this language consists of tags which has a opening and closing representation &lt;tag&gt; and &lt;/tag&gt; respectively, and <strong>name hyper text transfer protocol is for transfering those hyper texts over a transfer protocol.</strong></p>
<p>After making the HTML, other developer also acknowlege this and later recognised by various browser.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1769931819810/a0a2b634-4519-40b1-adfc-828e4604d42a.png" alt class="image--center mx-auto" /></p>
<p>You can see now how server was earlier and how it is now. we are going to see the tags of HTML and understand how a heading , paragraph , img tags etc are being interrupt.</p>
<hr />
<h2 id="heading-what-an-html-tags-and-what-is-opening-and-closing-tags">What an HTML tags and what is opening and closing tags?</h2>
<p>Tags <strong>define the format, structure, and meaning of content on a webpage.</strong> Opening tags are something enclosed in an <strong>angle brackets</strong> <code>&lt;name_of_tag&gt;</code> also know as <strong>chevrons</strong>, for example <strong>&lt;h1&gt; This is heading.</strong> Okay but the problem is to how much extent it is a heading? So, to overcome that Closing tags comes into the picture to define where a tag ends. For exampe : <code>&lt;h1&gt; This is heading &lt;/h1&gt;</code>. Because if we don’t specify the closing of a tag than it will take everything inside that tag which is not preferable.</p>
<p><code>&lt;h1&gt; InsideTech &lt;/h1&gt;</code> : opening tag - content - closing tag</p>
<p><strong>So, server didn’t render or show the tags they just show the content inside the tag in predefine or customised scaling and painting.</strong></p>
<p>Now question is how a browser understand that the text coming from the response of the server is an HTML? its is done by server itself by <strong>adding a header to the file</strong>. <code>The server who sends the HTML as a response are know as WebServers.</code></p>
<pre><code class="lang-plaintext">Header{
    Content-Type: txt/html
}

//now browser starts to parse the incoming text as HTML parser.
// because server is still sending the text but in HTML format.
</code></pre>
<hr />
<h2 id="heading-why-most-of-the-website-uses-www-in-the-start-of-the-url">Why most of the website uses www in the start of the URL?</h2>
<p>This is a classic thing to learn about a WebServer, which basically indicates the landing page of a website or where you can access public information. So, wwwbasically means it points to a WebServer of that particular organization that they have running for their domains. But some people just search by domain name or just the name, so in that case, it automatically redirects to the webserver of that particular domain, and this has now become the standard. <strong>But it's just a standard, not a rule; you can directly point to your webserver without needing to mention www. However, www is now the standard, so it particularly indicates that it will return the HTML.</strong></p>
<hr />
<h2 id="heading-what-an-html-element-mean">What an HTML Element mean?</h2>
<p>These are for making the structure and meaning of the content on a webpage. it consists of 3 components ,opening tag, content and closing tag. <code>&lt;tag&gt; content &lt;/tag&gt;</code>. if somebody ask about what is the difference between tags and element then you can say that tag are the delimiter(&lt;p&gt; and &lt;/p&gt;) used in source code while element including content and the attributes.</p>
<hr />
<h2 id="heading-self-closing-void-elements">Self-closing (void) elements</h2>
<p>Some elements are "empty" or "self-closing" and do not have any content or a closing tag example <code>&lt;br&gt;</code> is known as <strong>break</strong> tag <code>which is used to enter a line break inside a &lt;p&gt; tag without using another &lt;p&gt; tag</code>. Similarly <code>&lt;hr&gt;</code> tag know as horizontal line tag used to add a horizontal line in you content. <code>&lt;img&gt;</code> is also another void element. There are many more tags like them.</p>
<h2 id="heading-block-level-vs-inline-elements">Block level vs inline elements</h2>
<pre><code class="lang-plaintext">Characteristic                         Block Elements                                   Inline Elements ---------- | --------
New Line                Always start on a new line.                                                    Do not start on a new line.
Width                    Take up the full width available of their parent container by default.        Only take up as much width as their content requires.
Height/Width            CSS height and width properties are respected.                                height and width properties have no effect.
Margins/Padding            Top and bottom margins and padding are applied.                                Top and bottom margins and padding are not applied (only horizontal).
Content                    Can contain other block-level or inline elements.                            Can typically only contain data or other inline elements.
</code></pre>
<p>Here you introduced with new terms like margin padding we will see that in css blog what they actually mean.</p>
<p>Let’s see Block Level and Inline Elements through diagram.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1769943278734/2369e0bc-3227-4d48-aea2-ef692b1703ed.png" alt class="image--center mx-auto" /></p>
<hr />
<h2 id="heading-commonly-used-html-tags">Commonly used HTML tags</h2>
<p>Heading tag(<code>&lt;h1&gt;&lt;/h1&gt;</code>), paragraph tag(<code>&lt;p&gt;&lt;/p&gt;</code>), anchor tag(<code>&lt;a&gt;&lt;/a&gt;</code>), image tag (<code>&lt;img&gt;</code>), break line tag (<code>&lt;br&gt;</code>), horizontal line tag (<code>&lt;hr&gt;</code>), div tag(<code>&lt;div&gt;&lt;/div&gt;</code>) and many more.</p>
<hr />
<h2 id="heading-conclusion">Conclusion</h2>
<p>We got to know the use and Existence of HTML and HTTP, and how things changed time to time. Interesting to know about a WebServer what they actually mean in real.</p>
<ul>
<li><p>Structure making</p>
</li>
<li><p>HTML file making</p>
</li>
<li><p>Upload to Server</p>
</li>
<li><p>HTTP server running</p>
</li>
<li><p>Response from server to client in form of HTML</p>
</li>
</ul>
]]></content:encoded></item><item><title><![CDATA[How a Browser Works: A Beginner-Friendly Guide to Browser Internals]]></title><description><![CDATA[Let’s checkout the topics that we are going to cover in this blog.

What a browser actually is (beyond “it opens websites”)

Main parts of a browser (high-level overview)

User Interface: address bar, tabs, buttons

Browser Engine vs Rendering Engine...]]></description><link>https://blog.meetabhinav.com/browser</link><guid isPermaLink="true">https://blog.meetabhinav.com/browser</guid><category><![CDATA[ChaiCode]]></category><category><![CDATA[Browsers]]></category><dc:creator><![CDATA[Abhinav]]></dc:creator><pubDate>Fri, 30 Jan 2026 12:36:18 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1769776223484/e512d70c-7171-4896-abe8-eea0d02748d8.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Let’s checkout the topics that we are going to cover in this blog.</p>
<ul>
<li><p>What a browser actually is (beyond “it opens websites”)</p>
</li>
<li><p>Main parts of a browser (high-level overview)</p>
</li>
<li><p>User Interface: address bar, tabs, buttons</p>
</li>
<li><p>Browser Engine vs Rendering Engine (simple distinction)</p>
</li>
<li><p>Networking: how a browser fetches HTML, CSS, JS</p>
</li>
<li><p>HTML parsing and DOM creation</p>
</li>
<li><p>CSS parsing and CSSOM creation</p>
</li>
<li><p>How DOM and CSSOM come together</p>
</li>
<li><p>Layout (reflow), painting, and display</p>
</li>
<li><p>Very basic idea of parsing (using a simple math example)</p>
</li>
</ul>
<hr />
<h2 id="heading-what-is-a-browser-and-how-it-fetch-the-htmlcss-and-js">What is a Browser and how it fetch the HTML,CSS and JS?</h2>
<p>Browser is a powerful element of machine which helps in displaying many visuals that are coming or going into the machine/computer. Browser consists of various components within them to execute a particular task let’s see how a webpage is displayed over a browser after hitting the URL or we can say how HTML, CSS and JS is fetching on clicking the URL from browser.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1769709539766/da298247-f585-4396-9ecb-73acf4320c93.png" alt class="image--center mx-auto" /></p>
<h2 id="heading-what-is-parsing-basic-idea-of-parsing">What is parsing? Basic idea of parsing!</h2>
<p>You can see the flow diagram, there are some terms to explain here such as <strong>What is Parser</strong>? Parser is like the BODMAS of browser, which mean there are some rules to calculate the result. For example 1 + 2 × 3 = ?</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1769774596270/9c22a91a-143a-4c2b-96f9-7da4c7dc028e.png" alt class="image--center mx-auto" /></p>
<h2 id="heading-main-parts-of-a-browser">Main parts of a browser</h2>
<p>Browser have various componets within it to execute the tasks. User Interface, Browser Engine(Gecko,Chrominum), Rendering Engine, Networking, JS Interpreter, UI Backend, disk API ( local storage ).</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1769768353488/038d5d67-c56d-4625-9494-582dea7c4d50.png" alt class="image--center mx-auto" /></p>
<ul>
<li><p><strong>User Interface:</strong> it acts as a bridge between humans and machines to communicates within the web,applications and devices.ie, Tabs, buttons, address bar etc.</p>
</li>
<li><p><strong>Browser Engine:</strong> Its core software components that interprets web pages code (HTML,CSS,JS) and draws the visual that you see on your screen acting as the bridge between the browser's user interface and the web content.</p>
</li>
<li><p><strong>Rendering Engine:</strong> Transforming code into the interactive visuals you see on your screen.</p>
</li>
<li><p><strong>Networking:</strong> For DNS lookups that we already seen in previous blogs.</p>
</li>
<li><p><strong>JS Interpreter:</strong> Used to read and execute the Javascript code, usually its like a software embedded in your browser.</p>
</li>
<li><p><strong>UI Backend:</strong> It is an archetecture approach where the server dictated the structure, content and behaviour of the user interface,rather than the client side code.</p>
</li>
<li><p><strong>Disk API:</strong> A programmin interface used to manage,read, write and manipulate file storage, either local storage or cloud storage.</p>
</li>
</ul>
<hr />
<h2 id="heading-what-is-dom-and-cssom">What is DOM and CSSOM?</h2>
<p>the <strong>DOM</strong> represents the structure and content of a page, the <strong>CSSOM</strong> represents its styling.</p>
<hr />
<h2 id="heading-html-parsing-and-dom">HTML parsing and DOM?</h2>
<p>HTML parsing is the process by which a web browser converts HTML markup into a tree-like structure in memory called the Document Object Model (DOM).</p>
<hr />
<h2 id="heading-css-parsing-and-cssom">CSS parsing and CSSOM?</h2>
<p>CSS parsing is the browser's process of converting raw CSS code into a structured, usable format called the CSS Object Model (CSSOM).</p>
<hr />
<h2 id="heading-how-dom-and-cssom-come-together">How DOM and CSSOM come together?</h2>
<ul>
<li><p><strong>DOM Construction:</strong> The browser parses the HTML markup and builds the DOM tree, which represents the structure and content of the page.</p>
</li>
<li><p><strong>CSSOM Construction:</strong> The browser processes the CSS (from external, embedded, or inline sources) and builds the CSSOM tree, which is a map of all style rules, their hierarchy, and specificity.</p>
</li>
<li><p><strong>Render Tree Creation:</strong> The browser's rendering engine combines the DOM and CSSOM trees. Starting from the root of the DOM, it traverses all visible nodes and applies the corresponding computed styles from the CSSOM. Visibility and style Calculations.</p>
</li>
<li><p><strong>Layout and Paint:</strong> Once the render tree is complete, the browser performs the "layout" (or reflow) step, which calculates the exact position and size of each element in the viewport. Finally, the "paint" step converts this information into pixels on the screen.</p>
</li>
</ul>
<hr />
<h2 id="heading-frame-constructor-layout-reflow-painting-and-display">Frame constructor, Layout (reflow), painting, and display</h2>
<p>These are the <strong>components of the browser</strong>, which after creation of DOM acts. <strong>Starting with Frame constructor which is similar to frames</strong> or skeleton building,then comes reflow or layout which is just the mathematics or computation of the segments, then painting which is basically how the visuals looks like on screen and finaly the display to output everything on a screen of your device.</p>
<p><strong>We prefer not to do reflow because it laids to computations so most of the time do colour chagne on click not the bold or sizing change on click.</strong> So, painting is less computational than the reflow because in reflow the tree formation occurs again and again which makes a lot of mathematical computations.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1769778313736/e1864ed3-0f58-4dd9-aaac-93a56ecb1463.png" alt class="image--center mx-auto" /></p>
<hr />
<h2 id="heading-web-parsing">Web Parsing</h2>
<p>It the automatic process to analyse the raw HTML, XML data retrieved from website to extract, structure and clean data or specific information.</p>
<p>There are two types of web-parsing Conventional and Unconventional parsing.</p>
<ul>
<li><p>Conventional parsing: They follow some rules to execute the task like CSS, JS.</p>
</li>
<li><p>Unconventional parsing: It follow no rules ie HTML.</p>
</li>
</ul>
<p>HTML is the only error friendly language on web that’s why its also an Unconventional parsing or <strong>solo parser on internet</strong>. <strong>Once we tried to use the strick parser but people complaint about the problem. so, again its come to unconventional parsing.</strong></p>
<hr />
<h2 id="heading-conclusion">Conclusion</h2>
<p>Understing browser is a new experience and we should learn the behind the scene how it actually fetch the code from the Server into your device screen.</p>
]]></content:encoded></item><item><title><![CDATA[Getting Started with cURL]]></title><description><![CDATA[Let’s quickly go through with the topics that we are going to cover in this blog.

What is cURL (in very simple terms)?

Why programmers need cURL?

Making your first request using cURL

Understanding request and response

Using cURL to talk to APIs
...]]></description><link>https://blog.meetabhinav.com/curl</link><guid isPermaLink="true">https://blog.meetabhinav.com/curl</guid><category><![CDATA[ChaiCode]]></category><category><![CDATA[curl]]></category><dc:creator><![CDATA[Abhinav]]></dc:creator><pubDate>Wed, 28 Jan 2026 18:26:18 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1769624707201/5f3120b3-7db9-45d9-8e51-b734a335d840.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Let’s quickly go through with the topics that we are going to cover in this blog.</p>
<ul>
<li><p>What is cURL (in very simple terms)?</p>
</li>
<li><p>Why programmers need cURL?</p>
</li>
<li><p>Making your first request using cURL</p>
</li>
<li><p>Understanding request and response</p>
</li>
<li><p>Using cURL to talk to APIs</p>
</li>
<li><p>Common mistakes beginners make with cURL</p>
</li>
</ul>
<hr />
<h2 id="heading-what-is-curl-and-why-progrmmers-need-curl">What is cURL and why progrmmers need cURL?</h2>
<p>Before understanding the cRUL let’s understand what is a server?</p>
<p><strong>Server are basically a dedicated computers that provide services on the behalf of client such as ordinary desktop computers or workstation</strong>. So, it’s a centralised machine connected with multiple devices or client over the internet or LAN(Local Area Network). They connect with server for specific service. For example those services can be to retrieve a website, to access data or email and so on. <strong>A server could be dedicated to handle one service at a time for example webserver(only for retrieveing the websites) , mailserver(to send and receive the mails) and more</strong>. But it’s also possible to have a single server having all services included in it.</p>
<p>So, to talk with the server we as a client use the cURL, <strong>cURL is a widely used open source software consists of command line tool (curl) and a development library (libcurl) for transferring the data with URL syntax.</strong> It is mostly used by developer or administrator to automate tasks, testing APIs, upload and download files over a wide range of network protocols.</p>
<p>Server is a 24×7 running machine so to make that robust we can’t just use any ordinary desktop computers because they have some limitations which can’t handle more than a limit connections. <strong>So, the server consists of a processor ie intel XEON different than that of a ordinary computer processor ie Intel i7,i5.</strong></p>
<p><strong>Xeon processor support a multi-processor environment to distibute the workload</strong>(more than one porcessor are present) whereas ordinary computer support a single processor environment.</p>
<p><strong>Xeon processor support ECC RAM</strong>(Error correcting code) which helps to maintain the robustness of a server by checking the processed data of RAM module, if there is an error it will correct it to prevent memory errors.</p>
<hr />
<h2 id="heading-making-your-first-request-using-curl-request-response-and-apis">Making your first request using cURL, request , response and APIs.</h2>
<p>Before running these commands make sure your device has pre-installed the curl, check on internet how to install curl on your paricular operating system.</p>
<p>Below <code>—help</code> command will show you the list of commands that you can use with the curl.</p>
<pre><code class="lang-plaintext">curl --help
</code></pre>
<p>This command will output all the content of the mentioned website.</p>
<pre><code class="lang-plaintext">curl https://hashnode.com
</code></pre>
<p>Below command will let you store the html code coming from the website into your local device with the file name <code>save.html</code></p>
<pre><code class="lang-plaintext">curl -o save.html https://hashnode.com
</code></pre>
<p>It will show all the html content that you just pulled from the https://hashnode.com website.</p>
<pre><code class="lang-plaintext">cat save.html
</code></pre>
<p><code>It will store the response output html into the index.html</code> file and you can see the file content using <code>cat</code> command.</p>
<pre><code class="lang-plaintext">curl -O https://hashnode.com/index.html
</code></pre>
<p>Let’s check below commands how redirecting checks are tested.</p>
<pre><code class="lang-plaintext">curl https://blog.meetabhinav.com

This command will extract all the content from my website.

Now let's check my catch all function that i set on my NameServe provider to redirect
https://meetabhinav.com to https://blog.meetabhinav.com


curl -L https://meetabhinav.com

Now this command will give me the content of the website blog.meetabhinav.com because its
gets redirected over there.
</code></pre>
<p>Now let’s know more interesting things, we can also check the response headers that are sent by webserver back to clients, the commands provided below.</p>
<pre><code class="lang-plaintext">curl -I https://hashnode.com
</code></pre>
<p>We can also see the TLS handshaking or client server communications execution using below command</p>
<pre><code class="lang-plaintext">curl -v https://hashnode.com
</code></pre>
<p>By the way GET is the default function assigned to curl command and if you want to use POST you can use the <code>-d</code> or <code>—data</code> command for example curl https://dummy_data//path -d “x = something &amp; y = something” and this will POST into the server.</p>
<p>Search online on internet free api dummy data and select the method and copy paste the path and run the curl command to check the functionality.</p>
<hr />
<h2 id="heading-common-mistakes-beginners-make-with-curl">Common mistakes beginners make with cURL</h2>
<ul>
<li><p>Skipping Documentation &amp; Proper Research</p>
</li>
<li><p>Failure to Check Return Codes</p>
</li>
<li><p>Disabling TLS Certificate Checks</p>
</li>
<li><p>Ignoring Thread Safety Rules</p>
</li>
</ul>
<p>And many more, google or search by yourself to know more.</p>
<hr />
<h2 id="heading-conclusion">Conclusion</h2>
<p>You might get uncomfortable using cURL but don’t worry you will get it somedays. Do online research and try to learn the command and also impliment on your device to see the working of commands to know better.</p>
]]></content:encoded></item><item><title><![CDATA[DNS Record Types Explained]]></title><description><![CDATA[We have learnt about the DNS in previous blog, if you are new you can checkout DNS Blog click here, Now we are heading toward the DNS Records section where we are going to see the different type of records and their meaning.
Let’s checkout the topics...]]></description><link>https://blog.meetabhinav.com/dns-record</link><guid isPermaLink="true">https://blog.meetabhinav.com/dns-record</guid><dc:creator><![CDATA[Abhinav]]></dc:creator><pubDate>Tue, 27 Jan 2026 14:36:45 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1769524479377/8e893aee-c628-4470-839b-4a9adc88a434.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>We have learnt about the DNS in previous blog, if you are new you can checkout DNS Blog <a target="_blank" href="https://blog.meetabhinav.com/dns-resolution"><code>click here</code></a>, Now we are heading toward the DNS Records section where we are going to see the different type of records and their meaning.</p>
<p>Let’s checkout the topics that we are going to cover in this blog…</p>
<ul>
<li><p>Why DNS records are needed?</p>
</li>
<li><p>What an <strong>NS Record</strong> is (who is responsible for a domain)?</p>
</li>
<li><p>What an <strong>A Record</strong> is (domain → IPv4 address)?</p>
</li>
<li><p>What an <strong>AAAA Record</strong> is (domain → IPv6 address)?</p>
</li>
<li><p>What a <strong>CNAME Record</strong> is (one name pointing to another name)?</p>
</li>
<li><p>What an <strong>MX Record</strong> is (how emails find your mail server)?</p>
</li>
<li><p>What a <strong>TXT Record</strong> is (extra information and verification)?</p>
</li>
<li><p>How all DNS records work together for one website?</p>
</li>
</ul>
<hr />
<h2 id="heading-why-dns-records-are-needed">Why DNS records are needed?</h2>
<p>As we have seen the flow diagram in previous <a target="_blank" href="https://blog.meetabhinav.com/dns-resolution">DNS blog</a> , So everytime when a server gives the response it can be any data for example it can be IP address, TLD server address, Authoritative server Address, TXT ,canonical server address etc. So, we need to understand the server’s response everytime to get the information about the it.</p>
<p>There are various types of DNS records some of them are MX, A, AAAA, CNAME, TXT, NS etc. Let’s understand them one by one.</p>
<hr />
<h2 id="heading-what-an-ns-record-is">What an NS Record is?</h2>
<p><strong>NS</strong> stands for <strong>Name Server</strong>, it is a type of DNS record which is <strong>used to identify the authoritative DNS server for a particular domain/website</strong>, directing internet traffic to a specific server where website’s IP address and other records like MX, A are stored.</p>
<p>Key aspects of NS Record are <strong>Functionality</strong>, <strong>Responsibility of a domain</strong>, <strong>Reliable</strong> and <strong>Components.</strong> Let’s understand these terms one by one…</p>
<ul>
<li><p><strong>Functionality</strong>: Without proper configuration of NS record, a website or application will not load properly on your device from where the request was initiated.</p>
</li>
<li><p><strong>Responsibility</strong>: They define which DNS server is actually responsible for a particular website or domain.</p>
</li>
<li><p><strong>Reliable</strong>: There are two NS alloted for a domain (primary and secondary) it helps in case one server is under maintenance or gets down then the second NS will manage the traffic.</p>
</li>
<li><p><strong>Components</strong>: Each record consists of domain name, TTL(time to live), and name of server. <strong>TTL is basically how much time the data of a recently visited website by caching is stored on my local machine, after that its again need to refresh the page or update</strong>.</p>
</li>
</ul>
<hr />
<h2 id="heading-what-is-a-record-domain-ipv4-version">What is A Record ? (domain → IPv4 version)</h2>
<p>A Record is the fundamental DNS record which is used to convert human readable website names ie <code>example.com</code> into the actual IP address of the domain of 32 bit addressing ie <code>192.0.2.1</code> that’s why IPv4 version.</p>
<p>Key aspects of this Record are <strong>32 bit IP addressing</strong>, <strong>One-to-many potential</strong>, <strong>Load balancing</strong> etc.</p>
<ul>
<li><p><strong>32 bit IP address</strong> : A record strictly uses the 32 bit address to point any IP.</p>
</li>
<li><p><strong>One-to-many potential</strong> : Multiple domains or sub-domains can have a single or same IP Address.</p>
</li>
<li><p><strong>Load balancing</strong> : Some websites or domain have multiple A records to control the traffics in case of server down or maintenance.</p>
</li>
</ul>
<hr />
<h2 id="heading-what-an-aaaa-record-is-domain-ipv6-address">What an <strong>AAAA Record</strong> is (domain → IPv6 address)?</h2>
<p>AAAA or quad A record is used to map the domain name to the 128 bit address IP, that’s why its IPv6. Its provides superior addressing than the IPv4 addressing.</p>
<p>Key aspects of AAAA records are <strong>Usage</strong> and <strong>Functionality</strong>. example of IPv6 <code>2606.4700.4700.1111</code></p>
<ul>
<li><p><strong>Usage</strong> : A record consits of both A and AAAA records which helps to maintain dual stack of IPv4 and IPv6 addressing.</p>
</li>
<li><p><strong>Functionality</strong> : If the user’s network supports IPv6 the browser will query for the AAAA records first.</p>
</li>
</ul>
<hr />
<h2 id="heading-what-a-cname-record-is-one-name-pointing-to-another-name">What a <strong>CNAME Record</strong> is (one name pointing to another name)?</h2>
<p><strong>CNAME</strong> stands for Canonical Name which <strong>is like a pointer which always points to other domain and subdomin</strong> but <strong>never points to any IP address</strong>. Which mean let’s suppose i have purchased a domain <code>meetabhinav.com</code> and i added a subdomain on it of name <code>blog</code>. So, now my final domain is like <code>blog.meetabhinav.com</code> ,<strong>while setting up the</strong> <code>blog</code> sub-domain on top of main domain <strong>i added a CNAME record to this</strong> <code>blog</code> <strong>,which will eventually points to the main domain</strong> (meetabhinav.com) during DNS querry and then you will get the A record from the main domain.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1769514307263/8243f631-3b25-4e07-9f31-f5d131eedf8e.png" alt class="image--center mx-auto" /></p>
<p>You can now see how CNAME actually works during a DNS querry.</p>
<hr />
<h2 id="heading-what-an-mx-record-is-how-emails-find-your-mail-server">What an <strong>MX Record</strong> is (how emails find your mail server)?</h2>
<p>MX Record is an importand DNS record which helps to specify the mail server to accept the mail on the behafe of a domain.</p>
<p>Let’s understand it with the example of letters, postman and postoffice…</p>
<p>Imagine you want to send a <strong>letter</strong> to a friend who lives in a town called "<strong>ExampleLand</strong>." You hand the letter to your <strong>postman</strong>. The postman looks at the envelope and sees the address: <code>friend@exampleland.com</code>.</p>
<p>The postman knows how to get to the town of ExampleLand, but he doesn't deliver letters directly to people's front doors. Instead, he has to find the specific <strong>Post Office</strong> that is allowed to handle mail for everyone in ExampleLand.</p>
<p>To find out which Post Office to go to, the postman looks at a giant <strong>Signpost</strong> (the <strong>MX Record</strong>) at the entrance of the town. This signpost says: <em>"All mail for ExampleLand must be dropped off at the Blue Post Office on Main Street."</em> The postman follows that instruction, drives to the Blue Post Office (the <strong>Mail Server</strong>), and hands over the letter. Once the letter is inside the Blue Post Office, the workers there look at the name "Friend" and put it in your friend's specific P.O. Box.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1769523247641/0116ef2b-ac4a-49d0-9b46-1155b04e2f0a.png" alt class="image--center mx-auto" /></p>
<p><strong>SMTP stands for simple mail transfer protocol which is used to send the mais and IMAP and POP3 are used to receive the mails.</strong></p>
<p>There are multiple mail servers for a particular domain with the priority numbers , <strong>lower the number value higher is the priority of that server</strong>. we use multiple because in case of 1st mail server failure or server down, 2nd mail server will take the charge of traffic.</p>
<hr />
<h2 id="heading-how-all-dns-records-work-together-for-one-website">How all DNS records work together for one website?</h2>
<p>DNS records work together as a collaborative, hierarchical system to translate a human-readable domain name into an IP address, directing web traffic, email, and security protocols to the correct servers.</p>
<ul>
<li><p>The Foundation (NS and SOA)</p>
<p>  <strong>NS</strong> helps to <strong>find the authoritative server of a domain</strong> where as <strong>SOA</strong> stands for <code>start of authority</code> which is the first record in any zone file which consists the information of administator, admin email, primary nameserver and more.</p>
</li>
<li><p>DIrecting Web-traffics(CNAME , A and AAAA)</p>
<p>  A record will map your domain into 32 bit IPv4 address and AAAA will map your domain to a 128 bit IPv6 address. <strong>CNAME creates an alias this allows you to update the A record once, and all CNAME-linked subdomains update automatically</strong>. </p>
</li>
<li><p>Handling subdomain and alias (CNAME and DNAME)</p>
<p>  DNAME stands for <strong>Delegation Name</strong> Used to redirect an entire sub-tree of domains to another, often used during domain migration. and CNAME is used to point the sub-domain to the main domain.</p>
</li>
<li><p>Directing Email (MX record)</p>
<p>  Tell the internet where to send email for your domain.</p>
</li>
<li><p>Security and Verification (TXT record)</p>
<p>  TXT is used to store the text based information about the security such as <strong>SPF (Sender Policy Framework)</strong> Identifies which mail servers are authorized to send email on behalf of your domain. <strong>DKIM/DMARC are for</strong> additional email authentication methods.</p>
</li>
<li><p>Specialized Services SRV Records</p>
<p>  Specify the location (hostname and port) for specific services, such as VoIP or messaging, rather than just web or email traffic. </p>
</li>
</ul>
<hr />
<h2 id="heading-conclusion">Conclusion</h2>
<p>Record are the type of data which is the output of a DNS query each record has its own significance.</p>
]]></content:encoded></item><item><title><![CDATA[How DNS Resolution Works]]></title><description><![CDATA[Topics that we are going to cover in this blog are mentioned below…

What is DNS and why name resolution exists?

What is the dig command and when it is used?

Understanding dig . NS and root name servers

Understanding dig com NS and TLD name server...]]></description><link>https://blog.meetabhinav.com/dns-resolution</link><guid isPermaLink="true">https://blog.meetabhinav.com/dns-resolution</guid><dc:creator><![CDATA[Abhinav]]></dc:creator><pubDate>Mon, 26 Jan 2026 21:58:23 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1769459860073/36d73cf4-dcb0-4aec-965b-36ca4d29c39a.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Topics that we are going to cover in this blog are mentioned below…</p>
<ul>
<li><p>What is DNS and why name resolution exists?</p>
</li>
<li><p>What is the <code>dig</code> command and when it is used?</p>
</li>
<li><p>Understanding <code>dig . NS</code> and root name servers</p>
</li>
<li><p>Understanding <code>dig com NS</code> and TLD name servers</p>
</li>
<li><p>Understanding <code>dig google.com NS</code> and authoritative name servers</p>
</li>
<li><p>Understanding <code>dig google.com</code> and the full DNS resolution flow</p>
</li>
</ul>
<hr />
<h2 id="heading-what-is-dns">What is DNS?</h2>
<p>DNS stands for <strong>Domain Name System</strong>, before driving deep inside the technical. Let’s understand this in simple way.</p>
<p>We humans are not good in memorising the numbers but good in remembering the names, as we named everything ie humans names Rohit, Sunil etc whereas on the otherside machines are good in understanding the numbers rather than names. So, <strong>to bridge this gap between humans and machines DNS comes into the picture whose one of the main functions is to convert the input given by humans in name type into the numerical value type (IP) for the machines to address them and give the response back to the humans.</strong></p>
<p>The <strong>DNS resolution</strong> <strong>is something like the phonebook/contact list in phone, where we generally search for names and get the number</strong>. So, DNS is very essential to translate the human readable text to machine readable IP addresses.</p>
<hr />
<h2 id="heading-what-is-dig-command-and-when-it-is-used">What is ‘dig’ command and when it is used?</h2>
<p>dig stands for <strong>Domain Information Groper</strong> which is a powerful administrator command line tool <strong>used to querry the DNS servers to troubleshoot,diagnose and verify domain configurations</strong>.</p>
<p>There is also a similar command to <code>dig</code> which is <code>nslookup</code> which also use for querry the DNS but the <strong>key difference between these two commands is, dig uses the operating system DNS querry library where as nslookup doesn’t use the library.</strong></p>
<p>We use dig command to get the information of the DNS in various ways like knowing the DNS recode ie A, CNAME,NS,MX etc we will see what are records in next blog. <strong>So, basically we use dig for basic lookup, querry DNS records, querry DNS server, trace route , short answer only.</strong></p>
<pre><code class="lang-plaintext">dig google.com         --&gt;            will give the IP in 'A' type DNS record.

dig google.com CNAME   --&gt;            will give the DNS CNAME record details specificaly.

dig google.com +short  --&gt;            will just give you IP address nothing else.

dig @IP_of_other_DNS google.com  --&gt;  used when you want to check the other’s DNS server.
</code></pre>
<hr />
<h2 id="heading-understanding-dig-ns-and-root-name-server">Understanding dig . NS and root name server?</h2>
<p>If we understand the command here <code>dig . NS</code>, dig is command - whereas ‘dot’ means root - and NS means the Name Server which is a DNS Record.</p>
<p>Let’s see the flow of the command…</p>
<pre><code class="lang-plaintext">'dig' will start to find the root server (.) after that NS is called which mean authoritative
server (main authority) 

And we will see the output on the terminal as a list of 13 Root server which is spread
accross the world and controlled and managed by 12 different organisations.

___LIST OF 13 SERVERS___

            51xxxx    IN    NS    a.root-servers.net.
.            51xxxx    IN    NS    b.root-servers.net.
.            51xxxx    IN    NS    c.root-servers.net.
.            51xxxx    IN    NS    d.root-servers.net.
.            51xxxx    IN    NS    e.root-servers.net.
.            51xxxx    IN    NS    f.root-servers.net.
.            51xxxx    IN    NS    g.root-servers.net.
.            51xxxx    IN    NS    h.root-servers.net.
.            51xxxx    IN    NS    i.root-servers.net.
.            51xxxx    IN    NS    j.root-servers.net.
.            51xxxx    IN    NS    k.root-servers.net.
.            51xxxx    IN    NS    l.root-servers.net.
.            51xxxx    IN    NS    m.root-servers.net.

-----COMMENTS TO READ-----
// Don't think to much as for now we will see the flow diagram later in this blog.
</code></pre>
<hr />
<h2 id="heading-understanding-dig-com-ns-command">Understanding dig com NS command</h2>
<p>This is another important <code>dig</code> command to get the information about the TLD Servers (TOP LEVEL DOMAIN) ie <code>.com</code>,<code>.org</code> etc. Root Servers directs the traffic to TLD for more information.</p>
<pre><code class="lang-plaintext">___TLD Servers___

d.gtld-servers.net.
h.gtld-servers.net.
m.gtld-servers.net.
a.gtld-servers.net.
j.gtld-servers.net.
i.gtld-servers.net.
e.gtld-servers.net.
f.gtld-servers.net.
b.gtld-servers.net.
k.gtld-servers.net.
l.gtld-servers.net.
g.gtld-servers.net.
c.gtld-servers.net.
</code></pre>
<hr />
<h2 id="heading-understanding-dig-googlecom-ns-and-authoritative-server">Understanding dig google.com NS and Authoritative Server</h2>
<p><strong>Here dig command is further driving deep inside the TLD Server (.com extension) to locate the authoritative server(google, in this command) which holds all the details ie IP address of the domain google.com</strong></p>
<pre><code class="lang-plaintext">___YOU WILL SEE THE DETAILS OF AUTHORITATIVE SERVER___

ns3.google.com.        108149    IN    A    216.239.36.10
ns2.google.com.        345463    IN    A    216.239.34.10
ns4.google.com.        63718    IN    A    216.239.38.10
</code></pre>
<hr />
<h2 id="heading-flow-diagram-of-dns-resolution">FLOW DIAGRAM of DNS Resolution</h2>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1769464492868/9f77ea13-a236-48f3-b5cb-8fbef0f6b30b.png" alt class="image--center mx-auto" /></p>
<p>Let’s understand this diagram…</p>
<p>When a user or client searches for something like <code>zerodha.com</code>, the browser contacts a helper called the Resolver Server, which does all the work for the browser. The resolver first goes to the Root server. The Root server checks the extension, like <code>.com</code>, and sends the request to the TLD server. Then, the resolver goes to the TLD server, which looks for the authoritative server, in this case, <code>zerodha</code>. Finally, the resolver moves to the authoritative server, gets the IP address of <code>zerodha.com</code>, and provides it to the browser. Now, your screen displays the landing page of Zerodha.</p>
<hr />
<h2 id="heading-conclusion">Conclusion</h2>
<p>Understanding the behind the scene of a tech is wonderfull and the more you deep drive the more you get to know the interesting facts about them.</p>
]]></content:encoded></item><item><title><![CDATA[TCP vs UDP: When to Use What, and How TCP Relates to HTTP?]]></title><description><![CDATA[We already got to know about the TCP in previous blog. Now its time to know about the UDP. Before that let’s take a look on the content that we are going to cover in this blog.

What are TCP and UDP and there key differences?

When to use TCP?

When ...]]></description><link>https://blog.meetabhinav.com/tcp-udp-http</link><guid isPermaLink="true">https://blog.meetabhinav.com/tcp-udp-http</guid><dc:creator><![CDATA[Abhinav]]></dc:creator><pubDate>Sun, 25 Jan 2026 13:57:55 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1769349394120/004b011e-7676-4c4c-9eed-98849946f3e2.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>We already got to know about the TCP in <a target="_blank" href="https://blog.meetabhinav.com/tcp-working"><mark>previous blog</mark></a>. Now its time to know about the UDP. Before that let’s take a look on the content that we are going to cover in this blog.</p>
<ul>
<li><p>What are TCP and UDP and there key differences?</p>
</li>
<li><p>When to use TCP?</p>
</li>
<li><p>When to use UDP?</p>
</li>
<li><p>Common real-world examples of TCP vs UDP</p>
</li>
<li><p>What is HTTP and where it fits?</p>
</li>
<li><p>Relationship between TCP and HTTP</p>
</li>
</ul>
<hr />
<p>Computer use communication protocols to communicates with each other over a network, TCP and UDP are such protocols.</p>
<h2 id="heading-what-are-tcp-and-udp">What are TCP and UDP ?</h2>
<p>TCP stands for Transmission Control Protocol which <strong>guaranttee the delivery of data</strong>, by error checking, congestion control, flow control, re-transmission in case of error or corupt files and ordering of data packets. Whereas UDP stands for <strong>User Datagram Protocol which gives no guaranttee of data delivery</strong>, they are <strong>also know as fire and forget portocol</strong>. which means they just starts transmiting the data without error checking, no flow control, no re-transmission, there is <strong>no process of establishing the connection first before sending the data, as we have seen the 3 way handshake in the TCP</strong>.</p>
<hr />
<h2 id="heading-when-to-use-tcp">When to use TCP?</h2>
<p>TCP is reliable and smart because it manage all the aspects of the network mechanism in which there is the posssibilty of data loss, data corruption, receiver overwhelm etc. so, we use the TCP in those areas where we want the data should sent and received correctly. ie sending emails (STMP Simple mail transfer protocol) , sending file (FTP File transfer protocol) and others where we don’t want to loose the data while transmitting.</p>
<p>But if we are using TCP, we have to sacrifies the speed because while managing all the aspects of data transmission and keeping in mind not to loss the data, keep the ordering of data packets, managing the flow control. By doing all this TCP loss alot of time. Hence, when we are using the TCP we are confident that data will not loss but we have to wait for longer time to receive the data. <strong>For example, YouTube Live Stream uses the TCP protocol, which is why you may have heard streamers mention a delay of 1 minute or 30 seconds. These delays actually occur due to the TCP protocol. The advantage is that you receive all the data, allowing you to pause and go back on the live stream.</strong></p>
<hr />
<h2 id="heading-when-to-use-udp">When to use UDP?</h2>
<p>UDP is less reliable because there is no guarantee of data transmission. It lacks error checking, retransmission, and flow control, meaning data is sent at a constant speed. If you just want to send data without any other concerns, you can use UDP.</p>
<p>For example, when watching live cricket on Hotstar, you might notice that sometimes the picture quality drops significantly, or the video freezes for a few seconds. When it resumes, you see a new frame, having skipped the frozen part.</p>
<p>So, what's happening? <strong>This is UDP transmission. It's simply sending data, and you're receiving it based on your internet speed. If you miss incoming data or frames, there's no way to go back and watch them because that data is already lost, with no retransmission.</strong> Imagine wanting to watch a cricket match with delays and lags. Would you enjoy it? No, you wouldn't. That's why UDP is used to send data quickly, allowing you to enjoy real-time visuals.</p>
<hr />
<h2 id="heading-what-is-http-and-where-it-fits">What is HTTP and where it fits?</h2>
<p>HTTP stands for Hyper Text Transfer Protocol. Its runs of the Application layer(OSI Model) which is connected to the transport layer where TCP is present. One thing keep in mind before learning <strong>HTTP is that it’s not the data transmission protocol, HTTP a protocol which just set rules to display the data in various formats ie, png,img,txt,video etc.</strong></p>
<p><strong>HTTP is the stateless protocol</strong> which mean <strong>when the sender sends request and receiver gives the response back and the connection ended.</strong></p>
<p>Let’s understand the HTTP using diagram…</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1769346278598/35b25d05-d19f-43a9-aa89-baea1354b11b.png" alt class="image--center mx-auto" /></p>
<p>Let’s see the HTTP insiders now!🥸 As Client send a request to the server , than server will check for the request data if the server has the data about the request it will send the response back to the client (Yes or No). So, <strong>those response are sent to client as a 3-digit status codes</strong>. What is status code now?</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1769346924193/71719a53-fefd-4d1a-9b6e-a6e57b173971.png" alt class="image--center mx-auto" /></p>
<p>Now lets look on some method of HTTP requests GET, POST, DELETE etc what are they actually and how they are sent to the server and how server is responding to them?</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1769347853747/3c58b81c-8866-4f63-925c-4971623d03ec.png" alt class="image--center mx-auto" /></p>
<p>Now let’s check the server response…</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1769348219824/4f0d8eb5-b0a0-4457-a5a4-317f53458ded.png" alt class="image--center mx-auto" /></p>
<hr />
<h2 id="heading-relationship-between-http-and-tcp">Relationship between HTTP and TCP</h2>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1769348987328/e623f2dd-dd34-41ec-b591-d8d0632f6bb4.png" alt class="image--center mx-auto" /></p>
<p>We can see each one of the 7-layers are interdependent on each other. Application layer act as the format maker and TCP,UCP are the carrier of those format/data with there respective functions.</p>
<p>TCP works on the Transport layer where the data in specific format comming from application layer(sender side) is transmitted to the receiver side. <strong>HTTP never sends the data, its just format the data. TCP will transmit the data further.</strong></p>
<hr />
<h2 id="heading-conclusion">Conclusion</h2>
<p>Understanding TCP and UDP, and how HTTP is different from them.</p>
]]></content:encoded></item><item><title><![CDATA[TCP Working: 3-Way Handshake & Reliable Communication]]></title><description><![CDATA[Let’s understand one by one ….

What is TCP and why it is needed?

Problems TCP is designed to solve.

What is the TCP 3-Way Handshake?

Step-by-step working of SYN, SYN-ACK, and ACK.

How data transfer works in TCP?

How TCP ensures reliability, ord...]]></description><link>https://blog.meetabhinav.com/tcp-working</link><guid isPermaLink="true">https://blog.meetabhinav.com/tcp-working</guid><category><![CDATA[ChaiCode]]></category><category><![CDATA[TCP]]></category><dc:creator><![CDATA[Abhinav]]></dc:creator><pubDate>Sat, 24 Jan 2026 13:01:04 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1769259521314/abf97158-7fe0-49fd-9035-0427b23144cd.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Let’s understand one by one ….</p>
<ul>
<li><p>What is TCP and why it is needed?</p>
</li>
<li><p>Problems TCP is designed to solve.</p>
</li>
<li><p>What is the TCP 3-Way Handshake?</p>
</li>
<li><p>Step-by-step working of SYN, SYN-ACK, and ACK.</p>
</li>
<li><p>How data transfer works in TCP?</p>
</li>
<li><p>How TCP ensures reliability, order, and correctness?</p>
</li>
<li><p>How a TCP connection is closed?</p>
</li>
</ul>
<hr />
<p>Before jumping directly into the TCP let’s understand how a computer communicate with other computers. For example we humans communicate with each other in a common language which can be Hindi , English , Bhojpuri, Maithili etc.</p>
<p>In computers, language can be UNICODE or ASCII. And let’s suppose two computers are there and they can understand different language. so, how to make them communicate with each other? There must be some conversion mechanism or rules to make it understandable to every devices/machines. So that’s called as PROTOCOLs in computer science, and TCP/IP is one of such protocols.</p>
<h2 id="heading-what-is-tcp-and-why-it-is-needed">What is TCP and why it is needed?</h2>
<p>TCP stands for Transmission Control Protocol is a foundational, connection oriented networking protocol that ensures the reliable,ordered and error-checked delivery data between applications through the Internet.</p>
<p>It is needed because it comes with guarantee of transmitting the data with a variety of functions like <strong>relaiblity,error checking, ordering , flow control, congestion control</strong> and <strong>re-transmission</strong> in case of error or courupt file. we will see the meaning of these terms in next section of problems TCP is designed to solve.</p>
<hr />
<h2 id="heading-problems-tcp-is-designed-to-solve">Problems TCP is designed to solve</h2>
<p><strong>Its helps to solve fundamental networking issue like data loss or packet loss, network congestion, out of order delivery and overwhelmed of reciver.</strong></p>
<p><strong>Reliabllity:</strong> Ensures that the data arrives at the recivers by checking the sequencing number and if data lost than re-transmit the data again.</p>
<p><strong>Out of order/Ordering:</strong> By dividing the data into packets, it is transmitted to the receiver. At the receiver's end, the packets are rearranged in their original order to recreate the same data that the sender sent.</p>
<p><strong>Error checking/Data corruption: TCP use checksum to verify the data is not altered or corrupted during transmission.</strong></p>
<p><strong>Network Congestion: TCP pick the best and least traffic route to transfer the data so that the traffic or we can say overloading is reduced which sometimes cause slow transmission of the data.</strong></p>
<p><strong>Control Flow: TCP use this to manage the flow of data to remove the overwhelmed situation of slow receiver.</strong></p>
<hr />
<h2 id="heading-what-is-tcp-3-way-handshake">What is TCP 3-Way Handshake?</h2>
<p>As we know <strong>TCP is a connection oriented protocol</strong>, which mean before sending any data we need to first build the connection between server(receiver) and the client(sender).</p>
<p>Lets understand the concept of 3 Way handshake with the help of a diagram…</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1769256683292/8fca84cb-3a35-43e5-8855-3e25935ced36.png" alt class="image--center mx-auto" /></p>
<p>We can see here in picture what is actually happening step-by-step, It’s called building the connection.</p>
<ul>
<li><p>SYN(Synchronise) : First client will send a request to server to start the connection.</p>
</li>
<li><p>SYN-ACK(Synchronise - Acknowledgment) : Server will reply the client with ACK single.</p>
</li>
<li><p>ACK(Acknowlegment) : Client will acknowlege that again and then send it to server, I am ready to send data.</p>
</li>
</ul>
<hr />
<h2 id="heading-how-data-transfer-works-in-tcp">How Data Transfer works in TCP?</h2>
<p><strong>Segmentation and Sequencing:</strong> First the data from client gets divided into small data packets and each packet is assigned a order sequence number which helps the receiver to rearrange them into original order.</p>
<p><strong>Acknowlegment:</strong> Its ACK bit or flag which is sent by receiver to inform that the data packet is received if ACK missed or not revceived by the sender after certain time interval, it is marked as lost or corrupt. In that case sender retransmit the data.</p>
<p><strong>Full-Duplex Communication:</strong> Once the connection is stablished between sender and the receiver it become full duplex which means now sending and receiving the data is done simountaneously.</p>
<p><strong>Flow Control: TCP also keep eye on the flow or we can say speed of transmission to prevent the</strong> overwhelming of the server.</p>
<hr />
<h2 id="heading-how-tcp-ensures-reliability-order-and-correctness">How TCP ensures reliability, order and correctness?</h2>
<p>TCP manage all this by utilising the connection oriented approach, checksums, acknowlegment , sequence number, network congestion and flow control.</p>
<p>Reliability (Guarantee of delivery) , Flow Control (prevent Overwhlem of server) , Ordered delivery ( correct sequence).</p>
<hr />
<h2 id="heading-how-a-tcp-connection-is-closed">How a TCP connection is closed?</h2>
<p>A TCP connection is closed by 4-way handshake process.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1769258558233/c635c674-abc5-4f7a-aadd-5501432b909e.png" alt class="image--center mx-auto" /></p>
<p>As we can see here first client will send the information about the end of data to the server , server will acknowlege that and than it send all remaining data that is left for the previous request of the sender/client. and at last sender will acknowlege that and finally connection is closed until the client reopens it by sending another request ie, searching something on web again.</p>
<ul>
<li><p>FIN(Client to Server) : Sender will send this to server. it mean i am done i have no more data left to send.</p>
</li>
<li><p>ACK(Server to Client) : Receiver acknowlege that and send this signal before stoping the further transmission from receiver end to sender end.</p>
</li>
<li><p>FIN((Server to Client again): Server transfered all remaining data after ACK signal and then send final FIN to asure the client that no more data left to transmit(I am done).</p>
</li>
<li><p>ACK(Client to Server): Finally client will respond to the server FIN by ACK that yup i got you. and finally connection gets closed.</p>
</li>
</ul>
<hr />
<h2 id="heading-conclusion">Conclusion</h2>
<p>TCP is smart but slow, because it know how to manage everything but due to this it takes longer time to transfer the data form sender to receiver because most of the time gone for verifying and analysing the data.</p>
]]></content:encoded></item><item><title><![CDATA[Understanding Network Devices]]></title><description><![CDATA[We will see what is a network devices, how it actually works. and at last we will see how they are connected with each other.
Devices that we are going to cover here….

Modem

Router

Hub

Switch

Firewall

Load Balancer



MODEM
Modem word is made u...]]></description><link>https://blog.meetabhinav.com/understanding-network-devices</link><guid isPermaLink="true">https://blog.meetabhinav.com/understanding-network-devices</guid><dc:creator><![CDATA[Abhinav]]></dc:creator><pubDate>Wed, 21 Jan 2026 08:34:51 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1768984278060/4e120a23-a371-46aa-a70d-03727d99d247.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>We will see what is a network devices, how it actually works. and at last we will see how they are connected with each other.</p>
<h2 id="heading-devices-that-we-are-going-to-cover-here">Devices that we are going to cover here….</h2>
<ul>
<li><p>Modem</p>
</li>
<li><p>Router</p>
</li>
<li><p>Hub</p>
</li>
<li><p>Switch</p>
</li>
<li><p>Firewall</p>
</li>
<li><p>Load Balancer</p>
</li>
</ul>
<hr />
<h2 id="heading-modem">MODEM</h2>
<p>Modem word is made up from two words “MO” mean <strong>modulate</strong> and “DEM” mean <strong>demodulate</strong>. What do we mean by modulating and demodulating?</p>
<p>We all know that the computers only knows two numbers 0 and 1 which we call “Binary”. But the signals that we recieve form the internet mostly provided by you ISP(Internet Service Provider, Airter,jio etc) are in the analog data. So, to convert into binary we have to de-modulate them. And similarly when my computer want to send some data to the Internet, modem will modulate the binary data into the analog data for the transmission over wires and cables.</p>
<p>In other words we can say <strong>Modem will allow you to access the internet directly by creating a WAN</strong> (Wide Area Network ie home, office, etc) <strong>which contains a unique public IP</strong>. Lets See the diagram below to understand more better.</p>
<p>MODEM actually acts as a bridge for the router by connecting through a single Ethernet cable. We will see in Router section next.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1768970565911/0d4b5246-f595-4cf5-b753-ae4216508690.png" alt class="image--center mx-auto" /></p>
<p>Connected Device Circle represents Your WAN that your ISP has establish by connecting the cable into your MODEM,and make sure to purchase a internet plan from the ISP because establishing connection is not that you are using the internet😂.</p>
<hr />
<h2 id="heading-router">ROUTER</h2>
<p>It is also a Networking Device which allow you to make a <strong>LAN(Local Area Network)</strong> within a WAN, to connect multiple devices such as your phone,computer,tablet etc. It is connected through MODEM using an Ethernet cable.</p>
<p>The main function of the router is to <strong>act as a traffic cop which directs your data to destined IP address</strong> by exploring the best efficient way possible. Basically <strong>it divides your data into small packets and each packet have a header of destined IP</strong>. Each packets then go to next router which is under the ISP or INTERNET environment and gets directed to next router and this process keep on going to find the best efficient path and once it finds the path it will than send back to your device from where your have started to send data and all this happen within mili,nano seconds. ie, your search google.com on your device and in just blink of your eye you see the webpage of google.</p>
<p>One important ability of the Router is that it allows multiple device to share one public IP Address, which is know as <strong>NAT(Network Address Translation)</strong>. But one cache is that <strong>Modem IP is actually PUBLIC IP</strong> that your ISP provided to you and it can be seen by the world. <strong>But your router IP is given by your Modem WAN’s IP so it looks like pubic but actually its a private IP</strong>.</p>
<p><strong>Router is just so smart</strong> that it just swap the private IP with the Modem public IP which sending the data into the internet and when it gets the response, again NAT it and send to the Private IP of the device from where the request was done.🧐<strong>Noiccccee!!!!</strong></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1768973507924/aa9bbe3f-3f7a-455d-8ca1-a4bd6d4e233e.png" alt class="image--center mx-auto" /></p>
<hr />
<h2 id="heading-hub">HUB</h2>
<p>Hub is a Networking Device used to connect multiple devices within a LAN(Local Area Network). Its works as broadcast technique. For example, a device transfer file to other device, than it just broadcast(send to all device connected to HUB). It works on Physical Layer (Layer 1) with a single collision domain(Half-duplex) which sometime laid to collision of response and request and network congestion occurs(<strong><em>a network is overloaded with more data traffic than its capacity can handle, causing a slowdown</em>)</strong>. HUB also main concern is about the security, and nowadays HUB gets replaced by SWITCH because they are more intelligent then HUB.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1768976855460/43d273a4-d4d3-44d2-aea7-5e70170d98ef.png" alt class="image--center mx-auto" /></p>
<p>We can see that privacy concers are already coming in the picture, also we are using the bandwidth for the broadcasting on all devices. So, these are the problems that we generally face while using the HUB.</p>
<hr />
<h2 id="heading-switch">SWITCH</h2>
<p>Switch is an intelligent networking device which has a MAC address table and port data, which helps to identify the intended device address. It doesn’t broadcast the data it just send the data on destined location which helps us to optimise the use of bandwidth. Switch operates on DATA LINK LAYER which is faster and less congested communication.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1768977549562/fe6c5206-a947-40bf-b4b8-296e971f4946.png" alt class="image--center mx-auto" /></p>
<p>Removes the Privacy concerns, less congestion on network. This is why we replace the HUB with SWITCH nowadays.</p>
<hr />
<h2 id="heading-firewall">FIREWALL</h2>
<p>Firewall is a network security software,hardware or cloud based which act as a barrier between your trusted network or private network(home,office etc) and untrusted network or public network(internet) to help filtering the data traffic coming out and going traffic based on a predefined set of security rules to prevent unauthorised access and malicious attacks. The network administrator has a firewall access control list which is editable and helps to find the unauthorised access or attacks into the firewall.</p>
<p><strong>The firewall rules are based on many things such as keywords, ports, IP address, domain names, Protocols etc.</strong> There are two types of firewall….</p>
<ol>
<li><p>HOST BASED FIREWALL</p>
<p> This is for private or indivisual protection only. Let’s see in diagram below.</p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1768980035824/58960940-52d1-43e6-97f6-b51ef0eec88f.png" alt class="image--center mx-auto" /></p>
</li>
<li><p>Network BASED FIREWALL</p>
<p> This is mostly used to protect a whole network or a big organisation.</p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1768980921002/4a667bc0-8154-4ebd-986a-d7f6ebf9c0ef.png" alt class="image--center mx-auto" /></p>
<p> Big organisation and firm prefer to use Host based and network based firewall together because incase some unauthorised access gets penitrated from network based firewall than it must be stopped or detacted somewhere otherwise all device within that network is under malicious attacks. Check diagram below.</p>
</li>
</ol>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1768980808187/d17b8be3-f464-4b57-8bbe-8d91e0e050dc.png" alt class="image--center mx-auto" /></p>
<hr />
<h2 id="heading-load-balancer">LOAD BALANCER</h2>
<p>Load balancer is a network device which act as a traffic cop sitting in front of a <strong>server farm</strong>(an area where numbers of server are present). It distribute the incoming traffic into various servers to protect a single server from over loading , overwhelmed and helps to scale the application and higher availability.</p>
<p>For example you are running an application with your machine and day by day you application’s user keep on increasing so you need to upgrade your machine but you can do this for a certain limit only because it’s not possible to handle all the traffic from a single machine its gets hotter and slower (<strong>This is know as vertical scalling</strong>) whereas if we buy multiple machine in place of a single huge machine than i can distribute the traffics on each machine which will helps us in reducing the server load on one machine and many more(<strong>This is know as horizontal scalling</strong>). So, we generally do horizontal scalling.</p>
<p>Now question is how we distribute the traffics? We have several algorithms to distribute the traffics some of them are explained below.</p>
<ul>
<li>ROUND-ROBIN</li>
</ul>
<p>Its just distribute the data request to each server that are present one by one and then.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1768982708293/0c479da3-0241-4e26-8afc-7b36e7a286dc.png" alt class="image--center mx-auto" /></p>
<ul>
<li>GEO BASED</li>
</ul>
<p>This is like users requests directed to the respective user’s nearby server locations. For example. User traffic from INDIA are directed to indian servers, while some User traffic from Canada are directed towards the canadian server. <strong>But the drawbacks</strong> <strong>of this</strong> is in case the canadian server is handleing lower traffics and indian server is facing higher traffics than <strong>we can’t direct the indian user traffics to the canadian servers for distribution.</strong></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1768983286718/3dd93ab2-7481-4c2f-a833-1b60f7e72cf3.png" alt class="image--center mx-auto" /></p>
<ul>
<li>Least Connection</li>
</ul>
<p>This works on simple means if a server has lower traffics than the user’s data request is directed to less crowded servers.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1768983576891/22e9b4d3-5d10-4904-abae-ca3e637da677.png" alt class="image--center mx-auto" /></p>
<h2 id="heading-conclusion">Conclusion</h2>
<p>Learning the Network devices is fun and now i understand various new terms and happy for writing this blog for myself. <strong>The cover image of this blog will show you how all these devices are interconneted to each other.</strong></p>
]]></content:encoded></item></channel></rss>