<?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[Abdul Rahman ]]></title><description><![CDATA[Writing about web development as I learn — projects, mistakes, and things 
worth sharing. CS student. ChaiCode Web Dev Cohort 2026.]]></description><link>https://blog.abdulrdeveloper.me</link><generator>RSS for Node</generator><lastBuildDate>Sat, 23 May 2026 16:49:14 GMT</lastBuildDate><atom:link href="https://blog.abdulrdeveloper.me/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Chai aur SQL — A Beginner's Journey into Databases]]></title><description><![CDATA[SQL stands for Structured Query Language. It is the language we use to talk to relational databases like MySQL, PostgreSQL, and SQLite.
What is a Server and Where Does the Database Live?
Most beginner]]></description><link>https://blog.abdulrdeveloper.me/chai-aur-sql-a-beginner-s-journey-into-databases</link><guid isPermaLink="true">https://blog.abdulrdeveloper.me/chai-aur-sql-a-beginner-s-journey-into-databases</guid><category><![CDATA[SQL]]></category><category><![CDATA[PostgreSQL]]></category><category><![CDATA[Docker]]></category><category><![CDATA[Databases]]></category><category><![CDATA[Beginner Developers]]></category><dc:creator><![CDATA[Abdul Rahman]]></dc:creator><pubDate>Sat, 23 May 2026 15:15:37 GMT</pubDate><content:encoded><![CDATA[<p>SQL stands for Structured Query Language. It is the language we use to talk to relational databases like MySQL, PostgreSQL, and SQLite.</p>
<h2>What is a Server and Where Does the Database Live?</h2>
<p>Most beginners think the database is somewhere floating in the "cloud." It is not.</p>
<p>A database is software running on a server. A server is just a powerful computer that runs 24/7 inside a data center — like Amazon AWS, Google Cloud, or DigitalOcean. When that software saves your data, it writes it to actual files on the server's SSD or hard drive.</p>
<p>MySQL and PostgreSQL save data as <code>.ibd</code> files or WAL (Write-Ahead Log) files. MongoDB saves as <code>.bson</code> files. These files sit on disk just like any file on your laptop.</p>
<p>When you write this in your backend code:</p>
<pre><code class="language-javascript">const pool = new Pool({ host: 'localhost', port: 5432 })
</code></pre>
<p>You are telling your backend to open a connection to the port where the database is listening. That is it. It is a TCP connection — like a phone call between your application and the database.</p>
<hr />
<h2>Why Docker for PostgreSQL?</h2>
<p>Instead of installing PostgreSQL directly on my system, I used Docker. Docker creates an isolated environment (called a container) so I do not mess up my laptop's setup.</p>
<p>Here is the command I used to create a PostgreSQL container with persistent data:</p>
<p><strong>Mac / Linux / WSL:</strong></p>
<pre><code class="language-bash">docker run -d --name sql_class \
  -e POSTGRES_PASSWORD=postgres \
  -e POSTGRES_DB=sql_class_01_db \
  -p 5433:5432 \
  -v "$(pwd)/pgdata:/var/lib/postgresql/data" \
  postgres
</code></pre>
<p><strong>Windows (PowerShell):</strong></p>
<pre><code class="language-powershell">docker run -d --name sql_class -e POSTGRES_PASSWORD=postgres -e POSTGRES_DB=sql_class_01_db -p 5433:5432 -v "${PWD}/pgdata:/var/lib/postgresql/data" postgres
</code></pre>
<p>The <code>-v</code> flag maps a <code>pgdata</code> folder inside your current directory to the container's storage. So even if the container is deleted, your data stays on your laptop.</p>
<p>To check if the container is running:</p>
<pre><code class="language-bash">docker ps
</code></pre>
<p>To remove the container:</p>
<pre><code class="language-bash">docker rm -f sql_class
</code></pre>
<hr />
<h2>Why Learn Raw SQL When We Have Prisma and Drizzle?</h2>
<p>This was my first question. Why learn raw SQL when Prisma can generate the queries for me?</p>
<p>Here is what I found out:</p>
<p>ORMs like Prisma and Drizzle translate your JavaScript/TypeScript code into SQL strings and send them to the database. If you do not know SQL, you do not know what Prisma is actually doing behind the scene.</p>
<p>The N+1 problem is a real thing. ORMs sometimes generate 100 queries instead of 1 optimized query. You will only catch this if you understand SQL.</p>
<p>For complex queries — joining 6 tables, generating financial reports — ORM syntax breaks down. Developers fall back to raw SQL.</p>
<p>And SQL has not changed in 50 years. Sequelize came and went. Prisma came. Drizzle came. SQL is still the same.</p>
<hr />
<h2>DDL — How You Create Tables</h2>
<p>DDL stands for Data Definition Language. These are the commands that define the structure of your database — not the data, just the structure.</p>
<p>The four main DDL commands are <code>CREATE</code>, <code>ALTER</code>, <code>DROP</code>, and <code>TRUNCATE</code>.</p>
<p>Here is a real table I created while practicing:</p>
<pre><code class="language-sql">CREATE TABLE students (
    student_id SERIAL PRIMARY KEY,
    first_name VARCHAR(50) NOT NULL,
    last_name VARCHAR(50),
    email VARCHAR(100) UNIQUE NOT NULL,
    phone_number CHAR(10) UNIQUE,
    age INT CHECK (age &gt; 12),
    current_status VARCHAR(20) DEFAULT 'active'
        CHECK (current_status IN ('active', 'graduated', 'dropped_out', 'on_leave')),
    has_joined_masterji BOOLEAN DEFAULT FALSE,
    current_score NUMERIC(5, 2) CHECK (current_score &gt;= 0 AND current_score &lt;= 100),
    enrollment_date DATE DEFAULT CURRENT_DATE
);
</code></pre>
<p><code>SERIAL</code> means auto-incrementing integer — PostgreSQL handles the ID for you. <code>NOT NULL</code> means the column cannot be empty. <code>UNIQUE</code> means no two rows can have the same value. <code>CHECK</code> is a custom condition — here age must be greater than 12. <code>DEFAULT</code> sets a value automatically if nothing is provided.</p>
<p>To add a new column to an existing table later:</p>
<pre><code class="language-sql">ALTER TABLE students ADD COLUMN batch_name VARCHAR(50) DEFAULT 'Web Dev 2026';
</code></pre>
<hr />
<h2>SELECT Queries — Reading Your Data</h2>
<p>SELECT is the command to read data from a table.</p>
<pre><code class="language-sql">-- Get everything
SELECT * FROM ipl_players;

-- Get specific columns
SELECT name, team, auction_price_crores FROM ipl_players;
</code></pre>
<p><strong>Filtering with WHERE:</strong></p>
<pre><code class="language-sql">-- Basic condition
SELECT * FROM ipl_players WHERE team = 'Mumbai Indians';

-- Multiple conditions
SELECT * FROM ipl_players WHERE role = 'All-Rounder' AND wickets_taken &gt; 10;

-- Either condition
SELECT * FROM ipl_players WHERE team = 'CSK' OR team = 'RCB';

-- Range
SELECT * FROM ipl_players WHERE auction_price_crores BETWEEN 5 AND 12;

-- From a list
SELECT * FROM ipl_players WHERE team NOT IN ('Mumbai Indians', 'CSK', 'RCB');

-- Pattern matching — names starting with R
SELECT * FROM ipl_players WHERE name LIKE 'R%';

-- Check for empty values
SELECT * FROM ipl_players WHERE team IS NULL;
</code></pre>
<p><code>%</code> means zero or more characters. <code>_</code> means exactly one character. <code>LIKE</code> is case-sensitive. <code>ILIKE</code> is case-insensitive (PostgreSQL only).</p>
<p><strong>Sorting and limiting:</strong></p>
<pre><code class="language-sql">-- Sort by price, highest first
SELECT name, auction_price_crores FROM ipl_players ORDER BY auction_price_crores DESC;

-- Top 3 results
SELECT name, auction_price_crores FROM ipl_players ORDER BY auction_price_crores DESC LIMIT 3;

-- Skip first 3, get next 3 (pagination)
SELECT name, auction_price_crores FROM ipl_players ORDER BY auction_price_crores DESC LIMIT 3 OFFSET 3;
</code></pre>
<hr />
<h2>DML — Insert, Update, Delete</h2>
<p>DML stands for Data Manipulation Language. This is how you actually work with the data inside the tables.</p>
<p><strong>INSERT:</strong></p>
<pre><code class="language-sql">-- Single row
INSERT INTO canteen_menu (item_name, category, price)
VALUES ('Vada Pav', 'Snacks', 15);

-- Multiple rows at once
INSERT INTO canteen_menu (item_name, category, price) VALUES
('Masala Chai', 'Beverages', 10),
('Samosa', 'Snacks', 12),
('Maggi', 'Snacks', 25);
</code></pre>
<p><strong>UPDATE:</strong></p>
<pre><code class="language-sql">UPDATE canteen_menu
SET price = 20
WHERE item_name = 'Vada Pav';
</code></pre>
<p><strong>DELETE:</strong></p>
<pre><code class="language-sql">DELETE FROM canteen_menu WHERE item_name = 'Cold Coffee';
</code></pre>
<p>Always use <code>WHERE</code> with UPDATE and DELETE. If you forget the WHERE clause, SQL will update or delete every single row in the table. I learned this the hard way in practice.</p>
<hr />
<h2>Aggregate Functions — COUNT, SUM, AVG, MAX, MIN</h2>
<p>Aggregate functions take a whole column and return one number.</p>
<pre><code class="language-sql">-- How many rows?
SELECT COUNT(*) FROM smart_watch_sales;

-- Total revenue
SELECT SUM(units_sold * price_per_unit) AS total_revenue FROM smart_watch_sales;

-- Average price
SELECT AVG(price_per_unit) AS avg_price FROM smart_watch_sales;

-- Cheapest and most expensive
SELECT MIN(price_per_unit) AS cheapest, MAX(price_per_unit) AS costliest FROM smart_watch_sales;
</code></pre>
<p><strong>GROUP BY</strong> lets you split these calculations by category:</p>
<pre><code class="language-sql">-- Total units sold per brand
SELECT brand, SUM(units_sold) AS total_units_sold
FROM smart_watch_sales
GROUP BY brand
ORDER BY total_units_sold DESC;
</code></pre>
<p><strong>HAVING</strong> filters the groups after they are created. WHERE cannot do this because WHERE runs before grouping:</p>
<pre><code class="language-sql">-- Only show brands that sold more than 20 units total
SELECT brand, SUM(units_sold) AS total_units
FROM smart_watch_sales
GROUP BY brand
HAVING SUM(units_sold) &gt; 20;
</code></pre>
<hr />
<h2>Joins — Connecting Multiple Tables</h2>
<p>This is where relational databases get powerful.</p>
<p>We keep data in separate tables to avoid duplication. Students in one table, internships in another. Joins let you combine them in one query.</p>
<p><strong>Foreign Key</strong> is what connects the tables. The internships table has a <code>student_id</code> column that references the <code>student_id</code> in the students table:</p>
<pre><code class="language-sql">CREATE TABLE internships (
    internship_id SERIAL PRIMARY KEY,
    student_id INT REFERENCES students(student_id) ON DELETE SET NULL,
    company_name VARCHAR(100),
    role VARCHAR(50),
    stipend INT,
    status VARCHAR(20)
);
</code></pre>
<p><code>ON DELETE SET NULL</code> means if a student is deleted, the internship record stays but <code>student_id</code> becomes NULL. <code>ON DELETE CASCADE</code> would delete the internship too.</p>
<p><strong>INNER JOIN — only matching rows:</strong></p>
<pre><code class="language-sql">SELECT s.name, s.branch, i.company_name, i.role
FROM students s
INNER JOIN internships i ON s.student_id = i.student_id;
</code></pre>
<p>Students without internships will not show up here.</p>
<p><strong>LEFT JOIN — all students, matched or not:</strong></p>
<pre><code class="language-sql">SELECT
    s.name,
    s.branch,
    COALESCE(i.company_name, 'No Internship') AS company_name,
    COALESCE(i.stipend, 0) AS stipend
FROM students s
LEFT JOIN internships i ON s.student_id = i.student_id;
</code></pre>
<p><code>COALESCE</code> replaces NULL with a default value. Students without internships will appear with 'No Internship' instead of NULL.</p>
<p>To find students who have NOT applied anywhere:</p>
<pre><code class="language-sql">SELECT s.name, s.email
FROM students s
LEFT JOIN internships i ON s.student_id = i.student_id
WHERE i.internship_id IS NULL;
</code></pre>
<p><strong>RIGHT JOIN</strong> returns all rows from the right table. In practice, developers rarely use RIGHT JOIN — they just flip the table order and use LEFT JOIN instead. It reads more naturally.</p>
<p><strong>FULL OUTER JOIN — everything from both tables:</strong></p>
<pre><code class="language-sql">SELECT s.name AS student_name, i.company_name
FROM students s
FULL OUTER JOIN internships i ON s.student_id = i.student_id;
</code></pre>
<p>This shows all students and all internships. Where there is no match on either side, you get NULL.</p>
<hr />
<h2>Indexes — Making Queries Fast</h2>
<p>I inserted 1,000,000 rows into a table to test this.</p>
<p>Without an index, when you search by name, PostgreSQL scans every single row from top to bottom. This is called a Sequential Scan.</p>
<pre><code class="language-sql">EXPLAIN ANALYZE SELECT marks FROM marks WHERE name = '809E15792322';
</code></pre>
<p><code>EXPLAIN ANALYZE</code> shows you the query plan and execution time. Before adding an index, my query took around 40-50 milliseconds on 1 million rows.</p>
<p>After creating an index:</p>
<pre><code class="language-sql">CREATE INDEX idx_name ON marks (name);
</code></pre>
<p>The same query dropped to under 1 millisecond. PostgreSQL now uses a B-Tree structure to find the row directly instead of scanning everything.</p>
<p>A <strong>covering index</strong> goes one step further. If your query asks for <code>marks</code> along with <code>name</code>, you can store both in the index itself:</p>
<pre><code class="language-sql">CREATE INDEX idx_name ON marks (name) INCLUDE (marks);
</code></pre>
<p>Now PostgreSQL does not even need to visit the main table. It gets everything from the index directly. This is called an Index Only Scan.</p>
<hr />
<h2>Transactions and ACID</h2>
<p>A transaction is a way to group multiple SQL operations into one unit of work. Either all of them succeed, or none of them do.</p>
<p>The classic example is a bank transfer:</p>
<pre><code class="language-sql">BEGIN;

    UPDATE accounts SET balance = balance - 500 WHERE owner = 'Shubham';
    UPDATE accounts SET balance = balance + 500 WHERE owner = 'Hitesh';

COMMIT;
</code></pre>
<p>If the server crashes between the two UPDATE statements, the database will rollback both changes. The money will not disappear from Shubham's account and fail to reach Hitesh.</p>
<p>If something goes wrong, you can manually undo everything:</p>
<pre><code class="language-sql">BEGIN;
    UPDATE accounts SET balance = balance - 5000 WHERE owner = 'Shubham';
ROLLBACK;
</code></pre>
<p><strong>ACID</strong> is the set of guarantees that make this work:</p>
<p><strong>Atomicity</strong> — All or nothing. If Step 2 fails, Step 1 is also undone. I tested this by putting <code>SELECT 1/0</code> (division by zero error) in the middle of a transaction. The whole thing rolled back.</p>
<p><strong>Consistency</strong> — The database only moves from one valid state to another. I set <code>CHECK (balance &gt;= 0)</code> on the accounts table. When I tried to deduct 5000 from an account with 1000, PostgreSQL threw an error and refused the operation completely.</p>
<p><strong>Isolation</strong> — Uncommitted transactions are invisible to other connections. I opened two terminal windows to test this. Terminal 1 started a transaction and updated a balance but did not COMMIT. Terminal 2 could still see the old balance. Only after Terminal 1 ran <code>COMMIT</code> did Terminal 2 see the new number.</p>
<p><strong>Durability</strong> — Once committed, data is permanent. PostgreSQL writes committed transactions to the Write-Ahead Log (WAL) on disk before returning a success response. Even if the server crashes one second after the COMMIT, the data will be there when the server restarts.</p>
<hr />
<p>All the code from this blog is in my GitHub repo: <a href="https://github.com/abdulrdeveloper/Learn-SQL">github.com/abdulrdeveloper/Learn-SQL</a></p>
<p><a href="https://github.com/abdulrdeveloper/Learn-SQL/tree/main/Real%20World%20DBs%20Collection">Real World Database Collections ↗</a></p>
<hr />
<p>You can find more of my work at <a href="https://abdulrdeveloper.me">abdulrdeveloper.me</a></p>
]]></content:encoded></item><item><title><![CDATA[Chai aur CSS]]></title><description><![CDATA[Introduction
CSS stands for Cascading Stylesheet.

Cascading is a word that is meant by overwriting.

The stylesheet is just for styling.


While overwriting the style of an element , Cascading first checks the (specificity + line).

Specificity and ...]]></description><link>https://blog.abdulrdeveloper.me/chai-aur-css</link><guid isPermaLink="true">https://blog.abdulrdeveloper.me/chai-aur-css</guid><category><![CDATA[CSS]]></category><category><![CDATA[CSS Animation]]></category><category><![CDATA[css flexbox]]></category><category><![CDATA[CSS Grid]]></category><dc:creator><![CDATA[Abdul Rahman]]></dc:creator><pubDate>Sun, 01 Feb 2026 14:12:35 GMT</pubDate><content:encoded><![CDATA[<h2 id="heading-introduction">Introduction</h2>
<p>CSS stands for <strong>Cascading Stylesheet</strong>.</p>
<ul>
<li><p>Cascading is a word that is meant by overwriting.</p>
</li>
<li><p>The stylesheet is just for styling.</p>
</li>
</ul>
<p>While overwriting the style of an element , Cascading first checks the (specificity + line).</p>
<hr />
<h2 id="heading-specificity-and-priority-toppic-in-css">Specificity and Priority Toppic in CSS :</h2>
<p>The style will only apply for highest priority of specificity , if both element are at same priority then 2nd element will overwrite 1st element style .</p>
<ol>
<li><p>p { class: blue; } &lt;—- lowest priority (tag name)</p>
</li>
<li><p>.class { color: blue; } &lt;—- medium priority</p>
</li>
<li><p>#class { color: blue; } ←—- high priority</p>
</li>
<li><p>inline style directly in html tag &lt;—— highest priority</p>
</li>
</ol>
<hr />
<p><strong>Same element, same specificity → last rule wins</strong></p>
<pre><code class="lang-css"><span class="hljs-comment">/* CSS rules flow from UP to Down. When second rule target in
the same element, then the bottom rule override the first rule. */</span>
<span class="hljs-selector-tag">p</span> {
  <span class="hljs-attribute">color</span>: red;
}

<span class="hljs-selector-tag">p</span> {
  <span class="hljs-attribute">color</span>: blue;             <span class="hljs-comment">/* This style will applied */</span>
}
</code></pre>
<pre><code class="lang-xml"><span class="hljs-tag">&lt;<span class="hljs-name">p</span>&gt;</span>Hello world<span class="hljs-tag">&lt;/<span class="hljs-name">p</span>&gt;</span>
</code></pre>
<hr />
<p><strong>Same element, → higher‑priority selector wins</strong></p>
<pre><code class="lang-css"><span class="hljs-selector-tag">p</span> {
  <span class="hljs-attribute">color</span>: red;        <span class="hljs-comment">/* element selector (lowest) */</span>
}

<span class="hljs-selector-class">.highlight</span> {
  <span class="hljs-attribute">color</span>: green;      <span class="hljs-comment">/* class selector (higher) */</span>
}

<span class="hljs-selector-id">#special</span> {
  <span class="hljs-attribute">color</span>: blue;       <span class="hljs-comment">/* ID selector (highest because there is no inline style) */</span>
}
</code></pre>
<pre><code class="lang-xml"><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>Hello world<span class="hljs-tag">&lt;/<span class="hljs-name">p</span>&gt;</span>
</code></pre>
<hr />
<h2 id="heading-css-cheatsheet">CSS CheatSheet :</h2>
<ul>
<li><h2 id="heading-font"><strong>Font :</strong></h2>
</li>
</ul>
<pre><code class="lang-css"><span class="hljs-selector-tag">font-family</span>: '<span class="hljs-selector-tag">Segoe</span> <span class="hljs-selector-tag">UI</span>', <span class="hljs-selector-tag">Tahoma</span>, <span class="hljs-selector-tag">Geneva</span>, <span class="hljs-selector-tag">Verdana</span>, <span class="hljs-selector-tag">sans-serif</span>; <span class="hljs-comment">/* Sets prioritized fonts for text */</span>
<span class="hljs-selector-tag">font-size</span>: 1<span class="hljs-selector-tag">rem</span>; <span class="hljs-comment">/* Sets text size, responsive with rem */</span>
<span class="hljs-selector-tag">font-weight</span>: <span class="hljs-selector-tag">bold</span>; <span class="hljs-comment">/* or 100–900 for thickness control */</span>
<span class="hljs-selector-tag">font-style</span>: <span class="hljs-selector-tag">italic</span>;  <span class="hljs-comment">/* Makes text italic */</span>
</code></pre>
<hr />
<h2 id="heading-responsive-font">Responsive Font :</h2>
<pre><code class="lang-css"><span class="hljs-selector-tag">font-size</span>: <span class="hljs-selector-tag">clamp</span>(16<span class="hljs-selector-tag">px</span>, 4<span class="hljs-selector-tag">vw</span>, 24<span class="hljs-selector-tag">px</span>);
</code></pre>
<p>It keeps responsive font on screen size.</p>
<ul>
<li><p>Minimum: 16px → Font will never be less then 16px.</p>
</li>
<li><p>Preferred: 4vw (4% of viewport width) → Normally use the 4% of screen width.</p>
<ul>
<li><p>If Screen size will be large, then font will be also large.</p>
</li>
<li><p>If Screen size will be small, then font will be also small.</p>
</li>
</ul>
</li>
<li><p>Maximum: 24px → Font size will never be less then 24px.</p>
</li>
<li><p>You can set these according to your specifications.</p>
</li>
</ul>
<hr />
<ul>
<li><h2 id="heading-text"><strong>Text</strong></h2>
</li>
</ul>
<pre><code class="lang-css"><span class="hljs-selector-tag">text-align</span>: <span class="hljs-selector-tag">center</span>; <span class="hljs-comment">/* Aligns text in the center of the line */</span>
<span class="hljs-selector-tag">letter-spacing</span>: 0<span class="hljs-selector-class">.15em</span>; <span class="hljs-comment">/* Adjusts space between characters */</span>
<span class="hljs-selector-tag">text-decoration</span>: <span class="hljs-selector-tag">underline</span>; <span class="hljs-comment">/* Adds decoration like underline/overline/line-through */</span>
<span class="hljs-selector-tag">word-spacing</span>: 0<span class="hljs-selector-class">.25em</span>; <span class="hljs-comment">/* Sets spacing between words */</span>
<span class="hljs-selector-tag">line-height</span>: 1<span class="hljs-selector-class">.5</span>; <span class="hljs-comment">/* Sets vertical spacing between lines */</span>
<span class="hljs-selector-tag">text-transform</span>: <span class="hljs-selector-tag">uppercase</span>; <span class="hljs-comment">/* Converts text to uppercase */</span>
</code></pre>
<hr />
<ul>
<li><h2 id="heading-background"><strong>Background</strong></h2>
</li>
</ul>
<pre><code class="lang-css"><span class="hljs-selector-tag">background</span>: <span class="hljs-selector-tag">linear-gradient</span>(...);  <span class="hljs-comment">/* Adds gradient */</span>
<span class="hljs-selector-tag">background-image</span>: <span class="hljs-selector-tag">url</span>("<span class="hljs-selector-tag">path</span>"); <span class="hljs-comment">/* Adds image */</span>
<span class="hljs-selector-tag">background-position</span>: <span class="hljs-selector-tag">center</span>; <span class="hljs-comment">/* Positions background image */</span>
<span class="hljs-selector-tag">background-size</span>: <span class="hljs-selector-tag">cover</span>; <span class="hljs-comment">/* Scales image to cover element */</span>
<span class="hljs-selector-tag">background-blend-mode</span>: <span class="hljs-selector-tag">multiply</span>; <span class="hljs-comment">/* Blends background layers */</span>
<span class="hljs-selector-tag">background-clip</span>: <span class="hljs-selector-tag">text</span>; <span class="hljs-comment">/* Clips background to text */</span>
</code></pre>
<ul>
<li><h2 id="heading-border-amp-outline"><strong>Border &amp; Outline</strong></h2>
</li>
</ul>
<pre><code class="lang-css"><span class="hljs-selector-tag">border</span>: 2<span class="hljs-selector-tag">px</span> <span class="hljs-selector-tag">solid</span> <span class="hljs-selector-id">#000</span>; <span class="hljs-comment">/* Adds border with size, style, color */</span>
<span class="hljs-selector-tag">border-radius</span>: 15<span class="hljs-selector-tag">px</span>; <span class="hljs-comment">/* Rounds corners */</span>
<span class="hljs-selector-tag">outline</span>: 2<span class="hljs-selector-tag">px</span> <span class="hljs-selector-tag">dashed</span> <span class="hljs-selector-tag">red</span>; <span class="hljs-comment">/* Adds outline outside element box */</span>
<span class="hljs-selector-tag">border-image</span>: <span class="hljs-selector-tag">url</span>(<span class="hljs-selector-tag">border</span><span class="hljs-selector-class">.png</span>) 30 <span class="hljs-selector-tag">round</span>; <span class="hljs-comment">/* Uses image as border */</span>
</code></pre>
<hr />
<ul>
<li><h2 id="heading-box-model"><strong>Box Model</strong></h2>
</li>
</ul>
<pre><code class="lang-css"><span class="hljs-selector-tag">margin</span>: 10<span class="hljs-selector-tag">px</span> 20<span class="hljs-selector-tag">px</span> 10<span class="hljs-selector-tag">px</span> 20<span class="hljs-selector-tag">px</span>; <span class="hljs-comment">/* Outer spacing */</span>
<span class="hljs-selector-tag">padding</span>: 5<span class="hljs-selector-tag">px</span> 10<span class="hljs-selector-tag">px</span> 5<span class="hljs-selector-tag">px</span> 10<span class="hljs-selector-tag">px</span>; <span class="hljs-comment">/* Inner spacing */</span>
<span class="hljs-selector-tag">width</span>: 100%; <span class="hljs-comment">/* Element width */</span>
<span class="hljs-selector-tag">height</span>: <span class="hljs-selector-tag">fit-content</span>; <span class="hljs-comment">/* Height based on content */</span>
</code></pre>
<hr />
<ul>
<li><h2 id="heading-box-sizing">Box-Sizing</h2>
</li>
</ul>
<pre><code class="lang-css"><span class="hljs-selector-tag">box-sizing</span>: <span class="hljs-selector-tag">border-box</span>; <span class="hljs-comment">/* Includes padding/border in total size */</span>
<span class="hljs-selector-tag">overflow</span>: <span class="hljs-selector-tag">hidden</span>; <span class="hljs-comment">/* Hides overflow */</span>
<span class="hljs-selector-tag">overflow-x</span>: <span class="hljs-selector-tag">scroll</span>; <span class="hljs-comment">/* Scroll horizontally */</span>
<span class="hljs-selector-tag">overflow-y</span>: <span class="hljs-selector-tag">auto</span>; <span class="hljs-comment">/* Scroll vertically as needed */</span>
<span class="hljs-selector-tag">aspect-ratio</span>: 16/9; <span class="hljs-comment">/* Keeps width:height ratio */</span>
<span class="hljs-selector-tag">object-fit</span>: <span class="hljs-selector-tag">cover</span>; <span class="hljs-comment">/* Scales image/video to fill box */</span>
</code></pre>
<ul>
<li><h2 id="heading-colors"><strong>Colors</strong></h2>
</li>
</ul>
<pre><code class="lang-css"><span class="hljs-selector-tag">color</span>: <span class="hljs-selector-id">#333</span>; <span class="hljs-comment">/* Text color */</span>
<span class="hljs-selector-tag">opacity</span>: 0<span class="hljs-selector-class">.8</span>; <span class="hljs-comment">/* Element transparency */</span>
<span class="hljs-selector-tag">color</span>: <span class="hljs-selector-tag">hsl</span>(200, 80%, 40%); <span class="hljs-comment">/* HSL color format */</span>
</code></pre>
<ul>
<li><h2 id="heading-positioning"><strong>Positioning</strong></h2>
</li>
</ul>
<pre><code class="lang-css"><span class="hljs-selector-tag">position</span>: <span class="hljs-selector-tag">relative</span>; <span class="hljs-comment">/* Sets positioning context */</span>
<span class="hljs-selector-tag">z-index</span>: 10; <span class="hljs-comment">/* Stacking order */</span>
</code></pre>
<hr />
<h2 id="heading-flexbox">FlexBox :</h2>
<p><strong>Container-axis:</strong><br />In a Container, there are 2 axis.</p>
<ul>
<li><p>First is Main Axis , It goes from left (main start) to right (main end) . And it is controlled by <code>justify-content: ;</code></p>
</li>
<li><p>Second is Cross-axis , It goes from Top (cross main) to bottom (cross end). Ad It is controlled by <code>Align-Items: ;</code></p>
</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1769913304686/64f263b9-1bc0-4344-8893-837f1b063531.png" alt class="image--center mx-auto" /></p>
<p>And when we apply <code>Display: flex;</code> on this container, then the whole items inside the container will be come on main axis start.</p>
<h3 id="heading-flex-direction"><strong>Flex Direction :</strong></h3>
<ul>
<li><p><code>flex-direction : row;</code> is used to add all items in a row (mostly default)</p>
</li>
<li><p><code>flex-direction:column;</code> is used to add all items in a column.</p>
</li>
</ul>
<h3 id="heading-properties-for-child-in-flexbox"><strong>Properties for Child in Flexbox :</strong></h3>
<ul>
<li><p>You can also add some properties on a specific item in a container, and you can control it.</p>
</li>
<li><p><code>flex-1</code> is used to add on a specific item , and it`s means that give all the extra width to this specific item.</p>
</li>
<li><p><code>flex-2</code> is also used to add a specific item but it will take double space of the extra space .<br />  It works like this :<br />  If you have 5 items in a container, and you added <code>flex:1;</code> on item 1 and <code>flex:2;</code> on item 2 , then first of all all items will take his width and the extra remaining width will be divided into 3 parts . 2 parts will be of item 2 and 1 part will be of item 1 .</p>
<p>  <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1769915430661/9b1cf5d9-0c64-48e2-90e9-d44ff075fe94.png" alt class="image--center mx-auto" /></p>
</li>
</ul>
<h3 id="heading-order-in-flexbox"><strong>Order in Flexbox :</strong></h3>
<p>Using order property , you can adjust/change any item place.<br />If you write <code>order:1;</code> on item 1 then it`s priority will be higher then all other items because all items have the default priority of 0 . And if you added 1 on a specific item then it will shift at the end , and it will come after all lowest orders .</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1769926898557/6db304dc-196e-4a14-bfc9-486a7f24e2e3.png" alt class="image--center mx-auto" /></p>
<h3 id="heading-wrap-property-in-flexbox"><strong>Wrap property in Flexbox:</strong></h3>
<ul>
<li><p><code>flex:wrap;</code> will keep default position and place.</p>
</li>
<li><p><code>flex:wrap-reverse</code> will do opposite of default position and place.</p>
</li>
</ul>
<h3 id="heading-flexbox-all-properties"><strong>Flexbox all Properties :</strong></h3>
<pre><code class="lang-css"><span class="hljs-comment">/* Parent (Container) */</span>

<span class="hljs-selector-tag">display</span>: <span class="hljs-selector-tag">flex</span>; <span class="hljs-comment">/* Activates flex layout */</span>
<span class="hljs-selector-tag">flex-direction</span>: <span class="hljs-selector-tag">row</span>; <span class="hljs-comment">/* Row direction */</span>
<span class="hljs-selector-tag">justify-content</span>: <span class="hljs-selector-tag">space-between</span>; <span class="hljs-comment">/* Distributes space */</span>
<span class="hljs-selector-tag">align-items</span>: <span class="hljs-selector-tag">center</span>; <span class="hljs-comment">/* Aligns items vertically */</span>
<span class="hljs-selector-tag">gap</span>: 1<span class="hljs-selector-tag">rem</span>; <span class="hljs-comment">/* Space between flex items */</span>

<span class="hljs-comment">/* Child (items) */</span>

<span class="hljs-selector-tag">flex</span>: 1; <span class="hljs-comment">/* Flexible width */</span>
<span class="hljs-selector-tag">align-self</span>: <span class="hljs-selector-tag">center</span>; <span class="hljs-comment">/* Individual alignment */</span>
<span class="hljs-selector-tag">order</span>: 2; <span class="hljs-comment">/* Changes visual order */</span>
</code></pre>
<hr />
<h2 id="heading-set-primarysecondary-color-in-css">Set Primary/Secondary Color in CSS :</h2>
<p>You can define colors in the <code>:root</code> using css variables and you can reuse them anywhere in the stylesheet just by giving the color reference. It`s easy and widely used in modern CSS.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1769953103903/730cc4da-de4b-47d6-a7b0-04c0a2ddfb23.png" alt class="image--center mx-auto" /></p>
<hr />
<h2 id="heading-css-grid">CSS Grid :</h2>
<h3 id="heading-control-whole-container-coloumns"><strong>Control Whole Container coloumn`s:</strong></h3>
<p>You can control whole container , and you can decide that how many coloumns it should take.</p>
<p>1fr is used to add 1 coloumn and this is how you can add coloumns according to your need.</p>
<pre><code class="lang-css"><span class="hljs-selector-tag">display</span>: <span class="hljs-selector-tag">grid</span>;
<span class="hljs-selector-tag">grid-template-columns</span>: 1<span class="hljs-selector-tag">fr</span> 1<span class="hljs-selector-tag">fr</span> 1<span class="hljs-selector-tag">fr</span>;
</code></pre>
<hr />
<h3 id="heading-control-whole-container-rows"><strong>Control Whole Container Row`s:</strong></h3>
<p>Grid-row is used to create rows with their different rows height. like in this it will create three rows with their 3 different rows height.</p>
<pre><code class="lang-html"> .grid-container {
 display: grid;
 grid-template-rows: 80px 100px 100px;
</code></pre>
<hr />
<h3 id="heading-control-specific-item-width"><strong>Control specific item width:</strong></h3>
<pre><code class="lang-css">  <span class="hljs-selector-tag">grid-column</span>: 1 / 4; <span class="hljs-comment">/* It will cover ( colomn 1,2 and 3 ) width. */</span>
  <span class="hljs-selector-tag">grid-column</span>: 2 / 4; <span class="hljs-comment">/* It will cover ( colomn 2 and 3 ) width. 
And if you make 3 box, the lines will be 4.
     | 1 | 2 | 3 |
     ^   ^   ^   ^
     1   2   3   4   ← lines */</span>
</code></pre>
<p>And remember that always apply this on a specfic box not on the whole container.</p>
<hr />
<h3 id="heading-control-specific-item-height"><strong>Control specific item height:</strong></h3>
<p>You can control , stretch , minimize, or adjust any row item height in a container.</p>
<pre><code class="lang-css">  <span class="hljs-selector-tag">grid-row</span>: 1 / 4; <span class="hljs-comment">/* It will cover ( row 1,2 and 3 ) height. */</span>
  <span class="hljs-selector-tag">grid-row</span>: 2 / 4; <span class="hljs-comment">/* It will cover ( rows 2 and 3 ) height. 
And remember that always apply this on a specfic box not on the whole container.
And if you make 3 box, the lines will be 4.
     | 1 | 2 | 3 |
     ^   ^   ^   ^
     1   2   3   4   ← lines */</span>
</code></pre>
<hr />
<h2 id="heading-media-queries"><strong>Media Queries:</strong></h2>
<pre><code class="lang-css"><span class="hljs-keyword">@media</span> (<span class="hljs-attribute">max-width:</span> <span class="hljs-number">768px</span>) {
  <span class="hljs-selector-tag">body</span> { 
      <span class="hljs-attribute">font-size</span>: <span class="hljs-number">14px</span>; <span class="hljs-comment">/* Applies styles on small screens */</span> 
       }
 }
</code></pre>
<hr />
<h2 id="heading-animations-amp-transitions"><strong>Animations &amp; Transitions</strong></h2>
<h3 id="heading-animation"><strong>Animation</strong></h3>
<pre><code class="lang-css"><span class="hljs-keyword">@keyframes</span> slide {
<span class="hljs-selector-tag">from</span> {
      <span class="hljs-attribute">transform</span>: <span class="hljs-built_in">translateX</span>(-<span class="hljs-number">100%</span>); 
     }
  <span class="hljs-selector-tag">to</span> {
      <span class="hljs-attribute">transform</span>: <span class="hljs-built_in">translateX</span>(<span class="hljs-number">0</span>); 
     }
}
<span class="hljs-selector-class">.element</span> {
  <span class="hljs-attribute">animation</span>: slide <span class="hljs-number">1s</span> ease-in-out infinite alternate; <span class="hljs-comment">/* Animates element */</span>
}

<span class="hljs-selector-tag">transition</span>: <span class="hljs-selector-tag">all</span> 0<span class="hljs-selector-class">.3s</span> <span class="hljs-selector-tag">ease-in-out</span>;    <span class="hljs-comment">/* Smoothly animates property changes */</span>
<span class="hljs-selector-tag">transform</span>: <span class="hljs-selector-tag">scale</span>(1<span class="hljs-selector-class">.1</span>) <span class="hljs-selector-tag">rotate</span>(10<span class="hljs-selector-tag">deg</span>); <span class="hljs-comment">/* Moves, rotates, scales elements */</span>
<span class="hljs-selector-tag">transform</span>:  <span class="hljs-selector-tag">translate</span>(10<span class="hljs-selector-tag">px</span>,20<span class="hljs-selector-tag">px</span>);    <span class="hljs-comment">/* use to move element in X-axis,Y-axis direction*/</span>
</code></pre>
<hr />
<h2 id="heading-modern-features-in-css"><strong>Modern Features in CSS :</strong></h2>
<pre><code class="lang-css"><span class="hljs-selector-tag">scroll-snap-type</span>: <span class="hljs-selector-tag">x</span> <span class="hljs-selector-tag">mandatory</span>; <span class="hljs-comment">/* Creates snap scrolling */</span>
<span class="hljs-selector-tag">backdrop-filter</span>: <span class="hljs-selector-tag">blur</span>(10<span class="hljs-selector-tag">px</span>); <span class="hljs-comment">/* Adds blur behind element */</span>
<span class="hljs-selector-pseudo">::-webkit-scrollbar</span> { <span class="hljs-attribute">width</span>: <span class="hljs-number">8px</span>; }
<span class="hljs-selector-pseudo">::-webkit-scrollbar-thumb</span> { <span class="hljs-attribute">background</span>: <span class="hljs-number">#888</span>; <span class="hljs-attribute">border-radius</span>: <span class="hljs-number">4px</span>; } <span class="hljs-comment">/* Styles scrollbar */</span>
<span class="hljs-selector-tag">font-size</span>: <span class="hljs-selector-tag">clamp</span>(1<span class="hljs-selector-tag">rem</span>, 2<span class="hljs-selector-tag">vw</span>, 1<span class="hljs-selector-class">.5rem</span>); <span class="hljs-comment">/* Responsive font size */</span>
</code></pre>
<hr />
]]></content:encoded></item><item><title><![CDATA[Browser working]]></title><description><![CDATA[when we opened a website on browser, what happened behind the scene ??
we only write code, then how the browser loads everything and show the complete webpage to the client.
This all happened through Browser.
Basics of a Browser :
So let’s try to und...]]></description><link>https://blog.abdulrdeveloper.me/browser-working</link><guid isPermaLink="true">https://blog.abdulrdeveloper.me/browser-working</guid><category><![CDATA[Browsers]]></category><category><![CDATA[rendering engine]]></category><category><![CDATA[BROWSER ENGINE AND WEB BROWSER]]></category><dc:creator><![CDATA[Abdul Rahman]]></dc:creator><pubDate>Thu, 29 Jan 2026 07:06:01 GMT</pubDate><content:encoded><![CDATA[<p>when we opened a website on browser, what happened behind the scene ??</p>
<p>we only write code, then how the browser loads everything and show the complete webpage to the client.</p>
<p>This all happened through Browser.</p>
<h2 id="heading-basics-of-a-browser">Basics of a Browser :</h2>
<p>So let’s try to understand the browser.</p>
<ul>
<li><p>Basic knowledge of the browser is enough if you don’t want to build your own browser.</p>
</li>
<li><p>Deep knowledge will help when you want to build your own browser.</p>
</li>
</ul>
<hr />
<h2 id="heading-browsers-most-important-part">Browser`s Most Important Part :</h2>
<p>The most important part of a browser is the Search URL (where we search everything).</p>
<h2 id="heading-browser-structure">Browser structure :</h2>
<p>Browser seems like this:</p>
<p><img src="https://messages-prod.27c852f3500f38c1e7786e2c9ff9e48f.r2.cloudflarestorage.com/019c056b-ba7e-71d9-8218-b9644164b0d3/1769617660715-019c056d-b082-7b30-abee-dc2936ec5fa8.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&amp;X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&amp;X-Amz-Credential=af634fe044bd071ab4c5d356fdace60f%2F20260129%2Fauto%2Fs3%2Faws4_request&amp;X-Amz-Date=20260129T065444Z&amp;X-Amz-Expires=3600&amp;X-Amz-Signature=f38d65be8a4405c4f682ac535877954a687ad15190b261cf71b292076a3efa03&amp;X-Amz-SignedHeaders=host&amp;x-amz-checksum-mode=ENABLED&amp;x-id=GetObject" alt="019c056b-ba7e-71d9-8218-b9644164b0d3/1769617660715-019c056d-b082-7b30-abee-dc2936ec5fa8.png" /></p>
<hr />
<h2 id="heading-user-interface">User Interface :</h2>
<ul>
<li>It is the frontend view of the browser which the user/client see while visiting the browser. It contains UI/UX like search bar, buttons (back, forward, refresh), webpages , tabs , page content.</li>
</ul>
<hr />
<h2 id="heading-browser-engine">Browser Engine :</h2>
<p>It manage whole user requests and give instructions to the rendering engine. Think of it like a coordinator who gives instructions , organise and manage them.</p>
<ul>
<li><p>Browser Engine recieves all the users input.</p>
</li>
<li><p>It Gives instructions to rendering Engine.</p>
</li>
<li><p>It gives js code to javascript interpreter.</p>
</li>
<li><p>It gives network requests to networking.</p>
</li>
</ul>
<hr />
<h2 id="heading-rendoring-engine">Rendoring Engine :</h2>
<p>It is the most interesting and magical part of the browser . It is divided into 3 main parts,</p>
<ul>
<li><p>Networking</p>
</li>
<li><p>JS interpreter</p>
</li>
<li><p>UI Backend</p>
</li>
</ul>
<ol>
<li><h3 id="heading-networking"><strong>Networking :</strong></h3>
</li>
</ol>
<p>When the user types "chicode.com", the user sees the website but behind the scene</p>
<ul>
<li><p>Network Engine goes to chaicode server and brings all HTML, CSS and JS files and images.</p>
</li>
<li><p>It gives the complete code files to Browser Engine.</p>
</li>
</ul>
<hr />
<ol start="2">
<li><h3 id="heading-js-interpreter">JS-Interpreter :</h3>
</li>
</ol>
<p>It controls all functions on the website , if the user enter a button on the website then behind the scene</p>
<ul>
<li><p>JS interpreter loads all the JS files, manages them and update the page quickly infront of the user</p>
</li>
<li><p>It executes functions and perform specific actions.</p>
</li>
</ul>
<hr />
<ol start="3">
<li><h3 id="heading-ui-backend">UI Backend :</h3>
</li>
</ol>
<p>It is the most important part of the rendering engine. It fatches data from HTML and CSS files, create DOM and CSSOM , and finally create a paints of them and show the user on browser screen. Fist of all it takes HTML and CSS code files by Network Engine.</p>
<p><strong>HTML DOM Tree :</strong></p>
<ul>
<li><p>It converts HTML into DOM like this,</p>
<p>  <img src="https://messages-prod.27c852f3500f38c1e7786e2c9ff9e48f.r2.cloudflarestorage.com/6c17eb9e-3623-4351-8fdf-ef2a02745e13/1769669554839-019c0885-bc87-75af-9f10-d03b1ac33bee.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&amp;X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&amp;X-Amz-Credential=af634fe044bd071ab4c5d356fdace60f%2F20260129%2Fauto%2Fs3%2Faws4_request&amp;X-Amz-Date=20260129T065235Z&amp;X-Amz-Expires=3600&amp;X-Amz-Signature=c3a909cce0655b20743f0e1ea88f8255177a328ee9d668b4567a109295bba49a&amp;X-Amz-SignedHeaders=host&amp;x-amz-checksum-mode=ENABLED&amp;x-id=GetObject" alt /></p>
<hr />
<h3 id="heading-css-cssom-tree">CSS CSSOM Tree :</h3>
</li>
<li><p>It converts CSS code into CSSOM like this ,</p>
<p>  <img src="https://messages-prod.27c852f3500f38c1e7786e2c9ff9e48f.r2.cloudflarestorage.com/6c17eb9e-3623-4351-8fdf-ef2a02745e13/1769664795029-019c083c-f7b0-794b-a095-78f59cd8020d.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&amp;X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&amp;X-Amz-Credential=af634fe044bd071ab4c5d356fdace60f%2F20260129%2Fauto%2Fs3%2Faws4_request&amp;X-Amz-Date=20260129T053315Z&amp;X-Amz-Expires=3600&amp;X-Amz-Signature=95bd6b0f1ed74ecf4c9ecbaff30230871cf2fab8a3443686846bda904b1ad8f2&amp;X-Amz-SignedHeaders=host&amp;x-amz-checksum-mode=ENABLED&amp;x-id=GetObject" alt /></p>
<hr />
<h3 id="heading-render-tree-combine-of-dom-cssom">Render Tree ( Combine of DOM + CSSOM ):</h3>
</li>
<li><p>After Creating DOM and CSSOM Tree, The UI Backend combines these both and make a Render Tree.</p>
<p>  <img src="https://messages-prod.27c852f3500f38c1e7786e2c9ff9e48f.r2.cloudflarestorage.com/6c17eb9e-3623-4351-8fdf-ef2a02745e13/1769667790758-019c086a-ea65-7246-8440-b10af98b6506.jpeg?X-Amz-Algorithm=AWS4-HMAC-SHA256&amp;X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&amp;X-Amz-Credential=af634fe044bd071ab4c5d356fdace60f%2F20260129%2Fauto%2Fs3%2Faws4_request&amp;X-Amz-Date=20260129T062310Z&amp;X-Amz-Expires=3600&amp;X-Amz-Signature=ab48ad81cdae5dffaa21d0b7c71f6bafa98a35b6a5268f843864e7440520a494&amp;X-Amz-SignedHeaders=host&amp;x-amz-checksum-mode=ENABLED&amp;x-id=GetObject" alt /></p>
<hr />
<h3 id="heading-final-output-on-the-browser-screen">Final Output on The Browser Screen :</h3>
</li>
<li><p>And after Creating Render Tree, It finally make layout and paint it for showing on the screen .</p>
<p>  <img src="https://messages-prod.27c852f3500f38c1e7786e2c9ff9e48f.r2.cloudflarestorage.com/6c17eb9e-3623-4351-8fdf-ef2a02745e13/1769668718408-019c0879-0810-74ce-bad0-9e0e93ee5e86.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&amp;X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&amp;X-Amz-Credential=af634fe044bd071ab4c5d356fdace60f%2F20260129%2Fauto%2Fs3%2Faws4_request&amp;X-Amz-Date=20260129T063838Z&amp;X-Amz-Expires=3600&amp;X-Amz-Signature=ab2ecee5f67aed3bffbab1bbeb084fd5a4ce697735de98fcbb4d608eaf522611&amp;X-Amz-SignedHeaders=host&amp;x-amz-checksum-mode=ENABLED&amp;x-id=GetObject" alt /></p>
<p>  It have a connection directly with User interface because It shows the webpage(paint) .</p>
</li>
</ul>
<hr />
<ol start="4">
<li><h2 id="heading-disk-api">Disk API :</h2>
<p> It communicate with <strong>Operating System</strong>.</p>
<ul>
<li><p>It reads Hard drive files and saves cache data/files , it saves permanently</p>
</li>
<li><p>It store/retrieve user's data.</p>
</li>
<li><p>It access system resources.</p>
</li>
</ul>
</li>
</ol>
<hr />
]]></content:encoded></item><item><title><![CDATA[Chai aur HTML]]></title><description><![CDATA[Web Servers:

Those servers who return HTML is known as Web Servers.

HTML stands for " Hyper Text Markup Language. "
Boilerplate:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=e...]]></description><link>https://blog.abdulrdeveloper.me/chai-aur-html</link><guid isPermaLink="true">https://blog.abdulrdeveloper.me/chai-aur-html</guid><category><![CDATA[HTML5]]></category><category><![CDATA[HTML]]></category><category><![CDATA[HTML tags ]]></category><dc:creator><![CDATA[Abdul Rahman]]></dc:creator><pubDate>Tue, 27 Jan 2026 17:45:34 GMT</pubDate><content:encoded><![CDATA[<p><strong>Web Servers:</strong></p>
<ul>
<li>Those servers who return HTML is known as Web Servers.</li>
</ul>
<p>HTML stands for " <strong>Hyper Text Markup Language.</strong> "</p>
<h2 id="heading-boilerplate"><strong>Boilerplate:</strong></h2>
<pre><code class="lang-xml"><span class="hljs-meta">&lt;!DOCTYPE <span class="hljs-meta-keyword">html</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">html</span> <span class="hljs-attr">lang</span>=<span class="hljs-string">"en"</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">head</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">meta</span> <span class="hljs-attr">charset</span>=<span class="hljs-string">"UTF-8"</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">meta</span> <span class="hljs-attr">http-equiv</span>=<span class="hljs-string">"X-UA-Compatible"</span> <span class="hljs-attr">content</span>=<span class="hljs-string">"IE=edge"</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">meta</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"viewport"</span> <span class="hljs-attr">content</span>=<span class="hljs-string">"width=device-width, initial-scale=1.0"</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">title</span>&gt;</span>document<span class="hljs-tag">&lt;/<span class="hljs-name">title</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">head</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">body</span>&gt;</span>
    <span class="hljs-comment">&lt;!-- Content goes here --&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">body</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">html</span>&gt;</span>
</code></pre>
<ul>
<li><p>Very Useful for Beginners ,</p>
</li>
<li><p>Just write, " ! " and it will auto generate boilerplate.</p>
</li>
<li><p>It saves time and increases speed in Coding.</p>
</li>
</ul>
<h2 id="heading-headings"><strong>Headings :</strong></h2>
<p>There are six levels of headings. <code>&lt;h1&gt;</code> <code>&lt;h2&gt;</code> and <code>&lt;h3&gt;</code> are most important headings, and <code>&lt;h4&gt; &lt;h5&gt; &lt;h6&gt;</code> are not widely used now, less important.</p>
<pre><code class="lang-xml"><span class="hljs-tag">&lt;<span class="hljs-name">h1</span>&gt;</span>Heading 1<span class="hljs-tag">&lt;/<span class="hljs-name">h1</span>&gt;</span>      <span class="hljs-comment">&lt;!-- Most Important --&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">h2</span>&gt;</span>Heading 2<span class="hljs-tag">&lt;/<span class="hljs-name">h2</span>&gt;</span>      <span class="hljs-comment">&lt;!-- Most Important --&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">h3</span>&gt;</span>Heading 3<span class="hljs-tag">&lt;/<span class="hljs-name">h3</span>&gt;</span>      <span class="hljs-comment">&lt;!-- Important --&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">h4</span>&gt;</span>Heading 4<span class="hljs-tag">&lt;/<span class="hljs-name">h4</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">h5</span>&gt;</span>Heading 5<span class="hljs-tag">&lt;/<span class="hljs-name">h5</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">h6</span>&gt;</span>Heading 6<span class="hljs-tag">&lt;/<span class="hljs-name">h6</span>&gt;</span>
</code></pre>
<hr />
<h2 id="heading-containers"><strong>Containers :</strong></h2>
<pre><code class="lang-xml"><span class="hljs-tag">&lt;<span class="hljs-name">div</span>&gt;</span>This is a block container (div)<span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>         <span class="hljs-comment">&lt;!-- Most Important --&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">span</span>&gt;</span>This is an inline container (span)<span class="hljs-tag">&lt;/<span class="hljs-name">span</span>&gt;</span>    <span class="hljs-comment">&lt;!-- Important --&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">p</span>&gt;</span>This is a paragraph<span class="hljs-tag">&lt;/<span class="hljs-name">p</span>&gt;</span>                         <span class="hljs-comment">&lt;!-- Most Important --&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">pre</span>&gt;</span>Preserves formatting and spaces<span class="hljs-tag">&lt;/<span class="hljs-name">pre</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">code</span>&gt;</span>console.log("Code snippet")<span class="hljs-tag">&lt;/<span class="hljs-name">code</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">blockquote</span>&gt;</span>A block quotation of text<span class="hljs-tag">&lt;/<span class="hljs-name">blockquote</span>&gt;</span>
</code></pre>
<h2 id="heading-text-formatting"><strong>Text Formatting :</strong></h2>
<pre><code class="lang-xml"><span class="hljs-tag">&lt;<span class="hljs-name">b</span>&gt;</span>Bold text<span class="hljs-tag">&lt;/<span class="hljs-name">b</span>&gt;</span>                               <span class="hljs-comment">&lt;!-- Important --&gt;</span> 
<span class="hljs-tag">&lt;<span class="hljs-name">strong</span>&gt;</span>Important text (semantic)<span class="hljs-tag">&lt;/<span class="hljs-name">strong</span>&gt;</span>     <span class="hljs-comment">&lt;!-- Most Important --&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">i</span>&gt;</span>Italic text<span class="hljs-tag">&lt;/<span class="hljs-name">i</span>&gt;</span>                             <span class="hljs-comment">&lt;!-- Stylish Font --&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">em</span>&gt;</span>Emphasized text (semantic)<span class="hljs-tag">&lt;/<span class="hljs-name">em</span>&gt;</span>            <span class="hljs-comment">&lt;!-- Stylish Font --&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">u</span>&gt;</span>Underlined text<span class="hljs-tag">&lt;/<span class="hljs-name">u</span>&gt;</span>                         <span class="hljs-comment">&lt;!-- Most Important --&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">mark</span>&gt;</span>Highlighted text<span class="hljs-tag">&lt;/<span class="hljs-name">mark</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">small</span>&gt;</span>Smaller text<span class="hljs-tag">&lt;/<span class="hljs-name">small</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">time</span> <span class="hljs-attr">datetime</span>=<span class="hljs-string">"2026-01-27"</span>&gt;</span>Published on January 27, 2026<span class="hljs-tag">&lt;/<span class="hljs-name">time</span>&gt;</span>      <span class="hljs-comment">&lt;!-- Good Practice for SEO, 
you can use div and p also but use it to represent specific date on blogs,articles etc --&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">del</span>&gt;</span>Deleted text<span class="hljs-tag">&lt;/<span class="hljs-name">del</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">ins</span>&gt;</span>Inserted text<span class="hljs-tag">&lt;/<span class="hljs-name">ins</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">sub</span>&gt;</span>Subscript<span class="hljs-tag">&lt;/<span class="hljs-name">sub</span>&gt;</span>                            <span class="hljs-comment">&lt;!-- H₂O, CO₂ --&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">sup</span>&gt;</span>Superscript<span class="hljs-tag">&lt;/<span class="hljs-name">sup</span>&gt;</span>                          <span class="hljs-comment">&lt;!-- x², E=mc² --&gt;</span>
</code></pre>
<hr />
<h2 id="heading-lists"><strong>Lists :</strong></h2>
<ul>
<li><h3 id="heading-ordered-list"><strong>Ordered List :</strong></h3>
<pre><code class="lang-xml">  <span class="hljs-tag">&lt;<span class="hljs-name">ol</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">li</span>&gt;</span>First<span class="hljs-tag">&lt;/<span class="hljs-name">li</span>&gt;</span>                    <span class="hljs-comment">&lt;!-- display output : 1,2,3 in order --&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">li</span>&gt;</span>Second<span class="hljs-tag">&lt;/<span class="hljs-name">li</span>&gt;</span>
  <span class="hljs-tag">&lt;/<span class="hljs-name">ol</span>&gt;</span>
</code></pre>
<ul>
<li><p>Use <code>type</code> and <code>start</code> attributes inside the <code>&lt;ol&gt;</code> tag.</p>
</li>
<li><p><code>type="A"</code> gives uppercase letters, (A, B, C...)</p>
</li>
<li><p><code>&lt;ol type="A" start="5"&gt;</code> Both can be used at same time.</p>
<ul>
<li><p><code>type="1"</code> → 1, 2, 3 (default)</p>
</li>
<li><p><code>type="A"</code> → A, B, C (uppercase letters)</p>
</li>
<li><p><code>type="a"</code> → a, b, c (lowercase letters)</p>
</li>
<li><p><code>type="I"</code> → I, II, III (Roman numerals uppercase)</p>
</li>
<li><p><code>type="i"</code> → i, ii, iii (Roman numerals lowercase)</p>
</li>
</ul>
</li>
<li><p><code>start="5"</code> means It will start by 5th letter (E, F, G...)</p>
<ul>
<li><p><code>start="5"</code> → 5 se start hoga</p>
</li>
<li><p><code>start="10"</code> → 10 se start hoga etc.</p>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<ul>
<li><h3 id="heading-unordered-list"><strong>Unordered List :</strong></h3>
<pre><code class="lang-xml">  <span class="hljs-tag">&lt;<span class="hljs-name">ul</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">li</span>&gt;</span>First Item<span class="hljs-tag">&lt;/<span class="hljs-name">li</span>&gt;</span>                    <span class="hljs-comment">&lt;!-- display output : •  •  •  without any order --&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">li</span>&gt;</span>Second Item<span class="hljs-tag">&lt;/<span class="hljs-name">li</span>&gt;</span>
  <span class="hljs-tag">&lt;/<span class="hljs-name">ul</span>&gt;</span>
</code></pre>
</li>
<li><h3 id="heading-definition-list"><strong>Definition List :</strong></h3>
<pre><code class="lang-xml">  <span class="hljs-tag">&lt;<span class="hljs-name">dl</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">dt</span>&gt;</span>What is HTML<span class="hljs-tag">&lt;/<span class="hljs-name">dt</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">dd</span>&gt;</span>HTML is a HyperText Markup Language. It is Known as the skeleton of the website.<span class="hljs-tag">&lt;/<span class="hljs-name">dd</span>&gt;</span>
  <span class="hljs-tag">&lt;/<span class="hljs-name">dl</span>&gt;</span>
</code></pre>
</li>
</ul>
<hr />
<h2 id="heading-media">Media :</h2>
<pre><code class="lang-xml"><span class="hljs-tag">&lt;<span class="hljs-name">img</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"image.jpg"</span> <span class="hljs-attr">alt</span>=<span class="hljs-string">"Description"</span> <span class="hljs-attr">width</span>=<span class="hljs-string">"300"</span> <span class="hljs-attr">height</span>=<span class="hljs-string">"200"</span>&gt;</span>      
<span class="hljs-comment">&lt;!-- Always use alt with images, (and width and height can be adjusted by using CSS also) --&gt;</span>

<span class="hljs-tag">&lt;<span class="hljs-name">audio</span> <span class="hljs-attr">controls</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">source</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"audio.mp3"</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"audio/mpeg"</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">audio</span>&gt;</span>

<span class="hljs-tag">&lt;<span class="hljs-name">video</span> <span class="hljs-attr">width</span>=<span class="hljs-string">"480"</span> <span class="hljs-attr">height</span>=<span class="hljs-string">"320"</span> <span class="hljs-attr">controls</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">source</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"video.mp4"</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"video/mp4"</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">track</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"captions.vtt"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">track</span>&gt;</span>      <span class="hljs-comment">&lt;!-- Use track tag to add captions in video --&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">video</span>&gt;</span>

<span class="hljs-tag">&lt;<span class="hljs-name">iframe</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"https://www.example.com"</span> <span class="hljs-attr">width</span>=<span class="hljs-string">"600"</span> <span class="hljs-attr">height</span>=<span class="hljs-string">"400"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">iframe</span>&gt;</span>
<span class="hljs-comment">&lt;!-- Get video iframe: Share → Embed → Copy code --&gt;</span>

<span class="hljs-tag">&lt;<span class="hljs-name">iframe</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"https://drive.google.com/file/d/1KasLwUTg39qp54-ZH3sZ/preview"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">iframe</span>&gt;</span>
<span class="hljs-comment">&lt;!-- or you can use embed | But always use preview word at the end of the pdf link --&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">embed</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"https://drive.google.com/file/d/1EV-MO8TuJhHCfpmfvfD0/preview"</span> &gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">embed</span>&gt;</span>
<span class="hljs-comment">&lt;!-- Use embed or iframe for PDFs to show them on the webpage --&gt;</span>
</code></pre>
<h2 id="heading-tables"><strong>Tables :</strong></h2>
<p>There are three Parts of Table in HTML ,</p>
<ul>
<li><p><code>&lt;thead&gt;&lt;/thead&gt;</code> Here we give the top heading inside the table like student marks, grade etc.</p>
</li>
<li><p><code>&lt;tbody&gt;&lt;/tbody&gt;</code> Here we add Real data like 99 marks,83 marks ,C grade ,B grade etc.</p>
</li>
<li><p><code>&lt;tfooter&gt;&lt;/tfooter&gt;</code> Here we add a final display colomn like Total Marks, CGPA, etc</p>
</li>
<li><p><code>&lt;td colspan = "2"&gt;</code> use colspan to control and increase specific colomns width.</p>
</li>
<li><p><code>&lt;td rowspan = "2"&gt;</code> use rowspan to control and increase specific row’s height.</p>
</li>
</ul>
<pre><code class="lang-xml">    <span class="hljs-tag">&lt;<span class="hljs-name">table</span> <span class="hljs-attr">border</span>=<span class="hljs-string">"1"</span>&gt;</span>         <span class="hljs-comment">&lt;!-- use border = "1", it will add border directly on table --&gt;</span>

<span class="hljs-tag">&lt;<span class="hljs-name">colgroup</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">col</span> <span class="hljs-attr">style</span>=<span class="hljs-string">"background-color: skyblue;"</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">col</span> <span class="hljs-attr">style</span>=<span class="hljs-string">"background-color: lightblue; color:white;"</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">col</span> <span class="hljs-attr">style</span>=<span class="hljs-string">"background-color: aquamarine;"</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">colgroup</span>&gt;</span>
<span class="hljs-comment">&lt;!-- With the help of colspan, we can change the background colors of
our columns. But remember that colspan only changes the background 
colors, not the actual structure of the columns.--&gt;</span>

  <span class="hljs-tag">&lt;<span class="hljs-name">thead</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">tr</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">th</span>&gt;</span>Column 1<span class="hljs-tag">&lt;/<span class="hljs-name">th</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">th</span> <span class="hljs-attr">colspan</span>=<span class="hljs-string">"2"</span>&gt;</span>Column 2<span class="hljs-tag">&lt;/<span class="hljs-name">th</span>&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">tr</span>&gt;</span>
  <span class="hljs-tag">&lt;/<span class="hljs-name">thead</span>&gt;</span>

  <span class="hljs-tag">&lt;<span class="hljs-name">tbody</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">tr</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">td</span> <span class="hljs-attr">rowspan</span>=<span class="hljs-string">"2"</span>&gt;</span>Rowspan<span class="hljs-tag">&lt;/<span class="hljs-name">td</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">td</span>&gt;</span>Data A<span class="hljs-tag">&lt;/<span class="hljs-name">td</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">td</span>&gt;</span>Data B<span class="hljs-tag">&lt;/<span class="hljs-name">td</span>&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">tr</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">tr</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">td</span>&gt;</span>Data C<span class="hljs-tag">&lt;/<span class="hljs-name">td</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">td</span>&gt;</span>Data D<span class="hljs-tag">&lt;/<span class="hljs-name">td</span>&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">tr</span>&gt;</span>
  <span class="hljs-tag">&lt;/<span class="hljs-name">tbody</span>&gt;</span>

  <span class="hljs-tag">&lt;<span class="hljs-name">tfoot</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">tr</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">td</span>&gt;</span>Total<span class="hljs-tag">&lt;/<span class="hljs-name">td</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">td</span> <span class="hljs-attr">colspan</span>=<span class="hljs-string">"2"</span>&gt;</span>100<span class="hljs-tag">&lt;/<span class="hljs-name">td</span>&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">tr</span>&gt;</span>
  <span class="hljs-tag">&lt;/<span class="hljs-name">tfoot</span>&gt;</span>

<span class="hljs-tag">&lt;/<span class="hljs-name">table</span>&gt;</span>
</code></pre>
<p><img src="https://messages-prod.27c852f3500f38c1e7786e2c9ff9e48f.r2.cloudflarestorage.com/7d7ee137-9aad-4fec-80ee-a7920603dac4/1769459184709-019bfbfb-a799-722b-a98d-d4265a5c5cc4.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&amp;X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&amp;X-Amz-Credential=af634fe044bd071ab4c5d356fdace60f%2F20260126%2Fauto%2Fs3%2Faws4_request&amp;X-Amz-Date=20260126T202624Z&amp;X-Amz-Expires=3600&amp;X-Amz-Signature=6e49c47e3324b6f75a3b1bbd3411618f6f247e396154eb5ba294e4961a3802ce&amp;X-Amz-SignedHeaders=host&amp;x-amz-checksum-mode=ENABLED&amp;x-id=GetObject" alt /></p>
<hr />
<h2 id="heading-links">Links :</h2>
<pre><code class="lang-xml"><span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"https://www.chaicode.com"</span> <span class="hljs-attr">target</span>=<span class="hljs-string">"_blank"</span> <span class="hljs-attr">rel</span>=<span class="hljs-string">"noopener"</span>&gt;</span>Visit CodeWithHarry<span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>
<span class="hljs-comment">&lt;!-- Google Drive direct download pattern:
     https://drive.google.com/uc?export=download&amp;id=FILE_ID --&gt;</span>

<span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"mailto:support@chaicode.com"</span>&gt;</span>Send Email<span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>    <span class="hljs-comment">&lt;!-- Use maitro:  and then email --&gt;</span>

<span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#section1"</span>&gt;</span>Jump to Section<span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>   
<span class="hljs-comment">&lt;!-- also add jump section id like this →  &lt;h1 id="section"&gt;Learn Coding &lt;/h1&gt;   --&gt;</span>
</code></pre>
<hr />
<h2 id="heading-forms">Forms :</h2>
<pre><code class="lang-xml"><span class="hljs-tag">&lt;<span class="hljs-name">form</span> <span class="hljs-attr">action</span>=<span class="hljs-string">"/action.php"</span> <span class="hljs-attr">method</span>=<span class="hljs-string">"post"</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">label</span> <span class="hljs-attr">for</span>=<span class="hljs-string">"username"</span>&gt;</span>Username:<span class="hljs-tag">&lt;/<span class="hljs-name">label</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">input</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"text"</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"username"</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"username"</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">br</span>&gt;</span>

  <span class="hljs-tag">&lt;<span class="hljs-name">input</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"password"</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"password"</span> <span class="hljs-attr">placeholder</span>=<span class="hljs-string">"Enter Password"</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">br</span>&gt;</span>

  <span class="hljs-tag">&lt;<span class="hljs-name">input</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"checkbox"</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"subscribe"</span> <span class="hljs-attr">value</span>=<span class="hljs-string">"yes"</span>&gt;</span> Subscribe<span class="hljs-tag">&lt;<span class="hljs-name">br</span>&gt;</span>

  <span class="hljs-tag">&lt;<span class="hljs-name">input</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"radio"</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"gender"</span> <span class="hljs-attr">value</span>=<span class="hljs-string">"male"</span>&gt;</span> Male
  <span class="hljs-tag">&lt;<span class="hljs-name">input</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"radio"</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"gender"</span> <span class="hljs-attr">value</span>=<span class="hljs-string">"female"</span>&gt;</span> Female<span class="hljs-tag">&lt;<span class="hljs-name">br</span>&gt;</span>

  <span class="hljs-tag">&lt;<span class="hljs-name">select</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"country"</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">option</span> <span class="hljs-attr">value</span>=<span class="hljs-string">"us"</span>&gt;</span>USA<span class="hljs-tag">&lt;/<span class="hljs-name">option</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">option</span> <span class="hljs-attr">value</span>=<span class="hljs-string">"ca"</span>&gt;</span>Canada<span class="hljs-tag">&lt;/<span class="hljs-name">option</span>&gt;</span>
  <span class="hljs-tag">&lt;/<span class="hljs-name">select</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">br</span>&gt;</span>

  <span class="hljs-tag">&lt;<span class="hljs-name">textarea</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"comments"</span> <span class="hljs-attr">rows</span>=<span class="hljs-string">"4"</span> <span class="hljs-attr">cols</span>=<span class="hljs-string">"30"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">textarea</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">br</span>&gt;</span>

  <span class="hljs-tag">&lt;<span class="hljs-name">input</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"file"</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"resume"</span> <span class="hljs-attr">muliple</span> <span class="hljs-attr">accept</span>=<span class="hljs-string">".pdf,.doc,.docx,.jpg,.png"</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">br</span>&gt;</span>

<span class="hljs-comment">&lt;!-- type="file" → File upload input
multiple → can select multiple files
accept=".pdf,.jpg" → only .pdf files allow , can adjust by own choice  --&gt;</span>

  <span class="hljs-tag">&lt;<span class="hljs-name">input</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"number"</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"age"</span> <span class="hljs-attr">min</span>=<span class="hljs-string">"18"</span> <span class="hljs-attr">max</span>=<span class="hljs-string">"100"</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">br</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">input</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"range"</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"volume"</span> <span class="hljs-attr">min</span>=<span class="hljs-string">"0"</span> <span class="hljs-attr">max</span>=<span class="hljs-string">"100"</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">br</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">input</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"date"</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"dob"</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">br</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">input</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"email"</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"email"</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">br</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">input</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"url"</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"website"</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">br</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">input</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"search"</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"query"</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">br</span>&gt;</span>



  <span class="hljs-tag">&lt;<span class="hljs-name">button</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"submit"</span>&gt;</span>Submit<span class="hljs-tag">&lt;/<span class="hljs-name">button</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">form</span>&gt;</span>
</code></pre>
<h3 id="heading-html-all-input-types-image-preview"><strong>HTML all input Types Image Preview:</strong></h3>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1769536164517/6375c49e-66c2-4533-a7b4-ac99577855d0.png" alt class="image--center mx-auto" /></p>
<hr />
<h3 id="heading-auto-suggestion-search-system-using-html">Auto Suggestion Search System Using HTML :</h3>
<pre><code class="lang-xml"><span class="hljs-meta">&lt;!DOCTYPE <span class="hljs-meta-keyword">html</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">html</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">head</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">title</span>&gt;</span>Datalist Autocomplete<span class="hljs-tag">&lt;/<span class="hljs-name">title</span>&gt;</span>
  <span class="hljs-tag">&lt;/<span class="hljs-name">head</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">body</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">h1</span>&gt;</span>Search Fruit<span class="hljs-tag">&lt;/<span class="hljs-name">h1</span>&gt;</span>

    <span class="hljs-tag">&lt;<span class="hljs-name">input</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"text"</span> <span class="hljs-attr">list</span>=<span class="hljs-string">"fruits"</span> <span class="hljs-attr">placeholder</span>=<span class="hljs-string">"Type fruit name"</span>&gt;</span>

    <span class="hljs-tag">&lt;<span class="hljs-name">datalist</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"fruits"</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">option</span> <span class="hljs-attr">value</span>=<span class="hljs-string">"Apple"</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">option</span> <span class="hljs-attr">value</span>=<span class="hljs-string">"Banana"</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">option</span> <span class="hljs-attr">value</span>=<span class="hljs-string">"Mango"</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">option</span> <span class="hljs-attr">value</span>=<span class="hljs-string">"Orange"</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">option</span> <span class="hljs-attr">value</span>=<span class="hljs-string">"Grapes"</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">option</span> <span class="hljs-attr">value</span>=<span class="hljs-string">"Strawberry"</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">option</span> <span class="hljs-attr">value</span>=<span class="hljs-string">"Pineapple"</span>&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">datalist</span>&gt;</span>

  <span class="hljs-tag">&lt;/<span class="hljs-name">body</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">html</span>&gt;</span>
</code></pre>
<h2 id="heading-output">Output :</h2>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1769505092515/341cd3b8-1706-4860-8303-2b38a7db4670.png" alt class="image--center mx-auto" /></p>
<hr />
<h2 id="heading-semantic-elements"><strong>Semantic Elements :</strong></h2>
<pre><code class="lang-xml"><span class="hljs-tag">&lt;<span class="hljs-name">header</span>&gt;</span>Page header<span class="hljs-tag">&lt;/<span class="hljs-name">header</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">main</span>&gt;</span>Main content<span class="hljs-tag">&lt;/<span class="hljs-name">main</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">footer</span>&gt;</span>Page footer<span class="hljs-tag">&lt;/<span class="hljs-name">footer</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">nav</span>&gt;</span>Navigation links<span class="hljs-tag">&lt;/<span class="hljs-name">nav</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">section</span>&gt;</span>Section of content<span class="hljs-tag">&lt;/<span class="hljs-name">section</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">article</span>&gt;</span>Independent article<span class="hljs-tag">&lt;/<span class="hljs-name">article</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">aside</span>&gt;</span>Sidebar content<span class="hljs-tag">&lt;/<span class="hljs-name">aside</span>&gt;</span>
</code></pre>
<hr />
]]></content:encoded></item><item><title><![CDATA[Understanding DNS and Name Resolution]]></title><description><![CDATA[What is DNS?
DNS stands for Domain Name System. It is a system that converts website names (like google.com) into IP addresses that computers can understand. When you type google.com in your browser, your computer does not know where google.com is lo...]]></description><link>https://blog.abdulrdeveloper.me/understanding-dns-and-name-resolution</link><guid isPermaLink="true">https://blog.abdulrdeveloper.me/understanding-dns-and-name-resolution</guid><category><![CDATA[dig command]]></category><dc:creator><![CDATA[Abdul Rahman]]></dc:creator><pubDate>Tue, 27 Jan 2026 07:08:12 GMT</pubDate><content:encoded><![CDATA[<p><strong>What is DNS?</strong></p>
<p>DNS stands for Domain Name System. It is a system that converts website names (like <a target="_blank" href="http://google.com">google.com</a>) into IP addresses that computers can understand. When you type <a target="_blank" href="http://google.com">google.com</a> in your browser, your computer does not know where <a target="_blank" href="http://google.com">google.com</a> is located. So DNS helps to find the IP address of <a target="_blank" href="http://google.com">google.com</a> and connect you to the correct server.</p>
<p><strong>Why Name Resolution Exists?</strong></p>
<p>Computers communicate with each other using IP addresses (like 142.251.41.14), but humans cannot remember all these long numbers. So DNS was created to convert easy-to-remember domain names (like <a target="_blank" href="http://google.com">google.com</a>) into their corresponding IP addresses. This process is called name resolution. Without DNS, you would have to type IP addresses instead of domain names every time you want to visit a website.</p>
<p><strong>What is the dig Command?</strong></p>
<p>dig stands for Domain Information Groper. It is a command-line tool that is used to query DNS servers and get information about domain names. Dig command helps us to understand how DNS works and troubleshoot DNS-related problems. When you run dig command, it shows you the complete DNS resolution process - from the root server all the way to the authoritative name server.</p>
<p><strong>When is dig Command Used?</strong></p>
<p>Dig command is used when:</p>
<ul>
<li><p>You want to find the IP address of a website</p>
</li>
<li><p>You want to check if a domain name is working properly</p>
</li>
<li><p>You want to troubleshoot DNS issues</p>
</li>
<li><p>You want to understand the DNS resolution process step by step</p>
</li>
<li><p>Network administrators want to debug DNS problems</p>
</li>
</ul>
<p><strong>Understanding dig . NS and Root Name Servers:</strong></p>
<p><strong>What is the Root Name Server?</strong></p>
<p>The root name server is the first step in DNS resolution. When you request <a target="_blank" href="http://google.com">google.com</a>, your computer first asks the root name server "Where should I go to find <a target="_blank" href="http://google.com">google.com</a>?" The root name server does not know the IP address of <a target="_blank" href="http://google.com">google.com</a> directly. Instead, it tells you which server can help you find <a target="_blank" href="http://google.com">google.com</a>.</p>
<p><strong>What Does dig . NS Show?</strong></p>
<p>When you run the command <code>dig . NS</code>, it shows all the root name servers in the world. These are 13 root name servers (<a target="_blank" href="http://a.root-servers.net">a.root-servers.net</a>, <a target="_blank" href="http://b.root-servers.net">b.root-servers.net</a>, <a target="_blank" href="http://c.root-servers.net">c.root-servers.net</a>, etc.). Although there are only 13 official root servers concept-wise, they have 1600+ copies (instances) distributed across the world to handle trillions of DNS queries every day. This is similar to how banks have one main office but thousands of branches.</p>
<p><strong>How Root Name Servers Work:</strong></p>
<p>Your Computer sends request → Root Name Server receives it (dig . NS)<br />Root Name Server checks the domain extension (.com, .org, .edu)<br />Root Name Server responds with the address of the TLD (Top Level Domain) name server<br />Your Computer then knows where to go next</p>
<p><strong>Understanding dig com NS and TLD Name Servers:</strong></p>
<p><strong>What is a TLD Name Server?</strong></p>
<p>TLD stands for Top Level Domain. Common TLDs are .com, .org, .edu, .pk, .net, etc. When the root name server tells your computer to ask a TLD name server, your computer then asks the .com TLD name server "Where can I find <a target="_blank" href="http://google.com">google.com</a>?"</p>
<p><strong>What Does dig com NS Show?</strong></p>
<p>When you run the command <code>dig com NS</code>, it shows all the TLD name servers for .com domains. These servers know about all .com domain names and can tell you which server is responsible for each .com domain. For example, if you ask the .com TLD server about <a target="_blank" href="http://google.com">google.com</a>, it will tell you which server manages <a target="_blank" href="http://google.com">google.com</a>'s DNS records.</p>
<p><strong>How TLD Name Servers Work:</strong></p>
<p>Your Computer asks TLD Name Server → "Where is <a target="_blank" href="http://google.com">google.com</a>?"<br />TLD Name Server checks its database<br />TLD Name Server responds with the address of <a target="_blank" href="http://google.com">google.com</a>'s authoritative name server<br />Your Computer now knows where to go to get the actual IP address</p>
<p><strong>The Flow So Far:</strong></p>
<p>Your Computer → Root Name Server (dig . NS) → TLD Name Server (dig com NS) → Authoritative Name Server (coming next)</p>
<p><strong>Understanding dig</strong> <a target="_blank" href="http://google.com"><strong>google.com</strong></a> <strong>NS and Authoritative Name Servers:</strong></p>
<p><strong>What is an Authoritative Name Server?</strong></p>
<p>The authoritative name server is the actual server that knows the IP address of <a target="_blank" href="http://google.com">google.com</a>. It is owned and managed by Google company itself. This is the final step in DNS resolution. Authoritative name servers store the actual DNS records for the domain.</p>
<p><strong>What Does dig</strong> <a target="_blank" href="http://google.com"><strong>google.com</strong></a> <strong>NS Show?</strong></p>
<p>When you run the command <code>dig</code> <a target="_blank" href="http://google.com"><code>google.com</code></a> <code>NS</code>, it shows which servers are the authoritative name servers for <a target="_blank" href="http://google.com">google.com</a>. For Google, you will see servers like <a target="_blank" href="http://ns1.google.com">ns1.google.com</a>, <a target="_blank" href="http://ns2.google.com">ns2.google.com</a>, <a target="_blank" href="http://ns3.google.com">ns3.google.com</a>, <a target="_blank" href="http://ns4.google.com">ns4.google.com</a>. These are Google's own name servers that store the IP address information for <a target="_blank" href="http://google.com">google.com</a> and other Google domains.</p>
<p><strong>How Authoritative Name Servers Work:</strong></p>
<p>Your Computer asks Authoritative Name Server → "What is the IP address of <a target="_blank" href="http://google.com">google.com</a>?"<br />Authoritative Name Server checks its database<br />Authoritative Name Server responds with the IP address: 142.251.41.14<br />Your Computer receives the IP address and connects to Google's server</p>
<p><strong>Why Multiple Authoritative Servers?</strong></p>
<p>Google uses multiple authoritative name servers (ns1, ns2, ns3, ns4) for redundancy and load balancing. If one server goes down, the others can still respond to DNS queries. This ensures that the website remains accessible all the time.</p>
<p><strong>Understanding dig</strong> <a target="_blank" href="http://google.com"><strong>google.com</strong></a> <strong>and the Full DNS Resolution Flow:</strong></p>
<p><strong>What Happens When You Run dig</strong> <a target="_blank" href="http://google.com"><strong>google.com</strong></a><strong>?</strong></p>
<p>When you run the command <code>dig</code> <a target="_blank" href="http://google.com"><code>google.com</code></a>, it shows you the complete DNS resolution process. It shows you the actual IP address of <a target="_blank" href="http://google.com">google.com</a> and how your computer found it. This is the final query after going through all the previous steps.</p>
<p><strong>The Complete DNS Resolution Flow:</strong></p>
<p>Step 1: Your Computer sends request → "I want to visit <a target="_blank" href="http://google.com">google.com</a>"</p>
<p>Step 2: Root Name Server receives it (dig . NS)<br />Root Name Server says "I don't know <a target="_blank" href="http://google.com">google.com</a>, but ask the .com TLD server"</p>
<p>Step 3: Your Computer asks TLD Name Server (dig com NS)<br />TLD Name Server says "I know about .com domains, but for <a target="_blank" href="http://google.com">google.com</a> specifically, go ask <a target="_blank" href="http://ns1.google.com">ns1.google.com</a>"</p>
<p>Step 4: Your Computer asks Authoritative Name Server (dig <a target="_blank" href="http://google.com">google.com</a> NS)<br />Authoritative Name Server (<a target="_blank" href="http://ns1.google.com">ns1.google.com</a>) responds with the IP address: 142.251.41.14</p>
<p>Step 5: Your Computer receives the IP address and connects to Google's server<br />Your Browser displays Google homepage</p>
<p><strong>Why This Process Is Important:</strong></p>
<p>This entire process happens in milliseconds. When you type <a target="_blank" href="http://google.com">google.com</a> in your browser, you are immediately connected to the correct server without knowing the IP address. DNS makes the Internet user-friendly and easy to use.</p>
<p><strong>What Each dig Command Shows:</strong></p>
<ul>
<li><p><code>dig . NS</code> → Shows root name servers</p>
</li>
<li><p><code>dig com NS</code> → Shows TLD name servers for .com</p>
</li>
<li><p><code>dig</code> <a target="_blank" href="http://google.com"><code>google.com</code></a> <code>NS</code> → Shows authoritative name servers for <a target="_blank" href="http://google.com">google.com</a></p>
</li>
<li><p><code>dig</code> <a target="_blank" href="http://google.com"><code>google.com</code></a> → Shows the IP address of <a target="_blank" href="http://google.com">google.com</a> and the complete resolution process</p>
</li>
</ul>
<p><strong>Real-Life Example:</strong></p>
<p>Think of the DNS resolution process like finding someone's address:</p>
<p>You ask your friend (Root Server): "Where does Ali live?"<br />Friend says: "I don't know, ask the city office (TLD Server)"</p>
<p>You go to City Office: "Where does Ali live in this city?"<br />City Office says: "I don't know exactly, but ask his neighborhood office (Authoritative Server)"</p>
<p>You go to Neighborhood Office: "Where does Ali live?"<br />Neighborhood Office says: "Ali lives at House 123, Block 5"</p>
<p>Now you know the exact address and can visit.</p>
<p>Same way, your computer goes from Root Server → TLD Server → Authoritative Server to find the IP address of the website you want to visit.</p>
]]></content:encoded></item><item><title><![CDATA[Understanding Network Devices :]]></title><description><![CDATA[If we need to transfer data from a computer to a mobile device, it can be done directly using a data cable. But when we need to transfer data between two computers, a direct cable connection does not work. In this situation, we use network devices fo...]]></description><link>https://blog.abdulrdeveloper.me/understanding-network-devices</link><guid isPermaLink="true">https://blog.abdulrdeveloper.me/understanding-network-devices</guid><category><![CDATA[modem]]></category><category><![CDATA[router]]></category><category><![CDATA[firewall]]></category><category><![CDATA[SWITCH]]></category><category><![CDATA[Load Balancer]]></category><dc:creator><![CDATA[Abdul Rahman]]></dc:creator><pubDate>Tue, 27 Jan 2026 06:19:07 GMT</pubDate><content:encoded><![CDATA[<ul>
<li><p>If we need to transfer data from a computer to a mobile device, it can be done directly using a data cable. But when we need to transfer data between two computers, a direct cable connection does not work. In this situation, we use network devices for transferring data and communication with each other.</p>
</li>
<li><p>Network Devices work like a <strong>Road</strong>/<strong>bridge</strong> that allows two computers to easily communicate without any security risk .We can use network Devices for communication or interaction between two or more computers.</p>
</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1769483073884/b5c28e27-7b04-4798-b476-0b9855dd755b.png" alt class="image--center mx-auto" /></p>
<p>If Both Computers want to connect with each other, then both computer’s cables should be in network device.</p>
<h3 id="heading-data-transferring-flow"><strong>Data Transferring Flow :</strong></h3>
<ul>
<li><p><strong>Computer</strong> sends (0,1,0) data → Using Blue cable → The data reaches at Network Device.</p>
</li>
<li><p>Network Devices receive those data and then decide where to send next.</p>
</li>
<li><p>Network Devices forward the data → in yellow cable → computer 02 receives the data</p>
</li>
<li><p>This flow can be opposite also (Computer 02 - to - Computer 01 )</p>
</li>
</ul>
<hr />
<h3 id="heading-commonly-used-networking-devices"><strong>Commonly used Networking Devices :</strong></h3>
<p>There are a lot of Networking Devices but most commonly used devices are as follows.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1769484955495/460a8f11-ecf9-4a5c-88e5-a9ab26c3ca62.png" alt class="image--center mx-auto" /></p>
<hr />
<h2 id="heading-switch"><strong>Switch :</strong></h2>
<p>Just Suppose , If you are working in a industry/company and there are 100 computers connected with switch , and you want to send data to a specific computer in those 100 computers , then what will you do ?</p>
<p>In this case switch helps to transfer data to a specific computer using mac address.</p>
<p>The Complete workFlow :</p>
<ol>
<li><p>Computer 01 will send data in switch with mac address of the specific computer (where the computer 01 wants to send data)</p>
</li>
<li><p>Switch will check all 100 computers mac addresses (each computer contains unique and only one mac address)</p>
</li>
<li><p>Once the switch found the specific Computer, it will forward whole data on those specific computer.</p>
</li>
</ol>
<p>Switch can be connected through wired connection and wireless , but on large scale, it mostly used wireless because connacting 100 computers with wired can be confusing so wireless also used.</p>
<p><img src="https://messages-prod.27c852f3500f38c1e7786e2c9ff9e48f.r2.cloudflarestorage.com/6c17eb9e-3623-4351-8fdf-ef2a02745e13/1769489369944-019bfdc8-3da2-732b-8fb4-9a5fefbf3c6a.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&amp;X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&amp;X-Amz-Credential=af634fe044bd071ab4c5d356fdace60f%2F20260202%2Fauto%2Fs3%2Faws4_request&amp;X-Amz-Date=20260202T034723Z&amp;X-Amz-Expires=3600&amp;X-Amz-Signature=043114142ca69b4d36c02fcb3bc45643ceb146628bb0319e7ccee799b0308b78&amp;X-Amz-SignedHeaders=host&amp;x-amz-checksum-mode=ENABLED&amp;x-id=GetObject" alt="6c17eb9e-3623-4351-8fdf-ef2a02745e13/1769489369944-019bfdc8-3da2-732b-8fb4-9a5fefbf3c6a.png" /></p>
<p><img src="https://messages-prod.27c852f3500f38c1e7786e2c9ff9e48f.r2.cloudflarestorage.com/6c17eb9e-3623-4351-8fdf-ef2a02745e13/1769489369944-019bfdc8-3da2-732b-8fb4-9a5fefbf3c6a.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&amp;X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&amp;X-Amz-Credential=af634fe044bd071ab4c5d356fdace60f%2F20260127%2Fauto%2Fs3%2Faws4_request&amp;X-Amz-Date=20260127T044930Z&amp;X-Amz-Expires=3600&amp;X-Amz-Signature=cc3ff39c4b626675738216a70b92266b53e011ef2f58bd62cd1fb507684331b9&amp;X-Amz-SignedHeaders=host&amp;x-amz-checksum-mode=ENABLED&amp;x-id=GetObject" alt /></p>
<hr />
<h3 id="heading-hub">Hub :</h3>
<p>It is one of the oldest and simplest network device which transfer data directly everywhere instead of specific computer.</p>
<p>Just suppose computer 01 want to send data to a specific computer,</p>
<ul>
<li><p>First of all , computer 01 will send data to Hub .</p>
</li>
<li><p>Hub will receive and transfer data in whole 100 computers instead of specific computer.</p>
</li>
<li><p>This can cause more bandwidth and sends unnecassory data in all computers.</p>
<p>  <img src="https://messages-prod.27c852f3500f38c1e7786e2c9ff9e48f.r2.cloudflarestorage.com/6c17eb9e-3623-4351-8fdf-ef2a02745e13/1769488679883-019bfdbd-f363-76df-979a-ab3fd5be9dec.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&amp;X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&amp;X-Amz-Credential=af634fe044bd071ab4c5d356fdace60f%2F20260202%2Fauto%2Fs3%2Faws4_request&amp;X-Amz-Date=20260202T034723Z&amp;X-Amz-Expires=3600&amp;X-Amz-Signature=43a64cce04d78302a5bd532a191bf4683a0dd341a777d226d27a3c355e9ca560&amp;X-Amz-SignedHeaders=host&amp;x-amz-checksum-mode=ENABLED&amp;x-id=GetObject" alt="6c17eb9e-3623-4351-8fdf-ef2a02745e13/1769488679883-019bfdbd-f363-76df-979a-ab3fd5be9dec.png" /></p>
</li>
</ul>
<p><img src="https://messages-prod.27c852f3500f38c1e7786e2c9ff9e48f.r2.cloudflarestorage.com/6c17eb9e-3623-4351-8fdf-ef2a02745e13/1769488679883-019bfdbd-f363-76df-979a-ab3fd5be9dec.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&amp;X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&amp;X-Amz-Credential=af634fe044bd071ab4c5d356fdace60f%2F20260127%2Fauto%2Fs3%2Faws4_request&amp;X-Amz-Date=20260127T043800Z&amp;X-Amz-Expires=3600&amp;X-Amz-Signature=760551bd6e894387d38bd695ce51d77a0fdb6ef350a907eb2c61547553d02a16&amp;X-Amz-SignedHeaders=host&amp;x-amz-checksum-mode=ENABLED&amp;x-id=GetObject" alt /></p>
<hr />
<h2 id="heading-switch-vs-hub">Switch vs Hub :</h2>
<ul>
<li><p>Switch forwards data to specific computer using mac address.</p>
</li>
<li><p>Hub forwards data to all connected computers instead of one.</p>
</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1769490654846/4480260e-1646-40b6-8eb7-609727845d73.png" alt class="image--center mx-auto" /></p>
<hr />
<h2 id="heading-router">Router :</h2>
<ul>
<li><p>As we discussed earlier that switch is use to send or receive data through LANs( local wires),</p>
</li>
<li><p>But what happened if you want to share or access data from a network which is not accessible locally to you?</p>
</li>
<li><p>Like using <a target="_blank" href="http://google.com">google.com</a>, which is not available offline near you.</p>
</li>
<li><p>Therefore you need a device that connects you to different online network servers. A router uses ip address (address on internet) instead of mac address (local offline address).</p>
</li>
<li><p>Router requests to server and give us server response.</p>
</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1769492335683/ef996028-5637-4863-8cdf-dd794575ab93.png" alt class="image--center mx-auto" /></p>
<hr />
<h2 id="heading-modem">Modem :</h2>
<p>Modem is use to convert data signals given by ISP (fiberr, PTCL etc) ,</p>
<p><strong>How it works :</strong></p>
<ul>
<li>ISP gives you internet or wifi , but it contains analog signals , and modem converts these signals into digital (0,1) and computer connect to internet and wifi.</li>
</ul>
<p>ISP (Analog Signals) → Modem (Converter) → Digital Signals → Your Computer → Internet Access.</p>
<p>without modem , ISP will gives you analog signals but your computer cannot understand and proceed it , and you will be unable to connect with internet.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1769181489165/29026d48-3855-45fc-bb1c-aed021c616a9.png" alt /></p>
<hr />
<h2 id="heading-firewall">Firewall :</h2>
<ul>
<li><p>A firewall is a security device or software that checks and controls incoming and outgoing network traffic.</p>
</li>
<li><p>It is exact like a security guard who checks everyone before entering in the house from outside.</p>
</li>
<li><p>A firewall decides which data packets are allowed to enter your network and which ones should be blocked.</p>
</li>
<li><p>This all done on firewall by predefined security rules.</p>
</li>
</ul>
<hr />
<p>Load Balanacer :</p>
<ul>
<li><p>Load balancer is used to manage clients request. If the client requests a website,</p>
</li>
<li><p>The request goes to load balancer first.</p>
</li>
<li><p>Load balancer check all available servers and response the minimal traffic server .</p>
</li>
<li><p>Large websites like Google, Facebook, and YouTube use multiple load balancers to handle billions of requests every day.</p>
</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1769183991196/8a277fd2-cfeb-42cc-8bfa-13f76b94410b.png" alt /></p>
<hr />
<p>These all Network Devices , internal devices , external devices, ISP etc works combine to run the whole world of the network known as Networking .</p>
<hr />
]]></content:encoded></item><item><title><![CDATA[Getting Started with cURL]]></title><description><![CDATA[cURL is exactly like a Postman but for terminal/command line. When we want to send letter to someone, we give letter to postman and postman deliver it. Similarly cURL is a tool which send request to server from terminal and get`s response back.
cURL ...]]></description><link>https://blog.abdulrdeveloper.me/getting-started-with-curl</link><guid isPermaLink="true">https://blog.abdulrdeveloper.me/getting-started-with-curl</guid><category><![CDATA[curl]]></category><category><![CDATA[ChaiCode]]></category><dc:creator><![CDATA[Abdul Rahman]]></dc:creator><pubDate>Fri, 23 Jan 2026 13:49:49 GMT</pubDate><content:encoded><![CDATA[<p>cURL is exactly like a <strong>Postman</strong> but for terminal/command line. When we want to send letter to someone, we give letter to postman and postman deliver it. Similarly cURL is a tool which send request to server from terminal and get`s response back.</p>
<p><strong>cURL</strong> is a command-line tool that help us to talk with servers and APIs directly using terminal without opening any browser.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1769166787285/ba7f6a11-ca2c-47d4-93a4-73e37405a4a9.png" alt class="image--center mx-auto" /></p>
<h2 id="heading-why-programmers-need-curl">Why Programmers Need cURL ?</h2>
<p>cURL helps programmers to easily access websites and test APIs without opening browsers again and again. Using cURL, programers test APIs in the backend and can get whole HTML code without inspecting the browser.</p>
<hr />
<h2 id="heading-making-your-first-request-using-curl">Making your first request using cURL :</h2>
<p><strong><em>Step 1 : Check if cURL is installed on Windows</em></strong></p>
<p>cURL comes pre-installed with <strong>Windows 10 and later</strong> versions (PowerShell).</p>
<p>Open PowerShell or Command Prompt and type:</p>
<pre><code class="lang-powershell"><span class="hljs-built_in">curl</span> -<span class="hljs-literal">-version</span>
</code></pre>
<p>If you see a version number then it`s already installed , or you can download it from <a target="_blank" href="https://curl.se/download"><strong>curl.se/download</strong></a>.</p>
<p><strong><em>Step 2 : Make Your First Request</em></strong></p>
<p>Open PowerShell and run this command:</p>
<pre><code class="lang-powershell"><span class="hljs-built_in">curl</span> http://www.google.com
</code></pre>
<p><strong>What will happen?</strong></p>
<ul>
<li><p>cURL will send a GET request to Google server</p>
</li>
<li><p>Server will send data packets</p>
</li>
<li><p>You`ll recieve google homepage HTML code</p>
</li>
</ul>
<hr />
<h2 id="heading-common-curl-mistakes-to-avoid-as-a-beginner">Common cURL Mistakes to avoid as a Beginner :</h2>
<ol>
<li><h3 id="heading-forget-to-include-the-address"><strong>Forget to Include the Address</strong></h3>
<p> Don`t write like this :</p>
<pre><code class="lang-powershell"> <span class="hljs-built_in">curl</span>               <span class="hljs-comment"># this is not correct, because it don`t have any URL.</span>
</code></pre>
<p> Always include a URL because it is exactly like you are giving an address:</p>
<pre><code class="lang-powershell"> <span class="hljs-built_in">curl</span> http://google.com        <span class="hljs-comment"># It is Correct because it have url.</span>
</code></pre>
</li>
<li><h3 id="heading-use-of-http-and-https"><strong>Use of HTTP and HTTPS</strong></h3>
<p> i) HTTP is less common now , use it when the website supports non secure connection.</p>
<pre><code class="lang-powershell">  <span class="hljs-built_in">curl</span> http://google.com         <span class="hljs-comment"># Non-secure connection</span>
</code></pre>
<p> ii) Use HTTPS when the website supports a secure connections (mostly in modern websites).</p>
<pre><code class="lang-powershell">  <span class="hljs-built_in">curl</span> https://google.com       <span class="hljs-comment"># Secure connection with encryption</span>
</code></pre>
</li>
<li><h3 id="heading-writing-incomplete-command">Writing Incomplete Command :</h3>
<p> Don`t write incomplete or wrong command,</p>
<pre><code class="lang-powershell"> <span class="hljs-built_in">curl</span> google.com                 <span class="hljs-comment"># sometimes, this command can be wrong</span>
</code></pre>
<p> This works on many setups , it`s clearer and safer to write:</p>
<pre><code class="lang-powershell"> <span class="hljs-built_in">curl</span> http://google.com       <span class="hljs-comment"># this is correct command</span>
</code></pre>
<hr />
</li>
</ol>
]]></content:encoded></item><item><title><![CDATA[TCP Working: 3-Way Handshake & Reliable Communication]]></title><description><![CDATA[TCP (Transmission Control Protocol) :
i) This is very Reliable. It transfers data from server to client completely and very carefully.
ii) It transfer data in the same order from server to client without changing or lossing any data packet. It also d...]]></description><link>https://blog.abdulrdeveloper.me/tcp-working-3-way-handshake-and-reliable-communication</link><guid isPermaLink="true">https://blog.abdulrdeveloper.me/tcp-working-3-way-handshake-and-reliable-communication</guid><category><![CDATA[TCP]]></category><category><![CDATA[3-way handshake]]></category><category><![CDATA[tcp/ip-model]]></category><dc:creator><![CDATA[Abdul Rahman]]></dc:creator><pubDate>Fri, 23 Jan 2026 07:26:17 GMT</pubDate><content:encoded><![CDATA[<h2 id="heading-tcp-transmission-control-protocol">TCP (Transmission Control Protocol) :</h2>
<p>i) This is very Reliable. It transfers data from server to client completely and very carefully.</p>
<p>ii) It transfer data in the same order from server to client without changing or lossing any data packet. It also detect loss of data packets.</p>
<p>iii) It delivers data packets slowly compared to UDP .</p>
<p>iv) It does a synchronous acknowledgment. (3 way Handshake at start and end).</p>
<h2 id="heading-3-way-handshake-bw-server-and-client">3-way Handshake B/W Server and Client :</h2>
<p><strong>Client :</strong> Hello, are you listening, Can we talk? (syn)</p>
<p><strong>Server :</strong> Yes, we can talk <strong>.</strong> (syn-ack)</p>
<p><strong>Client :</strong> Ok , send me Data Packets of a video . (ack)</p>
<p>This is 3-way handshaking, done at the start and at the end. It is synchronous process.</p>
<p><img src="https://media.geeksforgeeks.org/wp-content/uploads/20260116154331773186/tcp_handshake_process.webp" alt="Transmission Control Protocol (TCP) - GeeksforGeeks" /></p>
<h3 id="heading-when-to-use-tcp"><strong>When to use TCP</strong></h3>
<p>Use TCP when you want to transfer data completely and in order ( delivery &gt; speed ). It is mostly used for,</p>
<ul>
<li><p><strong>Websites</strong></p>
</li>
<li><p><strong>Emails</strong></p>
</li>
<li><p><strong>File transfer</strong></p>
</li>
<li><p><strong>Chat apps (WhatsApp, Telegram, etc.)</strong></p>
</li>
<li><p><strong>Banking / payment apps</strong></p>
</li>
<li><p><strong>APIs</strong></p>
</li>
</ul>
<p>Example:<br />If one byte of bank transaction is lost, whole transaction will be wrong → so TCP is used.</p>
]]></content:encoded></item><item><title><![CDATA[TCP vs UDP: When to Use What, and How TCP Relates to HTTP]]></title><description><![CDATA[What are TCP and UDP ?
Protocols help to connect one computer to another computer/server for talk . These are standard rules in which computer tells that how data will transfer. Without these rules user/server cannot understand the data language, who...]]></description><link>https://blog.abdulrdeveloper.me/tcp-vs-udp-when-to-use-what-and-how-tcp-relates-to-http</link><guid isPermaLink="true">https://blog.abdulrdeveloper.me/tcp-vs-udp-when-to-use-what-and-how-tcp-relates-to-http</guid><category><![CDATA[TCP]]></category><category><![CDATA[tcp/ip-model]]></category><category><![CDATA[TCP Handshake]]></category><category><![CDATA[UDP]]></category><category><![CDATA[http]]></category><dc:creator><![CDATA[Abdul Rahman]]></dc:creator><pubDate>Fri, 23 Jan 2026 06:55:18 GMT</pubDate><content:encoded><![CDATA[<h2 id="heading-what-are-tcp-and-udp">What are TCP and UDP ?</h2>
<p>Protocols help to connect one computer to another computer/server for talk . These are standard rules in which computer tells that how data will transfer. Without these rules user/server cannot understand the data language, who and what is sending, and there will be no privacy, that`s why they use Http.</p>
<p>There are a Lot of Protocols but We will focus on two protocols</p>
<p>i) <strong>TCP</strong> ii) <strong>UDP</strong></p>
<p>Server can send data packets to the client through TCP and UDP .</p>
<h2 id="heading-tcp-transmission-control-protocol">TCP ( Transmission Control Protocol )</h2>
<p>i) This is very Reliable. It transfer data from server to client very carefully and completely.</p>
<p>ii) It transfer data in the same order from server to client without changing or lossing any data packet. It also detect loss of data packets.</p>
<p>iii) It delivers data packets slowly compared to UDP .</p>
<p>iv) It does a synchronous acknowledgment. (3 way Handshake at start and end).</p>
<h3 id="heading-when-to-use-tcp">When to use TCP</h3>
<p>Use TCP when you want to transfer data completely and in order ( delivery &gt; speed ). It is mostly used for,</p>
<ul>
<li><p><strong>Websites</strong></p>
</li>
<li><p><strong>Emails</strong></p>
</li>
<li><p><strong>File transfer</strong></p>
</li>
<li><p><strong>Chat apps (WhatsApp, Telegram, etc.)</strong></p>
</li>
<li><p><strong>Banking / payment apps</strong></p>
</li>
<li><p><strong>APIs</strong></p>
</li>
</ul>
<p>Example:<br />If one byte of bank transaction is lost, whole transaction will be wrong → so TCP is used.</p>
<h2 id="heading-udp-user-datagram-protocol"><strong>UDP</strong> ( User Datagram Protocol ) <strong>:</strong></h2>
<p>i) This is not Reliable , also it does not detect loss data packets and also do not deliver data in the order.</p>
<p>ii) It deliver data packets with very fast speed compared to TCP but with less control .</p>
<p>iii) It does Asynchronous acknowledge. (no handshake, direct data transfer).</p>
<h3 id="heading-when-to-use-udp">When to use UDP</h3>
<p>Use UDP when speed is more important than 100% delivery ( delivery &lt; speed ):</p>
<ul>
<li><p>Live video calls (Zoom, Meet, WhatsApp video)</p>
</li>
<li><p>Online gaming (PUBG, Free Fire, etc.)</p>
</li>
<li><p>Live streaming (YouTube Live, Twitch)</p>
</li>
<li><p>DNS queries (very small, can be re-sent if lost)</p>
</li>
<li><p>VoIP (Voice over IP, e.g., WhatsApp calls)</p>
</li>
</ul>
<p>Example:<br />If one frame in live video is lost, just a small glitch appears → but next frame comes → so UDP is used.</p>
<p><img src="https://miro.medium.com/1*ZPtAG6N2qQB_iIFzEtPP7Q.png" alt="TCP vs. UDP: Difference between TCP and UDP | by Let's Decode | Medium" /></p>
<p><strong>HTTP = Postman (What send - letter, parcel, etc.)</strong></p>
<p><strong>TCP = Secure courier</strong> ( How send - carefully with guarantee )</p>
<p><strong>UDP = Fast delivery bike</strong> ( How send - quickly, no guarantee )</p>
<p><strong>IP = Road system</strong> ( Where send - which path through )</p>
<p>HTTP is a protocol in which standardized data format (text-based, structured communication). TCP and UDP both work on the upper Layer of the HTTP layer. They define how the data will transferred (reliably or quickly). HTTP, TCP, and above work for web browsing.</p>
]]></content:encoded></item><item><title><![CDATA[DNS Record Types Explained]]></title><description><![CDATA[What is DNS ?
DNS is exectly like a phone book .
When we entered in any DNS section of a Domain , then there we saw A Record, CAA Record, NS Record, TXT Record CNAME Record etc. We need to manually update these records as soon as we host our website ...]]></description><link>https://blog.abdulrdeveloper.me/dns-record-types-explained</link><guid isPermaLink="true">https://blog.abdulrdeveloper.me/dns-record-types-explained</guid><category><![CDATA[dns]]></category><category><![CDATA[dns-records]]></category><category><![CDATA[DNS Record Types]]></category><dc:creator><![CDATA[Abdul Rahman]]></dc:creator><pubDate>Fri, 23 Jan 2026 05:01:49 GMT</pubDate><content:encoded><![CDATA[<h2 id="heading-what-is-dns">What is DNS ?</h2>
<p>DNS is exectly like a phone book .</p>
<p>When we entered in any DNS section of a Domain , then there we saw A Record, CAA Record, NS Record, TXT Record CNAME Record etc. We need to manually update these records as soon as we host our website on another ip addresses .</p>
<h2 id="heading-why-dns-records-are-needed">Why DNS records are needed ?</h2>
<p>DNS Records helps browser to identify correctly that where the server is and what is the ip address of the server , Using DNS Records browser can easily get`s IP address and can show the website to the client .</p>
<h2 id="heading-what-is-a-ns-record">What is a <strong>NS Record ?</strong></h2>
<p>NS Records tells that who is the owner of this specific domain and which nameserver like ( godaddy/namcheap/spaceship/hostinger etc ) is managing it`s dns, and through NS only we go to dns and add A Record and CNAME Record.</p>
<p>Like if we buy domain from Namecheap then domain and DNS provider both will be Namecheap only, and one NS record become <a target="_blank" href="http://ns1.namecheap.com">ns1.namecheap.com</a>, now when we type website, then browser request to root server and root server will give data of nameserver ( link: <a target="_blank" href="http://ns1.namecheap.com">ns1.namecheap.com</a> ip address: 208.109.188.100 etc ), now browser from this link or ip address inside it can access A Record or CNAME record easily.</p>
<h2 id="heading-what-is-a-record">What is <strong>A Record ?</strong></h2>
<p>Remember <strong>A Record</strong> always show ip address.</p>
<p>When we tell the browser to open <a target="_blank" href="http://google.com">google.com</a> then it request from root server and get`s data from it and then from that data it goes to google`s server , and in DNS section it first search for A Record because the server`s IP is in A Record and if IP address is find out then it show us the website. This means the browser only need the A Record`s IP address.</p>
<p>Now we host our website on any hosting providing server (netlify, vercel, digital ocean) then our code stay always available on vercel/netlify`s machine which never turn off and vercel/netlify give us one ip address (like 77.66.1.1) and tell us that add this ip address in your domain`s A Record. but</p>
<p>If for some reason in future vercel/netlify need to change their server/machine (normally it is not possible but if this happen then), then vercel will inform everyone through email`s to update thier A Records which is very big issue for millions of users so in this situation CNAME helps.</p>
<h2 id="heading-what-is-cname-record">What is <strong>CNAME Record ?</strong></h2>
<p>CNAME use when browser don`t get updated ip address from A Record , then as alternative browser check CNAME and from here it takes ip address and show website. CNAME is one link given from vercel side ( like website`s hosted link etc <a target="_blank" href="http://9cbe0a1c625.vercel-dns-07.com">9cbe0a1c625.vercel-dns-07.com</a> ) and vercel tell us that add this link in your CNAME Record so that in case if ip address change , then browser can access updated ip address from this link and this link cannot change only its ip address can update. This way without manually informing users through emails, vercel can automatic change and browser easily can access updated ip address from CNAME Record.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1769141302665/b8f9d2b6-36ef-4d53-a8fe-1f532362d921.png" alt class="image--center mx-auto" /></p>
<h2 id="heading-what-is-aaaa-record">What is <strong>AAAA Record ?</strong></h2>
<p>This is also the more complex version of A Record . The ip address which we give in A Record that is ipv4, and in AAAA Record we add with more details (2001:0db8:85a3:0000:0000:8a2e:0370:7334 etc) and this is also known as ipv6.</p>
<p>Example:</p>
<p>Old: House address "Block 5, House 123, Lahore"</p>
<p>New: House detailed address "Block 5, House 123, Street 45, Sector 6, Lahore, Punjab, Pakistan."</p>
<p>In both one same house is find out, just format is different.</p>
<h2 id="heading-what-is-mx-record">What is MX Record ?</h2>
<p>DNS is exactly like a Phone book .</p>
<p>Just like in phone book it is write: "Ali ka number: 03001234567"</p>
<p>Similarly in DNS it is write: "google.com ka address: 142.250.185.46"</p>
<p>If you make your business website</p>
<p>Website: <a target="_blank" href="http://www.mysite.com/"><strong>www.mysite.com</strong></a> Email: <a target="_blank" href="mailto:contact@mysite.com"><strong>contact@mysite.com</strong></a></p>
<p>Now in DNS you will add something like this:</p>
<p>A Record: mysite.com → 192.168.1.1 (Website is here)</p>
<p>MX Record: mysite.com → mail.mysite.com (Email is here)</p>
<h2 id="heading-what-is-txt-record">What is <strong>TXT Record ?</strong></h2>
<p>TXT Record is like a small note space in DNS where we can put any extra text.</p>
<p>Normal DNS server address stores the addresses (A, CNAME) and mail server (MX), but TXT record is different. In this we can add anything in text form.</p>
<h2 id="heading-how-all-dns-records-work-together-for-one-website">How All DNS Records Work Together for One Website ?</h2>
<p>Let’s say:</p>
<ul>
<li><p>Domain: <a target="_blank" href="http://mysite.com"><code>mysite.com</code></a></p>
</li>
<li><p>Hosted on: Vercel</p>
</li>
<li><p>Email: <a target="_blank" href="mailto:contact@mysite.com"><code>contact@mysite.com</code></a> → Google Workspace</p>
</li>
</ul>
<p>Real setup in DNS:</p>
<ul>
<li><p>NS records:<br />  <a target="_blank" href="http://ns1.namecheap.com"><code>ns1.namecheap.com</code></a><br />  <a target="_blank" href="http://ns2.namecheap.com"><code>ns2.namecheap.com</code></a><br />  → Tells internet: “This domain’s DNS is managed by Namecheap.”</p>
</li>
<li><p>A Record:<br />  <a target="_blank" href="http://mysite.com"><code>mysite.com</code></a> <code>→</code> <a target="_blank" href="http://123abc.vercel-dns.com"><code>123abc.vercel-dns.com</code></a><br />  → Browser pata lagata hai: “Website is hosted on Vercel.”</p>
</li>
<li><p>CNAME:<br />  <a target="_blank" href="http://www.mysite.com"><code>www.mysite.com</code></a> <code>→</code> <a target="_blank" href="http://mysite.com"><code>mysite.com</code></a><br />  → So both <a target="_blank" href="http://mysite.com"><code>mysite.com</code></a> and <a target="_blank" href="http://www.mysite.com"><code>www.mysite.com</code></a> open the same site.</p>
</li>
<li><p>MX Record:<br />  <a target="_blank" href="http://mysite.com"><code>mysite.com</code></a> <code>→</code> <a target="_blank" href="http://aspmx.l.google.com"><code>aspmx.l.google.com</code></a><br />  → It finds the Email : “Email in on the server of google.”</p>
</li>
<li><p>TXT Record:<br />  <a target="_blank" href="http://mysite.com"><code>mysite.com</code></a> <code>→ “google-site-verification=xyz123”</code><br />  → Google will check : “Owner added the confirmation .”</p>
</li>
</ul>
<p>When you type <a target="_blank" href="http://mysite.com"><code>mysite.com</code></a>:</p>
<ol>
<li><p>Browser → Root server → NS → Namecheap DNS</p>
</li>
<li><p>Namecheap DNS → A Record → Vercel IP</p>
</li>
<li><p>Vercel server → Send website</p>
</li>
<li><p>Email → MX → Google → Deliver email</p>
</li>
</ol>
<p>All Records work together, like a team.<br />and this is how whole domain dns system works.”</p>
]]></content:encoded></item><item><title><![CDATA[Inside Git - How It Works and the Role of the .git Folder  |  Git & GitHub]]></title><description><![CDATA[We use Git commands every day: git init, git add, git commit. But have you ever wondered: How does Git actually remember everything? Where does it store the history? What's really inside that .git folder?
It's not magic. It's just a clever database h...]]></description><link>https://blog.abdulrdeveloper.me/inside-git-how-it-works-and-the-role-of-the-git-folder-git-and-github</link><guid isPermaLink="true">https://blog.abdulrdeveloper.me/inside-git-how-it-works-and-the-role-of-the-git-folder-git-and-github</guid><category><![CDATA[Git Commands]]></category><category><![CDATA[Inside Git]]></category><category><![CDATA[gitforbeginners]]></category><category><![CDATA[Git]]></category><category><![CDATA[GitHub]]></category><category><![CDATA[version control]]></category><dc:creator><![CDATA[Abdul Rahman]]></dc:creator><pubDate>Sat, 10 Jan 2026 04:26:53 GMT</pubDate><content:encoded><![CDATA[<p>We use Git commands every day: <code>git init</code>, <code>git add</code>, <code>git commit</code>. But have you ever wondered: <em>How does Git actually remember everything? Where does it store the history? What's really inside that</em> <code>.git</code> folder?</p>
<p>It's not magic. It's just a clever database hidden in plain sight.</p>
<h2 id="heading-the-hidden-database-git-folder">The Hidden Database: .git Folder</h2>
<p>When you run <code>git init</code> in your project, Git creates a hidden folder named <code>.git</code>. This folder is the <strong>brain of your entire version control system</strong>.</p>
<p>If you open your terminal and type:</p>
<pre><code class="lang-bash">ls -a
</code></pre>
<p>You will see the <code>.git</code> folder appear (along with other hidden files). This folder contains your <strong>entire project history</strong>. If you delete this folder, your project becomes just a regular folder, and all version control is lost.</p>
<p><strong><em>Important: Never delete the</em></strong> <code>.git</code> folder unless you intentionally want to stop using Git!</p>
<h2 id="heading-inside-the-git-folder-three-critical-components">Inside the .git Folder: Three Critical Components</h2>
<p>The <code>.git</code> folder has several important parts, but three of them matter the most:</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1768018830329/199a296d-36bc-4595-b988-04762ca43123.png" alt class="image--center mx-auto" /></p>
<p><em>Figure 1: The hierarchical structure of the .git folder and its key components.</em></p>
<h2 id="heading-1-head-your-current-location">1. HEAD: Your Current Location</h2>
<p>The <code>HEAD</code> file is simple but important. It tells Git <strong>which branch you are currently on</strong>.</p>
<p>If you check its contents:</p>
<pre><code class="lang-bash">cat .git/HEAD
</code></pre>
<p>You will see:</p>
<pre><code class="lang-bash">ref: refs/heads/main
</code></pre>
<p>This means: <em>"You are currently standing on the main branch."</em></p>
<h2 id="heading-2-refsheadsmain-the-commit-pointer">2. refs/heads/main: The Commit Pointer</h2>
<p>Inside the <code>.git/refs/heads/</code> folder, there are files for each branch. Let's look at the <code>main</code> file:</p>
<pre><code class="lang-bash">cat .git/refs/heads/main
</code></pre>
<p>Output:</p>
<pre><code class="lang-bash">abc123def456xyz789abc123def456xyz789abc123
</code></pre>
<p><strong>This is a commit hash ID.</strong> This specific string points to your <strong>latest commit</strong> on the main branch.</p>
<p><strong>Here's the connection:</strong> This is exactly the same hash that appears when you run:</p>
<pre><code class="lang-bash">git <span class="hljs-built_in">log</span> --oneline
</code></pre>
<p><strong>Why this matters:</strong> Git doesn't need to search for your latest commit. It already knows where it is because it's stored in this file!</p>
<h2 id="heading-3-objects-the-data-storage">3. objects: The Data Storage</h2>
<p>This is where the actual magic happens. The <code>.git/objects/</code> folder contains all the real commit data:</p>
<ul>
<li><p><strong>Tree objects:</strong> Snapshots of your file structure.</p>
</li>
<li><p><strong>Commit objects:</strong> Author, date, message, and parent commit.</p>
</li>
<li><p><strong>Blob objects:</strong> The actual file contents.</p>
</li>
</ul>
<p>When you run <code>git log</code> or <code>git diff</code>, Git retrieves data from here.</p>
<hr />
<h2 id="heading-how-git-actually-retrieves-your-history">How Git Actually Retrieves Your History</h2>
<p>When you run <code>git log</code>, Git doesn't magically pull data from nowhere. It follows a specific path:</p>
<p><img src="https://user-gen-media-assets.s3.amazonaws.com/gemini_images/a23de114-48da-41b8-b3ae-c88160ed3b94.png" alt="Git Log Data Flow" /></p>
<p><em>Figure 2: The step-by-step process Git follows when you run 'git log'.</em></p>
<p><strong>Step-by-step:</strong></p>
<ol>
<li><p><strong>Read .git/HEAD:</strong> Git checks which branch you're on.</p>
</li>
<li><p><strong>Read .git/refs/heads/main:</strong> Git retrieves the latest commit hash.</p>
</li>
<li><p><strong>Go to .git/objects/:</strong> Git finds the commit data using that hash.</p>
</li>
<li><p><strong>Display it to you:</strong> Git shows you the history in the terminal.</p>
</li>
</ol>
<p>This entire process happens in milliseconds!</p>
<hr />
<h2 id="heading-verification-connecting-the-dots">Verification: Connecting the Dots</h2>
<p>Here's how you can verify that this is actually happening:</p>
<p><strong>Step 1:</strong> Get the latest commit hash</p>
<pre><code class="lang-bash">cat .git/refs/heads/main
</code></pre>
<p>Output: <code>abc123def456...</code></p>
<p><strong>Step 2:</strong> Check what git log shows</p>
<pre><code class="lang-bash">git <span class="hljs-built_in">log</span> --oneline
</code></pre>
<p>Output:</p>
<pre><code class="lang-bash">abc123def (HEAD -&gt; main) Added login feature
</code></pre>
<p><strong>Notice:</strong> The hash at the beginning is <strong>the same</strong>! This proves that Git is reading from the <code>.git/refs/heads/main</code> file.</p>
<hr />
<h2 id="heading-why-this-understanding-matters">Why This Understanding Matters</h2>
<p>Understanding the <code>.git</code> folder structure helps you realize several important truths:</p>
<ol>
<li><p><strong>Your code is safe:</strong> As long as the <code>.git</code> folder exists, your entire history is preserved.</p>
</li>
<li><p><strong>Git is portable:</strong> The <code>.git</code> folder is self-contained. You can move your project anywhere, and Git still works.</p>
</li>
<li><p><strong>No internet needed:</strong> Git works entirely offline. GitHub is optional; Git itself doesn't require the internet.</p>
</li>
<li><p><strong>Commands are shortcuts:</strong> When you type <code>git log</code>, you're essentially asking Git to read and display files from the <code>.git</code> folder.</p>
</li>
</ol>
<h2 id="heading-the-complete-picture">The Complete Picture</h2>
<p>The <code>.git</code> folder isn't mysterious—it's just well-organized:</p>
<ul>
<li><p><strong>HEAD</strong> tells you where you are.</p>
</li>
<li><p><strong>refs</strong> point to the latest commits.</p>
</li>
<li><p><strong>objects</strong> store the actual data.</p>
</li>
</ul>
<p>When you understand this structure, Git stops feeling like magic and starts feeling like a well-engineered tool.</p>
]]></content:encoded></item><item><title><![CDATA[Git for Beginners: Basics and Essential Commands | Git & GitHub]]></title><description><![CDATA[When you first start learning Git, the most common question is: How does Git actually track my project? Even when we don't see anything happening on the screen, how does Git know exactly what line changed?
In this guide, we will break down the essent...]]></description><link>https://blog.abdulrdeveloper.me/git-for-beginners-basics-and-essential-commands-git-and-github</link><guid isPermaLink="true">https://blog.abdulrdeveloper.me/git-for-beginners-basics-and-essential-commands-git-and-github</guid><category><![CDATA[Git]]></category><category><![CDATA[GitHub]]></category><category><![CDATA[Git Essential Commands]]></category><category><![CDATA[Gitcommands]]></category><category><![CDATA[Web Development]]></category><category><![CDATA[Beginner Developers]]></category><dc:creator><![CDATA[Abdul Rahman]]></dc:creator><pubDate>Sun, 04 Jan 2026 17:29:35 GMT</pubDate><content:encoded><![CDATA[<p>When you first start learning Git, the most common question is: <em>How does Git actually track my project?</em> Even when we don't see anything happening on the screen, how does Git know exactly what line changed?</p>
<p>In this guide, we will break down the essential commands you need to know to work like a professional developer.</p>
<h2 id="heading-how-git-tracks-changes">How Git Tracks Changes</h2>
<p>When Linus Torvalds built Git, he needed a place to store changes without relying on external servers. His solution was brilliant: <strong>The</strong> <code>.git</code> folder.</p>
<p>When you initialize Git, it creates a hidden folder named <code>.git</code> inside your project. This folder acts as a local database that records every single change.</p>
<ul>
<li><p><strong>Scanning:</strong> Git scans your files for changes.</p>
</li>
<li><p><strong>Diffing:</strong> It marks lines as <code>+</code> (added) or <code>-</code> (removed).</p>
</li>
<li><p><strong>Hashing:</strong> It generates a unique ID (Hash) for every save.</p>
<p>  <strong><em>Note: The</em></strong> <code>.git</code> folder is hidden by default so you don't accidentally delete it!</p>
</li>
</ul>
<h2 id="heading-the-essential-workflow">The Essential Workflow</h2>
<p>To use Git effectively, you only need to master a few core commands.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1767546189712/e564ff87-6584-4aad-ba2a-c797ba8faf33.png" alt class="image--center mx-auto" /></p>
<h2 id="heading-1-git-init-start-here">1. git init (Start Here)</h2>
<p>This command tells Git: <em>"Start tracking this project."</em></p>
<pre><code class="lang-bash">git init
</code></pre>
<p><strong>What happens:</strong> Git creates the hidden <code>.git</code> folder. You only run this <strong>once</strong> per project.</p>
<h2 id="heading-2-git-add-the-staging-area">2. git add (The Staging Area)</h2>
<p>Writing code doesn't mean Git is tracking it yet. You have to tell Git which files to prepare for saving. This is called <strong>"Staging."</strong></p>
<pre><code class="lang-bash">git add file.js    <span class="hljs-comment"># Stage a specific file</span>
git add .          <span class="hljs-comment"># Stage ALL files (Recommended)</span>
</code></pre>
<p><strong>Analogy:</strong> Think of this like putting a parcel in a box. You haven't mailed it yet; you're just packing it.</p>
<h2 id="heading-3-git-commit-the-save-button">3. git commit (The Save Button)</h2>
<p>Now that your files are staged, you need to permanently save them.</p>
<pre><code class="lang-bash">git commit -m <span class="hljs-string">"Added login feature"</span>
</code></pre>
<p><strong>What happens:</strong></p>
<ul>
<li><p>Git saves a snapshot of your files in the <code>.git</code> folder.</p>
</li>
<li><p>It generates a unique ID (e.g., <code>abc123d</code>).</p>
</li>
<li><p>It clears the staging area for your next work.</p>
</li>
</ul>
<h2 id="heading-4-git-log-check-history">4. git log (Check History)</h2>
<p>Want to see what you've done? This command shows your history.</p>
<pre><code class="lang-bash">git <span class="hljs-built_in">log</span>                 <span class="hljs-comment"># Shows full details</span>
git <span class="hljs-built_in">log</span> --oneline       <span class="hljs-comment"># Shows a short summary (Recommended)</span>
</code></pre>
<h2 id="heading-important-concept-head">Important Concept: HEAD 🧠</h2>
<p>You will often hear developers talk about "HEAD."</p>
<ul>
<li><p><strong>HEAD</strong> is simply a pointer to your <strong>latest commit</strong>.</p>
</li>
<li><p>It tells Git: <em>"This is where we are standing right now."</em></p>
</li>
</ul>
<p>When you make a new commit, HEAD automatically moves forward to that new commit.</p>
<h2 id="heading-fixing-mistakes-revert-vs-reset">Fixing Mistakes: Revert vs. Reset</h2>
<p>We all make mistakes. Maybe you broke the code or deleted the wrong file. Git gives you two ways to fix it, but one is <strong>safe</strong> and the other is <strong>dangerous</strong>.</p>
<p><img src="https://user-gen-media-assets.s3.amazonaws.com/gemini_images/6fa03496-000d-4272-bd90-06263ca01521.png" alt="Git Revert vs Reset" /></p>
<p><em>Figure 2: Why you should choose Revert over Reset in professional teams.</em></p>
<h2 id="heading-the-safe-way-git-revert">✅ The Safe Way: git revert</h2>
<p>This command undoes a mistake by creating a <strong>new commit</strong> that reverses the changes.</p>
<pre><code class="lang-bash">git revert &lt;commit-id&gt;           <span class="hljs-comment"># Commit hash ID obtained after making a commit</span>
</code></pre>
<ul>
<li><strong>Why it's good:</strong> It preserves your history. You can see that a mistake happened and was fixed. This is great for teams.</li>
</ul>
<h2 id="heading-the-dangerous-way-git-reset-hard">⚠️ The Dangerous Way : git reset --hard</h2>
<p>This command deletes everything after a specific point.</p>
<pre><code class="lang-bash">git reset --hard &lt;commit-id&gt;      <span class="hljs-comment"># Commit hash ID obtained after making a commit</span>
</code></pre>
<ul>
<li><p><strong>Why it's risky:</strong> It completely erases history. If you reset, those later commits are <strong>gone forever</strong>.</p>
</li>
<li><p><strong>Professional Advice:</strong> Avoid using this in team projects. Once you delete history, you can't get it back easily.</p>
</li>
</ul>
<h2 id="heading-summary">Summary</h2>
<ol>
<li><p><code>git init</code> → Create the repo.</p>
</li>
<li><p><code>git add .</code> → Stage your changes.</p>
</li>
<li><p><code>git commit -m "msg"</code> → Save your changes.</p>
</li>
<li><p><code>git status</code> → Check what's happening.</p>
</li>
<li><p><code>git log</code> → View history.</p>
</li>
</ol>
<p>Master these, and you are already ahead of 90% of beginners</p>
]]></content:encoded></item><item><title><![CDATA[Why Version Control Exists: The Pendrive Problem  |  Git & GitHub]]></title><description><![CDATA[The first question that arises for any developer is: Why do we want to study Git and GitHub? Work was happening before these tools existed, so what was the reason to create them?
To understand the answer, we have to look at how we used to work withou...]]></description><link>https://blog.abdulrdeveloper.me/why-version-control-exists-the-pendrive-problem-git-and-github</link><guid isPermaLink="true">https://blog.abdulrdeveloper.me/why-version-control-exists-the-pendrive-problem-git-and-github</guid><category><![CDATA[Git]]></category><category><![CDATA[GitHub]]></category><category><![CDATA[version control]]></category><category><![CDATA[Web Development]]></category><category><![CDATA[Beginner Developers]]></category><dc:creator><![CDATA[Abdul Rahman]]></dc:creator><pubDate>Sun, 04 Jan 2026 16:52:19 GMT</pubDate><content:encoded><![CDATA[<p>The first question that arises for any developer is: <em>Why do we want to study Git and GitHub?</em> Work was happening before these tools existed, so what was the reason to create them?</p>
<p>To understand the answer, we have to look at how we used to work without them.</p>
<h2 id="heading-the-old-way-the-pendrive-chaos">The Old Way: The Pendrive Chaos</h2>
<p>Imagine a developer named <strong>Ahmad</strong> who runs code on his local machine. He saves his code on a pen drive and shares it with his teammate so they can use it.</p>
<p>When the teammate views the code, they make some changes and return the updated code via the pen drive back to Ahmad.</p>
<p>Now, Ahmad faces a dilemma. He doesn't know what is happening in the code:</p>
<ul>
<li><p>Which changes were made?</p>
</li>
<li><p>Where did the changes occur?</p>
</li>
</ul>
<p>After a while, the teammate realizes there is an issue in the code and fixes it. Again, they have to give Ahmad the pen drive. This cycle continues, and it creates a massive headache.</p>
<p><img src="https://user-gen-media-assets.s3.amazonaws.com/seedream_images/69c7862e-c5a3-4da8-8353-496534d92ee3.png" alt="The Pendrive Problem" /></p>
<p><em>Figure 1: The confusion of manual collaboration without version control ( Git ).</em></p>
<h2 id="heading-the-problems-they-faced">The Problems They Faced</h2>
<p>This manual process created several critical issues:</p>
<ol>
<li><p><strong>Unknown Changes:</strong> When the teammate made changes, Ahmad didn't know <em>what</em> changed. When Ahmad made changes, the teammate was equally lost.</p>
</li>
<li><p><strong>No Tracking:</strong> There was no way to know which files were changed or deleted.</p>
</li>
<li><p><strong>Physical Limitations:</strong> Every time someone made a change, they had to physically share the pen drive.</p>
</li>
<li><p><strong>No Collaboration:</strong> Both developers couldn't work simultaneously; collaboration was extremely difficult.</p>
</li>
<li><p><strong>No History:</strong> There was no record of code changes, meaning they couldn't retrieve old versions if something broke.</p>
<h2 id="heading-solution-part-1-git-local-version-control">Solution Part 1 : Git (Local Version Control)</h2>
<p> When developers identified this problem, they built a <strong>Code Tracker</strong> which they named "Git".</p>
<p> Actually, Git is a <strong>Version Control System (VCS)</strong>. There are other VCS options in the market like Mercurial or Apache Subversion (SVN), but Git is the most popular.</p>
<p> <strong>What Git does locally:</strong></p>
<ul>
<li><p>It tracks all changes in the code.</p>
</li>
<li><p>It shows <em>who</em> made what changes and <em>when</em>.</p>
</li>
<li><p>It displays a history of modified files.</p>
</li>
<li><p>It can be used by a single developer on their local machine.</p>
</li>
</ul>
</li>
</ol>
<p>    This solved the tracking problem. However, there was still a big problem remaining: <strong>The pen drive still had to be shared.</strong></p>
<p>    There was confusion about which version was the "latest," no central backup existed, and code was stuck on local machines.</p>
<h2 id="heading-solution-part-2-remote-repository-github">Solution Part 2 : Remote Repository (GitHub)</h2>
<p>    To solve the collaboration issue, they built a <strong>Single Source Solution</strong> where all developers could push their updated code to a central server. They named this "GitHub".</p>
<p>    In this context, what we call a "server" is referred to as a <strong>Remote Repository</strong>.</p>
<p>    <img src="https://user-gen-media-assets.s3.amazonaws.com/seedream_images/05f08171-e212-4ce8-9217-7ab8f9e03aae.png" alt="GitHub Central Hub" /></p>
<p>    <em>Figure 2: GitHub acting as a central hub for developers to push and pull code.</em></p>
<h2 id="heading-what-github-remote-does">What GitHub <strong>(Remote) does :</strong></h2>
<ul>
<li><p>It acts as a central server (in the cloud) for collaboration.</p>
</li>
<li><p>All developers connect to it simultaneously.</p>
</li>
<li><p>When a developer updates code, they <strong>"Push"</strong> it to GitHub.</p>
</li>
<li><p>Other developers can easily view the latest code and <strong>"Pull"</strong> it.</p>
</li>
<li><p>Everyone instantly knows what changed, and a complete backup stays safe in the cloud.</p>
</li>
</ul>
<p>    With this, the collaboration problem was completely solved.</p>
<h2 id="heading-important-clarification-git-vs-github">Important Clarification: Git vs. GitHub</h2>
<p>    Nowadays, many people write "Learned GitHub" on their resume, but this is <strong>technically wrong</strong>.</p>
<ul>
<li><p>❌ <strong>"Learned GitHub"</strong> = WRONG</p>
</li>
<li><p>✅ <strong>"Learned Git"</strong> = CORRECT</p>
</li>
</ul>
<p>    <strong>Why?</strong><br />    GitHub is just a <strong>hosting service</strong> (a platform) where you store code. Learning GitHub just means clicking buttons.<br />    <strong>Git</strong> is the complete <strong>Version Control System</strong> (the tool) that needs to be learned. It requires understanding commands (init, add, commit), concepts (staging, history), and workflows.</p>
<p>    <strong>In Simple Words:</strong></p>
<ul>
<li><p><strong>Git</strong> = Local Version Control System (On your computer).</p>
</li>
<li><p><strong>GitHub</strong> = Remote Repository Hosting (On the internet).</p>
</li>
</ul>
<h2 id="heading-who-built-git">Who Built Git?</h2>
<p>    Git was created by <strong>Linus Torvalds</strong> in 2005.</p>
<p>    He was working on the Linux Operating System. At that time, Linux was growing rapidly, and thousands of developers were working together. Tracking code became very difficult. They were using other systems (like SVN), but they were slow.</p>
<p>    Linus decided to build his own system that would be <strong>fast</strong>, <strong>distributed</strong>, and <strong>reliable</strong>. He built Git in just a few weeks as a side project!</p>
<p>    <strong><em>` Fun Fact: "Git" is British slang for "an annoying or foolish person." Linus jokingly gave it this name because Git was quite strict and complicated. `</em></strong></p>
]]></content:encoded></item></channel></rss>