<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet href="/rss.xsl" type="text/xsl"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Nnisarg&apos;s Blog</title><description>Explore Nnisarg&apos;s insights on open-source software, minimalist coding, and tech-life intersections, blending practical projects with existential musings for a smarter, freer digital journey</description><link>https://nnisarg.in/</link><item><title>How to Improve Your Programming Skills (By Building Everything Yourself)</title><link>https://nnisarg.in/blog/improve-your-programming-skills/</link><guid isPermaLink="true">https://nnisarg.in/blog/improve-your-programming-skills/</guid><description>The fastest way to level up as a programmer isn&apos;t following more tutorials - it&apos;s building your own tools, servers, and systems from scratch so you truly understand how software works.</description><pubDate>Mon, 06 Oct 2025 17:30:00 GMT</pubDate><content:encoded>&lt;p&gt;Most advice for developers focuses on speed - use this framework, that library, this new tool.
But if your goal is to actually &lt;strong&gt;get better at programming&lt;/strong&gt;, there&apos;s a simpler (and harder) rule to follow: &lt;strong&gt;build everything yourself.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Not because your version will be better - but because writing it forces you to understand what others skip. That&apos;s how you move from &lt;em&gt;using&lt;/em&gt; tools to &lt;em&gt;knowing&lt;/em&gt; them.&lt;/p&gt;
&lt;h2&gt;Why Building from Scratch Works&lt;/h2&gt;
&lt;p&gt;Libraries and frameworks hide complexity by design. They free you from decisions: routing, parsing, error handling, concurrency. That&apos;s powerful - but only when you already understand what&apos;s underneath.&lt;/p&gt;
&lt;p&gt;When you re-create something yourself, you expose every assumption. You learn edge cases. You internalize design decisions. You build technical intuition.&lt;/p&gt;
&lt;p&gt;As &lt;a href=&quot;https://www.freecodecamp.org/news/how-to-learn-programming/&quot;&gt;freeCodeCamp&lt;/a&gt; points out, abstraction is necessary - but too much abstraction, too early, can stunt your growth.&lt;/p&gt;
&lt;h2&gt;1. Build a Minimal HTTP Server&lt;/h2&gt;
&lt;p&gt;Skip frameworks. Open a TCP socket, read HTTP request bytes, parse headers, and respond.&lt;/p&gt;
&lt;p&gt;What you learn:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;How browsers and servers actually talk&lt;/li&gt;
&lt;li&gt;Why status codes, headers, and content-length matter&lt;/li&gt;
&lt;li&gt;How routing, sessions, and middleware evolved&lt;/li&gt;
&lt;li&gt;What problems frameworks are solving for you&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you want inspiration, check out this short guide on &lt;a href=&quot;https://bhch.github.io/posts/2017/11/writing-an-http-server-from-scratch/&quot;&gt;writing an HTTP server from scratch in Python&lt;/a&gt; or this walk-through on &lt;a href=&quot;https://dev.to/jeffreythecoder/how-i-built-a-simple-http-server-from-scratch-using-c-739&quot;&gt;building one in C&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Once you&apos;ve built it - even imperfectly - frameworks like Flask, Express, or FastAPI stop feeling magical.&lt;/p&gt;
&lt;h2&gt;2. Write a Simple CLI Tool&lt;/h2&gt;
&lt;p&gt;Rebuild tools you use daily - &lt;code&gt;grep&lt;/code&gt;, &lt;code&gt;curl&lt;/code&gt;, &lt;code&gt;ls&lt;/code&gt;, or &lt;code&gt;wc&lt;/code&gt;. Don&apos;t use any libraries beyond the bare minimum.&lt;/p&gt;
&lt;p&gt;You&apos;ll gain:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Argument parsing and flag handling&lt;/li&gt;
&lt;li&gt;Input/output streams and file buffers&lt;/li&gt;
&lt;li&gt;Error handling and exit codes&lt;/li&gt;
&lt;li&gt;Modular code design and composability&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These small utilities teach you to write clean, maintainable code. The &lt;a href=&quot;https://en.wikipedia.org/wiki/Unix_philosophy&quot;&gt;Unix philosophy&lt;/a&gt; is all about simple, composable tools - rebuilding them helps that sink in.&lt;/p&gt;
&lt;h2&gt;3. Implement a Basic Encryption System (for Learning Only)&lt;/h2&gt;
&lt;p&gt;Don&apos;t use your own crypto in production. But implementing a simplified RSA or AES gives perspective.&lt;/p&gt;
&lt;p&gt;You&apos;ll see:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Why randomness and padding matter&lt;/li&gt;
&lt;li&gt;How key exchange is nontrivial&lt;/li&gt;
&lt;li&gt;Why side-channel attacks and timing leaks exist&lt;/li&gt;
&lt;li&gt;Why cryptography libraries are so careful with edge cases&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you want a practical starting point, read this short primer on &lt;a href=&quot;https://medium.com/@gowtham180502/implementing-rsa-algorithm-using-python-836f7da2a8e0&quot;&gt;implementing RSA in Python&lt;/a&gt; to understand the math behind it.&lt;/p&gt;
&lt;h2&gt;4. Build a Tiny Database&lt;/h2&gt;
&lt;p&gt;Start with a basic key-value store, then add persistence (write-ahead logs), indexing, and transaction support.&lt;/p&gt;
&lt;p&gt;You&apos;ll learn:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Concurrency and locking&lt;/li&gt;
&lt;li&gt;Durability and crash recovery&lt;/li&gt;
&lt;li&gt;ACID properties&lt;/li&gt;
&lt;li&gt;How indexing and query planning works&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&quot;https://build-your-own.org/database/&quot;&gt;Build Your Own Database From Scratch&lt;/a&gt; is a great reference if you want to go deeper. Even a crude implementation changes how you view ORMs and SQL engines.&lt;/p&gt;
&lt;h2&gt;5. Design a Mini Framework&lt;/h2&gt;
&lt;p&gt;After you&apos;ve built a few components manually, refactor by extracting routing, templating, and controllers. Create your own tiny &amp;quot;framework.&amp;quot;&lt;/p&gt;
&lt;p&gt;This teaches:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Abstraction boundaries&lt;/li&gt;
&lt;li&gt;When to automate vs leave explicit&lt;/li&gt;
&lt;li&gt;Dependency management&lt;/li&gt;
&lt;li&gt;When abstraction is too much vs too little&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You&apos;ll start recognizing the trade-offs frameworks make - and when they&apos;re worth it.&lt;/p&gt;
&lt;h2&gt;DO Re-Invent the Wheel - That&apos;s How You Master Programming&lt;/h2&gt;
&lt;p&gt;The point isn&apos;t to ship these projects. It&apos;s to understand why existing ones work.
You&apos;ll write clunky code, hit dead ends, and break things - but that&apos;s the process that builds real technical depth.&lt;/p&gt;
&lt;p&gt;Every library you use later will make sense because you&apos;ve already built a rough version of it yourself.&lt;/p&gt;
&lt;h2&gt;How to Start&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Pick one domain (networking, parsing, concurrency, storage) per month.&lt;/li&gt;
&lt;li&gt;Build something minimal from scratch.&lt;/li&gt;
&lt;li&gt;Write a short post about what broke and what you learned.&lt;/li&gt;
&lt;li&gt;Link to references or comparisons.&lt;/li&gt;
&lt;li&gt;Move to the next.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;After a year, you&apos;ll have a library of real projects and a mindset most developers never reach.&lt;/p&gt;
&lt;p&gt;You don&apos;t improve at programming by copying others - you improve by rebuilding what you use.
So skip the shortcuts, close the tutorials for a bit, and start making things work the hard way.&lt;/p&gt;
&lt;p&gt;That&apos;s the way that lasts.&lt;/p&gt;
</content:encoded><category>programming</category><category>software-engineering</category><category>learn-to-code</category><category>projects</category><category>fundamentals</category><category>guide</category></item><item><title>The Invisible You: Privacy in the Digital Age</title><link>https://nnisarg.in/blog/the-invisible-you/</link><guid isPermaLink="true">https://nnisarg.in/blog/the-invisible-you/</guid><description>A recap of my talk at Microsoft Mumbai with IIT Madras students, exploring digital footprints, surveillance risks, and personal empowerment in a data-driven world.</description><pubDate>Thu, 24 Jul 2025 06:00:00 GMT</pubDate><content:encoded>&lt;p&gt;On &lt;strong&gt;May 24, 2025&lt;/strong&gt;, I spoke at the Microsoft Mumbai Headquarters to a bright group of &lt;strong&gt;IIT Madras&lt;/strong&gt; students as part of TechWave, hosted by Reskilll and supported by Microsoft Azure. My talk, titled &lt;strong&gt;&amp;quot;The Invisible You: Privacy, Security, and Ethics in the Data Age,&amp;quot;&lt;/strong&gt; focused on the often‑overlooked traces we leave online - and why they matter.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://nnisarg.in/images/blog/invisible-you.jpg&quot; alt=&quot;My talk at Microsoft HQ&quot;&gt;&lt;/p&gt;
&lt;h2&gt;Why &amp;quot;The Invisible You&amp;quot;?&lt;/h2&gt;
&lt;p&gt;Every click, like, or location ping builds a digital shadow. Most people don&apos;t realize how quickly that &amp;quot;invisible you&amp;quot; can be assembled:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Surveillance platforms track your habits.&lt;/li&gt;
&lt;li&gt;Marketers buy and sell your preferences.&lt;/li&gt;
&lt;li&gt;Threat actors exploit leaks and weak safeguards.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That&apos;s the framework I wanted to expose - it&apos;s not just theory. It&apos;s your daily life.&lt;/p&gt;
&lt;h2&gt;Key Themes from the Talk&lt;/h2&gt;
&lt;h3&gt;The Mechanics of Digital Surveillance&lt;/h3&gt;
&lt;p&gt;I walked through the pipelines: how personal data is harvested - sometimes with consent, often without - then aggregated, analyzed, and monetized by corporations and governments.&lt;/p&gt;
&lt;h3&gt;Real-World Risks&lt;/h3&gt;
&lt;p&gt;Illustrated with examples ranging from micro-targeted political ads to identity theft, I stressed that these aren&apos;t abstract - they&apos;re real threats that impact autonomy and trust.&lt;/p&gt;
&lt;h3&gt;Encryption &amp;amp; Ethical Tech&lt;/h3&gt;
&lt;p&gt;I emphasized the role of encryption and open‑source tools as shields. The message: privacy isn&apos;t just about hiding - it&apos;s about claiming space to think, create, and communicate freely.&lt;/p&gt;
&lt;h3&gt;Tools to Reclaim Control&lt;/h3&gt;
&lt;p&gt;I wrapped up with concrete steps:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Use encrypted messaging (e.g. Signal).&lt;/li&gt;
&lt;li&gt;Harden your browser with privacy extensions.&lt;/li&gt;
&lt;li&gt;Audit your apps and services regularly.&lt;/li&gt;
&lt;li&gt;Stay informed - privacy tech is evolving fast.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Reflections on Audience Engagement&lt;/h2&gt;
&lt;p&gt;The IIT Madras students asked thoughtful questions:
&amp;quot;How can we balance convenience with privacy?&amp;quot;
&amp;quot;Is total privacy even possible anymore?&amp;quot;&lt;/p&gt;
&lt;p&gt;These conversations highlighted that privacy isn&apos;t just technical - it&apos;s ethical. And it&apos;s about choice.&lt;/p&gt;
&lt;h2&gt;Slides &amp;amp; Further Reading&lt;/h2&gt;
&lt;p&gt;You can view the full talk deck here: &lt;a href=&quot;https://talks.nnisarg.in/invisible-you&quot;&gt;&amp;quot;The Invisible You&amp;quot; presentation&lt;/a&gt;. It&apos;s packed with links, visuals, and action points.&lt;/p&gt;
&lt;h2&gt;Final Thoughts&lt;/h2&gt;
&lt;p&gt;Talking at Microsoft to such an engaged crowd reinforced something I believe: digital privacy isn&apos;t a niche concern. It&apos;s a fundamental part of how we live, learn, and connect. If we treat the invisible parts of ourselves as important, we&apos;re already stepping toward greater freedom - both online and off.&lt;/p&gt;
&lt;p&gt;If you were there, thank you - that chat and curious spirit made it genuine. If you&apos;re tuning in now: let&apos;s stay cautious, informed, and ethical. The invisible you deserves your attention.&lt;/p&gt;
</content:encoded><image src="https://nnisarg.in/images/blog/invisible-you.jpg"/><category>privacy</category><category>digital‑ethics</category><category>security</category><category>microsoft</category><category>iitmadras</category></item><item><title>Using the Internet Securely</title><link>https://nnisarg.in/blog/using-the-internet-securely/</link><guid isPermaLink="true">https://nnisarg.in/blog/using-the-internet-securely/</guid><description>A guide on GPG/PGP keys and best practices for online security.</description><pubDate>Sun, 16 Mar 2025 13:15:00 GMT</pubDate><content:encoded>&lt;p&gt;The internet is a powerful tool, but it comes with risks. Securing your online presence is essential to protect your data, privacy, and communications. One of the most effective tools for encryption and authentication is &lt;strong&gt;&lt;a href=&quot;https://gnupg.org/&quot;&gt;GNU Privacy Guard (GnuPG)&lt;/a&gt;&lt;/strong&gt;, which implements the &lt;strong&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Pretty_Good_Privacy&quot;&gt;Pretty Good Privacy (PGP) - Wikipedia&lt;/a&gt;&lt;/strong&gt; standard. This guide covers the basics of GPG/PGP keys and general security practices for safer internet usage.&lt;/p&gt;
&lt;h2&gt;Understanding GPG/PGP Keys&lt;/h2&gt;
&lt;p&gt;PGP and GPG use public-key cryptography to encrypt and sign data. Each user has a &lt;strong&gt;key pair&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Public Key&lt;/strong&gt;: Shared with others to encrypt messages for you.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Private Key&lt;/strong&gt;: Kept secret and used to decrypt messages and sign data.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;By using GPG, you can send encrypted emails, verify software integrity, and authenticate communications.&lt;/p&gt;
&lt;h2&gt;Generating a GPG Key&lt;/h2&gt;
&lt;p&gt;To create a new GPG key:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Install GPG:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Linux/macOS: Check installation with &lt;code&gt;gpg --version&lt;/code&gt;. If not installed, install it using:
&lt;ul&gt;
&lt;li&gt;macOS: &lt;code&gt;brew install gnupg&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Linux (Debian-based): &lt;code&gt;sudo apt install gnupg&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Windows: Use &lt;strong&gt;&lt;a href=&quot;https://www.gpg4win.org/&quot;&gt;Gpg4win&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Generate a key:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;gpg --full-generate-key
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Follow the prompts to select key type, size, and expiration.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Export your public key:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;gpg --export --armor your@email.com &amp;gt; publickey.asc
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Share the public key so others can encrypt messages for you. You can upload it to a keyserver like:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://keyserver.ubuntu.com/&quot;&gt;keyserver.ubuntu.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://keys.openpgp.org/&quot;&gt;keys.openpgp.org&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Encrypting and Signing Messages&lt;/h2&gt;
&lt;p&gt;To &lt;strong&gt;encrypt&lt;/strong&gt; a message:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;echo &amp;quot;Confidential message&amp;quot; | gpg --encrypt --armor -r recipient@email.com
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;To &lt;strong&gt;sign&lt;/strong&gt; a message:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;echo &amp;quot;Important document&amp;quot; | gpg --clearsign
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;To &lt;strong&gt;verify&lt;/strong&gt; a signed message:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;gpg --verify message.asc
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;For more details, refer to the &lt;strong&gt;&lt;a href=&quot;https://www.gnupg.org/documentation/manuals/gnupg.pdf&quot;&gt;GPG Command Line Guide&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;
&lt;h2&gt;General Internet Security Practices&lt;/h2&gt;
&lt;h3&gt;Use Strong, Unique Passwords&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Avoid reusing passwords across different sites.&lt;/li&gt;
&lt;li&gt;Use a password manager to store and generate strong passwords.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Recommended Password Manager&lt;/strong&gt;: &lt;strong&gt;&lt;a href=&quot;https://www.passwordstore.org/&quot;&gt;GNU Pass&lt;/a&gt;&lt;/strong&gt; (A simple command-line password manager using GPG encryption).&lt;/li&gt;
&lt;li&gt;Alternative: &lt;strong&gt;&lt;a href=&quot;https://keepassxc.org/&quot;&gt;KeePassXC&lt;/a&gt;&lt;/strong&gt; (A libre, cross-platform password manager).&lt;/li&gt;
&lt;li&gt;You can also visit &lt;strong&gt;&lt;a href=&quot;https://www.passwordmanager.com/&quot;&gt;PasswordManager.com&lt;/a&gt;&lt;/strong&gt; to know more about popular (mostly commercial and non-libre) password managers. &lt;strong&gt;NOTE:&lt;/strong&gt; PasswordManager.com earns a commission on any purchase via their website&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Secure Your Email and Communications&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Use end-to-end encrypted email services like &lt;strong&gt;&lt;a href=&quot;https://proton.me/&quot;&gt;ProtonMail&lt;/a&gt;&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Consider self-hosted email solutions for full privacy, such as &lt;strong&gt;&lt;a href=&quot;https://snappymail.eu/&quot;&gt;SnappyMail&lt;/a&gt;&lt;/strong&gt; (a lightweight, privacy-focused webmail client).&lt;/li&gt;
&lt;li&gt;Prefer encrypted messaging apps like &lt;strong&gt;&lt;a href=&quot;https://element.io/&quot;&gt;Element&lt;/a&gt;&lt;/strong&gt; (Matrix-based).&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Keep Software Updated&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Regularly update your &lt;strong&gt;operating system&lt;/strong&gt;, &lt;strong&gt;browser&lt;/strong&gt;, and &lt;strong&gt;software&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Avoid using outdated plugins and extensions that may introduce vulnerabilities.&lt;/li&gt;
&lt;li&gt;Enable &lt;strong&gt;automatic updates&lt;/strong&gt; wherever possible.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Browse the Web Safely&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Always use &lt;strong&gt;HTTPS&lt;/strong&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Avoid clicking on suspicious links or downloading unknown attachments.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Use a &lt;strong&gt;privacy-focused browser&lt;/strong&gt; like:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://librewolf.net/&quot;&gt;LibreWolf&lt;/a&gt;&lt;/strong&gt; (A hardened fork of Firefox with enhanced privacy settings).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://www.torproject.org/&quot;&gt;Tor Browser&lt;/a&gt;&lt;/strong&gt; (For anonymous browsing via the Tor network).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://www.mozilla.org/en-US/firefox/&quot;&gt;Firefox&lt;/a&gt;&lt;/strong&gt; (Configure it for privacy).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Consider using a &lt;strong&gt;libre VPN&lt;/strong&gt; like &lt;strong&gt;&lt;a href=&quot;https://mullvad.net/&quot;&gt;Mullvad&lt;/a&gt;&lt;/strong&gt; or &lt;strong&gt;&lt;a href=&quot;https://riseup.net/en/vpn&quot;&gt;Riseup VPN&lt;/a&gt;&lt;/strong&gt; to hide your IP address and encrypt traffic.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Verify Software Integrity&lt;/h3&gt;
&lt;p&gt;When downloading software, always check its authenticity by verifying its GPG signature:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;gpg --verify software.sig software.tar.gz
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Most open-source projects provide GPG signatures for their releases, which can be verified against their &lt;strong&gt;public keys&lt;/strong&gt;. Check the project&apos;s official website for details.&lt;/p&gt;
&lt;p&gt;For example, verifying a &lt;strong&gt;Arch Linux ISO&lt;/strong&gt; download:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Download the public key:&lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;gpg --recv-keys 3E80CA1A8B89F69CBA57D98A76A5EF9054449A5C
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;Verify the signature:&lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;gpg --verify archlinux-2025.03.01-x86_64.iso.sig archlinux-2025.03.01-x86_64.iso
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Online security is an ongoing effort. By using &lt;strong&gt;GPG for encryption and authentication&lt;/strong&gt;, along with adopting &lt;strong&gt;strong security habits&lt;/strong&gt;, you can significantly reduce your risk of data theft and surveillance. Stay informed, keep your software updated, and be cautious when sharing information online.&lt;/p&gt;
&lt;p&gt;For further learning:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://www.gnupg.org/documentation/manuals/gnupg.pdf&quot;&gt;GPG Manual&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://www.privacyguides.org/&quot;&gt;Privacy Guides - Free and Open-Source Privacy Resources&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><category>security</category><category>encryption</category><category>privacy</category><category>pgp</category><category>gpg</category></item><item><title>MAN is Man&apos;s Best Friend!</title><link>https://nnisarg.in/blog/man-is-mans-best-friend/</link><guid isPermaLink="true">https://nnisarg.in/blog/man-is-mans-best-friend/</guid><description>A guide on how the &apos;man&apos; command helps in learning commands and boosting terminal productivity.</description><pubDate>Sun, 02 Mar 2025 13:25:00 GMT</pubDate><content:encoded>&lt;p&gt;If there&apos;s one command that deserves the title of &lt;em&gt;man&apos;s best friend&lt;/em&gt; in Linux, it&apos;s &lt;strong&gt;&lt;code&gt;man&lt;/code&gt;&lt;/strong&gt;. The &lt;strong&gt;manual (man) pages&lt;/strong&gt; are your ultimate guide to mastering Linux, unlocking the secrets of the terminal, and supercharging your productivity. Whether you&apos;re a beginner or an experienced user, the &lt;code&gt;man&lt;/code&gt; command is an indispensable tool in your Linux journey.&lt;/p&gt;
&lt;h2&gt;1. &lt;strong&gt;What is the &lt;code&gt;man&lt;/code&gt; Command?&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;The &lt;code&gt;man&lt;/code&gt; command (short for &amp;quot;manual&amp;quot;) is your go-to resource for understanding Linux commands. Instead of scouring the web for documentation, simply type:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;man &amp;lt;command&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;For example:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;man ls
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This brings up the detailed manual for &lt;code&gt;ls&lt;/code&gt;, explaining its usage, options, and flags. It&apos;s like having an encyclopedia of Linux right at your fingertips.&lt;/p&gt;
&lt;h2&gt;2. &lt;strong&gt;Why &lt;code&gt;man&lt;/code&gt; is Your Best Friend&lt;/strong&gt;&lt;/h2&gt;
&lt;h3&gt;&lt;strong&gt;Comprehensive Documentation&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;The &lt;code&gt;man&lt;/code&gt; command provides official documentation written by experts. Unlike random online guides, man pages offer precise, up-to-date information about every command available on your system.&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;Discover Hidden Features&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Many Linux commands have powerful yet lesser-known options. By exploring the man pages, you can uncover flags and functionalities that streamline your workflow. For instance:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;man grep
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;reveals advanced pattern-matching techniques that can transform the way you search text.&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;Boost Terminal Productivity&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Instead of switching between a browser and the terminal, stay in the command line and find answers instantly. The more you use &lt;code&gt;man&lt;/code&gt;, the more self-sufficient you become, making you a terminal power user.&lt;/p&gt;
&lt;h2&gt;3. &lt;strong&gt;How to Read a Man Page Efficiently&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Man pages can seem overwhelming at first, but understanding their structure makes navigation easy:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;NAME&lt;/strong&gt; - A brief description of the command.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SYNOPSIS&lt;/strong&gt; - Shows how to use the command.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DESCRIPTION&lt;/strong&gt; - Detailed explanation of what the command does.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OPTIONS&lt;/strong&gt; - Lists available flags and their effects.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;EXAMPLES&lt;/strong&gt; - (If available) Demonstrates practical usage.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SEE ALSO&lt;/strong&gt; - Related commands that might be useful.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Navigate a man page using:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;j/k&lt;/code&gt; - Scroll through the document.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/search-term&lt;/code&gt; - Find a keyword.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;q&lt;/code&gt; - Quit the man page.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;4. &lt;strong&gt;Advanced &lt;code&gt;man&lt;/code&gt; Usage&lt;/strong&gt;&lt;/h2&gt;
&lt;h3&gt;&lt;strong&gt;Find Commands by Keyword&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Not sure which command to use? Try:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;man -k &amp;lt;keyword&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;For example:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;man -k process
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This will list all commands related to &amp;quot;process.&amp;quot;&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;Read Sections of a Command&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Some commands have multiple meanings (e.g., &lt;code&gt;printf&lt;/code&gt; as a shell command vs. a C function). The manual is divided into sections:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;1&lt;/strong&gt; - User commands&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;2&lt;/strong&gt; - System calls&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;3&lt;/strong&gt; - Library functions&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;5&lt;/strong&gt; - File formats&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;8&lt;/strong&gt; - System administration commands&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To access a specific section, run:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;man 3 printf
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;5. &lt;strong&gt;Man Pages: Your Gateway to Linux Mastery&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Learning Linux is all about &lt;strong&gt;self-sufficiency&lt;/strong&gt;, and &lt;code&gt;man&lt;/code&gt; empowers you to explore, experiment, and understand commands without external dependencies. By mastering man pages, you&apos;ll:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Reduce reliance on online searches.&lt;/li&gt;
&lt;li&gt;Discover new features and optimizations.&lt;/li&gt;
&lt;li&gt;Increase efficiency by staying within the terminal.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;strong&gt;Challenge Yourself:&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;For the next week, try using &lt;code&gt;man&lt;/code&gt; before Googling any Linux command. You&apos;ll be surprised at how much you learn!&lt;/p&gt;
&lt;p&gt;&lt;em&gt;May your terminal adventures be ever productive, and may &lt;code&gt;man&lt;/code&gt; always guide your way! 🐧✨&lt;/em&gt;&lt;/p&gt;
</content:encoded><category>linux</category><category>terminal</category><category>productivity</category><category>sysadmin</category><category>devops</category></item><item><title>Publishing My First AUR Package: CPIG</title><link>https://nnisarg.in/blog/my-first-aur-package/</link><guid isPermaLink="true">https://nnisarg.in/blog/my-first-aur-package/</guid><description>From Code to AUR: How I Got My Code onto Arch&apos;s Servers</description><pubDate>Tue, 31 Dec 2024 14:50:00 GMT</pubDate><content:encoded>&lt;p&gt;Today, I&apos;m excited to share that I&apos;ve published my &lt;strong&gt;first package&lt;/strong&gt; to the &lt;strong&gt;Arch User Repository (AUR)&lt;/strong&gt;! 🎉 The package is &lt;strong&gt;CPIG - Color Palette Inference Generator&lt;/strong&gt;, a simple C-based tool that generates color palettes from images using the &lt;strong&gt;K-means clustering algorithm&lt;/strong&gt;. It&apos;s been a rewarding experience, and I&apos;d love to walk you through the process of creating and publishing a package to the AUR.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://nnisarg.in/images/blog/cpig.jpg&quot; alt=&quot;CPIG Banner&quot;&gt;&lt;/p&gt;
&lt;h2&gt;What is CPIG?&lt;/h2&gt;
&lt;p&gt;CPIG is a small, lightweight tool that allows you to extract dominant colors from an image and generate a color palette. It&apos;s designed for &lt;strong&gt;designers&lt;/strong&gt;, &lt;strong&gt;developers&lt;/strong&gt;, or anyone who needs a color palette from an image, whether it&apos;s for a website, a project, or inspiration.&lt;/p&gt;
&lt;p&gt;The tool uses the &lt;strong&gt;K-means clustering algorithm&lt;/strong&gt; to analyze the image and find the most prominent colors, which are then outputted in &lt;strong&gt;hexadecimal format&lt;/strong&gt;. You can easily adjust the number of colors to extract and even save the palette to a text file.&lt;/p&gt;
&lt;h2&gt;Why Publish to the AUR?&lt;/h2&gt;
&lt;p&gt;As an &lt;a href=&quot;https://archlinux.org/&quot;&gt;&lt;strong&gt;Arch Linux&lt;/strong&gt;&lt;/a&gt; user, I&apos;ve always admired the &lt;a href=&quot;https://aur.archlinux.org/&quot;&gt;&lt;strong&gt;AUR&lt;/strong&gt;&lt;/a&gt; (Arch User Repository) for its flexibility and community-driven nature. The AUR allows developers to share their open-source projects with the Arch community, and I saw it as the perfect platform for CPIG.&lt;/p&gt;
&lt;p&gt;Publishing a package to the AUR not only allows other users to easily install and use your software but also gives back to the open-source community. As this was my first time packaging software for the AUR, I decided to take the plunge and learn about the process, packaging standards, and best practices. Here&apos;s how I did it!&lt;/p&gt;
&lt;h2&gt;The Process of Publishing CPIG to the AUR&lt;/h2&gt;
&lt;h3&gt;Step 1: Packaging the Project&lt;/h3&gt;
&lt;p&gt;The first step in publishing to the AUR was &lt;strong&gt;packaging&lt;/strong&gt; my project. This involves creating a &lt;a href=&quot;https://github.com/itsjustneo-xo/cpig/blob/master/PKGBUILD&quot;&gt;&lt;strong&gt;PKGBUILD&lt;/strong&gt;&lt;/a&gt; file, which is a script that defines how the package is built, installed, and maintained on Arch Linux.&lt;/p&gt;
&lt;p&gt;For CPIG, the PKGBUILD script included the project&apos;s dependencies, such as the &lt;a href=&quot;https://github.com/nothings/stb/blob/master/stb_image.h&quot;&gt;&lt;strong&gt;STB Image&lt;/strong&gt;&lt;/a&gt; library for loading images, and instructions for building the program using &lt;strong&gt;GCC&lt;/strong&gt; (GNU Compiler Collection). Once the PKGBUILD was ready, I tested it locally to ensure everything was working as expected.&lt;/p&gt;
&lt;h3&gt;Step 2: Testing the Package&lt;/h3&gt;
&lt;p&gt;Before submitting the package, I made sure it was working as intended by testing the build process. I used &lt;code&gt;makepkg&lt;/code&gt; to create a local package and verified that the generated binary was functional. I also checked the installation process, ensuring that CPIG installed cleanly and could be run from the terminal.&lt;/p&gt;
&lt;h3&gt;Step 3: Creating the AUR Submission&lt;/h3&gt;
&lt;p&gt;Once I was happy with the package, I created an &lt;strong&gt;AUR account&lt;/strong&gt; and submitted the package. The submission process involved uploading the &lt;strong&gt;PKGBUILD&lt;/strong&gt; file, the source code, and any additional files needed to build the package.&lt;/p&gt;
&lt;p&gt;After filling out all the details, I submitted the package for review. A few hours later, my package was approved and listed on the AUR! 🎉&lt;/p&gt;
&lt;h3&gt;Step 4: Maintaining the Package&lt;/h3&gt;
&lt;p&gt;After the package was live, I started keeping an eye on it. This includes ensuring compatibility with future versions of Arch Linux, fixing any reported issues, and adding features or updates as needed. It&apos;s also important to keep the documentation up-to-date so users can easily install and use the package.&lt;/p&gt;
&lt;h2&gt;Why CPIG is Useful&lt;/h2&gt;
&lt;p&gt;I created CPIG because I found that many tools for generating color palettes from images were either too complex or didn&apos;t give me enough control. CPIG is designed to be simple, lightweight, and customizable, making it perfect for anyone who needs to generate a color palette without all the extra bloat.&lt;/p&gt;
&lt;p&gt;Here&apos;s what makes CPIG stand out:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;K-means clustering&lt;/strong&gt; for color extraction&lt;/li&gt;
&lt;li&gt;Customizable number of colors&lt;/li&gt;
&lt;li&gt;Hexadecimal color output&lt;/li&gt;
&lt;li&gt;Lightweight and simple design&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Installing CPIG from the AUR&lt;/h2&gt;
&lt;p&gt;Installing CPIG on your Arch Linux system is simple. Once the package is available on the AUR, you can install it using an AUR helper like &lt;code&gt;yay&lt;/code&gt; or &lt;code&gt;paru&lt;/code&gt;. Here&apos;s the command:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;yay -S cpig-git
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Or, if you prefer to build it manually:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git clone https://aur.archlinux.org/cpig-git.git /tmp/cpig
cd /tmp/cpig
makepkg -si
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Once installed, you can use CPIG directly from the terminal:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;cpig input.jpg
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;What&apos;s Next for CPIG?&lt;/h2&gt;
&lt;p&gt;While CPIG is fully functional, I have some exciting plans for future updates:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Optimize the color extraction algorithm&lt;/strong&gt; for better speed and accuracy.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Support more image formats&lt;/strong&gt; (e.g., TIFF, GIF).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enhance the output options&lt;/strong&gt; (e.g., JSON, CSV, or image previews of the palette).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Improve error handling&lt;/strong&gt; and user interface for smoother user experience.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I&apos;m looking forward to continuing the development of CPIG and adding more features over time.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Publishing my first package to the AUR was a fulfilling and educational experience. It taught me a lot about packaging, the AUR submission process, and how to maintain open-source projects. If you&apos;re an Arch Linux user, I hope you find CPIG useful for your projects. And if you&apos;re new to packaging, I encourage you to give it a try-there&apos;s no better way to learn than by diving in!&lt;/p&gt;
&lt;p&gt;If you&apos;d like to contribute to the project, check out the &lt;a href=&quot;https://github.com/itsjustneo-xo/cpig&quot;&gt;&lt;strong&gt;CPIG repository&lt;/strong&gt;&lt;/a&gt; on GitHub. Whether it&apos;s improving the code, adding new features, or simply reporting issues, contributions are always welcome. Open-source projects thrive on community involvement, and I look forward to collaborating with others to make CPIG even better.&lt;/p&gt;
&lt;p&gt;Check out CPIG on the &lt;a href=&quot;https://aur.archlinux.org/packages/cpig-git&quot;&gt;AUR&lt;/a&gt; and &lt;a href=&quot;https://github.com/itsjustneo-xo/cpig&quot;&gt;GitHub&lt;/a&gt;. Let me know if you have any feedback or suggestions. Here&apos;s to more open-source contributions! 🚀&lt;/p&gt;
</content:encoded><image src="https://nnisarg.in/images/blog/cpig.jpg"/><category>arch-linux</category><category>linux</category><category>open-source</category><category>c</category></item><item><title>I created PACMAN - not what you think</title><link>https://nnisarg.in/blog/i-created-pacman/</link><guid isPermaLink="true">https://nnisarg.in/blog/i-created-pacman/</guid><description>PACMAN is a free, open-source, web-based contact management app designed for simplicity and privacy.</description><pubDate>Sat, 07 Dec 2024 13:10:00 GMT</pubDate><content:encoded>&lt;p&gt;When it comes to managing your contacts, privacy is often an afterthought. That&apos;s why I created &lt;strong&gt;PACMAN&lt;/strong&gt;: &lt;strong&gt;Private Alternative for Contact Management And Networking&lt;/strong&gt;. PACMAN is an open-source, web-based application that gives you full control over your contact data. With features like contact creation, editing, and export to VCF format, PACMAN is designed for individuals and organizations who value simplicity and privacy above all else.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://nnisarg.in/images/blog/pacman.jpg&quot; alt=&quot;PACMAN&quot;&gt;&lt;/p&gt;
&lt;h2&gt;Why Choose PACMAN?&lt;/h2&gt;
&lt;p&gt;PACMAN is built with a &lt;strong&gt;privacy-first philosophy&lt;/strong&gt;, meaning your contact data stays with you. Unlike other solutions that store your information in the cloud, PACMAN ensures you&apos;re always in control.&lt;/p&gt;
&lt;p&gt;Here&apos;s why PACMAN stands out:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Free and Open Source&lt;/strong&gt;: Yours to tweak and modify as you see fit.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Web-Based&lt;/strong&gt;: Access PACMAN securely from any browser on your network.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;VCF Export&lt;/strong&gt;: Export your contacts to the universally compatible &lt;code&gt;.vcf&lt;/code&gt; format.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Basic Authentication&lt;/strong&gt;: Protect access to your contact data with built-in Basic Auth.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Lightweight and Simple&lt;/strong&gt;: Focused on essential features without the bloat.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Features&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Add, Edit, and Delete Contacts&lt;/strong&gt;: A clean interface makes managing contacts intuitive and efficient.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Search Contacts&lt;/strong&gt;: Quickly find any contact by name, phone, or email.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Export to VCF&lt;/strong&gt;: Share or back up your contacts with ease.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Secure Access&lt;/strong&gt;: Browser-based Basic Authentication ensures only you can view your contacts.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Setting Up PACMAN&lt;/h2&gt;
&lt;p&gt;Ready to start managing your contacts securely? Follow these steps to self-host PACMAN on your server or local machine.&lt;/p&gt;
&lt;h3&gt;Prerequisites&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://golang.org/dl/&quot;&gt;Go (Golang)&lt;/a&gt; installed on your system.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Installation&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Clone the Repository:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git clone https://github.com/itsjustneo-xo/pacman
cd pacman
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Build and Run the Application:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;go run main.go
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;By default, PACMAN will run on &lt;code&gt;http://localhost:8080&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Customizing PACMAN&lt;/h2&gt;
&lt;p&gt;PACMAN is designed to be configurable with minimal effort. Here&apos;s what you can modify in &lt;code&gt;main.go&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-go&quot;&gt;const (
    port     = 8080                       // Port to run the app on
    username = &amp;quot;your_username&amp;quot;            // Basic Auth username
    password = &amp;quot;your_password&amp;quot;            // Basic Auth password
    dbFile   = &amp;quot;database/contacts.db&amp;quot;     // Path to SQLite database file
    vcfFile  = &amp;quot;contacts.vcf&amp;quot;             // Default VCF export file
)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Once configured, simply restart the application for changes to take effect.&lt;/p&gt;
&lt;h2&gt;Using PACMAN&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Add Contacts&lt;/strong&gt;: Fill out a simple form to add new contacts to your database.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Edit or Delete Contacts&lt;/strong&gt;: Modify details or remove outdated entries in just a few clicks.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Export to VCF&lt;/strong&gt;: Export your contact list to a &lt;code&gt;.vcf&lt;/code&gt; file for easy sharing or backup.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Search Contacts&lt;/strong&gt;: Use the built-in search functionality to find specific contacts instantly.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;What&apos;s Next for PACMAN?&lt;/h2&gt;
&lt;p&gt;PACMAN is continually evolving, with exciting features on the way:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Bulk Import from VCF&lt;/strong&gt;: Easily migrate existing contacts into PACMAN.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Group Management&lt;/strong&gt;: Organize contacts into groups for better organization.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enhanced Authentication&lt;/strong&gt;: Explore additional security measures beyond Basic Auth.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;If you&apos;re looking for a simple, secure, and self-hosted solution for managing your contacts, &lt;strong&gt;PACMAN&lt;/strong&gt; is the perfect fit. Whether for personal use or small businesses, PACMAN lets you take control of your data while keeping things lightweight and user-friendly.&lt;/p&gt;
&lt;p&gt;Ready to take the leap? Check out the &lt;a href=&quot;https://github.com/itsjustneo-xo/pacman&quot;&gt;PACMAN repository&lt;/a&gt; on GitHub and get started today!&lt;/p&gt;
</content:encoded><image src="https://nnisarg.in/images/blog/pacman.jpg"/><category>go</category><category>golang</category><category>open-source</category><category>privacy</category></item><item><title>Embracing the Suckless Philosophy: A Minimalist Approach to Computing and Life</title><link>https://nnisarg.in/blog/embracing-the-suckless-philosophy/</link><guid isPermaLink="true">https://nnisarg.in/blog/embracing-the-suckless-philosophy/</guid><description>A reflection on the suckless philosophy, its connection to Unix principles, and how it inspires minimalist computing and intentional living.</description><pubDate>Thu, 05 Dec 2024 14:40:00 GMT</pubDate><content:encoded>&lt;p&gt;After experimenting with Hyprland, a modern and feature-rich Wayland compositor, I recently made the conscious decision to switch back to the Xorg ecosystem with &lt;strong&gt;DWM&lt;/strong&gt;-the minimalist window manager developed under the principles of the &lt;strong&gt;suckless philosophy&lt;/strong&gt;. This choice wasn&apos;t just about my desktop environment but rather a deeper reflection of values I want to carry not only in my computing habits but also in my everyday life.&lt;/p&gt;
&lt;h2&gt;What is the Suckless Philosophy?&lt;/h2&gt;
&lt;p&gt;The suckless philosophy revolves around simplicity, clarity, and efficiency in software design. The suckless team believes that software should be simple and minimal, avoiding unnecessary complexity that can bog down both machines and developers. Their software-like &lt;a href=&quot;https://dwm.suckless.org/&quot;&gt;DWM&lt;/a&gt; (Dynamic Window Manager), &lt;a href=&quot;https://st.suckless.org/&quot;&gt;ST&lt;/a&gt; (Simple Terminal), and &lt;a href=&quot;https://tools.suckless.org/slock/&quot;&gt;Slock&lt;/a&gt;-adheres to the principle of &lt;strong&gt;&amp;quot;keep it simple, stupid&amp;quot; (KISS)&lt;/strong&gt;. This resonates strongly with the &lt;strong&gt;Unix philosophy&lt;/strong&gt;, which advocates for:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Writing programs that do one thing and do it well.&lt;/li&gt;
&lt;li&gt;Building small, modular programs that work seamlessly together.&lt;/li&gt;
&lt;li&gt;Prioritizing simplicity and elegance over bloat and feature creep.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Suckless projects embody these ideas in their minimalist codebases. DWM, for example, is intentionally under 2000 lines of code, empowering users to audit, customize, and extend the software without wading through layers of abstraction.&lt;/p&gt;
&lt;h2&gt;Suckless Meets Unix: A Natural Alignment&lt;/h2&gt;
&lt;p&gt;The Unix philosophy and suckless philosophy share a common disdain for unnecessary complexity. Where Unix emphasizes modularity and composability (think &lt;code&gt;grep | awk | sed&lt;/code&gt; pipelines), suckless tools focus on reducing the barrier between the user and the code itself. With DWM, patching the source code directly is the norm, and this DIY approach mirrors the Unix idea of tailoring tools to the task at hand.&lt;/p&gt;
&lt;p&gt;This synergy resonates with me. It fosters an environment where I am not just a user but an active participant in shaping my tools to my needs. It also challenges me to be deliberate in what I adopt and to question the value of the tools I use.&lt;/p&gt;
&lt;h2&gt;My DWM Dots&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;https://nnisarg.in/images/blog/dwm.jpg&quot; alt=&quot;My DWM configuration&quot;&gt;&lt;/p&gt;
&lt;p&gt;One of the aspects I love about using DWM is the freedom to make it my own. Over time, I&apos;ve customized my setup to match my specific workflow and preferences. If you&apos;re interested in seeing my configurations or trying them out, check out my DWM dots repository here: &lt;a href=&quot;https://codeber.org/itsjustneo_xo/dwm-dots&quot;&gt;codeber.org/itsjustneo_xo/dwm-dots&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In the repo, I&apos;ve included:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;My patches for DWM to add features while maintaining minimalism.&lt;/li&gt;
&lt;li&gt;A carefully curated configuration file for an efficient and clean workflow.&lt;/li&gt;
&lt;li&gt;Tips and notes for getting started or adapting the setup to your needs.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Feel free to fork or contribute if you share the same love for lightweight, suckless software!&lt;/p&gt;
&lt;h2&gt;Considering DWL and Wayland&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://wayland.freedesktop.org/&quot;&gt;Wayland&lt;/a&gt; represents the future of Linux display servers, offering smoother performance and modern features compared to Xorg. I briefly considered making the leap to Wayland full-time with &lt;a href=&quot;https://github.com/djpohly/dwl&quot;&gt;DWL&lt;/a&gt;, the suckless-inspired Wayland compositor. DWL offers the same core principles as DWM but for the Wayland ecosystem. However, Wayland&apos;s landscape still lacks a broader array of software adhering to the suckless ethos.&lt;/p&gt;
&lt;p&gt;For now, I&apos;ve chosen to wait. I&apos;m watching for more &amp;quot;suckless-esque&amp;quot; projects to emerge that embrace the simplicity, efficiency, and directness I value. While &lt;a href=&quot;https://hyprland.org/&quot;&gt;Hyprland&lt;/a&gt; was a feature-rich option, its configurability didn&apos;t align with my preference for minimalism and auditability.&lt;/p&gt;
&lt;h2&gt;Extending the Philosophy to Everyday Life&lt;/h2&gt;
&lt;p&gt;This journey with suckless isn&apos;t just about software; it&apos;s a reflection of my broader values. In a world obsessed with doing more and owning more, the suckless philosophy has inspired me to &lt;strong&gt;do less, but better&lt;/strong&gt;. Here&apos;s how I&apos;ve started extending these principles to everyday life:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Minimalism&lt;/strong&gt;: Just as DWM minimizes code and features, I&apos;m decluttering my physical and digital spaces. Whether it&apos;s reducing possessions to essentials or cleaning up my digital files, I&apos;m learning to live with less.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Customization&lt;/strong&gt;: Much like patching DWM to suit my workflow, I&apos;m tailoring my routines and habits to fit my priorities, rather than adopting one-size-fits-all solutions.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Intentionality&lt;/strong&gt;: The deliberate simplicity of suckless tools reminds me to choose purposefully-whether it&apos;s the commitments I take on or the technologies I adopt.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Closing Thoughts&lt;/h2&gt;
&lt;p&gt;Switching back to Xorg and DWM wasn&apos;t just a technical decision-it was a personal choice grounded in values I want to uphold. The suckless philosophy serves as a reminder that &lt;strong&gt;less can indeed be more&lt;/strong&gt;. As Wayland continues to mature and tools like DWL gain traction, I&apos;m excited about the possibility of extending these ideals into the next generation of Linux computing.&lt;/p&gt;
&lt;p&gt;For now, I&apos;ll continue to build my computing environment with tools that emphasize simplicity and transparency, while striving to bring those same qualities into my life. Because in the end, suckless isn&apos;t just about software-it&apos;s about a way of thinking and living.&lt;/p&gt;
&lt;p&gt;Explore my DWM dots: &lt;a href=&quot;https://codeber.org/itsjustneo_xo/dwm-dots&quot;&gt;codeber.org/itsjustneo_xo/dwm-dots&lt;/a&gt;&lt;/p&gt;
</content:encoded><image src="https://nnisarg.in/images/blog/dwm.jpg"/><category>guide</category><category>linux</category><category>unix</category><category>philosophy</category><category>minimalist</category></item><item><title>Building MUNDRA: Revolutionizing MUN Delegate Management with Tech</title><link>https://nnisarg.in/blog/building-mundra/</link><guid isPermaLink="true">https://nnisarg.in/blog/building-mundra/</guid><description>Discover how MUNDRA simplifies MUN delegate management with a FastAPI-powered backend.</description><pubDate>Fri, 22 Nov 2024 12:15:00 GMT</pubDate><content:encoded>&lt;p&gt;When it comes to managing Model United Nations (MUN) events, the challenges are endless-keeping track of hundreds of delegates, streamlining communication, and planning large-scale events with precision. As the &lt;strong&gt;Joint General Secretary - Tech&lt;/strong&gt; of the &lt;strong&gt;&lt;a href=&quot;https://munsocietympstme.com&quot;&gt;MUN Society MPSTME&lt;/a&gt;&lt;/strong&gt;, I decided to tackle these challenges head-on.&lt;/p&gt;
&lt;p&gt;That&apos;s how &lt;strong&gt;&lt;a href=&quot;https://github.com/itsjustneo-xo/mundra&quot;&gt;MUNDRA&lt;/a&gt;&lt;/strong&gt; - the &lt;strong&gt;MUNSoc Delegate Resource Application&lt;/strong&gt; - was born. Named after the bustling Mundra Port in Gujarat, this backend application is designed to be the central hub for all delegate-related activities. More than just a database, MUNDRA is a scalable, secure, and modular solution that will power everything from our apps to email workflows and websites.&lt;/p&gt;
&lt;p&gt;For developers and enthusiasts, MUNDRA&apos;s API is fully documented and accessible &lt;a href=&quot;https://mundra.nnisarg.in/redoc&quot;&gt;here&lt;/a&gt;, showcasing its well-structured design and functionality.&lt;/p&gt;
&lt;h2&gt;The Idea Behind MUNDRA&lt;/h2&gt;
&lt;p&gt;MUNs are as much about organization as they are about debate. Without a centralized system to manage delegate data, events can quickly devolve into chaos. MUNDRA was built to simplify this process by:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Centralizing all delegate and event data into a single database.&lt;/li&gt;
&lt;li&gt;Automating repetitive tasks like account management and email verification.&lt;/li&gt;
&lt;li&gt;Supporting scalable growth for larger MUN events in the future.&lt;/li&gt;
&lt;li&gt;Offering seamless integration with websites, apps, and other tools.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;As someone who loves creating meaningful tech solutions, this wasn&apos;t just another project for me. It was about building a product that could evolve with our society&apos;s needs.&lt;/p&gt;
&lt;h2&gt;Diving Into the Tech&lt;/h2&gt;
&lt;p&gt;MUNDRA is built on &lt;strong&gt;&lt;a href=&quot;https://fastapi.tiangolo.com&quot;&gt;FastAPI&lt;/a&gt;&lt;/strong&gt;, a modern Python framework known for its speed and simplicity. Here&apos;s what makes MUNDRA stand out:&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;Key Features&lt;/strong&gt;&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Comprehensive User Management&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Delegate accounts with creation, deletion, and updates.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Email verification&lt;/strong&gt; ensures only genuine users have access.&lt;/li&gt;
&lt;li&gt;Hassle-free password recovery and change workflows.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Centralized Database&lt;/strong&gt;&lt;br&gt;
A unified storage system for delegate and event data, enabling easy retrieval and scalability for future growth.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Built-In Security&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Passwords are hashed using modern cryptographic standards.&lt;/li&gt;
&lt;li&gt;JWT-based authentication ensures secure access.&lt;/li&gt;
&lt;li&gt;Additional measures like rate limiting protect against abuse.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Integration Ready&lt;/strong&gt;&lt;br&gt;
MUNDRA is designed to plug into various tools-our app, event websites, and even automated email scripts.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Why FastAPI?&lt;/h2&gt;
&lt;p&gt;Choosing the right framework was critical to the success of MUNDRA. FastAPI emerged as the clear winner for its modern features:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Performance:&lt;/strong&gt; It&apos;s built for high-speed asynchronous processing.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ease of Use:&lt;/strong&gt; Automatic API documentation and intuitive type hints made development quick and error-free.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Scalability:&lt;/strong&gt; FastAPI handles high-concurrency environments effortlessly.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can explore the live API documentation &lt;a href=&quot;https://mundra.nnisarg.in/redoc&quot;&gt;here&lt;/a&gt;, powered by FastAPI&apos;s built-in OpenAPI support.&lt;/p&gt;
&lt;h2&gt;Building MUNDRA: Challenges and Lessons Learned&lt;/h2&gt;
&lt;p&gt;No journey is without its hurdles. Building MUNDRA taught me some valuable lessons:&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;Challenge: Scalability&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;MUN events grow larger every year. To ensure MUNDRA could keep up, I carefully designed the database schema and optimized API endpoints for handling large datasets.&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;Challenge: Security&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Account workflows like password recovery are potential attack vectors. I implemented secure password hashing, email token validation, and rate limiting to safeguard user data.&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;Challenge: Modularity&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;MUNDRA had to be versatile enough to power apps, websites, and email scripts. I focused on designing clean, self-contained APIs that would work seamlessly across different front-end systems.&lt;/p&gt;
&lt;h2&gt;The Impact of MUNDRA&lt;/h2&gt;
&lt;p&gt;The first version of MUNDRA, &lt;strong&gt;v1.0.0&lt;/strong&gt;, is already proving to be a game-changer for our society. With centralized data and automated workflows, we&apos;ve saved countless hours of manual effort.&lt;/p&gt;
&lt;p&gt;This backend isn&apos;t just a tool; it&apos;s a foundation for future innovation. Whether it&apos;s real-time delegate tracking, analytics dashboards, or AI-driven insights, MUNDRA is built to evolve.&lt;/p&gt;
&lt;h2&gt;Beyond Code: What MUNDRA Means to Me&lt;/h2&gt;
&lt;p&gt;This project represents more than technical growth-it&apos;s a testament to my ability to take an idea from concept to execution. As the &lt;strong&gt;Joint General Secretary - Tech&lt;/strong&gt;, I didn&apos;t just build a backend; I created a &lt;strong&gt;scalable product&lt;/strong&gt; tailored to real-world needs.&lt;/p&gt;
&lt;p&gt;MUNDRA reflects my passion for leveraging technology to solve problems at scale, and it&apos;s something I&apos;m incredibly proud of.&lt;/p&gt;
&lt;h2&gt;What&apos;s Next?&lt;/h2&gt;
&lt;p&gt;MUNDRA is just getting started. Here&apos;s a glimpse into the roadmap:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Real-Time Communication Tools:&lt;/strong&gt; Instant updates for delegates.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Analytics Dashboards:&lt;/strong&gt; Insights into delegate participation and event performance.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AI-Powered Tools:&lt;/strong&gt; Recommendations for committee assignments and event planning.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Explore MUNDRA&lt;/h2&gt;
&lt;p&gt;Interested in the technical details or want to contribute?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Check out the source code on &lt;a href=&quot;https://github.com/itsjustneo-xo/mundra&quot;&gt;GitHub&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;View the live API documentation at &lt;a href=&quot;https://mundra.nnisarg.in/redoc&quot;&gt;mundra.nnisarg.in/redoc&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Let&apos;s build the future of MUN management together.&lt;/p&gt;
</content:encoded><category>python</category><category>fastapi</category><category>backend</category><category>open-source</category></item><item><title>Dealing With Burnout</title><link>https://nnisarg.in/blog/dealing-with-burnout/</link><guid isPermaLink="true">https://nnisarg.in/blog/dealing-with-burnout/</guid><description>Explore effective strategies to combat burnout and maintain well-being while juggling coursework, coding projects, and part-time jobs as a student developer.</description><pubDate>Tue, 30 Jul 2024 13:20:00 GMT</pubDate><content:encoded>&lt;p&gt;Burnout is a prevalent issue among student developers who juggle coursework, coding projects, and part-time jobs or internships. Addressing burnout early is crucial for maintaining your mental health, academic performance, and passion for coding. Here&apos;s how you can tackle burnout effectively, including integrating traditional methods like pen and paper, alongside tech-centric strategies.&lt;/p&gt;
&lt;h2&gt;Recognize the Signs of Burnout&lt;/h2&gt;
&lt;p&gt;Understanding the signs of burnout is the first step in addressing it. Common symptoms include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Chronic fatigue and difficulty sleeping&lt;/li&gt;
&lt;li&gt;Lack of motivation and decreased performance&lt;/li&gt;
&lt;li&gt;Cynicism or negativity towards your studies or projects&lt;/li&gt;
&lt;li&gt;Physical symptoms like headaches or stomach issues&lt;/li&gt;
&lt;li&gt;Emotional exhaustion and feeling overwhelmed&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If these symptoms sound familiar, it&apos;s important to take them seriously and address the root causes.&lt;/p&gt;
&lt;h2&gt;Set Realistic Goals&lt;/h2&gt;
&lt;p&gt;Unrealistic goals can contribute significantly to burnout. Break down large tasks into smaller, manageable parts, and set achievable deadlines. Track your progress and adjust your goals as needed.&lt;/p&gt;
&lt;h2&gt;Utilize Pen and Paper for Productivity&lt;/h2&gt;
&lt;p&gt;Sometimes, stepping away from screens can help reduce burnout and improve focus:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Task Lists&lt;/strong&gt;: Use a classic notebook or planner to create daily or weekly task lists. Writing things down by hand can enhance focus and help prioritize tasks without the distractions of digital notifications.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Journaling&lt;/strong&gt;: Maintain a productivity journal to track your progress, jot down ideas, or reflect on your workday. This can be a calming ritual and a way to reduce mental clutter. I personally have a pocket dairy that I keep on me at all times. I use it to jot down &apos;tech ideas&apos;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Scheduling&lt;/strong&gt;: Write down your schedule and use it to set your priorities. Place the written schedule on your desk and look at it from time to time and ensure you stick to it.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Reduce Screen Time and Fatigue&lt;/h2&gt;
&lt;p&gt;Reducing screen time can alleviate digital fatigue and contribute to overall well-being:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Scheduled Breaks&lt;/strong&gt;: Use the Pomodoro Technique to balance screen time. Study for 25 minutes and then take a 5-minute break away from screens to stretch or relax.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Screen-Free Time&lt;/strong&gt;: Designate specific times for screen-free activities, such as reading a book, taking a walk, or engaging in a hobby that doesn&apos;t involve screens.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Health Checks&lt;/strong&gt;: Keep a close eye on your sleep, mood, energy levels, and stress levels. This can help you manage burnout and improve your well-being. I have created a script to remind me to drink water every hour - know more about it &lt;a href=&quot;https://www.linkedin.com/posts/nnisarggada_bashscripting-scriptkid-linux-activity-7194757628047060993-1Z7O/&quot;&gt;here&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Seek Support through Online Communities&lt;/h2&gt;
&lt;p&gt;Don&apos;t hesitate to seek support from your peers and the wider developer community:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Developer Forums&lt;/strong&gt;: Engage with &lt;a href=&quot;https://stackoverflow.com/&quot;&gt;Stack Overflow&lt;/a&gt; for technical questions and &lt;a href=&quot;https://www.reddit.com/r/learnprogramming/&quot;&gt;Reddit&apos;s r/learnprogramming&lt;/a&gt; for advice and support from fellow student developers.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Coding Communities&lt;/strong&gt;: Join tech communities on platforms like &lt;a href=&quot;https://github.com/&quot;&gt;GitHub&lt;/a&gt; or &lt;a href=&quot;https://discord.com/&quot;&gt;Discord&lt;/a&gt; where you can collaborate, seek advice, and share experiences with others in similar situations.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Know When to Step Away&lt;/h2&gt;
&lt;p&gt;Sometimes, the best way to manage burnout is to step away from your work. This could mean taking a short break, a mental health day, or reassessing your workload if necessary. A short hiatus can provide the perspective and recharge needed to return to your tasks with renewed energy.&lt;/p&gt;
&lt;p&gt;Burnout is a serious issue that requires proactive management. By recognizing the signs, setting realistic goals, incorporating pen and paper methods, reducing screen time, using tech tools to create boundaries, taking tech-supported breaks, seeking support from online communities, and knowing when to step away, you can effectively deal with burnout and maintain your well-being as a student developer.&lt;/p&gt;
</content:encoded><category>burnout</category><category>developer</category><category>mental-health</category><category>productivity</category></item><item><title>Unlocking the Magic Behind Seamless Streaming: How HLS Transforms Video Delivery</title><link>https://nnisarg.in/blog/magic-behind-video-streaming/</link><guid isPermaLink="true">https://nnisarg.in/blog/magic-behind-video-streaming/</guid><description>Discover how HLS enhances video streaming and my API for effortless video-to-HLS conversion.</description><pubDate>Sun, 23 Jun 2024 13:40:00 GMT</pubDate><content:encoded>&lt;p&gt;Have you ever wondered how platforms like YouTube don&apos;t load entire videos at once, yet still provide a smooth, uninterrupted viewing experience? Or how you can effortlessly switch between different video quality options to suit your internet speed? The secret lies in the technology called HLS (HTTP Live Streaming). In this blog, we&apos;ll explore the wonders of HLS Streams, their various applications, and introduce a powerful API that can convert your videos into HLS Streams effortlessly.&lt;/p&gt;
&lt;h2&gt;The Mystery of Modern Video Streaming&lt;/h2&gt;
&lt;p&gt;When you watch a video on YouTube, you might notice that it doesn&apos;t buffer the entire video in one go. Instead, it streams seamlessly, even as you skip ahead or switch to a different resolution. This magical experience is made possible by HLS, a protocol that chops video files into small segments and delivers them efficiently based on your internet connection and device capabilities.&lt;/p&gt;
&lt;h2&gt;What are HLS Streams?&lt;/h2&gt;
&lt;p&gt;HLS, or HTTP Live Streaming, is a protocol developed by Apple for streaming media over the internet. It divides video content into small chunks and delivers them over HTTP, enabling adaptive bitrate streaming. This means the video quality can automatically adjust based on the viewer&apos;s bandwidth and device performance, ensuring a smooth viewing experience with minimal buffering.&lt;/p&gt;
&lt;p&gt;Key features of HLS include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Adaptive Bitrate Streaming:&lt;/strong&gt; Dynamically adjusts the video quality to match the viewer&apos;s internet speed.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Scalability:&lt;/strong&gt; Uses standard HTTP servers, making it scalable and easy to deploy.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cross-Platform Compatibility:&lt;/strong&gt; Supported on a wide range of devices, including iOS, Android, macOS, Windows, and more.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Where are HLS Streams Used?&lt;/h2&gt;
&lt;p&gt;HLS has become the backbone of modern video streaming, used in various applications, such as:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Live Streaming:&lt;/strong&gt; Ideal for broadcasting live events like sports, concerts, and news, offering low latency and high audience capacity.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Video On Demand (VoD):&lt;/strong&gt; Popular streaming services like Netflix and Hulu use HLS to deliver their extensive libraries of movies and TV shows.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Education:&lt;/strong&gt; Online learning platforms utilize HLS to provide smooth and accessible video lectures and tutorials.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Corporate Communications:&lt;/strong&gt; Companies leverage HLS for live webinars, training sessions, and important announcements.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Introducing EzHLS: Your Video to HLS Conversion API&lt;/h2&gt;
&lt;p&gt;To simplify the process of converting videos to HLS Streams, we&apos;ve developed an API called &lt;a href=&quot;https://hls.nnisarg.in&quot;&gt;EzHLS&lt;/a&gt; that handles all the complexities for you. Our API is designed to seamlessly integrate HLS streaming capabilities into your applications, ensuring high performance and ease of use.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://nnisarg.in/images/blog/ezhls.jpg&quot; alt=&quot;EzHLS (hls.nnisarg.in)&quot;&gt;&lt;/p&gt;
&lt;h3&gt;Features of EzHLS:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Simple Integration:&lt;/strong&gt; User-friendly endpoints for quick and hassle-free integration.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;High Performance:&lt;/strong&gt; Efficient conversion process ensuring minimal latency and high-quality output.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Scalability:&lt;/strong&gt; Capable of handling large volumes of video content, making it perfect for both small and large-scale applications.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Customization:&lt;/strong&gt; Flexible options to tailor the streaming experience to your specific needs.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Self-Hosting:&lt;/strong&gt; Option to self-host the API for greater control and customization.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can find the repository for self-hosting on GitHub: &lt;a href=&quot;https://github.com/itsjustneo-xo/ezhls&quot;&gt;EzHLS Repository&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;By leveraging &lt;strong&gt;EzHLS&lt;/strong&gt;, you can transform your video delivery system, providing your users with the high-quality, seamless streaming experience they expect.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;HLS Streams are the cornerstone of modern video streaming, enabling adaptive, high-quality content delivery across various platforms and devices. With EzHLS, you can effortlessly integrate this powerful technology into your applications, ensuring your audience enjoys smooth, uninterrupted viewing every time. Unlock the magic of HLS today and elevate your video streaming capabilities to the next level.&lt;/p&gt;
</content:encoded><image src="https://nnisarg.in/images/blog/ezhls.jpg"/><category>api</category><category>hls</category><category>webdev</category><category>streaming</category></item><item><title>The Paradox of Popularity: When the Underdog Becomes the Underwhelming</title><link>https://nnisarg.in/blog/paradox-of-popularity/</link><guid isPermaLink="true">https://nnisarg.in/blog/paradox-of-popularity/</guid><description>A brain dump about how good things should be gatekept.</description><pubDate>Fri, 03 May 2024 13:05:00 GMT</pubDate><content:encoded>&lt;p&gt;Have you ever stopped liking a song just because it became popular? There&apos;s a curious phenomenon in the vast landscape of trends and preferences-one that often goes unnoticed until it&apos;s too late. We tend to root for the underdog, championing their cause until they rise to prominence. But what happens when these once-hidden gems gain the spotlight? Do they shine brighter, or do they lose their luster? Let&apos;s delve into this paradox using Linux and music as our guiding examples.&lt;/p&gt;
&lt;h2&gt;The Rise and Regression of Linux&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Linux&quot;&gt;&lt;strong&gt;Linux&lt;/strong&gt;&lt;/a&gt;, the open-source operating system born out of a collaborative spirit, embodies the essence of the underrated turned revered. Initially obscure to the mainstream user, Linux garnered a loyal following among tech enthusiasts and developers. Its customizable nature, robust security, and cost-effectiveness drew praise from those in the know. But as its popularity surged, did Linux maintain its innovative edge?&lt;/p&gt;
&lt;p&gt;One might argue that Linux, in its quest for broader appeal, diluted its core principles. User-friendly interfaces were prioritized over technical prowess, leading to a divergence from its original ethos. With popularity came corporate interests, altering the landscape from a community-driven endeavor to a market-driven one. The once nimble and adaptable Linux ecosystem began to lag behind in certain areas, facing compatibility issues and feature bloat.&lt;/p&gt;
&lt;h2&gt;The Melody of Mainstream Music&lt;/h2&gt;
&lt;p&gt;Turning our attention to the realm of music, a similar narrative unfolds. Consider any of your favorite (underrated) artist that captures hearts with its raw talent and unique sound. As their music gains traction, they attract a larger audience and record label attention. Soon, their once-distinctive style starts to conform to industry norms, losing the very essence that made them special. The allure of mass appeal can transform the soulful into the formulaic, leaving fans nostalgic for the early days of discovery.&lt;/p&gt;
&lt;h2&gt;Reflections and Realizations&lt;/h2&gt;
&lt;p&gt;In pondering these examples, one can&apos;t help but wonder-does popularity inherently lead to a decline in quality? Is there a tipping point where the pursuit of a broader audience sacrifices the essence of what made something exceptional?&lt;/p&gt;
&lt;p&gt;Perhaps the answer lies in the delicate balance between accessibility and authenticity. When the underrated gains popularity, it&apos;s crucial to preserve the elements that made it remarkable in the first place. Innovation, community engagement, and a steadfast commitment to core values can shield against the pitfalls of mainstream success.&lt;/p&gt;
&lt;p&gt;As consumers and advocates, we play a pivotal role in shaping the trajectory of these phenomena. Our choices, support, and feedback serve as guiding forces in ensuring that the underdogs we championed don&apos;t lose their shine amidst the spotlight.&lt;/p&gt;
&lt;p&gt;So, the next time you stumble upon a hidden gem-be it in technology, art, or culture-ask yourself: how can we elevate its visibility without compromising its essence? The answer may just lie in celebrating the underrated while safeguarding its magic from the perils of popularity.&lt;/p&gt;
</content:encoded><category>technology</category><category>thoughts</category><category>general</category><category>linux</category></item><item><title>Unveiling My Digital Arsenal: What I Use</title><link>https://nnisarg.in/blog/what-i-use/</link><guid isPermaLink="true">https://nnisarg.in/blog/what-i-use/</guid><description>Dive into the heart of my tech sanctuary and discover the tools and hardware that fuel my digital endeavors.</description><pubDate>Wed, 28 Feb 2024 13:50:00 GMT</pubDate><content:encoded>&lt;p&gt;Welcome, to my digital sanctuary! In this ever-evolving landscape of technology, I&apos;ve carved out my own niche, a haven where innovation meets productivity, and creativity thrives. Join me on this journey as I peel back the layers of my digital realm, revealing the tools, hardware, and development stack that power my every endeavor.&lt;/p&gt;
&lt;h2&gt;Inside My Workstation:&lt;/h2&gt;
&lt;p&gt;Step into my workspace, where innovation takes flight. Here, &lt;a href=&quot;https://archlinux.org/&quot;&gt;Arch Linux&lt;/a&gt; reigns supreme, providing the solid foundation upon which my digital adventures unfold. Paired with the sleek efficiency of &lt;a href=&quot;https://i3wm.org/&quot;&gt;i3wm&lt;/a&gt;, navigating through tasks feels effortless, like a well-choreographed dance. When it&apos;s time to delve into the intricate world of code, &lt;a href=&quot;https://neovim.io/&quot;&gt;neovim&lt;/a&gt; emerges as my stalwart companion, guiding my fingers through lines of logic and creativity. And for traversing the vast expanses of the internet, I rely on the steadfast companionship of &lt;a href=&quot;https://www.mozilla.org/en-US/firefox/&quot;&gt;Firefox&lt;/a&gt; and &lt;a href=&quot;https://www.google.com/intl/en_in/chrome/&quot;&gt;Google Chrome&lt;/a&gt; (only used while developing websites), guiding me through the digital wilderness with ease.&lt;/p&gt;
&lt;p&gt;If you&apos;re curious about the intricate workings of my workspace, feel free to take a peek at &lt;a href=&quot;https://github.com/itsjustneo-xo/i3-dots&quot;&gt;my i3 configuration&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://nnisarg.in/images/blog/what-i-use.jpg&quot; alt=&quot;My Linux Setup&quot;&gt;&lt;/p&gt;
&lt;h2&gt;Hardware Highlights:&lt;/h2&gt;
&lt;p&gt;Beneath the surface of this digital tapestry lies a robust infrastructure, meticulously crafted to support my every endeavor. At its core, a &lt;a href=&quot;https://www.amd.com/en/products/cpu/amd-ryzen-5-3500x&quot;&gt;AMD Ryzen 5 3500X&lt;/a&gt; CPU, coupled with a &lt;a href=&quot;https://www.nvidia.com/en-us/geforce/graphics-cards/16-series/&quot;&gt;Nvidia GeForce GTX 1660 Super&lt;/a&gt; GPU, form the beating heart of this technological marvel, ensuring smooth sailing whether I&apos;m engaged in intense work or immersive gaming experiences. 16GB of &lt;a href=&quot;https://www.corsair.com/us/en/p/memory/cmk16gx4m2d3200c16/vengeancea-lpx-16gb-2-x-8gb-ddr4-dram-3200mhz-c16-memory-kit-black-cmk16gx4m2d3200c16&quot;&gt;Corsair Vengance LPX 3200MHz DDR4&lt;/a&gt; RAM keeps the gears turning seamlessly, while my &lt;a href=&quot;https://www.viewsonic.com/global/products/lcd/VA2406-MH&quot;&gt;ViewSonic VA2406-MH&lt;/a&gt; monitor delivers crisp visuals that breathe life into every pixel.&lt;/p&gt;
&lt;p&gt;For input, I&apos;ve forged a custom &lt;a href=&quot;https://github.com/foostan/crkbd&quot;&gt;Corne Split Keyboard&lt;/a&gt;, a testament to personalization and ergonomic excellence. When it&apos;s time to envelop myself in the world of sound, I alternate between the &lt;a href=&quot;https://crossbeats.com/products/roar-headphone&quot;&gt;CrossBeats Roar 2.0&lt;/a&gt; for travel and the &lt;a href=&quot;https://www.audio-technica.com/en-eu/ath-m40x&quot;&gt;Audio-Technica ATH M40X&lt;/a&gt; headphones for immersive experiences. And in the realm of communication, the &lt;a href=&quot;https://fifinemicrophone.com/products/fifine-ampligame-usb-microphone&quot;&gt;Fifine Ampligame A6V&lt;/a&gt; mic and &lt;a href=&quot;https://redragon.in/products/hitman-gw800-webcam-with-built-in-dual-microphone&quot;&gt;Redragon Hitman GW800&lt;/a&gt; webcam stand as guardians, ensuring seamless connectivity in a world that thrives on collaboration.&lt;/p&gt;
&lt;p&gt;On the go, my &lt;a href=&quot;https://www.samsung.com/in/smartphones/galaxy-a/galaxy-a23-light-blue-128gb-sm-a235flbtins/&quot;&gt;Samsung Galaxy A23&lt;/a&gt; keeps me tethered to the digital pulse of the world. Also, my old &lt;a href=&quot;https://pcsupport.lenovo.com/us/en/products/laptops-and-netbooks/300-series/330-15ikb-type-81de&quot;&gt;81DE Lenovo ideapad 330-15IKB&lt;/a&gt; laptop is used as a server via &lt;a href=&quot;https://www.cloudflare.com/products/tunnel/&quot;&gt;Cloudflare Tunnels&lt;/a&gt; and it steps up to the plate, ready to provide my coded creations to the world!&lt;/p&gt;
&lt;h2&gt;Development Stack:&lt;/h2&gt;
&lt;p&gt;In the realm of development, I&apos;ve curated a stack that seamlessly blends efficiency with creativity, empowering me to bring my ideas to life with unparalleled finesse. With &lt;a href=&quot;https://astro.build/&quot;&gt;Astro&lt;/a&gt; as my frontend framework, crafting dynamic web experiences becomes a joyous endeavor, with limitless possibilities at my fingertips. &lt;a href=&quot;https://tailwindcss.com/&quot;&gt;TailwindCSS&lt;/a&gt;, complemented by a touch of custom CSS, lends a touch of elegance and flair to my creations, ensuring they captivate and inspire. And when it&apos;s time to delve into the depths of backend development, &lt;a href=&quot;https://flask.palletsprojects.com/&quot;&gt;Flask&lt;/a&gt; and &lt;a href=&quot;https://fastapi.tiangolo.com/&quot;&gt;FastAPI&lt;/a&gt; emerge as the unsung heroes, providing the flexibility and performance necessary to breathe life into my projects.&lt;/p&gt;
&lt;p&gt;That&apos;s but a glimpse into the intricate tapestry of technology that fuels my productivity and creativity. Feel free to explore further or &lt;a href=&quot;mailto:contact@nnisarg.in&quot;&gt;drop me a line&lt;/a&gt; if you&apos;re curious about anything specific!&lt;/p&gt;
</content:encoded><image src="https://nnisarg.in/images/blog/what-i-use.jpg"/><category>tech</category><category>digital</category><category>life</category><category>productivity</category></item><item><title>Organizing My First Hackathon: A Journey of Discovery and Growth</title><link>https://nnisarg.in/blog/organising-my-first-hackathon/</link><guid isPermaLink="true">https://nnisarg.in/blog/organising-my-first-hackathon/</guid><description>How I organized my first hackathon, and what I learned along the way.</description><pubDate>Wed, 20 Dec 2023 13:35:00 GMT</pubDate><content:encoded>&lt;p&gt;Embarking on the journey of organizing my first hackathon - &lt;a href=&quot;https://tark.live&quot;&gt;Debate-a-thon&lt;/a&gt; was an exhilarating experience that taught me invaluable lessons. From initial planning to execution and beyond, the process was a profound learning curve. In this blog, I&apos;ll share the key takeaways and insights gained during this transformative adventure.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://nnisarg.in/images/blog/debate-a-thon.jpg&quot; alt=&quot;Hosting a hackathon&quot;&gt;&lt;/p&gt;
&lt;h2&gt;Collaboration is Key&lt;/h2&gt;
&lt;p&gt;One of the fundamental lessons learned was the importance of collaboration. Working alongside a talented team brought diverse perspectives and skills to the table. The collective effort not only streamlined the organizational process but also fostered an environment of creativity and innovation.&lt;/p&gt;
&lt;h2&gt;Meticulous Planning Pays Off&lt;/h2&gt;
&lt;p&gt;The meticulous planning required for a successful hackathon cannot be overstated. From defining the event structure to coordinating logistics, every detail played a crucial role. Creating a comprehensive timeline, anticipating challenges, and having contingency plans in place ensured a smooth and well-executed event.&lt;/p&gt;
&lt;h2&gt;Embrace the Unexpected&lt;/h2&gt;
&lt;p&gt;No matter how well you plan, unexpected challenges will arise. Embracing these challenges with a flexible mindset and quick problem-solving abilities is essential. Adapting to unforeseen circumstances not only kept the event on track but also provided opportunities for creative solutions.&lt;/p&gt;
&lt;h2&gt;Judges Elevate the Experience&lt;/h2&gt;
&lt;p&gt;The inclusion of esteemed judges added a layer of expertise and credibility to &lt;strong&gt;Debate-a-thon&lt;/strong&gt;. Their insights not only enriched the competition but also provided valuable feedback for participants. Securing knowledgeable and engaged judges is a crucial aspect of hosting a hackathon.&lt;/p&gt;
&lt;h2&gt;Personal Growth and Future Prospects&lt;/h2&gt;
&lt;p&gt;Beyond the organizational aspects, this experience has been personally enriching. The skills acquired extend far beyond the realm of event planning -&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Leadership:&lt;/strong&gt; Orchestrating &lt;strong&gt;Debate-a-thon&lt;/strong&gt; honed my leadership skills, from guiding a team to steering the event towards success, paving the way for future endeavors.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Communication:&lt;/strong&gt; Clear and effective communication was paramount in coordinating a complex event, emphasizing the pivotal role of communication skills in diverse collaborations.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Problem-Solving:&lt;/strong&gt; Tackling unexpected challenges during the hackathon showcased the importance of adaptability and quick problem-solving, skills applicable to a spectrum of real-world scenarios.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The holistic development of these skills extends beyond event planning, shaping a foundation for future innovative ventures. The hackathon has opened doors to new opportunities and collaborations, setting the stage for future innovative ventures.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Organizing my first hackathon was a transformative experience that left an indelible mark on my professional and personal growth. The lessons learned, from collaboration and planning to adaptability and community engagement, are invaluable assets for future endeavors. As I look ahead, I&apos;m eager to apply these insights to create more meaningful and impactful events in the dynamic world of technology and debate. The journey has just begun, and I&apos;m excited to see where it leads.&lt;/p&gt;
</content:encoded><image src="https://nnisarg.in/images/blog/debate-a-thon.jpg"/><category>hackathon</category><category>community</category><category>event</category><category>teamwork</category></item><item><title>Become a CSS God: Simple tips to get better at CSS</title><link>https://nnisarg.in/blog/become-a-css-god/</link><guid isPermaLink="true">https://nnisarg.in/blog/become-a-css-god/</guid><description>A guide on how to write better CSS.</description><pubDate>Mon, 18 Sep 2023 13:45:00 GMT</pubDate><content:encoded>&lt;p&gt;Are you ready to ascend to the ranks of CSS godhood? &lt;strong&gt;CSS (Cascading Style Sheets)&lt;/strong&gt; is a fundamental skill for web development and design, and mastering it can make you feel like a deity in the web development world. Whether you&apos;re a beginner or looking to level up your CSS skills, here are some divine tips to guide your journey.&lt;/p&gt;
&lt;h2&gt;1. &lt;strong&gt;Know CSS Inside and Out&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Before you can become a CSS god, you must first become one with CSS. Even if you use a utility-first CSS framework like &lt;a href=&quot;https://tailwindcss.com/&quot;&gt;TailwindCSS&lt;/a&gt;, it&apos;s crucial to understand the core principles of CSS. Know the properties, values, selectors, and the magic behind the cascade. This knowledge forms the foundation of your godly CSS powers.&lt;/p&gt;
&lt;h2&gt;2. &lt;strong&gt;Box Model Mastery&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;The box model is the divine blueprint of web layout. Understand it completely, from the innermost content to the outermost margin. Delve into properties like &lt;code&gt;width&lt;/code&gt;, &lt;code&gt;height&lt;/code&gt;, &lt;code&gt;padding&lt;/code&gt;, &lt;code&gt;margin&lt;/code&gt;, and &lt;code&gt;border&lt;/code&gt;. Knowing how these properties affect the box model will empower you to craft pixel-perfect designs.&lt;/p&gt;
&lt;h2&gt;3. &lt;strong&gt;Flexbox and Grid Layout&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;flexbox&lt;/code&gt; and &lt;code&gt;grid&lt;/code&gt; are divine gifts to web developers. Master these CSS layout models, and you&apos;ll effortlessly bend web layouts to your will. They can simplify complex layouts and help you achieve responsive designs that shine on any screen.&lt;/p&gt;
&lt;h2&gt;4. &lt;strong&gt;Mobile-First Approach&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Begin your styling journey with the humble mobile device. By starting small, you bite the toad in the morning, ensuring your designs are inherently responsive. This approach not only pleases the gods of user experience but also makes your life easier when scaling up to larger screens.&lt;/p&gt;
&lt;h2&gt;5. &lt;strong&gt;Modular CSS&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Harness the power of modular CSS to keep your codebase organized and maintainable. Break your styles into smaller, reusable components, and follow naming conventions like &lt;strong&gt;BEM (Block, Element, Modifier)&lt;/strong&gt;. Modular CSS allows you to summon styles with ease, like invoking spells in a magical incantation.&lt;/p&gt;
&lt;h2&gt;6. &lt;strong&gt;Practice and Projects&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;The path to godhood is paved with practice. Create small projects, experiment with CSS, and explore its depths. Replicate existing websites to learn different CSS techniques and unravel the mysteries of beautiful web design. With each project, you ascend closer to CSS divinity.&lt;/p&gt;
&lt;p&gt;But wait, there&apos;s more! To truly reach the zenith of CSS mastery, consider these additional factors:&lt;/p&gt;
&lt;h3&gt;- Performance&lt;/h3&gt;
&lt;p&gt;Optimize your CSS for performance. Minimize your stylesheets, use efficient selectors, and optimize images. The faster your web pages load, the more your users will worship your creations.&lt;/p&gt;
&lt;h3&gt;- Accessibility&lt;/h3&gt;
&lt;p&gt;Embrace the divine duty of making the web accessible to all. Use semantic HTML and provide alternative text for images. Test your designs with accessibility tools, ensuring that everyone can access your web creations, regardless of their abilities.&lt;/p&gt;
&lt;p&gt;In your quest to become a CSS god, remember that the journey is just as important as the destination. Embrace the learning process, stay curious, and always seek ways to improve your skills. With dedication and practice, you&apos;ll soon find yourself crafting web experiences worthy of the gods themselves. &lt;em&gt;&lt;strong&gt;May your CSS reign supreme! 🌟✨&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
</content:encoded><category>guide</category><category>css</category><category>webdev</category><category>webdesign</category></item><item><title>&quot;How do I learn to code?&quot; Here&apos;s how:</title><link>https://nnisarg.in/blog/how-do-i-learn-to-code/</link><guid isPermaLink="true">https://nnisarg.in/blog/how-do-i-learn-to-code/</guid><description>A beginner&apos;s guide on how to start learning to code.</description><pubDate>Sun, 10 Sep 2023 14:05:00 GMT</pubDate><content:encoded>&lt;p&gt;So, you&apos;ve decided to dive into the world of coding, but you&apos;re not sure where to begin? That&apos;s perfectly normal. Starting your coding journey can be intimidating, especially if you have little to no prior experience. But fear not! In this blog post, I&apos;m going to guide you through the process of how I would start to learn to code, based on my own experiences and insights.&lt;/p&gt;
&lt;h2&gt;Choosing Your Path&lt;/h2&gt;
&lt;p&gt;The first step in your coding journey is to decide which programming path interests you the most. There are numerous fields in coding, each with its unique charm. Here are some popular ones to consider:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Web Development&lt;/strong&gt;: If you want to create interactive websites and web applications, web development might be your calling. You&apos;ll learn languages like HTML, CSS, JavaScript, and various frameworks like React or Angular.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;App Development&lt;/strong&gt;: If building mobile apps is your dream, then app development is the way to go. You&apos;ll need to choose between iOS (Swift) or Android (Java/Kotlin) development.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Internet of Things (IoT)&lt;/strong&gt;: If you&apos;re fascinated by smart devices and the idea of making everyday objects smarter, IoT is a great choice. You&apos;ll work with hardware and software to create connected devices.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Game Development&lt;/strong&gt;: Gamers might find game development intriguing. You can create your own video games using engines like Unity or Unreal Engine and learn languages like C# or C++.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Data Science&lt;/strong&gt;: If you love data and want to extract insights from it, data science could be your path. You&apos;ll work with languages like Python and tools like TensorFlow or PyTorch.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;My Personal Journey&lt;/h2&gt;
&lt;p&gt;I started my coding journey with web development because the idea of creating websites that anyone could see was incredibly motivating. Your interests might be different, and that&apos;s perfectly fine! The key is to find something that excites you.&lt;/p&gt;
&lt;p&gt;To get started, I relied heavily on YouTube videos. YouTube is an excellent resource for beginners, as it provides step-by-step tutorials and demonstrations. I would recommend watching a couple of videos related to your chosen path to get a sense of how things work.&lt;/p&gt;
&lt;h2&gt;Learn by Doing&lt;/h2&gt;
&lt;p&gt;While watching videos is a great way to grasp the basics, learning to code is a hands-on experience. To truly understand and retain what you&apos;ve learned, I suggest following along with a few projects within your chosen domain. You can find countless project tutorials online that take you through building real-world applications.&lt;/p&gt;
&lt;p&gt;The importance of hands-on practice cannot be stressed enough. Don&apos;t just copy and paste code from tutorials. Take the time to understand each line and experiment with it. Coding is about problem-solving, and you&apos;ll learn best when you encounter and overcome real challenges.&lt;/p&gt;
&lt;h2&gt;Utilize Free Resources&lt;/h2&gt;
&lt;p&gt;One of the most incredible aspects of learning to code is the wealth of free resources available online. You don&apos;t need to spend a fortune on courses or textbooks (unless you want to, of course). Here are some fantastic resources that can help you get started:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://w3schools.com&quot;&gt;W3Schools&lt;/a&gt;&lt;/strong&gt;: W3Schools offers an extensive collection of tutorials and examples for web development technologies like HTML, CSS, JavaScript, and more. It&apos;s an excellent resource for beginners to learn the fundamentals.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://geeksforgeeks.org&quot;&gt;GeeksforGeeks&lt;/a&gt;&lt;/strong&gt;: GeeksforGeeks provides a wide range of tutorials and articles on programming, data structures, algorithms, and more. It&apos;s a valuable resource for improving your coding skills and understanding complex concepts.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://youtube.com&quot;&gt;YouTube Videos&lt;/a&gt;&lt;/strong&gt;: YouTube is a treasure trove of coding tutorials. Many passionate educators create video content covering various programming topics. Find channels that align with your interests and learning style.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Additionally, platforms like &lt;a href=&quot;https://github.com&quot;&gt;GitHub&lt;/a&gt; provide a space to access open-source projects and collaborate with others. GitHub is not only a code repository but also a vibrant community where you can learn from experienced developers, contribute to projects, and showcase your own work. If you&apos;re curious, feel free to check out &lt;a href=&quot;https://github.com/itsjustneo-xo&quot;&gt;my GitHub profile&lt;/a&gt; to see some of my own coding projects and contributions. It&apos;s a great way to get inspired and connect with fellow developers in the community.&lt;/p&gt;
&lt;p&gt;These resources are not only free but also highly accessible and can be incredibly beneficial as you embark on your coding journey.&lt;/p&gt;
&lt;h2&gt;Document Your Journey&lt;/h2&gt;
&lt;p&gt;As you progress in your coding journey, it&apos;s crucial to document your work and projects. Even if your projects seem simple, they are a testament to your growth as a programmer. Documenting your work helps you keep track of your progress and can serve as a portfolio for future job opportunities.&lt;/p&gt;
&lt;p&gt;Furthermore, sharing your work with the world, whether through blog posts, social media, or open-source contributions, is a great way to motivate yourself and inspire others. It also opens doors to receive feedback and learn from the coding community.&lt;/p&gt;
&lt;p&gt;In conclusion, learning to code is an exciting journey filled with opportunities for creativity and problem-solving. Start by choosing a path that resonates with you, leverage free resources, practice what you learn by working on projects, and document your progress. Remember that the key to success is persistence and a genuine passion for coding. So, take that first step and embark on your coding adventure! Happy coding!&lt;/p&gt;
</content:encoded><category>coding</category><category>guide</category><category>webdev</category><category>programming</category></item></channel></rss>