<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Purna Pattela</title>
    <description>The latest articles on Forem by Purna Pattela (@ppc).</description>
    <link>https://forem.com/ppc</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3681681%2F0924d126-a491-4ff3-8534-6c2878ba6a22.png</url>
      <title>Forem: Purna Pattela</title>
      <link>https://forem.com/ppc</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/ppc"/>
    <language>en</language>
    <item>
      <title>Networking devices 000</title>
      <dc:creator>Purna Pattela</dc:creator>
      <pubDate>Wed, 28 Jan 2026 17:21:30 +0000</pubDate>
      <link>https://forem.com/ppc/networking-devices-000-3jb</link>
      <guid>https://forem.com/ppc/networking-devices-000-3jb</guid>
      <description>&lt;p&gt;&lt;code&gt;Internet → Modem → Router → Switch → End Devices (PC, phone, server, etc.)&lt;/code&gt;&lt;br&gt;
This flow shows how devices connect to the Internet in a typical network setup, where the modem links to the ISP, the router directs traffic, and the switch allows multiple devices to communicate.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;            Internet
               |
             Modem
               |
           Firewall
               |
            Router
               |
            Switch
      /        |       \
Device 1  Device 2   Server Cluster
                       |
                 Load Balancer
                       |
                 Server 1, 2, 3...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Modem
&lt;/h2&gt;

&lt;p&gt;Modem is often described as the gateway to internet. It is the thing which connect us to the ISP(Internet Service Provider).&lt;br&gt;
We can connect only one device to the modem that can be either single device or router&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Internet ↔ Modem ↔ Single device (or router)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Router
&lt;/h2&gt;

&lt;p&gt;Router is a device which routes the traffic between different networks. Connects local network to the internet through modem.&lt;br&gt;
Takes the responsibility of local IP addressing(DHCP - Dynamic Host Configuration Protocol). Performs NAT(Network Address Translation) so multiple devices can share the same address space(single IP).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Modem → Router → Multiple devices (wired/wireless)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Switch vs Hub
&lt;/h2&gt;

&lt;p&gt;Hub : simply broadcast the data it received to all connected devices&lt;br&gt;
Switch : relay the data to specific device which is intended&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Both switch and hub work in LAN(local Area Network)&lt;/li&gt;
&lt;li&gt;switch reduces the collision improves efficiency
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Hub: Device A → Hub → Devices B, C, D (all get the data)
Switch: Device A → Switch → Device B (only B gets it)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  Firewall
&lt;/h2&gt;

&lt;p&gt;It is a device which safeguards the internet. we can configure it based on our need which type of things to allow through it or block it. It is setup generally in network level&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Internet → Firewall → Router → LAN
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Load Balancer
&lt;/h2&gt;

&lt;p&gt;Its a device we use to manage the traffic or load. It is used to distribute the traffic to scale the system.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Internet → Load Balancer → Server 1 / Server 2 / Server 3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Devices Comparison
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Device Name&lt;/th&gt;
&lt;th&gt;Can Be Hardware&lt;/th&gt;
&lt;th&gt;Can Be Software Replacement&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Modem&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Rarely (mostly hardware)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Router&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes (e.g., virtual routers like pfSense, VyOS)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Switch&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes (virtual switches in VMware, Hyper-V)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hub&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Rarely (mostly hardware)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Firewall&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes (software firewalls like iptables, pfSense, Windows Firewall)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Load Balancer&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes (software like Nginx, HAProxy, AWS ELB)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

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

&lt;p&gt;Understanding network devices—from modems and routers to switches, firewalls, and load balancers—gives a clear picture of how data flows and how networks are structured. Each device has a distinct role: modems connect us to the internet, routers direct traffic, switches manage local communication, firewalls provide security, and load balancers ensure scalability. Together, they form a reliable and secure system that powers both everyday internet use and complex backend applications. For web developers, knowing how these devices interact helps in designing efficient, secure, and scalable systems.&lt;/p&gt;

</description>
      <category>programming</category>
      <category>beginners</category>
      <category>networking</category>
    </item>
    <item>
      <title>DNS record for newbies</title>
      <dc:creator>Purna Pattela</dc:creator>
      <pubDate>Wed, 28 Jan 2026 14:21:53 +0000</pubDate>
      <link>https://forem.com/ppc/dns-record-for-newbies-2pgm</link>
      <guid>https://forem.com/ppc/dns-record-for-newbies-2pgm</guid>
      <description>&lt;p&gt;DNS (Domain Name System) is the protocol that clients use to find the IP address of a server.&lt;/p&gt;

&lt;p&gt;*I will explain the DNS role in below steps&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User
  ↓
Web Browser
  ↓
Enter domain in search bar (e.g., example.com)
  ↓
Check local DNS cache
  ├─ If IP found → go to server
  └─ If not found → ask DNS resolver
          ↓
      DNS Resolver (ISP)
          ↓
      Check root DNS servers
          ↓
      Check TLD DNS servers (.com, .net, etc.)
          ↓
      Check Authoritative DNS server (NS record)
          ↓
      Get A / AAAA record (IP address)
          ↓
Return IP address to browser
  ↓
Browser connects to web server using IP
  ↓
Server sends back website data
  ↓
Browser renders website for user
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  DNS Records
&lt;/h2&gt;

&lt;p&gt;There are something called &lt;code&gt;DNS Records&lt;/code&gt; which tie the complete picture of how internet finds something.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;NS record&lt;/strong&gt; : points to DNS server responsible&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A/AAAA record&lt;/strong&gt; : Tells the IP address of the server&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CNAME record&lt;/strong&gt; : It maps one domain name to another domain name instead of pointing directly to an IP address&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MX record&lt;/strong&gt; : directs mails to the correct mail server&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;TXT record&lt;/strong&gt; : mainly used as external verification info&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  DNS Record Comparisons
&lt;/h2&gt;

&lt;h3&gt;
  
  
  CNAME vs A/AAAA
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;A / AAAA Record&lt;/strong&gt;: Points a domain directly to an IP address.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CNAME Record&lt;/strong&gt;: Points a domain to another domain name, which then resolves to an IP via an A/AAAA record.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use CNAME&lt;/strong&gt;: When multiple subdomains share the same IP as the main domain (centralized management).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use A/AAAA&lt;/strong&gt;: When the domain/subdomain has its own unique IP or for root/apex domains.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  NS vs MX
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;NS (Name Server) Record&lt;/strong&gt;: Points to the DNS servers responsible for a domain. Controls all DNS records for that domain.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MX (Mail Exchange) Record&lt;/strong&gt;: Points to the server that handles emails for the domain.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Key difference&lt;/strong&gt;: NS = controls DNS, MX = handles emails.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;DNS is the phonebook of the internet — it translates human-friendly domain names into IP addresses so browsers can find websites.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>beginners</category>
      <category>cloud</category>
    </item>
    <item>
      <title>cURL for developers</title>
      <dc:creator>Purna Pattela</dc:creator>
      <pubDate>Wed, 28 Jan 2026 13:48:49 +0000</pubDate>
      <link>https://forem.com/ppc/curl-for-developers-5ace</link>
      <guid>https://forem.com/ppc/curl-for-developers-5ace</guid>
      <description>&lt;p&gt;A server is just another computer somewhere else whose job is to wait for requests and send back responses. Every time you open a website, log in to an app, or load a profile picture, your device is talking to a server in request response cycle mostly over HTTP / HTTPS.&lt;/p&gt;

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

&lt;p&gt;cURL is a tool used to interact with multiple protocols from the CLI (Command Line Interface).&lt;br&gt;
It supports many different protocols like http, https, dict, file, ftp, pop3, smb, etc.&lt;br&gt;
In this blog lets focus only on &lt;strong&gt;HTTP/HTTPS&lt;/strong&gt; Protocols using curl.&lt;/p&gt;
&lt;h2&gt;
  
  
  Using curl for Http/Https protocols
&lt;/h2&gt;

&lt;p&gt;Generally there are 5 Methods we use in http/https protocol as a developer&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Get : Used to fetch data from a server&lt;/li&gt;
&lt;li&gt;Post : Used to send data to a server&lt;/li&gt;
&lt;li&gt;Put : Used to replace the complete existing data &lt;/li&gt;
&lt;li&gt;Patch : Update part of existing data&lt;/li&gt;
&lt;li&gt;Delete : Used to remove data&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To keep things simple we Discuss Only GET, POST (*syntax)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If you get &lt;code&gt;get&lt;/code&gt; then &lt;code&gt;delete&lt;/code&gt; was the same&lt;/li&gt;
&lt;li&gt;If you get &lt;code&gt;post&lt;/code&gt; then &lt;code&gt;put&lt;/code&gt; and &lt;code&gt;patch&lt;/code&gt; are the same &lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Get Method
&lt;/h2&gt;

&lt;p&gt;Get is used to request a resource by default if we don't specify any protocol it send a get request.&lt;/p&gt;

&lt;p&gt;Example without explicitly specifying the get method&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl https://example.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Example with specifying the get method&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; GET https://example.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Example for &lt;strong&gt;DELETE&lt;/strong&gt; based on &lt;code&gt;GET&lt;/code&gt; method&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; DELETE https://example.com/id
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Post Method
&lt;/h2&gt;

&lt;p&gt;The only difference we have from the get &amp;amp; delete is we don't send any data from the body.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;There is no strict rule not to send the data in the body when we use the &lt;code&gt;delete&lt;/code&gt; method but we(developers) don't prefer &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example to send form data&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s2"&gt;"key1=value1&amp;amp;key2=value2"&lt;/span&gt; https://example.com/new
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt; &lt;strong&gt;-d&lt;/strong&gt; : When we don't specify any headers by default curl send the data as &lt;code&gt;application/x-www-form-urlencoded&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example to send JSON&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{"key1":"value1","key2":"value2"}'&lt;/span&gt; https://example.com/new
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;TIP&lt;/strong&gt; If we have a json data in a file we can send the json data as mentioned &lt;code&gt;-d @path/to/jsonfile&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;In the same way we send the &lt;code&gt;PUT&lt;/code&gt; and &lt;code&gt;PATCH&lt;/code&gt; request &lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;curl : Tool name to invoke from CLI&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;-X&lt;/code&gt; : Mention method name in capital&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;-H&lt;/code&gt; : To specify the headers&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;-d&lt;/code&gt; : To specify the data when sending the POST, PUT, PATCH requests
*cURL has many other features in this blog even i did not cover 1% of  its features&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>beginners</category>
      <category>cli</category>
      <category>tutorial</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Git One stop</title>
      <dc:creator>Purna Pattela</dc:creator>
      <pubDate>Mon, 26 Jan 2026 13:30:23 +0000</pubDate>
      <link>https://forem.com/ppc/git-one-stop-2nm0</link>
      <guid>https://forem.com/ppc/git-one-stop-2nm0</guid>
      <description>&lt;p&gt;Here are some of the commonly used git commands by every developer :)&lt;/p&gt;

&lt;h2&gt;
  
  
  📌 Table of Contents
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Why should we use Git ?&lt;/li&gt;
&lt;li&gt;Terminology in git&lt;/li&gt;
&lt;li&gt;Initialize a git repository&lt;/li&gt;
&lt;li&gt;Staging the code&lt;/li&gt;
&lt;li&gt;Checking the status&lt;/li&gt;
&lt;li&gt;Commit the code&lt;/li&gt;
&lt;li&gt;How to check logs&lt;/li&gt;
&lt;li&gt;What is Git remote&lt;/li&gt;
&lt;li&gt;Pushing the code&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why should we use Git ?
&lt;/h2&gt;

&lt;p&gt;Git is a Version Control System (VCS) used to track changes in source code and efficiently manage multiple versions of a project.&lt;br&gt;
&lt;a href="https://dev.to/ppc/why-version-control-system-exists-in-the-first-place-4kg9/"&gt;Here is a blog with in-depth comparison with VCS and without VCS&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Terminology in git
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Term&lt;/th&gt;
&lt;th&gt;Meaning&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Repository (Repo)&lt;/td&gt;
&lt;td&gt;A storage location for a project that contains the source code and its version history&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Staging Area&lt;/td&gt;
&lt;td&gt;An intermediate area where changes are placed before committing&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Commit&lt;/td&gt;
&lt;td&gt;A snapshot of changes made to the repository with a descriptive message&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Branch&lt;/td&gt;
&lt;td&gt;A separate line of development used to add new features or fixes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Remote&lt;/td&gt;
&lt;td&gt;A repository hosted on a server (GitHub, GitLab, etc.)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Clone&lt;/td&gt;
&lt;td&gt;Creating a local copy of a remote repository&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Main / Master&lt;/td&gt;
&lt;td&gt;The default branch of the repository&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Merge&lt;/td&gt;
&lt;td&gt;Combining changes from different branches&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pull&lt;/td&gt;
&lt;td&gt;Fetching and merging the latest changes from the remote repository&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Conflict&lt;/td&gt;
&lt;td&gt;Occurs when Git cannot automatically merge changes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HEAD&lt;/td&gt;
&lt;td&gt;A pointer to the current branch or commit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Stash&lt;/td&gt;
&lt;td&gt;Temporarily stores changes without committing them&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;h2&gt;
  
  
  Initialize a git repository
&lt;/h2&gt;

&lt;p&gt;Initialize a git repository means adding git feature to the codebase. It creates the &lt;strong&gt;.git&lt;/strong&gt; folder when we run the command. The working of git starts from here.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Staging the code
&lt;/h2&gt;

&lt;p&gt;Staging is the area where changes are added before committing, telling Git which files to track for the next commit.&lt;/p&gt;

&lt;h4&gt;
  
  
  Track all changes
&lt;/h4&gt;

&lt;p&gt;This tracks the complete folder where Git is initialized:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git add &lt;span class="nb"&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Track specific files or folders
&lt;/h4&gt;

&lt;p&gt;To individually add files or folders for tracking:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git add file_or_folder_name
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Checking the status
&lt;/h2&gt;

&lt;p&gt;To see the current state of the working directory and staging area:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git status
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Commit the code
&lt;/h2&gt;

&lt;p&gt;After staging the changes, commit them with a message:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git commit &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"Your descriptive commit message"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  How to check logs
&lt;/h2&gt;

&lt;p&gt;To view the commit history:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git log
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can use options like &lt;code&gt;--oneline&lt;/code&gt; for a summarized view:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git log &lt;span class="nt"&gt;--oneline&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  What is Git remote
&lt;/h2&gt;

&lt;p&gt;A &lt;strong&gt;remote&lt;/strong&gt; is a version of your repository hosted on a server like GitHub or GitLab.&lt;br&gt;&lt;br&gt;
To add a remote repository:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git remote add origin https://github.com/username/repo.git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To see the list of remotes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git remote &lt;span class="nt"&gt;-v&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;we can also have the read stream and write stream as different repos&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Pushing the code
&lt;/h2&gt;

&lt;p&gt;To send your local commits to the remote repository:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git push origin main
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Replace &lt;code&gt;main&lt;/code&gt; with your branch name if different.&lt;/p&gt;

</description>
      <category>git</category>
      <category>programming</category>
      <category>computerscience</category>
    </item>
    <item>
      <title>Git isn't magic</title>
      <dc:creator>Purna Pattela</dc:creator>
      <pubDate>Sat, 17 Jan 2026 17:05:53 +0000</pubDate>
      <link>https://forem.com/ppc/git-isnt-magic-3eg0</link>
      <guid>https://forem.com/ppc/git-isnt-magic-3eg0</guid>
      <description>&lt;p&gt;Every git repository has &lt;code&gt;.git&lt;/code&gt; folder inside it. It will be created when we run &lt;code&gt;git init&lt;/code&gt;. Its the folder responsible for git working.&lt;/p&gt;

&lt;h3&gt;
  
  
  What's Inside .git ?
&lt;/h3&gt;

&lt;p&gt;That's it&lt;br&gt;
.git/&lt;br&gt;
├── HEAD&lt;br&gt;
├── config&lt;br&gt;
├── description&lt;br&gt;
├── index&lt;br&gt;
├── hooks/&lt;br&gt;
├── info/&lt;br&gt;
├── objects/&lt;br&gt;
├── refs/&lt;br&gt;
├── logs/&lt;br&gt;
├── COMMIT_EDITMSG&lt;br&gt;
├── FETCH_HEAD&lt;br&gt;
├── ORIG_HEAD&lt;br&gt;
└── packed-refs&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Why version control system exists in the first place</title>
      <dc:creator>Purna Pattela</dc:creator>
      <pubDate>Tue, 30 Dec 2025 07:53:41 +0000</pubDate>
      <link>https://forem.com/ppc/why-version-control-system-exists-in-the-first-place-4kg9</link>
      <guid>https://forem.com/ppc/why-version-control-system-exists-in-the-first-place-4kg9</guid>
      <description>&lt;p&gt;Before version control systems (VCS) existed, developers shared code using pen drives, email, or file-sharing platforms. While this worked for very small projects, collaborating on larger codebases quickly became slow and error-prone.&lt;/p&gt;

&lt;h2&gt;
  
  
  📌 Table of Contents
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Before Version Control Systems&lt;/li&gt;
&lt;li&gt;Problems with Email and Pendrives&lt;/li&gt;
&lt;li&gt;What Is a Version Control System?&lt;/li&gt;
&lt;li&gt;How Git Solves These Problems&lt;/li&gt;
&lt;li&gt;A Real-Life Example&lt;/li&gt;
&lt;li&gt;Conclusion&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Before Version Control Systems
&lt;/h2&gt;

&lt;p&gt;Before version control systems existed, developers working on larger codebases had to collaborate by manually sharing code. Some used &lt;strong&gt;pendrives&lt;/strong&gt; to transfer files, while others relied on &lt;strong&gt;email&lt;/strong&gt; or &lt;strong&gt;file-sharing platforms&lt;/strong&gt; to send code between devices. This approach was slow, error-prone, and difficult to scale as teams grew.&lt;/p&gt;

&lt;h2&gt;
  
  
  Problems with Email and Pendrives
&lt;/h2&gt;

&lt;p&gt;When multiple developers work on the same codebase, using email or pen drives to share code becomes inefficient. Developers spend a lot of time manually updating their code and sending changes to others. This process is slow, error-prone, and difficult to manage, especially as the team grows. Keeping everyone’s code synchronized becomes a major challenge.&lt;/p&gt;

&lt;p&gt;Another major issue is the lack of a central place to track code changes—such as who made a change, which part of the code was modified, and when the change was made.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Is a Version Control System?
&lt;/h2&gt;

&lt;p&gt;A Version Control System (VCS) is software that helps developers track changes made to files over time. It works like a time machine, allowing you to go back to previous versions of the code if something goes wrong. It also keeps a clear record of who made each change, what was changed, and when it was changed, making teamwork easier and more organized.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Git Solves These Problems
&lt;/h2&gt;

&lt;p&gt;Git solves these problems by providing the features such as below :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Tracks every change&lt;/strong&gt; : git records who made a change, what is changed and when it is changed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No need for Email or Pen drives&lt;/strong&gt; : Platforms like GitHub, GitLab, and Bitbucket enable easy collaboration. Teams can also self-host a Git service using tools like Gitea.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Version history (Time Machine)&lt;/strong&gt; : you can go any previous version of the code at any point of time.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Branching &amp;amp; Merging&lt;/strong&gt; : Git allows developers to create independent branches to work on features, bug fixes, or experiments in isolation. These branches can later be merged into the main codebase, enabling multiple developers to work in parallel without interfering with each other’s changes.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  A Real-Life Example
&lt;/h2&gt;

&lt;p&gt;Imagine a team of developers working on a web application. Without Git, each developer would need to manually share their updated files through email or pen drives, risking overwritten code and lost changes. If a bug appears, it becomes difficult to identify who introduced it or when it was added.&lt;/p&gt;

&lt;p&gt;With Git, each developer works on their own branch and commits changes regularly. These changes are pushed to a shared remote repository, where they can be reviewed and merged safely. If a bug is found, the team can quickly trace the exact commit that caused it or revert to a stable version of the code. This makes collaboration faster, safer, and far more reliable.&lt;/p&gt;

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

&lt;p&gt;Version control systems have become essential in modern software development. Traditional methods like email and pen drives are slow, unreliable, and do not scale for team-based projects. Git solves these challenges by providing a structured way to track changes, collaborate efficiently, and maintain a complete history of the codebase. By using Git, development teams can work confidently, reduce errors, and focus more on building features rather than managing files.&lt;/p&gt;

&lt;p&gt;However, Git is not the only version control solution available. Other systems such as Subversion (SVN), Mercurial, and Perforce also provide version control features and may be suitable for specific use cases. Even so, Git remains the most widely adopted choice due to its speed, flexibility, and strong community support.&lt;/p&gt;

</description>
      <category>git</category>
      <category>programming</category>
      <category>learning</category>
    </item>
    <item>
      <title>Test post for my blog journey</title>
      <dc:creator>Purna Pattela</dc:creator>
      <pubDate>Sat, 27 Dec 2025 17:04:08 +0000</pubDate>
      <link>https://forem.com/ppc/test-post-for-my-blog-journey-2o79</link>
      <guid>https://forem.com/ppc/test-post-for-my-blog-journey-2o79</guid>
      <description>&lt;p&gt;Learning markdown from below repository&lt;br&gt;
&lt;a href="https://github.com/adam-p/markdown-here/wiki/Markdown-Here-Cheatsheet" rel="noopener noreferrer"&gt;git cheat sheet&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Nothing here to learn. its just for my test.&lt;br&gt;
But i make it public.&amp;gt;&lt;/p&gt;

</description>
      <category>git</category>
      <category>github</category>
      <category>vcs</category>
    </item>
  </channel>
</rss>
