<?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>DEV Community: Pp</title>
    <description>The latest articles on DEV Community by Pp (@parthi_rp).</description>
    <link>https://dev.to/parthi_rp</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%2F564971%2F9f07c34c-7046-4756-b0b5-7cc60f0cbf13.jpg</url>
      <title>DEV Community: Pp</title>
      <link>https://dev.to/parthi_rp</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/parthi_rp"/>
    <language>en</language>
    <item>
      <title>Why if Is Not Enough: Understanding try/except in Python</title>
      <dc:creator>Pp</dc:creator>
      <pubDate>Sat, 20 Dec 2025 11:29:31 +0000</pubDate>
      <link>https://dev.to/parthi_rp/why-if-is-not-enough-understanding-tryexcept-in-python-212d</link>
      <guid>https://dev.to/parthi_rp/why-if-is-not-enough-understanding-tryexcept-in-python-212d</guid>
      <description>&lt;p&gt;While I was writing a tip calculator in Python, you can check my GitHub for the full code, I realized that even though I used an &lt;code&gt;if&lt;/code&gt; condition, errors were still happening. &lt;/p&gt;

&lt;p&gt;The reason is that the &lt;code&gt;if&lt;/code&gt; condition runs &lt;strong&gt;after&lt;/strong&gt; the type conversion, but the error happens &lt;strong&gt;during&lt;/strong&gt; the conversion itself.&lt;/p&gt;






&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;def get_bill_amount(prompt: str) -&amp;gt; float:
    while True:
    value = input(prompt).strip()
    try:
        amount = float(value)
        if amount &amp;gt; 0:
            return amount
        print("Amount must be greater than 0.")
    except ValueError:
        print("Please enter a valid number.")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Expected user input:&lt;/strong&gt; a number greater than &lt;code&gt;0&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Type mismatch:&lt;/strong&gt; when the user enters a string like &lt;code&gt;abc&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Error:&lt;/strong&gt; the program crashes with &lt;code&gt;ValueError: could not convert string to float&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;The key point is that &lt;code&gt;float(value)&lt;/code&gt; is a risky operation. If the conversion fails, Python throws an error before the &lt;code&gt;if&lt;/code&gt; condition is even checked.&lt;/p&gt;

&lt;p&gt;Using &lt;code&gt;value.isdigit()&lt;/code&gt; may look safe, but it fails for valid inputs like &lt;code&gt;12.5&lt;/code&gt;, &lt;code&gt;-3&lt;/code&gt;, or even &lt;code&gt;10&lt;/code&gt; with spaces. This is why &lt;code&gt;try/except&lt;/code&gt; exists. &lt;/p&gt;




&lt;h2&gt;
  
  
  Rule of thumb:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;if&lt;/code&gt; → checks logic (rules, range, conditions) &lt;/li&gt;
&lt;li&gt;
&lt;code&gt;try/except&lt;/code&gt; → catches crashes (invalid operations like type conversion) &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Always use &lt;code&gt;if&lt;/code&gt; to validate rules, and &lt;code&gt;try/except&lt;/code&gt; to protect your program from crashing. &lt;/p&gt;

</description>
      <category>backend</category>
      <category>python</category>
      <category>programming</category>
      <category>100daysofcode</category>
    </item>
    <item>
      <title>How I Bought a Domain Name and Launched My Website on AWS</title>
      <dc:creator>Pp</dc:creator>
      <pubDate>Sun, 14 Dec 2025 14:40:31 +0000</pubDate>
      <link>https://dev.to/parthi_rp/how-i-bought-a-domain-name-and-launched-my-website-on-aws-20gj</link>
      <guid>https://dev.to/parthi_rp/how-i-bought-a-domain-name-and-launched-my-website-on-aws-20gj</guid>
      <description>&lt;p&gt;This blog documents how I bought a custom domain and launched my personal website on AWS using S3, Route 53, CloudFront, and SSL. I created this website mainly to &lt;strong&gt;learn backend and AWS by doing&lt;/strong&gt;, not just for writing blogs.&lt;/p&gt;




&lt;h2&gt;
  
  
  Buying a Domain Name on Namecheap
&lt;/h2&gt;

&lt;p&gt;I went to &lt;strong&gt;Namecheap.com&lt;/strong&gt; and searched for a domain name using its built-in search bar.&lt;/p&gt;

&lt;p&gt;I searched for &lt;strong&gt;parthiban.dev&lt;/strong&gt;, and it was available, so I added it to the cart.&lt;/p&gt;

&lt;p&gt;Namecheap showed optional add-ons such as SSL, business cards, VPN, and hosting plans. I skipped all of them. AWS provides free SSL certificates, and the other options were not required for a simple website setup.&lt;/p&gt;

&lt;p&gt;I also skipped additional add-ons like business email, social media boosting, WordPress hosting, web hosting, and premium DNS.&lt;/p&gt;

&lt;h3&gt;
  
  
  Checkout
&lt;/h3&gt;

&lt;p&gt;On the checkout page, I enabled &lt;strong&gt;domain privacy&lt;/strong&gt; and disabled the &lt;strong&gt;auto-renew&lt;/strong&gt; option. If you have a promo code, you can enter it in the promo code field.&lt;/p&gt;

&lt;p&gt;Then I clicked &lt;strong&gt;Confirm Order&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Next, I created a Namecheap account and entered my credit card / UPI details to complete the payment. After the payment was successful, I received a confirmation email.&lt;/p&gt;

&lt;p&gt;Finally, I accessed the Namecheap dashboard, where I could check my domain’s expiry date and verify my contact details.&lt;/p&gt;




&lt;h2&gt;
  
  
  Creating an AWS Account
&lt;/h2&gt;

&lt;p&gt;I created an AWS account using the &lt;strong&gt;free-tier plan&lt;/strong&gt; (valid for six months).&lt;/p&gt;

&lt;p&gt;When you first sign up, AWS logs you in as the &lt;strong&gt;root user&lt;/strong&gt;, which has full control over billing and account-level settings.&lt;/p&gt;

&lt;p&gt;Since AWS recommends avoiding the root user for daily tasks, I created an &lt;strong&gt;IAM user account&lt;/strong&gt; and attached the necessary permissions.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The &lt;strong&gt;root account&lt;/strong&gt; is used only for billing and account administration.&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;IAM user&lt;/strong&gt; is used for daily operations such as uploading website files, managing services, and deployments.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After creating the IAM user, I logged in using that account to manage all website-related tasks.&lt;/p&gt;




&lt;h2&gt;
  
  
  Creating an S3 Bucket to Store Website Files
&lt;/h2&gt;

&lt;p&gt;From the AWS Management Console, I navigated to:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Console Home → All Services → S3 (under Storage)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Then I clicked &lt;strong&gt;Create bucket&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  What is a bucket?
&lt;/h3&gt;

&lt;p&gt;A bucket is a container that holds data in Amazon S3.&lt;/p&gt;

&lt;h3&gt;
  
  
  What is Amazon S3?
&lt;/h3&gt;

&lt;p&gt;Amazon S3 is a cloud storage service where you can safely store files like photos, videos, code, or website data and access them anytime over the internet.&lt;/p&gt;

&lt;h3&gt;
  
  
  Bucket configuration
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Bucket type:&lt;/strong&gt; General purpose&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bucket name:&lt;/strong&gt; A unique name (I used my domain name)&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;AWS Region:&lt;/strong&gt; The console usually defaults to &lt;code&gt;us-east-1&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;This does not lock your account to that region&lt;/li&gt;
&lt;li&gt;You can switch regions anytime from the top-right dropdown&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;strong&gt;Object ownership:&lt;/strong&gt; ACLs disabled&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;strong&gt;Block all public access:&lt;/strong&gt; Unchecked&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;strong&gt;Versioning:&lt;/strong&gt; Off (optional)&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;strong&gt;Encryption:&lt;/strong&gt; Enabled (default)&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; Optional&lt;/p&gt;&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;After reviewing the settings, the bucket was created.&lt;/p&gt;

&lt;p&gt;I clicked the bucket to view its &lt;strong&gt;Properties&lt;/strong&gt;, &lt;strong&gt;Permissions&lt;/strong&gt;, and other details.&lt;/p&gt;




&lt;h2&gt;
  
  
  Enabling Static Website Hosting
&lt;/h2&gt;

&lt;p&gt;I opened the &lt;strong&gt;Properties&lt;/strong&gt; tab of the bucket and scrolled to the bottom to find &lt;strong&gt;Static website hosting&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I edited the settings and:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Enabled static website hosting&lt;/li&gt;
&lt;li&gt;Selected &lt;strong&gt;Host a static website&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Set &lt;strong&gt;index document&lt;/strong&gt; to &lt;code&gt;index.html&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Set &lt;strong&gt;error document&lt;/strong&gt; to &lt;code&gt;error.html&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then I saved the changes.&lt;/p&gt;




&lt;h2&gt;
  
  
  Uploading Website Files
&lt;/h2&gt;

&lt;p&gt;Next, I opened the &lt;strong&gt;Objects&lt;/strong&gt; tab and clicked &lt;strong&gt;Upload&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I uploaded all the HTML, CSS, and image files of my static website that were stored on my desktop.&lt;/p&gt;




&lt;h2&gt;
  
  
  Making the Website Public Using a Bucket Policy
&lt;/h2&gt;

&lt;p&gt;After uploading the files, I created a &lt;strong&gt;bucket policy&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why is a bucket policy important?
&lt;/h3&gt;

&lt;p&gt;A bucket policy defines rules that decide who can access the files inside an S3 bucket.&lt;/p&gt;

&lt;p&gt;For public website hosting, users on the internet must be able to read the files.&lt;/p&gt;

&lt;h3&gt;
  
  
  Bucket Policy for &lt;code&gt;parthiban.dev&lt;/code&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"Version"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2012-10-17"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"Statement"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"Sid"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"PublicRead"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"Effect"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Allow"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"Principal"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"*"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"Action"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"s3:GetObject"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"Resource"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"arn:aws:s3:::parthiban.dev/*"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This policy allows anyone to read the website files, which is required for public access.&lt;/p&gt;

&lt;p&gt;I saved the changes.&lt;/p&gt;




&lt;h2&gt;
  
  
  Connecting the Domain Using Route 53
&lt;/h2&gt;

&lt;p&gt;I opened &lt;strong&gt;Services&lt;/strong&gt;, searched for &lt;strong&gt;Route 53&lt;/strong&gt;, and clicked &lt;strong&gt;Hosted zones&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Route 53 does not host the website itself — S3 does that. Route 53 manages DNS records for the domain.&lt;/p&gt;

&lt;p&gt;I created a &lt;strong&gt;public hosted zone&lt;/strong&gt; using my domain name. This automatically generated DNS details such as name servers and TTL values.&lt;/p&gt;

&lt;p&gt;Next, I went to the Namecheap dashboard, opened &lt;strong&gt;Domain List&lt;/strong&gt;, clicked &lt;strong&gt;Manage&lt;/strong&gt;, and under &lt;strong&gt;Name servers&lt;/strong&gt;, I selected &lt;strong&gt;Custom DNS&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I pasted the name servers copied from Route 53 and saved the changes.&lt;/p&gt;

&lt;p&gt;DNS propagation can take up to &lt;strong&gt;48 hours&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Creating DNS Records for the S3 Website
&lt;/h2&gt;

&lt;p&gt;In the hosted zone, I clicked &lt;strong&gt;Create record&lt;/strong&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Record type:&lt;/strong&gt; A — Routes traffic to an IPv4 address&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Alias:&lt;/strong&gt; Enabled&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Routing target:&lt;/strong&gt; Alias to S3 website endpoint&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Region:&lt;/strong&gt; Asia Pacific (Mumbai)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This displayed the S3 website endpoint, such as:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;s3-website.ap-south-1.amazonaws.com&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;I created the record and tested the domain. The website did not load immediately, so I waited for DNS propagation.&lt;/p&gt;




&lt;h2&gt;
  
  
  Getting an SSL Certificate (HTTPS)
&lt;/h2&gt;

&lt;p&gt;After waiting for two days, I realized that I had forgotten to get an SSL certificate.&lt;/p&gt;

&lt;p&gt;AWS provides free SSL certificates through &lt;strong&gt;AWS Certificate Manager (ACM)&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I switched the region from &lt;strong&gt;Mumbai&lt;/strong&gt; to &lt;strong&gt;US East (N. Virginia)&lt;/strong&gt;, which is required for CloudFront certificates.&lt;/p&gt;

&lt;p&gt;I clicked &lt;strong&gt;Request a certificate&lt;/strong&gt;, selected &lt;strong&gt;Request a public certificate&lt;/strong&gt;, and entered my domain name (&lt;code&gt;parthiban.dev&lt;/code&gt;).&lt;/p&gt;

&lt;p&gt;I chose &lt;strong&gt;DNS validation&lt;/strong&gt; and submitted the request.&lt;/p&gt;

&lt;p&gt;The certificate status showed &lt;strong&gt;Pending validation&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;In the Domain tab, I clicked &lt;strong&gt;Create records in Route 53&lt;/strong&gt;, which automatically created the required DNS records. After validation, the certificate was issued.&lt;/p&gt;




&lt;h2&gt;
  
  
  Creating a CloudFront Distribution
&lt;/h2&gt;

&lt;p&gt;Next, I created a &lt;strong&gt;CloudFront distribution&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I selected:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Origin type:&lt;/strong&gt; Amazon S3&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Origin:&lt;/strong&gt; My S3 bucket&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Endpoint:&lt;/strong&gt; S3 website endpoint (not the REST endpoint)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I kept the cache and origin settings as default.&lt;/p&gt;

&lt;p&gt;I did not enable &lt;strong&gt;Web Application Firewall (WAF)&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;On the TLS certificate page, I selected the SSL certificate associated with my domain.&lt;/p&gt;

&lt;p&gt;In the &lt;strong&gt;General settings&lt;/strong&gt;, I set the &lt;strong&gt;default root object&lt;/strong&gt; to &lt;code&gt;index.html&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;After reviewing the configuration, I created the distribution and waited for it to deploy.&lt;/p&gt;




&lt;h2&gt;
  
  
  Pointing the Domain to CloudFront
&lt;/h2&gt;

&lt;p&gt;Finally, I went back to the Route 53 hosted zone and edited the &lt;strong&gt;A record&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I changed the routing target to &lt;strong&gt;Alias to CloudFront distribution&lt;/strong&gt; and selected my distribution.&lt;/p&gt;

&lt;p&gt;After saving the changes and waiting for propagation:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;My website was live.&lt;/strong&gt; 🎉&lt;/p&gt;




&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;This setup helped me understand how AWS services work together in a real-world scenario. I made mistakes, fixed them, and learned a lot in the process. This website will now serve as both my learning platform and my personal space on the internet.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Originally published on parthiban.dev&lt;/em&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>cloud</category>
      <category>beginners</category>
      <category>webdev</category>
    </item>
    <item>
      <title>HTTP Made Simple: How Your Browser Talks to Servers</title>
      <dc:creator>Pp</dc:creator>
      <pubDate>Sun, 05 Oct 2025 19:02:59 +0000</pubDate>
      <link>https://dev.to/parthi_rp/http-made-simple-how-your-browser-talks-to-servers-2f60</link>
      <guid>https://dev.to/parthi_rp/http-made-simple-how-your-browser-talks-to-servers-2f60</guid>
      <description>&lt;p&gt;When you browse the web, your computer is constantly talking to other computers. The language they use is called &lt;strong&gt;HTTP&lt;/strong&gt; — Hypertext Transfer Protocol.&lt;/p&gt;

&lt;p&gt;HTTP is how your browser and a server exchange information. The “verbs” of this language are called &lt;strong&gt;HTTP&lt;/strong&gt; methods. They tell the server what you want to do: read data, send data, delete something, or update it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1lzhhe2b6dj8ojf05n5v.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1lzhhe2b6dj8ojf05n5v.PNG" alt="http methods" width="559" height="182"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  GET
&lt;/h2&gt;

&lt;p&gt;Used to request information from the server.&lt;br&gt;
Example: Loading your profile page.&lt;br&gt;
You type a web address:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://api.example.com/users
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Your browser sends a &lt;strong&gt;GET&lt;/strong&gt; request to the server. The server responds with data, a webpage, or an error.&lt;/p&gt;

&lt;h2&gt;
  
  
  POST
&lt;/h2&gt;

&lt;p&gt;Used to send data to the server, usually to create something new.&lt;br&gt;
Example: Signing up on a website.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How it works:&lt;/strong&gt;&lt;br&gt;
You see a form like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;form action="/signup" method="POST"&amp;gt;
  &amp;lt;input name="name" placeholder="Your name" /&amp;gt;
  &amp;lt;input name="email" placeholder="Your email" /&amp;gt;
  &amp;lt;input name="password" type="password" placeholder="Your password" /&amp;gt;
  &amp;lt;button type="submit"&amp;gt;Sign Up&amp;lt;/button&amp;gt;
&amp;lt;/form&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8riq1jdtwkcj7o6clusr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8riq1jdtwkcj7o6clusr.png" alt="html form" width="800" height="710"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When you fill it and click &lt;strong&gt;sign up&lt;/strong&gt;, your browser sends:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;POST /signup HTTP/1.1
Host: example.com
Content-Type: application/x-www-form-urlencoded

name=Parthiban&amp;amp;email=parthi@example.com&amp;amp;password=123456
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Flask&lt;/strong&gt; receives the request and extracts data. &lt;strong&gt;Flask&lt;/strong&gt; connects to &lt;strong&gt;PostgreSQL&lt;/strong&gt; and runs:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;INSERT users...&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PostgreSQL&lt;/strong&gt; Insert the record and confirms.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fewu55xffsw9gah4tpbo1.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fewu55xffsw9gah4tpbo1.jpg" alt="POST mthod" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Server Response:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;HTTP/1.1 201 Created
{
  "message": "User created successfully!"
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Your browser shows: &lt;em&gt;“Welcome, Parthiban!”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PUT&lt;/strong&gt;&lt;br&gt;
Used to update or replace data entirely.&lt;br&gt;
It’s idempotent. Doing it multiple times doesn’t change the result beyond the first time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;DELETE&lt;/strong&gt;&lt;br&gt;
Used to remove data.&lt;br&gt;
Example: Clicking “Delete my account”:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PATCH&lt;/strong&gt;&lt;br&gt;
Used to make small changes to data without replacing it entirely.&lt;br&gt;
Partially idempotent.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why Not Access the Database Directly?&lt;/strong&gt;&lt;br&gt;
Direct access to the database is dangerous, it opens huge security risks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Anyone could delete all data&lt;/li&gt;
&lt;li&gt;View private information&lt;/li&gt;
&lt;li&gt;Modify things they shouldn’t&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That’s why we use servers as &lt;strong&gt;gatekeepers&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Servers as Gatekeepers&lt;/strong&gt;&lt;br&gt;
Think of the &lt;strong&gt;server (API)&lt;/strong&gt; as a security guard. It checks every request:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Are you logged in?&lt;/li&gt;
&lt;li&gt;Do you own this data?&lt;/li&gt;
&lt;li&gt;Is it allowed?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If yes → server updates database.&lt;br&gt;
If no → server sends “Unauthorized”.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Finally...&lt;/strong&gt;&lt;br&gt;
Frontend — What you see (HTML, CSS, JS in browser)&lt;br&gt;
Backend — The brain (Node.js, Python, Java…)&lt;br&gt;
Database — Memory storage (MySQL, MongoDB, PostgreSQL…)&lt;/p&gt;

</description>
      <category>programming</category>
      <category>backend</category>
      <category>beginners</category>
      <category>html</category>
    </item>
    <item>
      <title>Understanding SSL/TLS</title>
      <dc:creator>Pp</dc:creator>
      <pubDate>Sun, 05 Oct 2025 05:49:50 +0000</pubDate>
      <link>https://dev.to/parthi_rp/understanding-ssltls-3obh</link>
      <guid>https://dev.to/parthi_rp/understanding-ssltls-3obh</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;SSL – Secure Sockets Layer&lt;br&gt;
TLS – Transport Layer Security&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  What is SSL/TLS?
&lt;/h2&gt;

&lt;p&gt;SSL is a protocol that encrypts data transmitted between computers.&lt;br&gt;
TLS is the newer and more secure version of SSL.&lt;/p&gt;

&lt;p&gt;SSL provides multiple layers of protection by encrypting data sent between the server and the end user.&lt;/p&gt;

&lt;p&gt;When you see HTTPS in a website address, it means that some form of SSL/TLS encryption is being used.&lt;/p&gt;

&lt;h2&gt;
  
  
  The SSL Handshake
&lt;/h2&gt;

&lt;p&gt;When you visit a secure website, your browser and the website’s server perform a handshake to establish a secure connection.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuj7ot34ir2d8sb5ewpgt.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuj7ot34ir2d8sb5ewpgt.jpg" alt="Client Hello" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The browser sends a &lt;code&gt;Client Hello!&lt;/code&gt; message to the server.&lt;/p&gt;

&lt;p&gt;This includes details such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Browser information&lt;/li&gt;
&lt;li&gt;Cipher settings&lt;/li&gt;
&lt;li&gt;Operating system&lt;/li&gt;
&lt;li&gt;Supported encryption algorithms&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjtvsgj4zu8skvudzoboj.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjtvsgj4zu8skvudzoboj.jpg" alt="Server Hello" width="800" height="533"&gt;&lt;/a&gt;&lt;br&gt;
The server responds with a &lt;code&gt;Server Hello!&lt;/code&gt; message.&lt;br&gt;
It includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Server details&lt;/li&gt;
&lt;li&gt;Selected encryption algorithm&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Digital SSL certificate&lt;/strong&gt; containing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Domain name&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Certificate Authority (CA)&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Public key (used for encryption)&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq0ylq791jpmll7al2tba.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq0ylq791jpmll7al2tba.jpg" alt="SSL check" width="800" height="533"&gt;&lt;/a&gt;&lt;br&gt;
The browser checks if the server’s SSL certificate is valid and issued by a trusted &lt;strong&gt;Certificate Authority (CA)&lt;/strong&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Certificate Authority (CA) — The organization that signs or vouches for an SSL certificate’s authenticity.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhleo344uch7mok5e11x9.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhleo344uch7mok5e11x9.jpg" alt="Session Key" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Session Key Exchange
&lt;/h2&gt;

&lt;p&gt;If the certificate is valid:&lt;br&gt;
The browser generates a random session key.&lt;br&gt;
It encrypts this session key using the &lt;strong&gt;server’s public key&lt;/strong&gt; (from the SSL certificate).&lt;br&gt;
The encrypted session key is sent to the server.&lt;br&gt;
The server decrypts it using its &lt;strong&gt;private key&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fibty1upfosbvy0aj9lfq.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fibty1upfosbvy0aj9lfq.jpg" alt="Finished message" width="800" height="533"&gt;&lt;/a&gt;&lt;br&gt;
Then:&lt;br&gt;
The server sends a “Finished” message to the browser.&lt;br&gt;
The browser replies with its own “Finished” message — confirming the handshake.&lt;/p&gt;

&lt;h2&gt;
  
  
  Secure Connection Established
&lt;/h2&gt;

&lt;p&gt;If both sides verify the messages successfully, a secure connection is established.&lt;br&gt;
From this point on, all communication between your browser and the server is encrypted using the shared session key.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;SSL/TLS protects your personal data, passwords, and payments from being intercepted.&lt;br&gt;
It’s the reason why you can safely browse, shop, and communicate online every day.&lt;/p&gt;

&lt;p&gt;Whenever you see the 🔒 lock icon next to a website, that’s SSL/TLS at work!&lt;/p&gt;

</description>
      <category>programming</category>
      <category>backend</category>
      <category>codenewbie</category>
      <category>networking</category>
    </item>
    <item>
      <title>Symmetric/Asymmetric Encryption</title>
      <dc:creator>Pp</dc:creator>
      <pubDate>Fri, 03 Oct 2025 07:03:48 +0000</pubDate>
      <link>https://dev.to/parthi_rp/symmetricasymmetric-encryption-43m5</link>
      <guid>https://dev.to/parthi_rp/symmetricasymmetric-encryption-43m5</guid>
      <description>&lt;h2&gt;
  
  
  Symmetric Encryption
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5kagyy5oa095eqdhturl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5kagyy5oa095eqdhturl.png" alt="Symmetric encryption" width="800" height="551"&gt;&lt;/a&gt;&lt;br&gt;
One key is used for both encryption and decryption.&lt;/p&gt;

&lt;p&gt;Example: Person A encrypts a document with a shared secret key/passphrase. Person B needs the same key to decrypt it.&lt;/p&gt;

&lt;p&gt;Problem: The challenge is how to share the secret key securely.&lt;/p&gt;

&lt;p&gt;If A emails the passphrase to B, anyone intercepting that email can also decrypt the document.&lt;/p&gt;

&lt;p&gt;This is called the &lt;strong&gt;key distribution problem&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Secure key sharing methods:&lt;br&gt;
Use a secure channel (e.g., face-to-face, phone call, or secure messenger like Signal).&lt;/p&gt;

&lt;p&gt;Or, better: use &lt;strong&gt;asymmetric encryption&lt;/strong&gt; to send the key securely.&lt;/p&gt;

&lt;h2&gt;
  
  
  Asymmetric Encryption
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjpv95iw5k1ee4cter17w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjpv95iw5k1ee4cter17w.png" alt="Asymmetric Encryption" width="800" height="438"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Two keys are used: a public key and a private key.&lt;/p&gt;

&lt;p&gt;Keys come in pairs and are mathematically linked:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Public key: shared openly, used for encryption.&lt;/li&gt;
&lt;li&gt;Private key: kept secret, used for decryption.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Person B shares their public key with Person A.&lt;br&gt;
Person A encrypts the document with B’s public key.&lt;br&gt;
Only B’s private key can decrypt it.&lt;/p&gt;

&lt;p&gt;Advantage: No need to send secret keys via insecure channels. Even if someone intercepts the public key, they cannot figure out the private key.&lt;/p&gt;

&lt;h2&gt;
  
  
  How They Work Together
&lt;/h2&gt;

&lt;p&gt;In practice:&lt;br&gt;
Asymmetric encryption is often used to securely share a symmetric key.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foom2qxndfex4a0gnczke.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foom2qxndfex4a0gnczke.png" alt="Symmetric Key" width="800" height="551"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then, symmetric encryption (which is faster) is used to encrypt the actual large file or communication.&lt;/p&gt;

&lt;p&gt;This is exactly how TLS/SSL (HTTPS) works:&lt;br&gt;
Your browser and the server exchange public keys.&lt;br&gt;
They use asymmetric encryption to safely share a symmetric session key.&lt;br&gt;
That symmetric key is then used for fast, secure communication.&lt;/p&gt;

</description>
      <category>programming</category>
      <category>beginners</category>
      <category>backend</category>
      <category>productivity</category>
    </item>
    <item>
      <title>How Does a Website Actually Load in Your Browser?</title>
      <dc:creator>Pp</dc:creator>
      <pubDate>Thu, 02 Oct 2025 18:49:05 +0000</pubDate>
      <link>https://dev.to/parthi_rp/how-does-a-website-actually-load-in-your-browser-2483</link>
      <guid>https://dev.to/parthi_rp/how-does-a-website-actually-load-in-your-browser-2483</guid>
      <description>&lt;p&gt;Ever wondered what happens behind the scenes when you type a web address and hit enter? At first glance, it feels instant, but a lot of steps happen in just a few milliseconds. &lt;/p&gt;

&lt;h2&gt;
  
  
  Websites and Servers
&lt;/h2&gt;

&lt;p&gt;A website is nothing but a collection of files. HTML, CSS, JavaScript, and media, that instruct your browser on how to display the site.&lt;/p&gt;

&lt;p&gt;These files live on a server. A server is a powerful computer connected to the internet 24/7. Hosting simply means storing these files on the server so anyone around the world can access them.&lt;/p&gt;

&lt;h2&gt;
  
  
  URLs and Protocols
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;https://abc.com&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;HTTPS&lt;/code&gt; → This is the protocol, the set of rules your browser and server use to communicate. Think of it as the language they speak. HTTPS is just a secure (encrypted) version of HTTP.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;abc.com&lt;/code&gt; → This is the domain name.&lt;/p&gt;

&lt;h2&gt;
  
  
  Domains and IP Addresses
&lt;/h2&gt;

&lt;p&gt;A domain name like &lt;code&gt;abc.com&lt;/code&gt; is actually a human-friendly way to point to an IP address.&lt;/p&gt;

&lt;p&gt;An IP address is a unique identifier that tells the browser exactly which server to connect to.&lt;/p&gt;

&lt;p&gt;Every device on the internet (including your phone and laptop) has its own IP address.&lt;/p&gt;

&lt;p&gt;Since humans find names easier to remember than numbers, we use domains instead of typing IPs directly.&lt;/p&gt;

&lt;h2&gt;
  
  
  DNS – The Internet’s Phonebook
&lt;/h2&gt;

&lt;p&gt;This is where DNS (Domain Name System) comes in. DNS is like a phonebook that stores domain names and their corresponding IP addresses.&lt;/p&gt;

&lt;p&gt;Here’s how your browser finds the IP for a domain:&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgaiert696q70fxcbriqt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgaiert696q70fxcbriqt.png" alt="How browser finds the IP" width="800" height="475"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Browser cache → First, it checks if it has the domain saved locally.&lt;/p&gt;

&lt;p&gt;OS cache → If not found, it asks the operating system (Windows, Android, etc.).&lt;/p&gt;

&lt;p&gt;DNS resolver (usually your ISP) → Still not found? The OS forwards the query to the DNS resolver.&lt;/p&gt;

&lt;p&gt;Recursive lookup → If the resolver doesn’t have the answer cached, it starts asking other DNS servers until it finds the correct IP.&lt;/p&gt;

&lt;h2&gt;
  
  
  Establishing the Connection
&lt;/h2&gt;

&lt;p&gt;Once the IP is found, your browser connects to the server. But before sending data, both sides need to “shake hands”.&lt;/p&gt;

&lt;p&gt;This is called the TCP 3-way handshake, which ensures both devices are ready to talk to each other.&lt;/p&gt;

&lt;h2&gt;
  
  
  Requesting and Rendering the Page
&lt;/h2&gt;

&lt;p&gt;After the handshake, the browser sends an &lt;code&gt;HTTP GET&lt;/code&gt; request to ask the server for the webpage.&lt;/p&gt;

&lt;p&gt;The server responds with the files.&lt;/p&gt;

&lt;p&gt;The browser’s rendering engine interprets the code and displays the page on your screen.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;The next time you click on a link, remember: behind that instant load is a fascinating chain of steps, from DNS lookups to handshakes, all working together to bring the internet to life.&lt;/p&gt;

</description>
      <category>programming</category>
      <category>beginners</category>
      <category>productivity</category>
      <category>backend</category>
    </item>
    <item>
      <title>Ordered vs Unordered Types in Python</title>
      <dc:creator>Pp</dc:creator>
      <pubDate>Mon, 15 Sep 2025 06:55:18 +0000</pubDate>
      <link>https://dev.to/parthi_rp/ordered-vs-unordered-types-in-python-41dn</link>
      <guid>https://dev.to/parthi_rp/ordered-vs-unordered-types-in-python-41dn</guid>
      <description>&lt;h2&gt;
  
  
  Ordered types
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;list&lt;/code&gt;: keeps elements in the order you insert them. so index positions = order.&lt;br&gt;
&lt;code&gt;tuple&lt;/code&gt;: same as list but immutable. It preserves the order of elements because positions are fixed once created.&lt;br&gt;
&lt;code&gt;dict&lt;/code&gt;: since Python 3.7, dictionaries preserve insertion order. Internally it’s still a hash table, but it keeps a linked index array that remembers the order keys.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[ 10 ] → [ 20 ] → [ 30 ]
  0        1        2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Unordered types
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;set&lt;/code&gt;: implemented as a hash table with no extra mechanism to track insertion order. Elements go into “buckets” based on their hash&lt;br&gt;
&lt;code&gt;frozenset&lt;/code&gt;: same as set but immutable. Still based on hash table, so no order guarantee.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Bucket 0: 30
Bucket 1: 10
Bucket 2: 20
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Add another element? Python might reorganize all buckets:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Bucket 0: 20
Bucket 1: 30
Bucket 2: 10
Bucket 3: 40
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Run this multiple times:&lt;br&gt;
&lt;code&gt;list&lt;/code&gt;, &lt;code&gt;tuple&lt;/code&gt;, &lt;code&gt;dict&lt;/code&gt; → always in the same order.&lt;br&gt;
&lt;code&gt;set&lt;/code&gt;, &lt;code&gt;frozenset&lt;/code&gt; → order may appear stable for small runs, but not guaranteed.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffpvne8sajvja0t1u6dsp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffpvne8sajvja0t1u6dsp.png" alt="ordered_unordered_types_examples" width="800" height="688"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Keeping things ordered always requires extra mechanism on top of the raw storage.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Unordered (&lt;code&gt;set&lt;/code&gt;) = just buckets (fast + light).&lt;br&gt;
Ordered (&lt;code&gt;dict&lt;/code&gt;/&lt;code&gt;list&lt;/code&gt;/&lt;code&gt;tuple&lt;/code&gt;) = buckets + extra tracking of positions (more memory, but predictable).&lt;/p&gt;

</description>
      <category>programming</category>
      <category>beginners</category>
      <category>python</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Python Basics: Mutable vs Immutable Explained (with Local Analogies)</title>
      <dc:creator>Pp</dc:creator>
      <pubDate>Fri, 12 Sep 2025 14:21:07 +0000</pubDate>
      <link>https://dev.to/parthi_rp/python-basics-mutable-vs-immutable-explained-with-local-analogies-1lkj</link>
      <guid>https://dev.to/parthi_rp/python-basics-mutable-vs-immutable-explained-with-local-analogies-1lkj</guid>
      <description>&lt;p&gt;When learning Python, I find some difficulty in understanding about mutable and immutable objects.&lt;br&gt;
Let’s me break it down in ELI5 style.&lt;/p&gt;

&lt;h2&gt;
  
  
  Mutable Objects
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;What is mutable objects:&lt;/strong&gt; Can be changed after creation. Updates happen in place, same memory reference.&lt;/p&gt;

&lt;p&gt;Examples: &lt;code&gt;list&lt;/code&gt;, &lt;code&gt;dict&lt;/code&gt;, &lt;code&gt;set&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Analogy 1 – Blackboard&lt;br&gt;
Like a blackboard in a our classroom: you can erase, rewrite, and modify the content. The board itself doesn’t change, only what’s written on it. &lt;/p&gt;

&lt;p&gt;Board == List&lt;br&gt;
Content in board == List items&lt;/p&gt;

&lt;p&gt;Analogy 2 – Chicken gravy in a pot&lt;br&gt;
In the pot, you can add water, salt, or more chicken (if you're hungry). It’s still more or less the same gravy, just modified.&lt;/p&gt;

&lt;p&gt;Pot == Set&lt;br&gt;
Chicken gravy == Set items&lt;/p&gt;

&lt;h2&gt;
  
  
  Immutable Objects
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;What is immutable objects:&lt;/strong&gt; Cannot be changed once created. Any modification creates a new object in memory.&lt;/p&gt;

&lt;p&gt;Examples: &lt;code&gt;int&lt;/code&gt;, &lt;code&gt;float&lt;/code&gt;, &lt;code&gt;str&lt;/code&gt;, &lt;code&gt;tuple&lt;/code&gt;, &lt;code&gt;frozenset&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Analogy 1 – Exam Question Paper&lt;br&gt;
Once the exam question paper is printed, you can’t change it. If there’s a mistake, you need to print a new one (or provide grace marks).&lt;/p&gt;

&lt;p&gt;Analogy 2 – Idli&lt;br&gt;
Once steamed, an idli can’t be reshaped or unsalted. If you want a idli with less salt, you must make a new batch.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;only immutable objects are hashable&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Final takeaways
&lt;/h2&gt;

&lt;p&gt;Understanding this helps you avoid bugs (like using mutable default arguments in functions).&lt;br&gt;
Analogies are for fun. Peace.&lt;/p&gt;

</description>
      <category>python</category>
      <category>programming</category>
      <category>beginners</category>
      <category>productivity</category>
    </item>
    <item>
      <title>python: printing, variables and data types</title>
      <dc:creator>Pp</dc:creator>
      <pubDate>Wed, 10 Sep 2025 19:29:38 +0000</pubDate>
      <link>https://dev.to/parthi_rp/python-printing-variables-and-data-types-4deg</link>
      <guid>https://dev.to/parthi_rp/python-printing-variables-and-data-types-4deg</guid>
      <description>&lt;p&gt;Today I learned some Python basics on how printing works, how variables works, and the different data types in python. &lt;/p&gt;

&lt;h2&gt;
  
  
  print()
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;printing strings and variables that stored strings&lt;/li&gt;
&lt;li&gt;concatenating strings&lt;/li&gt;
&lt;li&gt;formatted strings&lt;/li&gt;
&lt;li&gt;escape sequence like &lt;code&gt;\n&lt;/code&gt;, &lt;code&gt;\t&lt;/code&gt; and raw strings to skip escape&lt;/li&gt;
&lt;li&gt;print numbers and result of expressions like add, sub, multiply, divide, power, etc&lt;/li&gt;
&lt;li&gt;printing lists and dicts&lt;/li&gt;
&lt;li&gt;separator and end arguments&lt;/li&gt;
&lt;li&gt;printing loops and range function&lt;/li&gt;
&lt;li&gt;string multiplication&lt;/li&gt;
&lt;li&gt;casting when combining strings and numbers&lt;/li&gt;
&lt;li&gt;use case of &lt;code&gt;print()&lt;/code&gt; in debugging&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;.format()&lt;/code&gt; method&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  variables
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;naming rules: letters or underscore, case-sensitive, no reserved keywords&lt;/li&gt;
&lt;li&gt;assigning values, multiple assignments&lt;/li&gt;
&lt;li&gt;unpacking sequence&lt;/li&gt;
&lt;li&gt;dynamically assigning values&lt;/li&gt;
&lt;li&gt;constant variables: uppercase, not truly immutable&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Data types
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;numbers&lt;/li&gt;
&lt;li&gt;string&lt;/li&gt;
&lt;li&gt;boolean&lt;/li&gt;
&lt;li&gt;none&lt;/li&gt;
&lt;li&gt;List (mutable, ordered)&lt;/li&gt;
&lt;li&gt;Tuple (immutable, ordered)&lt;/li&gt;
&lt;li&gt;Dictionary (key-value pairs)&lt;/li&gt;
&lt;li&gt;Set (unordered, unique)&lt;/li&gt;
&lt;li&gt;Frozenset (immutable set)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;print()&lt;/code&gt; has a lot more to it than just basic output (formatting, sep/end, debugging) &lt;/p&gt;

</description>
      <category>python</category>
      <category>programming</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
