<?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[Git Explained: The Indian Wedding Way]]></title><description><![CDATA[Git Explained: The Indian Wedding Way]]></description><link>https://git-explained-the-indian-wedding-way.hashnode.dev</link><generator>RSS for Node</generator><lastBuildDate>Wed, 17 Jun 2026 23:18:29 GMT</lastBuildDate><atom:link href="https://git-explained-the-indian-wedding-way.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[CSS Selectors 101: Targeting Elements with Precision]]></title><description><![CDATA[Targeting Elements with Precision
So I just learned about CSS selectors, and honestly? It finally made CSS click for me. If you've ever wondered how CSS "knows" which element to style, this is the answer. Let me break it down the way I understood it....]]></description><link>https://git-explained-the-indian-wedding-way.hashnode.dev/css-selectors-101-targeting-elements-with-precision</link><guid isPermaLink="true">https://git-explained-the-indian-wedding-way.hashnode.dev/css-selectors-101-targeting-elements-with-precision</guid><category><![CDATA[ChaiCode]]></category><category><![CDATA[Chaiaurcode]]></category><category><![CDATA[chaicode webdev cohort 2026]]></category><dc:creator><![CDATA[Nikhil Shrestha]]></dc:creator><pubDate>Fri, 30 Jan 2026 13:32:50 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1769779941012/62483196-e197-4c6c-83f0-2c8530964bcc.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h1 id="heading-targeting-elements-with-precision">Targeting Elements with Precision</h1>
<p>So I just learned about CSS selectors, and honestly? It finally made CSS click for me. If you've ever wondered how CSS "knows" which element to style, this is the answer. Let me break it down the way I understood it.</p>
<hr />
<h2 id="heading-why-do-we-even-need-selectors">Why Do We Even Need Selectors?</h2>
<p>Imagine you're in a crowded room and you need to call someone. You could shout "Hey, person!" — but everyone would turn around. Not helpful.</p>
<p>Instead, you'd be more specific:</p>
<ul>
<li><p>"Hey, everyone wearing red shirts!" (a group)</p>
</li>
<li><p>"Hey, Rahul!" (a specific name)</p>
</li>
<li><p>"Hey, employee #4521!" (a unique ID)</p>
</li>
</ul>
<p>CSS selectors work the exact same way. They're how you point at HTML elements and say "YOU. I want to style YOU."</p>
<p>Without selectors, CSS would have no idea what to target. They're literally the foundation of everything in CSS.</p>
<hr />
<h2 id="heading-the-selectors-from-broad-to-specific">The Selectors (From Broad to Specific)</h2>
<h3 id="heading-1-element-selector">1. Element Selector</h3>
<p>The most basic one. You just write the tag name.</p>
<pre><code class="lang-css"><span class="hljs-selector-tag">p</span> {
  <span class="hljs-attribute">color</span>: gray;
}
</code></pre>
<p>This styles ALL <code>&lt;p&gt;</code> tags on your page. Every single one. No exceptions.</p>
<p><strong>Before:</strong> Plain black paragraphs everywhere.<br /><strong>After:</strong> Every paragraph turns gray.</p>
<p>Simple, but not very precise.</p>
<hr />
<h3 id="heading-2-class-selector">2. Class Selector</h3>
<p>Now we're getting somewhere. Classes let you group elements that should share a style.</p>
<pre><code class="lang-html"><span class="hljs-tag">&lt;<span class="hljs-name">p</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"highlight"</span>&gt;</span>Important text<span class="hljs-tag">&lt;/<span class="hljs-name">p</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">p</span>&gt;</span>Normal text<span class="hljs-tag">&lt;/<span class="hljs-name">p</span>&gt;</span>
</code></pre>
<pre><code class="lang-css"><span class="hljs-selector-class">.highlight</span> {
  <span class="hljs-attribute">background-color</span>: yellow;
}
</code></pre>
<p>Notice the dot (<code>.</code>) before the class name? That's how CSS knows it's a class.</p>
<p><strong>Before:</strong> Both paragraphs look the same.<br /><strong>After:</strong> Only the one with <code>class="highlight"</code> gets a yellow background.</p>
<p>You can reuse classes on as many elements as you want. That's the whole point.</p>
<hr />
<h3 id="heading-3-id-selector">3. ID Selector</h3>
<p>IDs are for unique elements. Think of it like a roll number — only one student has it.</p>
<pre><code class="lang-html"><span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"main-header"</span>&gt;</span>Welcome!<span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
</code></pre>
<pre><code class="lang-css"><span class="hljs-selector-id">#main-header</span> {
  <span class="hljs-attribute">font-size</span>: <span class="hljs-number">32px</span>;
  <span class="hljs-attribute">font-weight</span>: bold;
}
</code></pre>
<p>The hash (<code>#</code>) symbol indicates an ID. Use IDs when something appears only once on a page (like a navbar or footer).</p>
<hr />
<h3 id="heading-4-group-selectors">4. Group Selectors</h3>
<p>What if you want to apply the same style to multiple different elements? Instead of repeating yourself, group them with commas.</p>
<pre><code class="lang-css"><span class="hljs-selector-tag">h1</span>, <span class="hljs-selector-tag">h2</span>, <span class="hljs-selector-tag">h3</span> {
  <span class="hljs-attribute">font-family</span>: <span class="hljs-string">'Arial'</span>, sans-serif;
}
</code></pre>
<p>This applies the same font to all three heading types. Clean and efficient.</p>
<hr />
<h3 id="heading-5-descendant-selectors">5. Descendant Selectors</h3>
<p>This one's cool. You can target elements <em>inside</em> other elements.</p>
<pre><code class="lang-html"><span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"card"</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">p</span>&gt;</span>I'm inside a card<span class="hljs-tag">&lt;/<span class="hljs-name">p</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">p</span>&gt;</span>I'm outside<span class="hljs-tag">&lt;/<span class="hljs-name">p</span>&gt;</span>
</code></pre>
<pre><code class="lang-css"><span class="hljs-selector-class">.card</span> <span class="hljs-selector-tag">p</span> {
  <span class="hljs-attribute">color</span>: blue;
}
</code></pre>
<p>Only the <code>&lt;p&gt;</code> inside <code>.card</code> turns blue. The other paragraph stays untouched.</p>
<p>The space between <code>.card</code> and <code>p</code> means "find <code>p</code> elements that are descendants of <code>.card</code>".</p>
<hr />
<h2 id="heading-quick-note-on-priority">Quick Note on Priority</h2>
<p>When multiple selectors target the same element, CSS has to decide who wins. Here's the basic hierarchy:</p>
<pre><code class="lang-plaintext">Element (p, div)  →  Weakest
Class (.highlight)  →  Stronger
ID (#main-header)  →  Strongest
</code></pre>
<p>So if you have:</p>
<pre><code class="lang-css"><span class="hljs-selector-tag">p</span> { <span class="hljs-attribute">color</span>: black; }
<span class="hljs-selector-class">.highlight</span> { <span class="hljs-attribute">color</span>: blue; }
<span class="hljs-selector-id">#special</span> { <span class="hljs-attribute">color</span>: red; }
</code></pre>
<p>And your HTML is:</p>
<pre><code class="lang-html"><span class="hljs-tag">&lt;<span class="hljs-name">p</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"special"</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"highlight"</span>&gt;</span>What color am I?<span class="hljs-tag">&lt;/<span class="hljs-name">p</span>&gt;</span>
</code></pre>
<p>The text will be <strong>red</strong> because ID beats class, and class beats element.</p>
<p>There's more to specificity than this, but for now, just remember: <strong>ID &gt; Class &gt; Element</strong>.</p>
<hr />
<h2 id="heading-wrapping-up">Wrapping Up</h2>
<p>Here's my mental model:</p>
<div class="hn-table">
<table>
<thead>
<tr>
<td>Selector</td><td>Symbol</td><td>Use Case</td></tr>
</thead>
<tbody>
<tr>
<td>Element</td><td>none</td><td>Style all tags of a type</td></tr>
<tr>
<td>Class</td><td><code>.</code></td><td>Style a reusable group</td></tr>
<tr>
<td>ID</td><td><code>#</code></td><td>Style one unique element</td></tr>
<tr>
<td>Group</td><td><code>,</code></td><td>Apply same style to multiple selectors</td></tr>
<tr>
<td>Descendant</td><td>(space)</td><td>Style nested elements</td></tr>
</tbody>
</table>
</div><p>Selectors are genuinely the backbone of CSS. Once you get comfortable with these, everything else (layouts, animations, responsive design) becomes way easier to approach.</p>
<p>I'm still learning, but this much I can say — spend time practicing selectors. Open DevTools, inspect elements, try targeting them differently. It helps a lot.</p>
<p>Happy coding! 🚀</p>
<hr />
<p><em>This article is part of my Web Dev Cohort 2026 journey. Learning in public, one concept at a time.</em></p>
]]></content:encoded></item><item><title><![CDATA[Why Version Control Exists]]></title><description><![CDATA[The Pendrive Problem
If you've ever named a file project_final_FINAL_v3_thisone.zip, congratulations — you've already felt the pain that version control was invented to solve.
The Dark Ages of Code Sharing
Picture this: It's 2008. You're working on a...]]></description><link>https://git-explained-the-indian-wedding-way.hashnode.dev/why-version-control-exists</link><guid isPermaLink="true">https://git-explained-the-indian-wedding-way.hashnode.dev/why-version-control-exists</guid><category><![CDATA[ChaiCode]]></category><category><![CDATA[Chaiaurcode]]></category><category><![CDATA[chaicode webdev cohort 2026]]></category><dc:creator><![CDATA[Nikhil Shrestha]]></dc:creator><pubDate>Fri, 30 Jan 2026 12:35:56 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1769776526325/a65d79fe-8ec9-413d-b279-de3b8807cba5.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h1 id="heading-the-pendrive-problem">The Pendrive Problem</h1>
<p>If you've ever named a file <code>project_final_FINAL_v3_</code><a target="_blank" href="http://thisone.zip"><code>thisone.zip</code></a>, congratulations — you've already felt the pain that version control was invented to solve.</p>
<h2 id="heading-the-dark-ages-of-code-sharing">The Dark Ages of Code Sharing</h2>
<p>Picture this: It's 2008. You're working on a college project with three friends. How do you share code?</p>
<p><strong>Option A:</strong> Copy everything to a pendrive, physically walk to your teammate's hostel, and pray they don't overwrite your changes.</p>
<p><strong>Option B:</strong> Email zip files back and forth with subject lines like "latest code plz check" and "RE: RE: RE: updated version."</p>
<p><strong>Option C:</strong> Create a shared folder with filenames like:</p>
<pre><code class="lang-plaintext">project/
├── main.py
├── main_backup.py
├── main_old.py
├── main_final.py
├── main_final_v2.py
├── main_DONT_DELETE.py
└── main_final_ACTUALLY_WORKING.py
</code></pre>
<p>Sounds ridiculous? This was genuinely how people collaborated on code before version control became mainstream.</p>
<h2 id="heading-the-real-problems-we-faced">The Real Problems We Faced</h2>
<h3 id="heading-1-the-overwriting-nightmare">1. The Overwriting Nightmare</h3>
<p>Rahul copies the code to his pendrive on Monday. Priya does the same. Both work over the weekend. On Monday, whoever copies their version back <em>last</em> wins — and the other person's work just... vanishes. No merge. No warning. Just gone.</p>
<h3 id="heading-2-who-broke-the-code">2. "Who Broke the Code?"</h3>
<p>The project was working yesterday. Today it crashes. Nobody knows who changed what. Everyone points fingers. Classic team dynamics, zero accountability trail.</p>
<h3 id="heading-3-no-going-back">3. No Going Back</h3>
<p>Remember when the login feature worked perfectly two weeks ago? Too bad you saved over it seventeen times since then. That working version? Lost forever in the void of <code>final_final_</code><a target="_blank" href="http://v4.py"><code>v4.py</code></a>.</p>
<h3 id="heading-4-the-collaboration-bottleneck">4. The Collaboration Bottleneck</h3>
<p>Only one person could realistically work on a file at a time. Want to parallelize work? Good luck merging two completely different versions of the same file manually at 2 AM before the submission deadline.</p>
<hr />
<h2 id="heading-a-simple-visual-comparison">A Simple Visual Comparison</h2>
<p><strong>Without Version Control:</strong></p>
<pre><code class="lang-plaintext">Developer A ──[pendrive]──&gt; Shared Folder &lt;──[pendrive]── Developer B
                                 │
                                 ▼
                    🔥 Chaos. Overwrites. Tears. 🔥
</code></pre>
<p><strong>With Version Control:</strong></p>
<pre><code class="lang-plaintext">Developer A ─────┐
                 │
Developer B ─────┼──&gt; Central Repository ──&gt; Complete History
                 │         │
Developer C ─────┘         ▼
                    ✓ Every change tracked
                    ✓ Easy merging
                    ✓ Full accountability
</code></pre>
<hr />
<h2 id="heading-why-version-control-became-non-negotiable">Why Version Control Became Non-Negotiable</h2>
<p>Modern software isn't built by one person in a garage anymore. You have teams across time zones, hundreds of files, and features being built simultaneously. The pendrive approach doesn't scale. It never did, honestly — we just didn't have better options.</p>
<p>Version control systems like Git solved every problem I mentioned:</p>
<ul>
<li><p><strong>Track every change</strong> — See exactly what changed, when, and who did it</p>
</li>
<li><p><strong>Work in parallel</strong> — Multiple developers can work on the same codebase without destroying each other's work</p>
</li>
<li><p><strong>Roll back anytime</strong> — That feature you broke? Revert to yesterday's version in seconds</p>
</li>
<li><p><strong>Branching</strong> — Experiment freely without touching the working code</p>
</li>
</ul>
<h2 id="heading-the-bottom-line">The Bottom Line</h2>
<p>Version control isn't just a "nice to have" skill anymore. It's as fundamental as knowing how to write code itself. Every tech company expects it. Every open-source project uses it. And once you've used Git properly, you'll wonder how anyone ever survived the pendrive era.</p>
<p>So the next time you're tempted to create <code>final_v2_LATEST_USE_</code><a target="_blank" href="http://THIS.zip"><code>THIS.zip</code></a>, remember: there's a better way. And it's been around for decades.</p>
<hr />
<p><em>Currently learning web development and documenting my journey. If you found this helpful, let's connect!</em></p>
]]></content:encoded></item><item><title><![CDATA[Getting Started with cURL]]></title><description><![CDATA[A Beginner's Friendly Guide
When I first heard about cURL, I thought it was some fancy developer tool that would take me weeks to understand. Turns out, I was wrong. It's actually one of the simplest and most useful tools I've picked up in my web dev...]]></description><link>https://git-explained-the-indian-wedding-way.hashnode.dev/getting-started-with-curl</link><guid isPermaLink="true">https://git-explained-the-indian-wedding-way.hashnode.dev/getting-started-with-curl</guid><category><![CDATA[ChaiCode]]></category><category><![CDATA[Chaiaurcode]]></category><category><![CDATA[chaicode webdev cohort 2026]]></category><dc:creator><![CDATA[Nikhil Shrestha]]></dc:creator><pubDate>Thu, 29 Jan 2026 13:52:35 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1769694826811/bffa0f77-9da3-4938-b598-476cc622f72e.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h1 id="heading-a-beginners-friendly-guide">A Beginner's Friendly Guide</h1>
<p>When I first heard about cURL, I thought it was some fancy developer tool that would take me weeks to understand. Turns out, I was wrong. It's actually one of the simplest and most useful tools I've picked up in my web development journey. If you're just starting out, this guide is for you.</p>
<h2 id="heading-first-things-first-what-even-is-a-server">First Things First: What Even is a Server?</h2>
<p>Before we jump into cURL, let's quickly understand why it exists.</p>
<p>Whenever you open a website, your browser is actually sending a message to a computer somewhere in the world called a <strong>server</strong>. This server holds all the website data and sends it back to you. Think of it like ordering food at a restaurant — you (the client) ask the waiter (your request), and the kitchen (server) prepares and sends back your meal (response).</p>
<pre><code class="lang-plaintext">You (Browser) → Request → Server → Response → You see the website
</code></pre>
<p>This back-and-forth happens every single time you load a webpage, submit a form, or scroll through your social media feed.</p>
<h2 id="heading-so-what-is-curl">So What is cURL?</h2>
<p><strong>cURL</strong> (short for "Client URL") is a command-line tool that lets you send requests to servers directly from your terminal. No browser needed.</p>
<p>That's it. Seriously.</p>
<p>Instead of opening Chrome and typing a URL, you can just open your terminal and type a cURL command. The server doesn't care whether the request comes from a browser or from cURL — it just responds.</p>
<p>Here's a simple way to visualize it:</p>
<pre><code class="lang-plaintext">┌─────────────┐                    ┌─────────────┐
│   Browser   │ ──── Request ────► │   Server    │
└─────────────┘ ◄─── Response ──── └─────────────┘

        vs.

┌─────────────┐                    ┌─────────────┐
│    cURL     │ ──── Request ────► │   Server    │
│ (Terminal)  │ ◄─── Response ──── └─────────────┘
└─────────────┘
</code></pre>
<p>Both do the same thing. cURL just gives you more control and doesn't render pretty HTML.</p>
<h2 id="heading-why-should-you-even-care-about-curl">Why Should You Even Care About cURL?</h2>
<p>Good question. Here's why I started using it:</p>
<ol>
<li><p><strong>Testing APIs without writing code</strong> — When you're building a backend, you want to quickly test if your endpoints work. cURL lets you do that in seconds.</p>
</li>
<li><p><strong>Debugging</strong> — Sometimes things break. cURL helps you see exactly what's being sent and received, with no browser magic hiding stuff from you.</p>
</li>
<li><p><strong>Automation</strong> — You can put cURL commands in scripts and automate repetitive tasks.</p>
</li>
<li><p><strong>It's everywhere</strong> — cURL comes pre-installed on most systems (Mac, Linux, even Windows now). You'll see it in documentation, tutorials, and Stack Overflow answers constantly.</p>
</li>
</ol>
<h2 id="heading-making-your-first-curl-request">Making Your First cURL Request</h2>
<p>Okay, enough theory. Let's actually do something.</p>
<p>Open your terminal and type:</p>
<pre><code class="lang-bash">curl https://example.com
</code></pre>
<p>Hit enter. You should see a bunch of HTML printed on your screen. That's the webpage! You just fetched it without opening a browser.</p>
<p>Pretty cool, right?</p>
<h2 id="heading-understanding-the-request-and-response">Understanding the Request and Response</h2>
<p>When you run that command, here's what actually happens:</p>
<p><strong>Your Request:</strong></p>
<ul>
<li><p>You're sending a <strong>GET</strong> request (the default)</p>
</li>
<li><p>To the URL <a target="_blank" href="https://example.com"><code>https://example.com</code></a></p>
</li>
<li><p>Asking the server: "Hey, give me whatever you have at this address"</p>
</li>
</ul>
<p><strong>The Response:</strong></p>
<ul>
<li><p>The server sends back HTML content</p>
</li>
<li><p>Along with a status code (like 200 for success)</p>
</li>
<li><p>And some headers (metadata about the response)</p>
</li>
</ul>
<p>To see the status code and headers, add the <code>-i</code> flag:</p>
<pre><code class="lang-bash">curl -i https://example.com
</code></pre>
<p>Now you'll see something like:</p>
<pre><code class="lang-plaintext">HTTP/2 200
content-type: text/html; charset=UTF-8
...

&lt;!doctype html&gt;
&lt;html&gt;
...
</code></pre>
<p>That <code>200</code> means everything went fine. You might also see <code>404</code> (not found) or <code>500</code> (server error) — these status codes are super important for debugging.</p>
<h2 id="heading-using-curl-to-talk-to-apis">Using cURL to Talk to APIs</h2>
<p>This is where cURL really shines. APIs are basically servers that return data (usually JSON) instead of HTML.</p>
<p>Let's try fetching some fake user data:</p>
<pre><code class="lang-bash">curl https://jsonplaceholder.typicode.com/users/1
</code></pre>
<p>You'll get back something like:</p>
<pre><code class="lang-json">{
  <span class="hljs-attr">"id"</span>: <span class="hljs-number">1</span>,
  <span class="hljs-attr">"name"</span>: <span class="hljs-string">"Leanne Graham"</span>,
  <span class="hljs-attr">"username"</span>: <span class="hljs-string">"Bret"</span>,
  <span class="hljs-attr">"email"</span>: <span class="hljs-string">"Sincere@april.biz"</span>
  ...
}
</code></pre>
<p>That's actual data you can use in your applications!</p>
<h3 id="heading-get-vs-post">GET vs POST</h3>
<p>There are different types of requests. The two most common ones:</p>
<ul>
<li><p><strong>GET</strong> — Fetching data (what we've been doing)</p>
</li>
<li><p><strong>POST</strong> — Sending data to create something new</p>
</li>
</ul>
<p>Here's a simple POST example:</p>
<pre><code class="lang-bash">curl -X POST https://jsonplaceholder.typicode.com/posts \
  -H <span class="hljs-string">"Content-Type: application/json"</span> \
  -d <span class="hljs-string">'{"title": "My Post", "body": "Hello World", "userId": 1}'</span>
</code></pre>
<p>Breaking it down:</p>
<ul>
<li><p><code>-X POST</code> tells cURL we're sending a POST request</p>
</li>
<li><p><code>-H</code> adds a header (telling the server we're sending JSON)</p>
</li>
<li><p><code>-d</code> is the data we're sending</p>
</li>
</ul>
<p>The server will respond confirming our "post" was created.</p>
<h2 id="heading-where-curl-fits-in-backend-development">Where cURL Fits in Backend Development</h2>
<p>Here's a simple diagram of where cURL helps:</p>
<pre><code class="lang-plaintext">┌─────────────────────────────────────────────────────────┐
│                  Your Development Flow                  │
├─────────────────────────────────────────────────────────┤
│                                                         │
│   Write Code → Test with cURL → Debug → Fix → Repeat   │
│                      ▲                                  │
│                      │                                  │
│            Quick feedback loop!                         │
│                                                         │
└─────────────────────────────────────────────────────────┘
</code></pre>
<p>Instead of building a whole frontend just to test if your API works, you fire off a cURL command and instantly know.</p>
<h2 id="heading-common-mistakes-beginners-make-including-me">Common Mistakes Beginners Make (Including Me)</h2>
<p>Let me save you some frustration:</p>
<p><strong>1. Forgetting the protocol</strong></p>
<pre><code class="lang-bash"><span class="hljs-comment"># Wrong</span>
curl example.com

<span class="hljs-comment"># Right</span>
curl https://example.com
</code></pre>
<p>Always include <code>http://</code> or <code>https://</code>.</p>
<p><strong>2. Not escaping special characters</strong></p>
<p>If your data has spaces or special characters, wrap it in quotes properly.</p>
<p><strong>3. Missing Content-Type header for POST requests</strong></p>
<p>When sending JSON, always tell the server:</p>
<pre><code class="lang-bash">-H <span class="hljs-string">"Content-Type: application/json"</span>
</code></pre>
<p><strong>4. Copy-pasting commands without understanding them</strong></p>
<p>We've all done it. But take a moment to understand what each flag does. It'll save you hours of debugging later.</p>
<p><strong>5. Ignoring the response status code</strong></p>
<p>Just because you got a response doesn't mean it worked. Always check if it's a <code>200</code>, <code>201</code>, or something else.</p>
<h2 id="heading-wrapping-up">Wrapping Up</h2>
<p>cURL might seem intimidating at first, but it's really just a way to send messages to servers without a browser. Start simple — fetch a webpage, then try an API, then experiment with POST requests.</p>
<p>The more you use it, the more natural it becomes. And honestly, once you get comfortable with cURL, you'll wonder how you ever tested APIs without it.</p>
<p>Happy coding! 🚀</p>
<hr />
<p><em>This article is part of my learning journey in the Web Dev Cohort 2026. If you found this helpful, feel free to connect!</em></p>
]]></content:encoded></item><item><title><![CDATA[DNS Record Types Explained]]></title><description><![CDATA[A Beginner's Journey Into How the Internet Finds Websites
Ever wondered what happens in those few milliseconds between typing "google.com" and the page actually loading? I did too, and honestly, it blew my mind when I finally understood it. Let me ta...]]></description><link>https://git-explained-the-indian-wedding-way.hashnode.dev/dns-record-types-explained</link><guid isPermaLink="true">https://git-explained-the-indian-wedding-way.hashnode.dev/dns-record-types-explained</guid><category><![CDATA[chaicode webdev cohort 2026]]></category><category><![CDATA[ChaiCode]]></category><category><![CDATA[Chaiaurcode]]></category><dc:creator><![CDATA[Nikhil Shrestha]]></dc:creator><pubDate>Thu, 29 Jan 2026 13:44:14 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1769694168908/ab5373da-7132-4309-bf68-50e25550a4c4.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h1 id="heading-a-beginners-journey-into-how-the-internet-finds-websites">A Beginner's Journey Into How the Internet Finds Websites</h1>
<p>Ever wondered what happens in those few milliseconds between typing "<a target="_blank" href="http://google.com">google.com</a>" and the page actually loading? I did too, and honestly, it blew my mind when I finally understood it. Let me take you through what I learned about DNS — the unsung hero of the internet.</p>
<h2 id="heading-how-does-a-browser-know-where-a-website-lives">How Does a Browser Know Where a Website Lives?</h2>
<p>Here's a question that got me curious: when you type a website address, how does your browser actually know where to go? It's not like the internet has a GPS, right?</p>
<p>Well, kind of — it does. It's called <strong>DNS</strong>, which stands for Domain Name System.</p>
<p>Think of DNS as the internet's phonebook. Back in the day, if you wanted to call someone, you'd look up their name in a phonebook to find their number. DNS does exactly that — it translates human-friendly names like <a target="_blank" href="http://example.com"><code>example.com</code></a> into computer-friendly addresses like <code>192.168.1.1</code>.</p>
<p>Without DNS, we'd all be memorizing strings of numbers to visit websites. No thanks.</p>
<h2 id="heading-why-do-we-need-dns-records">Why Do We Need DNS Records?</h2>
<p>So DNS is a phonebook, cool. But a phonebook isn't just one giant list — it has structure. Similarly, DNS uses different types of <strong>records</strong> to store different kinds of information about a domain.</p>
<p>Need to know the IP address? There's a record for that. Need to know where to send emails? Different record. Need to verify you own the domain? Yep, another record.</p>
<p>Each record type solves a specific problem. Let's go through them one by one.</p>
<hr />
<h2 id="heading-ns-record-whos-in-charge-here">NS Record: Who's in Charge Here?</h2>
<p><strong>NS</strong> stands for <strong>Name Server</strong>.</p>
<p>Imagine you want to find someone's address, but first you need to know which phonebook to look in. NS records tell the internet: "Hey, if you want information about this domain, go ask <em>these</em> servers."</p>
<p>For example, when you buy a domain from a registrar like GoDaddy or Namecheap, they set up NS records pointing to their nameservers. If you later move to Cloudflare, you change the NS records to point to Cloudflare's servers instead.</p>
<p><strong>In simple terms:</strong> NS records say "this server is responsible for answering questions about this domain."</p>
<hr />
<h2 id="heading-a-record-the-main-address">A Record: The Main Address</h2>
<p>The <strong>A Record</strong> is probably the most important one. The "A" stands for <strong>Address</strong>.</p>
<p>It maps a domain name directly to an <strong>IPv4 address</strong> — that's the classic format like <code>93.184.216.34</code>.</p>
<p>When you type <a target="_blank" href="http://mywebsite.com"><code>mywebsite.com</code></a> and hit enter, the browser eventually asks: "What's the A record for this domain?" The answer is an IP address, and that's where your browser goes.</p>
<p><strong>Real-life analogy:</strong> If your domain name is like your name, the A record is your home address. Simple.</p>
<hr />
<h2 id="heading-aaaa-record-the-newer-longer-address">AAAA Record: The Newer, Longer Address</h2>
<p>As the internet grew, we started running out of IPv4 addresses (there are only about 4 billion possible combinations). Enter <strong>IPv6</strong> — a newer format with way more possible addresses.</p>
<p>An IPv6 address looks something like this: <code>2001:0db8:85a3:0000:0000:8a2e:0370:7334</code>. Yeah, it's long.</p>
<p>The <strong>AAAA record</strong> (pronounced "quad-A") maps a domain to an IPv6 address. It does the same job as an A record, just for the newer address format.</p>
<p><strong>Why four A's?</strong> IPv6 addresses are four times longer than IPv4, so... four A's. Engineers can be funny sometimes.</p>
<hr />
<h2 id="heading-cname-record-the-nickname">CNAME Record: The Nickname</h2>
<p><strong>CNAME</strong> stands for <strong>Canonical Name</strong>, but I like to think of it as the "alias" or "nickname" record.</p>
<p>Instead of pointing to an IP address, a CNAME points one domain name to <em>another</em> domain name.</p>
<p>Let's say you have:</p>
<ul>
<li><p><a target="_blank" href="http://mywebsite.com"><code>mywebsite.com</code></a> → points to <code>192.168.1.1</code> (A record)</p>
</li>
<li><p><a target="_blank" href="http://www.mywebsite.com"><code>www.mywebsite.com</code></a> → points to <a target="_blank" href="http://mywebsite.com"><code>mywebsite.com</code></a> (CNAME)</p>
</li>
</ul>
<p>So when someone visits <a target="_blank" href="http://www.mywebsite.com"><code>www.mywebsite.com</code></a>, DNS first resolves it to <a target="_blank" href="http://mywebsite.com"><code>mywebsite.com</code></a>, then resolves <em>that</em> to the IP address.</p>
<p><strong>Why is this useful?</strong> If your IP changes, you only update one A record. All the CNAMEs automatically follow along.</p>
<p><strong>Common confusion:</strong> A records point to IP addresses. CNAMEs point to other domain names. Don't mix them up!</p>
<hr />
<h2 id="heading-mx-record-where-do-emails-go">MX Record: Where Do Emails Go?</h2>
<p><strong>MX</strong> stands for <strong>Mail Exchange</strong>.</p>
<p>When someone sends an email to <a target="_blank" href="mailto:hello@mywebsite.com"><code>hello@mywebsite.com</code></a>, how does their email server know where to deliver it? It looks up the MX record.</p>
<p>MX records point to the mail servers responsible for receiving emails for your domain. They also have a <strong>priority number</strong> — if the primary mail server is down, email gets routed to the backup.</p>
<p><strong>Analogy:</strong> If A records are your home address, MX records are like your post office address. Different purpose, different destination.</p>
<p><strong>Note:</strong> MX is for email routing, NS is for DNS authority. They're completely different things, even though both point to servers.</p>
<hr />
<h2 id="heading-txt-record-the-sticky-note">TXT Record: The Sticky Note</h2>
<p><strong>TXT records</strong> are the most flexible. They let you attach arbitrary text to your domain.</p>
<p>"Why would I need that?" Great question. Here are common uses:</p>
<ol>
<li><p><strong>Domain verification:</strong> Google, Microsoft, and others ask you to add a specific TXT record to prove you own the domain.</p>
</li>
<li><p><strong>Email security:</strong> Records like SPF, DKIM, and DMARC (don't worry about these names yet) use TXT records to prevent email spoofing.</p>
</li>
<li><p><strong>General notes:</strong> Sometimes you just need to store some information.</p>
</li>
</ol>
<p><strong>Think of it as:</strong> A sticky note on your domain that anyone can read.</p>
<hr />
<h2 id="heading-how-it-all-comes-together">How It All Comes Together</h2>
<p>Let's see how a real website might use all these records together.</p>
<p>Imagine I'm setting up <a target="_blank" href="http://coolproject.dev"><code>coolproject.dev</code></a>:</p>
<div class="hn-table">
<table>
<thead>
<tr>
<td>Record Type</td><td>Name</td><td>Value</td><td>Purpose</td></tr>
</thead>
<tbody>
<tr>
<td>NS</td><td><a target="_blank" href="http://coolproject.dev">coolproject.dev</a></td><td><a target="_blank" href="http://ns1.cloudflare.com">ns1.cloudflare.com</a></td><td>Cloudflare manages my DNS</td></tr>
<tr>
<td>A</td><td><a target="_blank" href="http://coolproject.dev">coolproject.dev</a></td><td>104.21.50.123</td><td>Main site IP address</td></tr>
<tr>
<td>AAAA</td><td><a target="_blank" href="http://coolproject.dev">coolproject.dev</a></td><td>2606:4700:3030::6815:327b</td><td>IPv6 address</td></tr>
<tr>
<td>CNAME</td><td>www</td><td><a target="_blank" href="http://coolproject.dev">coolproject.dev</a></td><td>www subdomain redirects to main</td></tr>
<tr>
<td>MX</td><td><a target="_blank" href="http://coolproject.dev">coolproject.dev</a></td><td><a target="_blank" href="http://mail.zoho.com">mail.zoho.com</a></td><td>Zoho handles my emails</td></tr>
<tr>
<td>TXT</td><td><a target="_blank" href="http://coolproject.dev">coolproject.dev</a></td><td>"v=spf1 include:<a target="_blank" href="http://zoho.com">zoho.com</a> ~all"</td><td>Email security</td></tr>
<tr>
<td>TXT</td><td><a target="_blank" href="http://coolproject.dev">coolproject.dev</a></td><td>"google-site-verification=abc123"</td><td>Proves I own this domain</td></tr>
</tbody>
</table>
</div><p>When someone visits my site, here's what happens:</p>
<ol>
<li><p>Browser asks: "Who handles DNS for <a target="_blank" href="http://coolproject.dev">coolproject.dev</a>?" → NS record answers</p>
</li>
<li><p>Browser asks that nameserver: "What's the IP?" → A/AAAA record answers</p>
</li>
<li><p>Browser connects to that IP and loads the website</p>
</li>
</ol>
<p>When someone emails me:</p>
<ol>
<li><p>Their email server asks: "Where do I send emails for this domain?" → MX record answers</p>
</li>
<li><p>Email gets delivered to Zoho's servers</p>
</li>
</ol>
<p>Everything works together like a well-organized system.</p>
<hr />
<h2 id="heading-wrapping-up">Wrapping Up</h2>
<p>DNS might seem complicated at first, but once you break it down record by record, it starts making sense. Here's the quick recap:</p>
<ul>
<li><p><strong>NS:</strong> Who's responsible for this domain's DNS</p>
</li>
<li><p><strong>A:</strong> Domain → IPv4 address</p>
</li>
<li><p><strong>AAAA:</strong> Domain → IPv6 address</p>
</li>
<li><p><strong>CNAME:</strong> Domain → Another domain name</p>
</li>
<li><p><strong>MX:</strong> Where to send emails</p>
</li>
<li><p><strong>TXT:</strong> Extra info and verification</p>
</li>
</ul>
<p>The next time you visit a website, remember — there's a whole system of records working behind the scenes to get you there in milliseconds.</p>
<p>If you're just starting out with web development like me, understanding DNS is a superpower. It'll save you hours of confusion when you're deploying your first project and wondering why your domain isn't working.</p>
<p>Happy coding! 🚀</p>
<hr />
<p><em>This article was written as part of my Web Dev Cohort 2026 journey. If you found it helpful, let me know!</em></p>
]]></content:encoded></item><item><title><![CDATA[What Attending an Indian Wedding Taught Me About Git]]></title><description><![CDATA[Picture this: You arrive at an Indian wedding. You roam around, meet relatives you pretend to remember, eat at three different food stalls, and eventually walk up to the stage for the official photo. The photographer says "smile," clicks, and now you...]]></description><link>https://git-explained-the-indian-wedding-way.hashnode.dev/what-attending-an-indian-wedding-taught-me-about-git</link><guid isPermaLink="true">https://git-explained-the-indian-wedding-way.hashnode.dev/what-attending-an-indian-wedding-taught-me-about-git</guid><category><![CDATA[Git]]></category><category><![CDATA[GitHub]]></category><category><![CDATA[Tutorial]]></category><category><![CDATA[fun]]></category><category><![CDATA[Intuition]]></category><category><![CDATA[Computer Science]]></category><category><![CDATA[Data Science]]></category><category><![CDATA[AI Engineering]]></category><dc:creator><![CDATA[Nikhil Shrestha]]></dc:creator><pubDate>Wed, 31 Dec 2025 02:51:24 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1767149323682/897aac3b-267f-4d96-b11c-2319c4afc304.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Picture this: You arrive at an Indian wedding. You roam around, meet relatives you pretend to remember, eat at three different food stalls, and eventually walk up to the stage for the official photo. The photographer says "smile," clicks, and now you're documented forever in the wedding album. Later, that photo gets shared in the family WhatsApp group for aunties across three continents to see.</p>
<p>Congratulations—you just experienced Git.</p>
<p>No, seriously. That flow—from casually participating, to getting ready, to creating a permanent record, to sharing it with others—is exactly how Git works. And by the end of this article, you'll understand version control so intuitively that you'll never forget it.</p>
<p>But first, let me tell you a secret about learning Git that most tutorials get wrong.</p>
<hr />
<h2 id="heading-the-secret-git-commands-are-just-english-verbs">The Secret: Git Commands Are Just English Verbs</h2>
<p>Most beginners try to memorize Git commands like magic spells. This is painful, and it doesn't work.</p>
<p>Here's the thing: Git's creator, Linus Torvalds, designed these commands to be intuitive. In a 2025 interview celebrating Git's 20th anniversary, Torvalds explained his core philosophy:</p>
<blockquote>
<p>"I kind of compare it to Unix. Unix has a core philosophy of everything is a process, everything is a file, you pipe things between things... I think Git has some of the same kind of fundamental core simplicity to the design." — Linus Torvalds, <a target="_blank" href="https://github.blog/open-source/git/git-turns-20-a-qa-with-linus-torvalds/">GitHub Blog Interview, April 2025</a></p>
</blockquote>
<p>Git commands aren't arbitrary. They're verbs that describe exactly what they do:</p>
<ul>
<li><p><code>git add</code> → adds files to the staging area</p>
</li>
<li><p><code>git commit</code> → commits to your changes</p>
</li>
<li><p><code>git push</code> → pushes your work somewhere else</p>
</li>
<li><p><code>git pull</code> → pulls others' work to you</p>
</li>
<li><p><code>git reset</code> → you’re moving pointers to different snapshots</p>
</li>
</ul>
<p>Once you see this pattern, you stop memorizing and start reasoning. That's the goal of this article.</p>
<hr />
<h2 id="heading-what-is-git">What is Git?</h2>
<p>Git is a <strong>distributed version control system</strong>—a fancy way of saying it's a <code>time machine</code> for your code.</p>
<p>Think of it like a save game system. When you're playing a video game, you save your progress at important moments. Mess up badly? Load a previous save. Want to try a risky strategy? Create a new save file first. Git works exactly the same way for your projects.</p>
<p>The "distributed" part means every developer has a complete copy of the entire project history. You're not dependent on a central server. You can work offline, make saves (commits), experiment freely, and sync up later.</p>
<hr />
<h2 id="heading-why-developers-use-git">Why Developers Use Git</h2>
<p>Git solves real problems that every developer eventually faces:</p>
<p><strong>Collaboration without chaos.</strong> Without version control, whoever saves last wins, and everyone else's work vanishes. Git lets multiple people work on the same project simultaneously, then intelligently combines everyone's changes.</p>
<p><strong>Safe experimentation.</strong> Want to try a completely different approach? Create a separate branch, experiment freely, and either merge your success back or delete your failed experiment. Your stable code remains untouched.</p>
<p><strong>A complete history of everything.</strong> Three months from now, when you're wondering "why did I write this code?", you can look through the history and see exactly what changed, when, and why.</p>
<p><strong>Working offline.</strong> Unlike tools requiring constant internet, Git works entirely on your machine. Commit changes on an airplane, sync up later.</p>
<hr />
<h2 id="heading-git-basics-core-terminology-the-wedding-edition">Git Basics: Core Terminology (The Wedding Edition)</h2>
<p>Here's where our Indian wedding analogy becomes genuinely useful. Let me introduce you to Git's core concepts through an experience you can actually picture.</p>
<p><strong>Repository (the wedding venue)</strong> — The entire wedding venue with all its areas, activities, and memories is your repository. It contains your project files plus the complete history of everything that's happened. When you run <code>git init</code>, you're essentially setting up the venue.</p>
<p><strong>Working Directory (roaming the venue)</strong> — You're at the wedding, doing your thing. Eating at the chaat counter, catching up with cousins, judging the DJ's playlist. You're participating, but nothing is officially recorded yet. In Git, this is where you edit your files freely, basically your working directory.</p>
<p><strong>Staging Area (walking to the photo stage)</strong> — You've decided it's time for the official photo. You fix your outfit, check your hair, and walk toward the stage. You're <em>prepared</em> to be photographed, but the photo hasn't been clicked yet. This is the staging area—your changes are ready to be committed, but not yet saved permanently. This is what happens when you do <code>git add</code> files you want to save permanently in Git tracking are added here.</p>
<p><strong>Commit (the photographer clicks)</strong> — You step onto the stage. The photographer counts down. <em>Click.</em> That moment is now <strong>permanently documented</strong>. This photo will exist in the wedding album, in the WhatsApp group, probably in next year's calendar. A <code>git commit</code> is exactly this—a permanent snapshot that says "this happened."</p>
<p><strong>Branch (different tracks at the wedding)</strong> — Every big wedding has multiple things happening simultaneously. The youngsters are on the dance floor. The elders are discussing whose kid got into which IIT. The kids are running around playing. These are different "branches" of the same event happening in parallel. In Git, branches let you work on different features without affecting the main project.</p>
<p><strong>HEAD (your current location)</strong> — Simply "where you are right now." Are you at the food stall? The dance floor? The stage? HEAD is your current position in the project's timeline.</p>
<p><strong>Merge (the grand family photo)</strong> — Eventually, everyone comes back together for the family photo. The dancers, the elders, the kids—all merging into one frame. In Git, merging combines changes from different branches back into one.</p>
<hr />
<h2 id="heading-the-mental-model-how-changes-flow">The Mental Model: How Changes Flow</h2>
<p>Before learning commands, picture this flow:</p>
<pre><code class="lang-plaintext">Working Directory  →  Staging Area  →  Local Repository  →  Remote Repository
   (roaming the       (walking to      (photo clicked,      (shared on family
    wedding venue)      the stage)      in the album)         WhatsApp)
</code></pre>
<p>You participate in the wedding (make changes). You get ready and approach the stage (stage your changes). The photographer clicks (commit). Then you share with the extended family (push to remote).</p>
<p>Every Git command either moves your changes along this pipeline or helps you see what's happening at each stage.</p>
<hr />
<h2 id="heading-essential-git-commands">Essential Git Commands</h2>
<p>Now let's learn the commands. Remember: these are English verbs telling Git what to do.</p>
<h3 id="heading-git-init-initialize-a-new-repository"><code>git init</code> — "Initialize a new repository"</h3>
<p>This creates a new Git repository in your current folder. It's how you set up the venue.</p>
<pre><code class="lang-bash"><span class="hljs-built_in">cd</span> my-portfolio-website
git init
</code></pre>
<p>Git creates a hidden <code>.git</code> folder that stores all the version control magic. Run this once per project.</p>
<h3 id="heading-git-clone-clone-an-existing-repository"><code>git clone</code> — "Clone an existing repository"</h3>
<p>If a repository already exists somewhere (like on GitHub), this creates a complete copy on your machine, including the entire history.</p>
<pre><code class="lang-bash">git <span class="hljs-built_in">clone</span> https://github.com/username/project-name.git
</code></pre>
<h3 id="heading-git-status-whats-the-current-status"><code>git status</code> — "What's the current status?"</h3>
<p>This is your go-to command for understanding what's happening. Which files changed? What's staged? Which branch are you on?</p>
<pre><code class="lang-bash">git status
</code></pre>
<p>Interestingly, Torvalds admitted he didn't even include <code>git status</code> in his initial version—he didn't think he needed it. In his 2025 interview, he noted that the command naming caused "flame wars" early on because he deliberately chose different names than CVS (the tool Git was replacing) since he "didn't like CVS very much."</p>
<p>Run <code>git status</code> constantly. It's your project's pulse.</p>
<h3 id="heading-git-add-add-this-to-the-staging-area"><code>git add</code> — "Add this to the staging area"</h3>
<p>This moves changes from your working directory to the staging area—you're getting ready for the official photo.</p>
<pre><code class="lang-bash">git add index.html           <span class="hljs-comment"># Stage a specific file</span>
git add .                    <span class="hljs-comment"># Stage all changed files</span>
</code></pre>
<h3 id="heading-git-commit-commit-these-changes-permanently"><code>git commit</code> — "Commit these changes permanently"</h3>
<p>This creates a snapshot of everything currently staged. The photographer clicks. Always include a descriptive message.</p>
<pre><code class="lang-bash">git commit -m <span class="hljs-string">"Add navigation bar to homepage"</span>
</code></pre>
<p>Your commit message should explain <em>what</em> you did and ideally <em>why</em>. Future you will be grateful.</p>
<h3 id="heading-git-log-show-me-the-history-log"><code>git log</code> — "Show me the history log"</h3>
<p>This displays the history of commits—your project's photo album.</p>
<pre><code class="lang-bash">git <span class="hljs-built_in">log</span>
git <span class="hljs-built_in">log</span> --oneline    <span class="hljs-comment"># Compact view</span>
</code></pre>
<h3 id="heading-git-branch-show-or-create-branches"><code>git branch</code> — "Show or create branches"</h3>
<p>Used alone, this lists all branches. With a name, it creates a new one.</p>
<pre><code class="lang-bash">git branch                    <span class="hljs-comment"># List all branches</span>
git branch feature-contact    <span class="hljs-comment"># Create a new branch</span>
</code></pre>
<h3 id="heading-git-checkout-check-out-switch-to-this-branch"><code>git checkout</code> — "Check out (switch to) this branch"</h3>
<p>This switches you to a different branch or commit.</p>
<pre><code class="lang-bash">git checkout feature-contact    <span class="hljs-comment"># Switch to an existing branch</span>
git checkout -b new-feature     <span class="hljs-comment"># Create AND switch in one step</span>
</code></pre>
<h3 id="heading-git-merge-merge-this-branch-into-mine"><code>git merge</code> — "Merge this branch into mine"</h3>
<p>When you've finished work on a branch and want to incorporate those changes into another branch, you merge.</p>
<pre><code class="lang-bash">git checkout main              <span class="hljs-comment"># Switch to the destination branch</span>
git merge feature-contact      <span class="hljs-comment"># Merge the feature branch into it</span>
</code></pre>
<h3 id="heading-git-push-push-my-commits-to-the-remote"><code>git push</code> — "Push my commits to the remote"</h3>
<p>This uploads your local commits to a remote repository (like GitHub), sharing them with others.</p>
<pre><code class="lang-bash">git push origin main
</code></pre>
<p>This is you sharing the wedding photos on the family WhatsApp group.</p>
<h3 id="heading-git-pull-pull-the-latest-changes-from-the-remote"><code>git pull</code> — "Pull the latest changes from the remote"</h3>
<p>This downloads commits from the remote repository and merges them into your current branch.</p>
<pre><code class="lang-bash">git pull origin main
</code></pre>
<p>Always pull before starting work to make sure you have everyone else's latest changes.</p>
<hr />
<h2 id="heading-a-typical-workflow-wedding-style">A Typical Workflow (Wedding Style)</h2>
<p>Let's tie everything together with a realistic scenario. You're building a portfolio website and want to add a contact page.</p>
<p><strong>Arrive with the latest updates.</strong> Before doing your own thing, see what everyone else has been up to.</p>
<pre><code class="lang-bash">git pull origin main
</code></pre>
<p><strong>Find your own space to work.</strong> Don't cause chaos at the main stage. Create your own branch.</p>
<pre><code class="lang-bash">git checkout -b add-contact-page
</code></pre>
<p><strong>Do your work.</strong> Create <code>contact.html</code>, add styles, update the navigation. You're enjoying the wedding.</p>
<p><strong>Check yourself before the photo.</strong> See what you've been up to.</p>
<pre><code class="lang-bash">git status
</code></pre>
<p><strong>Walk to the stage.</strong> Stage your changes.</p>
<pre><code class="lang-bash">git add contact.html styles.css index.html
</code></pre>
<p><strong>Click! Take the photo.</strong> Commit with a clear message.</p>
<pre><code class="lang-bash">git commit -m <span class="hljs-string">"Add contact page with form and update navigation"</span>
</code></pre>
<p><strong>Join the family photo.</strong> Merge your work back to main.</p>
<pre><code class="lang-bash">git checkout main
git merge add-contact-page
</code></pre>
<p><strong>Share with everyone.</strong> Push to the remote repository.</p>
<pre><code class="lang-bash">git push origin main
</code></pre>
<p>That's a complete professional Git workflow.</p>
<hr />
<h2 id="heading-final-thoughts">Final Thoughts</h2>
<p>Torvalds once wrote in an email: "There are too many messy SCMs <em>(Source Code Management)</em> out there that do not have a 'philosophy.' Dammit, I'm not interested in creating another one. This thing has a mental model, and we keep to that model."</p>
<p>That mental model is what makes Git learnable. The commands are verbs. The concepts map to real experiences. And once you see the pattern, you stop memorizing and start understanding.</p>
<p>Start simple. Use <code>git status</code> constantly. Make small, frequent commits with clear messages. Create branches for experiments. And when something goes wrong—because it will—remember that Git almost never actually deletes anything. Your work is usually recoverable.</p>
<p>The best way to learn Git is to use it on a real project. Create a repository for your portfolio, your notes, or a simple practice project. Make commits. Create branches. Break things and fix them.</p>
<p>Before long, these commands will feel as natural as finding the food counter at any wedding venue.</p>
<p>Happy coding! 🎉</p>
<hr />
<h3 id="heading-references">References</h3>
<ol>
<li><p>Torvalds, Linus. Interview with Taylor Blau. "Git turns 20: A Q&amp;A with Linus Torvalds." GitHub Blog, April 7, 2025. <a target="_blank" href="https://github.blog/open-source/git/git-turns-20-a-qa-with-linus-torvalds/">https://github.blog/open-source/git/git-turns-20-a-qa-with-linus-torvalds/</a></p>
</li>
<li><p>Torvalds, Linus. "Re: Handling renames." Git Mailing List, April 14, 2005. <a target="_blank" href="https://public-inbox.org/git/Pine.LNX.4.58.0504141102430.7211@ppc970.osdl.org/">https://public-inbox.org/git/Pine.LNX.4.58.0504141102430.7211@ppc970.osdl.org/</a></p>
</li>
<li><p>"Git - gitglossary Documentation." Git Official Documentation. <a target="_blank" href="https://git-scm.com/docs/gitglossary">https://git-scm.com/docs/gitglossary</a></p>
</li>
</ol>
]]></content:encoded></item></channel></rss>