<?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[Web Dev 2026]]></title><description><![CDATA[Web Dev 2026]]></description><link>https://blog.yogeshkumar.site</link><generator>RSS for Node</generator><lastBuildDate>Fri, 24 Apr 2026 16:48:20 GMT</lastBuildDate><atom:link href="https://blog.yogeshkumar.site/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Emmet for HTML]]></title><description><![CDATA[Typing HTML is hard. There is a starting tag, a closing tag, and there are attributes to play with. What if there is a way to type or write HTML faster? There comes EMMET integrated in most code editors by default, or you can integrate it with just t...]]></description><link>https://blog.yogeshkumar.site/emmet-for-html</link><guid isPermaLink="true">https://blog.yogeshkumar.site/emmet-for-html</guid><category><![CDATA[ChaiCode]]></category><category><![CDATA[HTML]]></category><category><![CDATA[Emmet]]></category><category><![CDATA[chaicode webdev cohort 2026]]></category><dc:creator><![CDATA[Yogesh Kumar]]></dc:creator><pubDate>Sun, 01 Feb 2026 14:02:51 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1769953862323/cb72f391-b6ac-4918-a254-4f3233179ac4.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Typing HTML is hard. There is a starting tag, a closing tag, and there are attributes to play with. What if there is a way to type or write HTML faster? There comes EMMET integrated in most code editors by default, or you can integrate it with just the installation of an extension.</p>
<p>HTML helps type faster, visualise the structure, reduce errors and save time.</p>
<p>To use, you just type the first letter for the HTML elements, then hit tab to select and hit enter to print it out in the code editor.</p>
<pre><code class="lang-plaintext">div → &lt;div&gt;&lt;/div&gt;
p → &lt;p&gt;&lt;/p&gt;
h1 → &lt;h1&gt;&lt;/h1&gt;
</code></pre>
<p>The most used emmet abbreviation is <code>!</code> for creation of the boilerplate code of the HTML5 document, we hit tab to make the basic changes right after the bul&gt;li*3 →</p>
<ul>
<li>oilerplate code is generated, as we hit enter and the typing cursor moves ahead.</li>
</ul>
<pre><code class="lang-plaintext">! → (press Tab)
</code></pre>
<pre><code class="lang-plaintext">&lt;!DOCTYPE html&gt;
&lt;html lang="en"&gt;
&lt;head&gt;
    &lt;meta charset="UTF-8"&gt;
    &lt;meta name="viewport" content="width=device-width, initial-scale=1.0"&gt;
    &lt;title&gt;Document&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;

&lt;/body&gt;
&lt;/html&gt;
</code></pre>
<h3 id="heading-ulgtli3">ul&gt;li*3 →</h3>
<ul>
<li>Classes, IDs and attributes</li>
</ul>
<pre><code class="lang-plaintext">.container → &lt;div class="container"&gt;&lt;/div&gt;
#header → &lt;div id="header"&gt;&lt;/div&gt;
p.intro → &lt;p class="intro"&gt;&lt;/p&gt;
button#submit → &lt;button id="submit"&gt;&lt;/button&gt;
</code></pre>
<h3 id="heading-creating-nested-elements">Creating nested elements</h3>
<pre><code class="lang-plaintext">nav&gt;ul&gt;li → 

&lt;nav&gt;
  &lt;ul&gt;
    &lt;li&gt;&lt;/li&gt;
  &lt;/ul&gt;
&lt;/nav&gt;
</code></pre>
<h3 id="heading-repeating-elements-using-multiplication">Repeating elements using multiplication</h3>
<pre><code class="lang-plaintext">ul&gt;li*3 → 

&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>
<p>This is emmet for you. See you on the internet!</p>
]]></content:encoded></item><item><title><![CDATA[CSS Selectors 101]]></title><description><![CDATA[CSS selectors are needed to callout the specific selectors while styling the webpage when we are not using inline style and styling with a style tag in the head or using an external page.
Element Sele]]></description><link>https://blog.yogeshkumar.site/css-selectors-101</link><guid isPermaLink="true">https://blog.yogeshkumar.site/css-selectors-101</guid><category><![CDATA[ChaiCode]]></category><category><![CDATA[chaicode webdev cohort 2026]]></category><category><![CDATA[CSS]]></category><category><![CDATA[css selectors]]></category><dc:creator><![CDATA[Yogesh Kumar]]></dc:creator><pubDate>Sun, 01 Feb 2026 13:49:19 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/6JVlSdgMacE/upload/d938d116084aa9ab46a990535d3da84f.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>CSS selectors are needed to callout the specific selectors while styling the webpage when we are not using inline style and styling with a style tag in the head or using an external page.</p>
<p>Element Selector: It selects the HTML elements by their name.</p>
<p>ID Selector: It selects the HTML elements by their id and it’s unique for an element in the whole webpage. The symbol used is <code>#id-name</code> followed by the id-name.</p>
<p>Class Selector: It selects the HTML elements by their class. Many HTML elements can belong to the same class. The symbol used here is <code>.class-name</code></p>
<p>Group selectors: It selects the group of HTML elements together. The way to select them is by writing the HTML element names, separated by commas. <code>h1, h2</code>.</p>
<p>When there are so many selector how is the priority of the selector decided so that there is an order in which they dominate over other selectors? This is called specificity of style in CSS.</p>
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1769953473006/f79f8ff1-d22f-4f6a-b8ce-e5d3ad2d5ab4.png" alt="" style="display:block;margin:0 auto" />

<p>There is also a specific order of the css as well, depending on where you are targeting the HTML elements.</p>
<p>Let's understand the css selectors in detail:</p>
<p>the tree like structure of the HTML code when laid out on the web page</p>
<p>In the tree structure, there is a hierarchy that exists.</p>
<ol>
<li><p>The top element is called the parent element</p>
</li>
<li><p>The direct descendants of that element are called the child elements</p>
</li>
<li><p>all the other second-level and other lower-level descendants are called relatives, as we can’t keep calling sub-child and sub—sub—sub—sub -child</p>
</li>
<li><p>The two elements at the same level are called the siblings</p>
</li>
</ol>
<p><em>1. Universal Selector</em></p>
<pre><code class="language-css">      /* selects all the elements on the webpage */
      * {
        margin: 0;
        padding: 0;
        box-sizing: border-box;
      }
</code></pre>
<ol>
<li><p>Type Selector</p>
<ol>
<li><em>helps you select the specific type of element on the webpage</em></li>
</ol>
<pre><code class="language-css"> p {
        font-size: 20px;
    }
</code></pre>
</li>
<li><p>Class Selectors</p>
<ol>
<li><p>How to target the specific class of elements</p>
<ol>
<li>Just put a dot before its name in the css</li>
</ol>
</li>
</ol>
</li>
</ol>
<pre><code class="language-css">      .highlight {
        background-color: #73dff3;
      }
</code></pre>
<ol>
<li><p>Id Selector</p>
<ol>
<li>According to the norm, you should have one unique id on one webpage</li>
</ol>
</li>
</ol>
<pre><code class="language-css">      #header {
        background-color: #333fff;
        color: white;
      }
</code></pre>
<p><em>To maintain the consistency of the colors we use hash codes for the colours so that different browsers don't render different colours for different colour names according to them.</em></p>
<ol>
<li><p>Attribute Selector</p>
<ol>
<li>to select the specific attribute of the element</li>
</ol>
</li>
</ol>
<p>the name of the element and the square bracket to select the name of the attribute and its type</p>
<pre><code class="language-css">      input[type="text"] {
        border: 1px solid #73dff3;
      }
</code></pre>
<ol>
<li><p>Descendant Selector</p>
<ol>
<li>to select the descendants of the elements</li>
</ol>
</li>
</ol>
<p>There is space between the read them from right to left</p>
<pre><code class="language-css">      article p {
        font-style: italic;
        background-color: #333fff;
        color: #fff;
        padding: 2px;
      }
</code></pre>
<ol>
<li><p>Child Selector</p>
<ol>
<li>The way to directly select the child of an element</li>
</ol>
</li>
</ol>
<p>the <strong>&gt;</strong> greater than symbol is used</p>
<pre><code class="language-css">div &gt; p{
        background-color: #b73a3a;
        }
</code></pre>
<p>This sometimes overwrites the css selection patterns into other elements, so it is better touse classes</p>
<ol>
<li><p>Adjacent sibling selector</p>
<ol>
<li>The sibling selector, which is the nearest to the element</li>
</ol>
</li>
</ol>
<p>it uses the + symbol</p>
<pre><code class="language-css">h1 + p {
        font-family: "Courier New", Courier, monospace;
      }
</code></pre>
<ol>
<li><p>General Sibling Selector</p>
<ol>
<li>How to select the siblings in general</li>
</ol>
</li>
</ol>
<p>it uses the ~ ****(tilde) symbol</p>
<pre><code class="language-css">h2 ~ p {
        background-color: blueviolet;
        color: white;
      }
</code></pre>
<ol>
<li><p>Pseudo Class Selector</p>
</li>
<li><p>certain classes that exist based on certain events of certain elements</p>
</li>
</ol>
<p>pseudo class is attached by a colon (:) to the element name</p>
<pre><code class="language-css">      a:hover {
        background-color: orange;
        text-decoration: none;
        padding: 2px;
        margin: 6px;
        color: white;
      }
</code></pre>
<ol>
<li><p>Pseudo Element Selector</p>
</li>
<li><p>The element selected is selected based on its specified existence</p>
</li>
</ol>
<p>double colons (::) are used</p>
<pre><code class="language-css">      p::first-letter{
        font-weight: bold;
        font-style: italic;
        font-size: x-large;
      }
</code></pre>
<ol>
<li><p>Grouping Selector</p>
</li>
<li><p>The way to select elements in a group</p>
</li>
</ol>
<p>elements are separated by commas</p>
<pre><code class="language-css">      h1, h2, h3 {
        color: green;
      }
</code></pre>
<p>Adios!</p>
]]></content:encoded></item><item><title><![CDATA[Understanding HTML Tags and Elements]]></title><description><![CDATA[HTML is Hyper Text Markup Language. Let’s break it down.

Hyper Text: the text is not normal; it makes something happen.

Markup: It has a certain way of writing it.


HTML tags are the way we write HTML forthe creation of web pages on the internet. ...]]></description><link>https://blog.yogeshkumar.site/understanding-html-tags-and-elements</link><guid isPermaLink="true">https://blog.yogeshkumar.site/understanding-html-tags-and-elements</guid><category><![CDATA[HTML5]]></category><category><![CDATA[ChaiCode]]></category><dc:creator><![CDATA[Yogesh Kumar]]></dc:creator><pubDate>Sun, 01 Feb 2026 13:30:05 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/p9OkL4yW3C8/upload/cb2beaacaa4bc25795c429071dc88440.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>HTML is Hyper Text Markup Language. Let’s break it down.</p>
<ul>
<li><p>Hyper Text: the text is not normal; it makes something happen.</p>
</li>
<li><p>Markup: It has a certain way of writing it.</p>
</li>
</ul>
<p>HTML tags are the way we write HTML forthe creation of web pages on the internet. The default page of any website is index.html standardised by the World Wide Web Consortium.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1769951685094/8ebd2bdc-427b-4583-a63b-3e1928b90ceb.png" alt class="image--center mx-auto" /></p>
<p>That’s how an HTML element usually looks. It is made up of the start tag, content and end tag.</p>
<p>However, there are exceptions to this normal HTML element format called <strong>Self-closing</strong>; those that don’t require a closing tag. like <code>&lt;img&gt;</code>, <code>&lt;a&gt;</code> and many more.</p>
<p>The elements take up the space of the web page, thus there is a differentation in them. Like,</p>
<ol>
<li><p>Block-Level Elements: The elements that don’t take the full width of the webpage by default. eg: <code>&lt;a&gt;</code>, <code>&lt;div&gt;</code> , etc..</p>
</li>
<li><p>Inline elements: The elements that take the full width of the webpage by default. eg: <code>&lt;p&gt;</code> , <code>&lt;h1&gt;</code> , etc..</p>
</li>
</ol>
<p>There are many HTML tags, but the common ones are</p>
<ol>
<li><p>Headings (h1-h6), paragraph (p), span (span),</p>
</li>
<li><p>Containers <code>div</code>, <code>header</code>, <code>footer</code>, <code>main</code></p>
</li>
<li><p>Links <code>a</code>, Images <code>img</code></p>
</li>
<li><p>Table <code>table</code>, <code>th</code>, <code>thead</code>, <code>tbody</code>, <code>td</code></p>
</li>
<li><p>Forms <code>form</code>, <code>input</code>, <code>label</code>, <code>button</code>, <code>select</code>, <code>textarea</code></p>
</li>
<li><p>Semantic <code>nav</code>, <code>aside</code>, <code>figure</code></p>
</li>
</ol>
<p>More on HTML, maybe another day.</p>
]]></content:encoded></item><item><title><![CDATA[How a Browser Works]]></title><description><![CDATA[Everyone knows that we use a browser to open websites. But is that it? How is it capable enough to open a website in milliseconds within the blink of an eye?
I have deployed my website on vercel and it could be that their servers are located in anoth...]]></description><link>https://blog.yogeshkumar.site/how-a-browser-works</link><guid isPermaLink="true">https://blog.yogeshkumar.site/how-a-browser-works</guid><category><![CDATA[browser]]></category><category><![CDATA[ChaiCode]]></category><dc:creator><![CDATA[Yogesh Kumar]]></dc:creator><pubDate>Sun, 01 Feb 2026 13:02:17 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/QHfqIuFevXQ/upload/962ad1196094d9602fe1bf02ed0d0fbd.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Everyone knows that we use a browser to open websites. But is that it? How is it capable enough to open a website in milliseconds within the blink of an eye?</p>
<p>I have deployed my website on vercel and it could be that their servers are located in another part of the world. How does the browser bring that data and just puff!! The website appears in front of me. The code is translated into a website so easily.</p>
<p>What is happening in the background? Let’s try to understand.</p>
<ol>
<li><p>First, it brought the website.</p>
</li>
<li><p>Understood it.</p>
</li>
<li><p>Made it appear on the tab.</p>
</li>
<li><p>help us interact with it. (that’s a topic for another article)</p>
</li>
</ol>
<p>Technically,</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1769943622306/fc0b1713-ab5b-4e43-b322-ad29a46c7bb1.png" alt class="image--center mx-auto" /></p>
<p>Let’s see what’s in front when talking about browsers.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1769948207199/eb75e093-6762-46c9-843e-084b5e4585f0.png" alt class="image--center mx-auto" /></p>
<p>When we type the url in the browser, the user interface takes care of that further handled by the browser engine and which initiates working at the networking level. Once the code is brought, the render engine handles everything for the HTML, CSS, and their display on the website, with the process of figuring out the layout and paint and if there is JS in the code, the JS engine takes care of that, and any storage is dealt within storage on the browser with the help of the disk api’s.</p>
<p>Terms that can be confusing here are</p>
<h3 id="heading-browser-engine-vs-render-engine">Browser Engine vs Render Engine</h3>
<p>Browser Engine is the lead of the other engines and works with ui to help the browser function, such as managing tabs and all other tasks in the browser.<br />eg: Blink for Chrome and WebKit for Safari and Chrome on Apple Devices</p>
<p>Render Engine is the main worker here that understands the raw code and creates the displayable content from it for the screen pixel by pixel.<br />eg: Chromium for chrome and gecko for firefox.</p>
<p>The task of the render engine seems more complex than it looks. So how does he do that?</p>
<ol>
<li><p>HTML Parser: The HTML parser(unconventional) turns the HTML syntax into the Document Object Model (DOM) tree.</p>
</li>
<li><p>CSS Parser: It creates the CSS object model for the whole HTML.</p>
</li>
</ol>
<p>Once the parsing is done, the DOM and CSSOM are combined to create the Render Tree in the Content Sink for the visualisation on the screen.</p>
<p>How is the render understood by the browser? The engine creates the layout first of the screen, placing elements on the screen using a process called reflow.</p>
<p>And then the painting of the elements is done with colours and details, like adding makeup to the elements on the screen.</p>
<p>Everything is picturized on the screen layer by layer for the display.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1769950845300/d98a5072-f4c6-441e-8c36-5721dd451677.png" alt class="image--center mx-auto" /></p>
<p>That’s how the browser works from a higher level. Everything is an article in itself.</p>
<blockquote>
<p>You truly understand a browser when you make one. ~Hitesh Sir</p>
</blockquote>
]]></content:encoded></item><item><title><![CDATA[TCP Working: 3-Way Handshake & Reliable Communication]]></title><description><![CDATA[Even though there is a firewall at the router level, the network can be compromised at any level. So every layer of communication needs its own reliability and integrity, so that one does not infiltrate the other borderlines and get the data and exec...]]></description><link>https://blog.yogeshkumar.site/tcp-working-3-way-handshake-and-reliable-communication</link><guid isPermaLink="true">https://blog.yogeshkumar.site/tcp-working-3-way-handshake-and-reliable-communication</guid><category><![CDATA[TCP]]></category><category><![CDATA[three way handshake]]></category><category><![CDATA[ChaiCode]]></category><category><![CDATA[Chaiaurcode]]></category><dc:creator><![CDATA[Yogesh Kumar]]></dc:creator><pubDate>Sun, 01 Feb 2026 10:41:27 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1769942423603/588e1cae-7052-463e-b6e7-4e5524cfd906.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Even though there is a firewall at the router level, the network can be compromised at any level. So every layer of communication needs its own reliability and integrity, so that one does not infiltrate the other borderlines and get the data and execute any action they want to perform.</p>
<p>As mentioned in the TCP vs udp article <a target="_blank" href="https://blog.yogeshkumar.site/tcp-vs-udp">https://blog.yogeshkumar.site/tcp-vs-udp</a>, TCP is reliable, not only because of the retransmission in the transport, but also because there is reliability and integrity that is required when communicating with the server to which the data is requested.</p>
<p>But how does the secure connection happen? will be explored in this article.</p>
<p>As we already know, the internet is a network of networks, so to ensure the data is sent to be received by the correct server or client, it has to be ensured that once we find that this is the system we want to communicate with, and whether it is willing to communicate with the client.</p>
<p>Once I know (I mean, my browser knows) that my <a target="_blank" href="http://blog.yogeshkumar.site">blog</a> is hosted on Hashnode. network through DNS lookup, and the GET request to the server is sent, and before that, the connection between the os and server has to be available and secured to the browser (client).</p>
<p>This happens in a series of exchanges of messages called SYN→SYN-ACK→ACK exchange of data packets called the three-way handshake, for the availability of the connection, the integrity of the connection, and for the communication.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1769859427197/025f1716-7701-4962-a7db-292b3f88e71b.png" alt class="image--center mx-auto" /></p>
<p>Initial Sequence Numbers (ISN) are used to track every byte of data sent over TCP. Similarly, the server sends the Acknowledgement Number in the packet as well.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1769936271979/cb9986ae-4fc6-4026-b0eb-1c5330e570db.png" alt /></p>
<ol>
<li><p>Client sends a Synchronised (SYN) request, called a SYN packet, to the server to check the availability of the port for communication and access to the server.</p>
</li>
<li><p>The server sends back the acceptance message, called a SYN-ACK (Acknowledgement) packet, back to the client that yes i am available and willing to communicate, and your access has been justified.</p>
</li>
<li><p>The client then sends the acknowledgement ACK packet that I have received your SYN-ACK packet for confirmation.</p>
</li>
</ol>
<blockquote>
<p>This is the ideal case scenario where this happens when everything is fine; otherwise, it can be interrupted at any point and closed.</p>
</blockquote>
<p>What is the packet that the client and server sends among each other? The sequence of randomly generated numbers is used to track the data sent and received in the connection for verification and reliability of the connection.</p>
<p>Sequence Numbers (Seq) are used to track every byte of data sent over TCP. Similarly, the server sends the Acknowledgement Number in the packet as well.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1769938671619/8138fbc6-520b-434d-8303-271414eff480.png" alt class="image--center mx-auto" /></p>
<p>But how do these numbers make it reliable?</p>
<p>If the client sends the data and does not receive the acknowledgement, it resends the data, which means upon loss, the data is retransmitted.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1769939564090/a6a23b7c-dbda-42a2-a5cb-186bb5d8e902.png" alt class="image--center mx-auto" /></p>
<p>If there is a loss of order during transmission, the server receives them in the wrong order and tries to re-order them using sequence numbers itself, and while it does that, it buffers.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1769940734241/b93b2e50-a8e5-4826-ad5e-ef3201a86a7b.png" alt class="image--center mx-auto" /></p>
<p>When there is corruption of data in the middle and reciever recieves the corrupted data, there is a verification using the sequence numbers called checksum verification that triggers the retransmission.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1769940891389/adb0e0b8-eeed-464a-b8e1-a3922caecb08.png" alt class="image--center mx-auto" /></p>
<p>Thus making it reliable.</p>
<p>If it is that reliable, it should be closed with grace as well; the connection remains open forever.</p>
<p>The application triggers the closure of the TCP socket connection by sending a FIN packet, and the server acknowledges that by sending the ACK packet. Then the server sends the FIN, ACK packet, and atlast the client sends the ACK packet for the acknowledgement of the closure.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1769942280418/16265769-1214-4328-bde7-168f291054e5.png" alt class="image--center mx-auto" /></p>
<p>I tried to simplify as much as possible, but I believe the closure needs an article of its own. I will link to the article I have researched and understood. See you on the internet!!!</p>
]]></content:encoded></item><item><title><![CDATA[TCP vs UDP]]></title><description><![CDATA[The Internet enables connections between all types of devices all over the world. Does this mean anyone can communicate with anyone on the network? No, right. We need access to that person, be it an email address or some Instagram ID. Similarly, the ...]]></description><link>https://blog.yogeshkumar.site/tcp-vs-udp</link><guid isPermaLink="true">https://blog.yogeshkumar.site/tcp-vs-udp</guid><category><![CDATA[ChaiCode]]></category><category><![CDATA[ChaiCohort]]></category><category><![CDATA[Chaiaurcode]]></category><category><![CDATA[chaicode webdev cohort 2026]]></category><category><![CDATA[TCPvsUDP]]></category><dc:creator><![CDATA[Yogesh Kumar]]></dc:creator><pubDate>Sat, 31 Jan 2026 11:10:02 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1769857103680/8ebe5537-4ac1-4bee-a893-259270a7d88d.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>The Internet enables connections between all types of devices all over the world. Does this mean anyone can communicate with anyone on the network? No, right. We need access to that person, be it an email address or some Instagram ID. Similarly, the one device on the internet can’t communicate with anyother without an IP address, so how does this communicate happens is there any rules to it, because there are limitations we can certainly experience? You can access data on ISRO’s server that is not publicly available.</p>
<p>In the previous article, <a target="_blank" href="https://blog.yogeshkumar.site/understanding-network-devices">https://blog.yogeshkumar.site/understanding-network-devices</a>, I talked about the firewall that is present at the router level that restricts unapproved communication to your devices unless you initiate it. But how does that communication happen within the hardware layer on the transportation level, which lies between the hardware devices? There must be some rules, fancy it “<strong>Protocols</strong>”.</p>
<p>Just like how I can’t access ISRO’s, NASA’s or even my bank servers without specific access and access after requests, and I can access data listed on <a target="_blank" href="http://www.google.com">www.google.com</a>.</p>
<p>From where are these requests processed by the browser? Is there any protocol for the browser means application level as well? There are different tasks performed from the browser, so there must be different protocols as well, like web requests, there is <strong>http</strong> and for email communication, there is Simple Mail Transfer Protocol (<strong>SMTP)</strong> and others. Whatever happens in the browser is further carried down to the transport level.</p>
<pre><code class="lang-plaintext">┌─────────────────┐
│   APPLICATION   │ ← HTTP, HTTPS, SMTP (Your browser/email app)
│      LAYER      │
├─────────────────┤
│    TRANSPORT    │ ← TCP (Reliable Courier) or UDP (Live Broadcast)
│      LAYER      │
├─────────────────┤
│    INTERNET     │ ← IP Addresses (The " addresses")
│      LAYER      │
└─────────────────┘
</code></pre>
<p>There must be two ways of communicate is secure way and other maybe less secure way of communication on these networks. There are Transmission Control Protocol and User Datagram Protocol that reign in the world of transport protocols for communication, especially when we communicate with web servers from a browser. What’s the difference between them? Let’s see.</p>
<h2 id="heading-transmission-control-protocol-tcp">Transmission Control Protocol (TCP)</h2>
<p>Let’s focus on the name, transmission control means the transport of the data packet is controlled, and it treats it as a mission once it is happening to make sure that it is complete.</p>
<p>If there is control, data packets here are ordered, tracked upon transmission for loss and retransmitted, which makes it slow. If there is control in the process, there is a queue for the tasks to happen or for the requests to be processed on the network using this protocol. Thus, makes it reliable. eg, Websites(http/https), file downloads</p>
<h3 id="heading-user-datagram-protocol-udp">User Datagram Protocol (UDP)</h3>
<p>So what is the direct opposite of TCP? Hmm. It is fast, but less reliable, so there must be no connection establishment for the data transfer, hence no ordering, retransmission, loss detection, or congestion control, making it less reliable than TCP for sensitive data. Hence used for video calls and streaming where speed matters.</p>
<p>Comparison makes a clear distinction for the use case in the daily requirements of communication on the transport level. Atlast, there is a difference between the application level protocols like HTTP or https and transport protocols like TCP and UDP.</p>
<p>What goes on between them? The http take the request in text/html format, along with the request type in the headers and other required details, such as who sent and from where the request came from, to the networking part of the browser and the request is handed over to os for the TCP connection through a specific port 80 for HTTP and 443 for https and thus the data packets are sent to the server.</p>
<blockquote>
<p>TCP and HTTP are different portocols operating on different layers of communication.</p>
</blockquote>
<p>What happens next is the story for another article? see ya on the internet…</p>
]]></content:encoded></item><item><title><![CDATA[Understanding Network Devices]]></title><description><![CDATA[The internet is a network of all networks, like a meganetwork. But how do I connect to it? If the internet is just cables, how do I get access to it?
One day, when I felt the mobile internet wasn’t enough, I called an Internet Service Provider (ISP),...]]></description><link>https://blog.yogeshkumar.site/understanding-network-devices</link><guid isPermaLink="true">https://blog.yogeshkumar.site/understanding-network-devices</guid><category><![CDATA[network devices]]></category><category><![CDATA[ChaiCode]]></category><category><![CDATA[Chaiaurcode]]></category><dc:creator><![CDATA[Yogesh Kumar]]></dc:creator><pubDate>Sat, 31 Jan 2026 07:47:24 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/40XgDxBfYXM/upload/cf6cdeafe381ef8a5e2cdb424ed976b3.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>The internet is a network of all networks, like a meganetwork. But how do I connect to it? If the internet is just cables, how do I get access to it?</p>
<p>One day, when I felt the mobile internet wasn’t enough, I called an Internet Service Provider (ISP), mine is Airtel. They patched an optical fibre cable from the nearest pole of the electric wires and internet wires to my home and put a router, as we call it, which supports both ethernet wire and the wireless mode on both 2.4GHz &amp; 5GHz. And I connect to it with WiFi on my mobile device and laptop. Wi-Fi and Internet are not the same; a point to be noted.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1769835553489/70cb8e80-ffbb-469b-becc-e66730075371.png" alt class="image--center mx-auto" /></p>
<p>Actually, what we call it is a router. It is something else. The device is actually a combination of other network devices packaged into one box, designed to work seamlessly without the need for a complex network of devices in the house to establish an internet connection from the city’s network. So what is it then?</p>
<p>The device that contains:</p>
<ol>
<li><p>Optical Network Terminal (ONT): mail collector</p>
</li>
<li><p>Router: mail director at the post office</p>
</li>
<li><p>Switch: in-person delivery person; postman</p>
</li>
<li><p>Wireless Access Point (WAP): the sms system that updates you about the post status</p>
</li>
</ol>
<p>I want this article to be the introduction to the hardware world of the internet, reaching our home or office from the city’s network, Metropolitan Area Network (MAN), from the Internet of the world, Wide Area Network (WAN), with which we create our own Local Area Network (LAN).</p>
<h3 id="heading-optical-network-terminal-ont">Optical Network Terminal (ONT)</h3>
<p>It receives light signals and turns those signals into digital data and vice versa. That’s it. It can be seen when the technichian it establishing the connection. The device that hosts the thin wire is the ONT.</p>
<h3 id="heading-router">Router</h3>
<p>It acts as a traffic controller. It directs the correct route to digital data in the LAN to the devices in the LAN and sends requests to the internet from the LAN. It works with IP Addresses.</p>
<h3 id="heading-switch">Switch</h3>
<p>The panel of ports for wired connection in the special box is called a switch, as it directs data as requested. It works with MAC addresses of the devices.</p>
<h3 id="heading-wireless-access-point-wap">Wireless Access Point (WAP)</h3>
<p>The device that creates a Wi-Fi network to connect wirelessly to the device and to the internet. The two tower-like structures are part of it and easily observable. It uses Wi-Fi communication protocols to communicate.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1769844202497/1bea4ff0-000b-4a3f-ad90-623776e818cf.png" alt class="image--center mx-auto" /></p>
<p>It’s an overview of the small network. But it is scaled horizontally with the replication of the same network to different houses and offices to create a network for the cities and vertically to create a part of the internet in the state and country.</p>
<p>How is the data protected in such a network? Using a firewall. The firewall, as of today, is attached with router. The basic job is to protect someone else and establish a connection in your network.</p>
<p>There were devices that were used before these in the past, like a hub at the place of the switch and a modem at the place of the router.</p>
<h3 id="heading-hub-vs-switch">HUB vs Switch</h3>
<ul>
<li><p>The hub used to send data packets to all the connected devices, so it was slow and less private.</p>
</li>
<li><p>Switch is smart, only sends data packets to the requested device, hence fast and private.</p>
</li>
</ul>
<h3 id="heading-router-vs-modem">Router vs Modem</h3>
<ul>
<li><p>A modem just connects your home's special device to the Internet Service Provider (ISP)</p>
</li>
<li><p>The router connects to the ISP as well as to the other devices in the house.</p>
</li>
</ul>
<p>But when there are so many devices in the network, how do the big data centres process data requests and send back the data so fast without choking or congestion in the network?</p>
<p>Using load balancers. The data centres or the server centres have middle man, like the man who distributes the posts to different postmen for easier, faster distribution of the posts, so the load balancers distribute the traffic on the network to the servers.</p>
<p>That’s a glimpse into the world of the internet connection in a layer of the hardware, with the communication methods they use and how they use them. Now I can tell how the website loads up on the browser when I am connected to the internet and what goes into the hardware. Ciao!</p>
]]></content:encoded></item><item><title><![CDATA[Getting started with cURL]]></title><description><![CDATA[I was introduced to cURL when a senior at the office used it to fetch some data from a url. I noticed it was used with an url and the keyword used was curl itself in the terminal.
A server is a computer that shares information with other computers on...]]></description><link>https://blog.yogeshkumar.site/getting-started-with-curl</link><guid isPermaLink="true">https://blog.yogeshkumar.site/getting-started-with-curl</guid><category><![CDATA[ChaiCode]]></category><category><![CDATA[Chaiaurcode]]></category><category><![CDATA[curl]]></category><dc:creator><![CDATA[Yogesh Kumar]]></dc:creator><pubDate>Wed, 28 Jan 2026 18:36:26 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/MPKQiDpMyqU/upload/560631cee94bc12398837660ca315657.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I was introduced to cURL when <em>a</em> senior at the office used it to fetch some data from a url. I noticed it was used with an <code>url</code> and the keyword used was <code>curl</code> itself in the terminal.</p>
<p>A server is a computer that shares information with other computers on the network. curl can be used to transfer data to and from the server, like a messenger, and it is multi-platform and supports most of the protocols, but for the sake of the article, it supports HTTP and HTTPS.</p>
<p>I saw the curl request when the senior executed it was fast, precise and ran inside the terminal share the response within the terminal. It was faster than going to api-docs, finding the api and then running it.</p>
<p>My first curl request to <code>curl https://wttr.in/gurgaon</code></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1769624187066/c40b5c7a-c1e6-4dcc-bb46-473a88d82bd1.png" alt class="image--center mx-auto" /></p>
<p>The basic flow of the curl request from the terminal and the response from the server after processing the request appropriately within the terminal itself.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1769624629131/9e88527b-6b03-4486-93a3-01f8d8e8d228.png" alt class="image--center mx-auto" /></p>
<p>I can see the response within the terminal without opening any webpage or anything extra, right in front of the terminal, and everything makes sense. What else do I need from a server response? Everything is contained within a single terminal tab. No doubt programmers love it, it is fast, right there without any navigation and simple and easy to read.</p>
<p>It’s just like git once you are used you can’t live without it. It’s a tool for the programmers’ arsenal.</p>
]]></content:encoded></item><item><title><![CDATA[DNS Records]]></title><description><![CDATA[When you type yogeshkumar.site in your browser, how does it know exactly where my website’s servers are located?
The protocol that maps a domain name of the website to its IP Address is called DNS. For more on this, read my previous blog on DNS resol...]]></description><link>https://blog.yogeshkumar.site/dns-records</link><guid isPermaLink="true">https://blog.yogeshkumar.site/dns-records</guid><category><![CDATA[dns]]></category><category><![CDATA[dns-records]]></category><category><![CDATA[DNS Record Types]]></category><category><![CDATA[#dnsrecords]]></category><category><![CDATA[ChaiCode]]></category><category><![CDATA[Chaiaurcode]]></category><category><![CDATA[ChaiCohort]]></category><category><![CDATA[chaicode webdev cohort 2026]]></category><dc:creator><![CDATA[Yogesh Kumar]]></dc:creator><pubDate>Tue, 27 Jan 2026 19:42:46 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/M5tzZtFCOfs/upload/b5a8a7e90d3eff50dd5653363f58ec6a.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>When you type <code>yogeshkumar.site</code> in your browser, how does it know exactly where my website’s servers are located?</p>
<p>The protocol that maps a domain name of the website to its IP Address is called DNS. For more on this, read my previous blog on <a target="_blank" href="https://blog.yogeshkumar.site/dns-resolution">DNS resolution</a>.</p>
<p>In short, Browser → Recursive DNS Resolver → Root Server → TLD Server → Authoritative Server. Simply DNS works like asking for directions in a big Mall, like Ambience Mall.</p>
<p>There can be many phone numbers for an address for different people living at the same address, or different phone numbers for the given address as well, so are the DNS Records for different lines of communication to a singular server on the internet, maybe a business number, a personal number, or you can assume different phone numbers for the different phones.</p>
<p>Different records are used for different purposes; that’s how a delegation for the domain.</p>
<p><strong>NS Record</strong> is the pointer in the DNS that tells where to go next to find the IP address of a particular domain name, while there is a resolution for the DNS query from the recursive DNS resolver. It’s like asking the security in the mall for the floor of the PVR.</p>
<p><strong>A record</strong> stands for the address of the particular domain name means the IP address. It’s like your house number in the whole street and the whole colony for the postman and the address of India.</p>
<p>As different maps on mobile devices use different methods of mapping a location, there are two types of IP addresses as well: A record for IPv4 addresses and AAAA records for IPv6 addresses for the particular domain name in the DNS. AAAA are like a map at the mall, which shows the shop number and floor for the Halidrams in the mall.</p>
<p><strong>CNAME record</strong> stands for the canonical name of the A record, which means an alias. It’s like you have a professional name and a nickname for the home and relatives. And every CNAME points to a domain name.</p>
<p><strong>MX record</strong> is a Mail Exchange record and is required to set up to direct your mail to your mail server. Consider your house as your mail server and your address and mx record for it for you to receive mail or post from the post office. You tell the post office where you can be found, and mail can be stored at this location. It is used for mailing purposes only.</p>
<p><strong>TXT record</strong> stand DNS text record, and it shares a string of text within ““ quotes from the domain administrator. It is like sticky notes on the domain name servers. Today, these are used for the verification of the email spam protection.</p>
<p>If there are so many records and few of them are listed above, how do they work together for a domain name? A record for the IP address of the authoritative name server, NS for the directions to the name server, and MX routes the emails to the mail server of the domain. CName acts as a nickname whenever there is a change in the A/AAAA records and TXT for verification.</p>
<p>In simple terms, if a domain name is your home, then an A record is the address, AAAA is the highly specified addresses with coordinate details, like a name plate, CName is the nickname to your house, like Kumar’s House, and NS is the pointer to the house address, like a corner shopkeeper telling the direction to home. MX is the courier service, and TXT record is the security guard.</p>
<p>Don’t confuse A and CName; one is the actual name, and the other is the nickname. SImilarly for the NS and MX, as the former is for the directions to find the home, and the latter is the actual address for the mail.</p>
<ul>
<li><p>A vs CNAME: One is a direct address, one is a nickname</p>
</li>
<li><p>NS vs MX: One manages DNS info, one manages email</p>
</li>
</ul>
<pre><code class="lang-plaintext">DNS visualised for yogeshkumar.site, 
yogeshkumar.site (Your Digital Home)
├── 🏠 MAIN ENTRANCE (A/AAAA Records)
│   ├── Street Address: 104.21.36.32 &amp; 172.67.184.86
│   └── GPS Coordinates: 2606:4700:3032::6815:2420 &amp; 2606:4700:3035::ac43:b856
│
├── 📚 SPECIAL SECTION (CNAME Record)
│   └── blog.yogeshkumar.site → "Go to the Hashnode Library"
│
├── 📬 MAIL DELIVERY (MX Records)
│   ├── Primary Post Office: Zoho (priority 10)
│   ├── Backup Post Office: Registrar servers (priority 10-20)
│   └── Emergency Post Office: Additional Zoho (priority 50)
│
├── 🔒 SECURITY NOTES (TXT Records)
│   ├── "Only accept mail from Zoho servers"
│   └── "Only accept mail from Registrar servers"
│
└── 📋 DIRECTORY MANAGER (NS Records)
    ├── Primary Manager: delilah.ns.cloudflare.com
    └── Backup Manager: scott.ns.cloudflare.com
</code></pre>
<p>Hence, the setup for the digital home. Mine is at <a target="_blank" href="http://www.yogeshkumar.site">yogeshkumar.site</a></p>
]]></content:encoded></item><item><title><![CDATA[DNS Resolution]]></title><description><![CDATA[Let’s understand DNS first.DNS stands for the Domain Name System. It is a protocol to resolve the DNS queries.
DNS exists in the first place because of two reasons:

Humans understand text better than just numbers, like blog.yogeshkumar. site and

Co...]]></description><link>https://blog.yogeshkumar.site/dns-resolution</link><guid isPermaLink="true">https://blog.yogeshkumar.site/dns-resolution</guid><category><![CDATA[ChaiCode]]></category><category><![CDATA[Chaiaurcode]]></category><category><![CDATA[chai-code ]]></category><category><![CDATA[dns]]></category><category><![CDATA[dns resolver]]></category><category><![CDATA[#DNS Resolution]]></category><dc:creator><![CDATA[Yogesh Kumar]]></dc:creator><pubDate>Mon, 26 Jan 2026 19:00:30 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/PSpf_XgOM5w/upload/b32326698520b4e3cce77ebc1affa034.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Let’s understand DNS first.<br />DNS stands for the Domain Name System. It is a protocol to resolve the DNS queries.</p>
<p>DNS exists in the first place because of two reasons:</p>
<ol>
<li><p>Humans understand text better than just numbers, like <a target="_blank" href="http://www.blog.yogeshkumar.site">blog.yogeshkumar. site</a> and</p>
</li>
<li><p>Computers are good at numbers. <code>76.76.21.21</code> is an IP Address for www.yogeshkumar.site</p>
</li>
<li><p>The IP Addresses can change for any reason, like Vercel decides to move the site from one server to another.</p>
</li>
</ol>
<p>As you can see, DNS is basically a phone book for the IP addresses with their names attached to it, which helps both computers and humans to co-exist on the internet and talk to each other with the help of the URL.</p>
<p><code>dig &lt;domain name&gt;</code> is the command to get a peek inside the DNS for a domain name. It is used to query the DNS for a domain name. <code>dig</code> stand Domain Information Groper. It can help see the DNS resolution at various stages.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1769259612100/ddd4f66c-fd98-45f0-a06f-7beb62b5bf0c.png" alt class="image--center mx-auto" /></p>
<p><code>dig</code> gives a brief overview of the DNS, what is happening under the hood when it <code>blog.yogeshkumar.site</code> is typed in the browser and the <code>hashnode blog</code> page loads. But how we reach here.</p>
<p>Actually, much more complex than this and let’s uncover the process of the DNS Resolution because it is not as easy as it appears that when something is entered in the browser and puff, the webpage opens up. Let me try to simplify it for you.</p>
<p>In short, when I am typing blog.yogeshkumar.site for the first time in my browser, there is a DNS query that happens, which is usually resolved by the ISP with a recursive DNS resolver and before our local caches of the browser, os, and router are contacted, so that it can be resolved asap.</p>
<p>Let’s assume I'm going to blog.yogeshkumar.site (here I will refer to it as my blog) for the first time. The recursive DNS resolver doesn’t have the IP address of the blog, so it first contacts the root servers to find the location of the .site Top Level Domain(TLD).</p>
<p>These are all the root servers, listed</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1769454826010/2ce1b34a-f5af-4cea-b974-a9e411217a4a.png" alt class="image--center mx-auto" /></p>
<p>The servers that hold .site domains are listed below.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1769455399600/2982d9b1-a2f4-4bc8-a396-8950b7220760.png" alt class="image--center mx-auto" /></p>
<p>Once the DNS query is resolved for the top-level domain, the TLD servers are queried by the Recursive DNS Resolver for the location (A Record / IP Address are interchangeable here) of the yogeshkumar. site with the TLD servers, and once they indicate which IP address redirects it to the Domain Name Servers, which actually hold the accurate IP address of where the domain is located (in this case, Cloudflare DNS and Namecheap is my registrar here).</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1769455788582/3680dee2-485a-48d8-8a8d-a694d3923a96.png" alt class="image--center mx-auto" /></p>
<p>Once the A record for yogeshkumar.site is found by the Recursive DNS Resolver, NameCheap servers are queried for blog.yogeshkumar.site, which is a CNAME (Canonical Name/Alias) for the hasnode.network (Authoritative Name Server) here and then the query is resolved, and the data is sent to recusive DNS resolver at the ISP, and the browser is served the webpage of the IP address at which it is pointed.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1769455892150/cd7a307c-f4f9-4f0c-b15b-d67638877e04.png" alt class="image--center mx-auto" /></p>
<p>Before moving on to summarise the process, I said “<strong>redirected</strong>” multiple times that I was referring to how that redirection happens in the DNS Domain Name System through NS records, which are basically pointers in the DNS.</p>
<p>In short,</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1769453073773/3d6b40a6-4f05-4609-9f9c-323442b85e10.png" alt class="image--center mx-auto" /></p>
<p>That’s how our DNS query is resolved, and we visit any domain name we are trying to access, like www.google.com and blog.yogeshkumar.site, and all other websites.</p>
<p>I am posing an analogy here. It’s like someone sent you a post from Ahmedabad to Gurugram, once the post has been posted to the Post Office. First, they verify it for the indian address only, which means the root servers have been co/ntacted, and once they find it is for India address. Then the post officers or the post computer system finds which part of the country it is headed for, which means the TLD servers have been contacted, and then the state in the region of India, which is Haryana and then postal officers and their netowrk figure out the city like the authoritative name servers is being found out which is Gurugram here and later the block of the city and lane and further on.</p>
<p>That’s the browser that loads our website we see daily, and all of this happens within minutes, and we couldn’t even blink, the site is here in front of us. Onward and forward.</p>
]]></content:encoded></item><item><title><![CDATA[Why does Version Control exist?]]></title><description><![CDATA[I can’t imagine software development without git just like the LLMs have become such an integral part of the internet. Going back feels slow and chaotic. So was the world without version control systems.
I learned programming after the creation of th...]]></description><link>https://blog.yogeshkumar.site/why-does-version-control-exist</link><guid isPermaLink="true">https://blog.yogeshkumar.site/why-does-version-control-exist</guid><category><![CDATA[Git]]></category><category><![CDATA[version control]]></category><category><![CDATA[ChaiCode]]></category><category><![CDATA[Chaiaurcode]]></category><dc:creator><![CDATA[Yogesh Kumar]]></dc:creator><pubDate>Fri, 23 Jan 2026 21:00:22 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/wX2L8L-fGeA/upload/1a21b9228ec4f6fc39361e7c104c121e.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I can’t imagine software development without git just like the LLMs have become such an integral part of the internet. Going back feels slow and chaotic. So was the world without version control systems.</p>
<p>I learned programming after the creation of the git, so I am not the one who has experienced the problems firsthand, like receiving the code through an email or leaving the pendrive sharing, but just like searching the google without AI mode is like coding without git or even using a phone without an AI assistant.</p>
<p>Let’s imagine the world without git. I got an idea to make a web app that just shows me the date and time in real time. I made a project folder name it <code>live-date-and-time</code> , and started working on it. I made an index.html file. Remember, I won’t be able to run <code>git init</code> it in this world as git doesn’t exist in this world.</p>
<p>I scaffold a html with emmet and named the title to Live Date and Time, changed the favicon, visualised the page on the browser and realised I might need the help of a designer friend who is good with CSS, so I copied the project folder into the pendrive and shared it with her.</p>
<p>Later, I shared the code with her, and I can’t see the changes done her live as she will give me the designed code next weekend. I saved my project as <code>live-date-and-time-1.0</code> . There has been no collaboration and tracking of the changes I have made ever since I started the project.</p>
<p>For her to work on the project, she needs to make a copy of the project on her computer to avoid working on the code I wrote. There is no conflict resolution, and let alone the tracking, as there is no modification tracker. The best thing we could do is add comments, and the code will be filled with comments. I get the code next weekend. If I want some modifications in the design, I will have to wait for some days to get the changes. All that time, either I am not working on the project or spinning copies of the project to work. If even I got the project, I can’t just join the new copy of the project with the old version of mine or undo some changes she did without disturbing her changes, and this point at any moment I can overwrite her code with mine, or she might have overwritten my code with hers.</p>
<p>During this time, I realised while working on spinned copy of my project that I can make my web application more effecient for the getting the time with a feature that mighting an expertise of a friend who is good at JS. I can’t just share the other copy with him, since there is no collaboration between me and my designer friend and me, I can't expect a collaboration with my Interactive friend and me. I will be handing out copied with out having a single source of truth that can verify that it has changed, and this person did it while keeping it all in sync with 3 people at the same time and everyone working with an updated code once other completes their changes. I assume these problems would scale to times when the team size is increased incrementally.</p>
<p>Now, consider that there is something like git exists, and thisis a college project we are working on in a team. We have been assigned this as an assignment. We have allocated a server on the campus with which we can connect and establish a single source of truth for the code, and that has a tracker and a photographic memory inside, which can be shared when we can make a copy of the project on our local system. And we have a main branch for the updates from the server and create branches for working simultaneously on different features with the individual tracking of the changes in the code and then one of us has done their work it can be pulled from the server other’s can update the code from the server with seeing their changes marked with name and reversible to any point on any one’s system and overwriting can be managed and handled carefully.</p>
<p>I can’t imagine software development without Git, just like LLMs have become such an integral part of the internet. Going back feels slow and chaotic, as was the world without version control systems.</p>
<p>I learned programming after the creation of Git, so I have not experienced the problems firsthand, like receiving code through email or using a pendrive for sharing. Just like searching Google without AI mode is like coding without Git or using a phone without an AI assistant.</p>
<p>Let’s imagine a world without Git. I got an idea to make a web app that just shows me the date and time in real-time. I made a project folder and named it<code>live-date-and-time</code>, and started working on it. I created an index.html file. Remember, I won’t be able to run <code>git init</code> in this world as Git doesn’t exist here.</p>
<p>I scaffolded an HTML with Emmet, named the title "Live Date and Time," changed the favicon, visualised the page on the browser, and realised I might need the help of a designer friend who is good with CSS. So, I copied the project folder onto a pendrive and shared it with her.</p>
<p>Later, I shared the code with her, and I can’t see the changes she made live, as she will give me the designed code next weekend. I saved my project as <code>live-date-and-time-1.0</code>. There is no collaboration and tracking of the changes I made since I started the project.</p>
<p>For her to work on the project, she needs to make a copy of the project on her computer to avoid working on the code I wrote. There is no conflict resolution, let alone tracking, as there is no modification tracker. The best thing we could do is add comments, and the code will be filled with comments. Even when I get the code next weekend, if I want some modifications in the design, I will have to wait for some days to get the changes. All that time, either I am not working on the project or spinning copies of the project to work. Even if I got the project, I can’t just join the new copy of the project with the old version of mine or undo some changes she made without disturbing her changes. At this point, I can overwrite her code with mine, or she might have overwritten my code with hers.</p>
<p>During this time, I realised while working on a spun copy of my project that I can make my web application more efficient by using a feature that might require the expertise of my friend, who is good at JS. I can’t just share the other copy with him. While there is no collaboration between me and my designer friend and me, I can't expect collaboration with my interactive friend. I will be handing out copies without having a single source of truth that can verify what change was made and who did it, while keeping it all in sync with three people at the same time and everyone working with updated code once others complete their changes. I assume these problems would scale when the team size is increased incrementally.</p>
<p>Now, consider that there is something like Git, and this is a college project we are working on as a team. We started this project on the college computer <code>(git init)</code>. We have allocated a server on the campus with which we can connect and establish a single source of truth for the code that has a tracker and a photographic memory (snapshot) inside. This can be shared when we make a copy of the project (<code>git clone</code>) on our local system. We have a <code>main</code> branch for the updates (<code>git pull</code>) from the server and create branches (<code>git branch</code>) for working simultaneously on different features with individual tracking of the changes in the code. Then, when one of us has done their work, it can be pushed to the server (<code>git push</code>) and then pulled from the server. Others can update the code from the server, seeing their changes marked with names and reversible to any point on anyone’s system, and overwriting can be managed and handled carefully.</p>
<p>In the above scenario, we saw a system that is distributed, gives individuals a control centre and snapshot mechanism, allows moving back in history, and working on features simultaneously, while switching contexts with branches. Not only one person but many such individuals can work similarly in this simulation with a single source of truth. The copy of that source is on their system, and they can pull and update easily once they learn the basics with some learning curve. It solves for scale as well, without altering the functioning, whether it is one or one thousand, along with a platform for management visually as well.</p>
<p>Here is an image that sums it all</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1768658793559/5be7aa92-b898-4f60-aa96-36c033f34c34.png" alt class="image--center mx-auto" /></p>
<p>Necessity is the mother of invention, so was Git for the software world when one day the Linux kernel developer community couldn’t access their VCS called BitKeeper. It was to solve a problem of their own, and they later solved it for everyone in the world.</p>
]]></content:encoded></item><item><title><![CDATA[Inside Git and .git Folder]]></title><description><![CDATA[Git acts as your second brain for source code, so you don’t have to remember everything, from major changes to minute details. It remembers everything just like court case files. It documents everything into the .git folder, which is kept within the ...]]></description><link>https://blog.yogeshkumar.site/inside-git-and-git-folder</link><guid isPermaLink="true">https://blog.yogeshkumar.site/inside-git-and-git-folder</guid><category><![CDATA[Git]]></category><category><![CDATA[ChaiCode]]></category><category><![CDATA[Chaiaurcode]]></category><category><![CDATA[GitHub]]></category><dc:creator><![CDATA[Yogesh Kumar]]></dc:creator><pubDate>Fri, 23 Jan 2026 20:58:27 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/842ofHC6MaI/upload/81b16403378279e1a9b4ad1c5685231a.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Git acts as your second brain for source code, so you don’t have to remember everything, from major changes to minute details. It remembers everything just like court case files. It documents everything into the .git folder, which is kept within the project.</p>
<p>Before understanding the .git folder, let’s take a look at how the .git folder comes into the picture. When you start a project, it is a file or a directory, and once inside that directory, you run <code>git init</code> It turns that normal directory into a git repository on the local. And that’s how the .git folder is introduced.</p>
<p>If the .git folder is explored now, most of the folders and files would be empty with little to no information at all, but these are essentials that are needed to work, and it means git has set up its base in the directory. Working directory is untracked. <code>U</code> can be observed alongside the files.</p>
<p>Before moving forward, once you have made changes in the source code here on now. All those files and folders will be untracked until staged for the commit (terms I explained in the <a target="_blank" href="https://git-for-beginners-basics.hashnode.dev/git-for-beginners">previous blog</a>).</p>
<p>Consider you are in a photoshoot location now, it is like running <code>git init</code>. Once you have written the required code, similar to adjusting to the best location, angles, and poses, just like running <code>git add</code> .</p>
<p>Now, when you have all the perfect details for the picture, it is like making a commit by running a command called <code>git commit -m “message for the commit”</code> . The commit is like a snapshot of the working directory at that point in time, with all the modifications in the working directory.</p>
<p>The git management is structured in such a way that in one place, only the actual code is stored, called <strong>blobs;</strong> in the other place, the details about that code are stored, like the “hello world” is written in the index.html file, which is called the <strong>tree.</strong> There is a place that stores the reference to all of this information called a <strong>commit.</strong> Imagine the picture you clicked, all the pixels captured by the camera are the blob, the details of those pixels where they are stored are trees, and all of it makes the picture, which is a commit.</p>
<p>If the git takes the whole snapshot of the code, then it must be taking so much storage means if x if the storage for one commit is x, then for the second commit it will be 2x. RIght?</p>
<p>But that’s not how it works. Even though every commit is a snapshot, it is not stored twice, it’s references wrt to the changes are stored at the given commit, and it tracks the changes on the fly. It’s like reconstruction of the image from the pixels on the fly, which was captured some time ago or even yesterday or even years ago.</p>
<p>Let’s understand how git uses hashes. It’s like a sticker on the code and these is only generated when add and commit in the working directory. To simplify, it is only generate when you tell the model in the photoshoot to hold the pose or to change the pose and when you click a picture.</p>
<p>Everything in depends on the <code>HEAD</code> and is updated from the the <code>refs/heads/</code> folder and it contains the <code>heads</code> means it contains the name of the head on whenever we took a snapshot of the code. When you read the reference file, it contains the <code>id</code> which is head commit id.</p>
<p>You can read about the commit details with that id to do that git cat-file -p &lt;commit id&gt; what it contains.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1768570999062/71f7fc3a-b35c-4e97-b195-5b0503e8a6a8.png" alt class="image--center mx-auto" /></p>
<p>The <code>tree id</code> is made up of the <code>tree folder name first letters</code> and <code>commit id</code>. Where this is <strong>tree</strong> can be found? It is in the <code>objects/</code> folder and <code>first letters</code> makes the folder’s name and when you <code>cat</code> (means read) the <code>file</code> (which is basically an id) the output it prints is a <code>blob object</code> which is our compressed code within those gibberish text.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1768572242748/6f48331b-f672-4afd-b1b6-16428d41b235.png" alt class="image--center mx-auto" /></p>
<p>How blobs are managed is world in itself and a story for another day. Till then the git is all yours to use.</p>
<p>And here is how our second brain works within itself to help the programmers of the world to remember what, when and how they did what they did.</p>
]]></content:encoded></item><item><title><![CDATA[git for Beginners]]></title><description><![CDATA[Let me introduce you to Git. First of all, it's important to know that Git and GitHub are not the same.
Git is a free, open-source, distributed version control system, while GitHub is a cloud platform that hosts Git files and source code remotely. Yo...]]></description><link>https://blog.yogeshkumar.site/git-for-beginners</link><guid isPermaLink="true">https://blog.yogeshkumar.site/git-for-beginners</guid><category><![CDATA[Git]]></category><category><![CDATA[Git Commands]]></category><category><![CDATA[ChaiCode]]></category><category><![CDATA[webdev]]></category><dc:creator><![CDATA[Yogesh Kumar]]></dc:creator><pubDate>Sun, 11 Jan 2026 09:48:10 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1769978273142/2e5bdaab-e78d-4301-ac79-b453ca737a70.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Let me introduce you to <strong>Git</strong>. First of all, it's important to know that <em>Git and GitHub are not the same</em>.</p>
<p><strong>Git</strong> is a free, open-source, distributed version control system, while GitHub is a cloud platform that hosts Git files and source code remotely. You can learn to use Git and choose any cloud platform like Bit Bucket, Azure Repos, AWS Code Commit, and many more to host your Git files and source code. These platforms act as servers for the distributed version control system (VCS). You can also set up a server locally on your network or within your system using other platforms like Git Lab or Gitea.</p>
<h2 id="heading-what-is-git">What is Git?</h2>
<p>Git is an open-source distributed version control system.</p>
<ul>
<li><p><strong>Open-source</strong>: Available to everyone without any fees or subscriptions.</p>
</li>
<li><p><strong>Distributed</strong>: Everyone can have a copy of the source code and Git tracking history offline, without needing a server connection while working.</p>
</li>
<li><p><strong>Version control system</strong>: Tracks the history of code changes by maintaining versions of it.</p>
</li>
</ul>
<h2 id="heading-why-use-git">Why Use Git?</h2>
<p>Git is used to track changes in code, enabling collaboration among team members without overwriting each other’s work. It helps maintain a single source of truth while working in teams using a server. Its popularity is due to huge community support, offline capabilities, and flexibility once mastered. It's also great for solo projects.</p>
<h2 id="heading-git-basics-and-core-terminologies">Git Basics and Core Terminologies</h2>
<ol>
<li><p><strong>.git</strong>: A folder created by Git after initialization to track changes. Everything in this folder works towards tracking those changes.</p>
</li>
<li><p><strong>Repository (repo)</strong>: A directory containing source code files, along with the hidden .git folder.</p>
</li>
<li><p><strong>Local</strong>: The repo located on your personal system.</p>
</li>
<li><p><strong>Remote</strong>: The repo located on a server.</p>
</li>
<li><p><strong>Unstaged</strong>: Files added to a Git project after initialization are in the unstaged area.</p>
</li>
<li><p><strong>Staging Area</strong>: When files are added to be tracked by Git, they are in the staging area.</p>
</li>
<li><p><strong>Branch</strong>: Creating copies of the source code with the current Git history in isolation to work on. Branches are stored as references in the <code>.git/refs/heads/</code> folder.</p>
</li>
<li><p><strong>Commit</strong>: Taking a snapshot of the current repo and saving it for history. Commits are stored as compressed objects in the <code>.git/objects</code> folder.</p>
</li>
<li><p><strong>HEAD</strong>: A special pointer indicating the current location of the commit. It is stored in the .git/HEAD file.</p>
</li>
</ol>
<h2 id="heading-common-git-commands">Common Git Commands</h2>
<ol>
<li><p><code>git init</code>: Initializes a Git repository in the current directory with a hidden .git folder.</p>
</li>
<li><p><code>git add &lt;filename&gt;</code>: Stages changes (additions, modifications, deletions) in the specified file.</p>
<ul>
<li><code>git add .</code>: Stages all changes in the working directory and sub-directories.</li>
</ul>
</li>
<li><p><code>git commit -m "commit message"</code>: Takes a snapshot of the changes in the staging area with a commit ID and message, saving them into the repository.</p>
<ul>
<li><code>git commit -am "commit message"</code>: Takes a snapshot of all modified or deleted files and folders in the staging area, saving them into the repository, leaving untracked files.</li>
</ul>
</li>
<li><p><code>git push &lt;remote&gt; &lt;branch&gt;</code>: Uploads commits from the local repository to the specified remote repository.</p>
</li>
<li><p><code>git log</code>: Shows the commit history of the repository with commit messages, names, dates, and times.</p>
<ul>
<li><code>git log --oneline</code>: Shows the commit history in one line each, with commit messages and shortened commit IDs.</li>
</ul>
</li>
<li><p><code>git status</code>: Shows the current state of the working directory and staging area.</p>
</li>
<li><p><code>git diff &lt;filename&gt;</code>: Shows the difference between the old state and the current states of the file.</p>
<ul>
<li><p><code>git diff &lt;old branch name&gt; &lt;new branch name&gt;</code>: Shows the difference between the current and previous states of two branches.</p>
</li>
<li><p><code>git diff &lt;old commit id&gt; &lt;new commit id&gt;</code>: Shows the difference between the current and previous states of two commits.</p>
</li>
</ul>
</li>
<li><p><code>git revert &lt;commit id&gt;</code>: Reverts the changes in the specified commit and creates a new commit with it.</p>
</li>
<li><p><code>git reset --hard &lt;commit id&gt;</code>: Resets the changes in the specified commit ID and removes the commit from the Git history.</p>
</li>
<li><p><code>git branch</code>: Shows which branch you are currently working on.</p>
</li>
</ol>
<h2 id="heading-basic-developer-workflow-using-git">Basic Developer Workflow Using Git</h2>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1768124687815/f9290590-c5b7-406b-96d6-2919e2c92a57.png" alt class="image--center mx-auto" /></p>
<p>This guide should help you get started with Git and understand its basic concepts and commands.</p>
]]></content:encoded></item></channel></rss>