<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Nitish</title>
    <description>The latest articles on Forem by Nitish (@nk2552003).</description>
    <link>https://forem.com/nk2552003</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3399338%2Fa1aea1f8-46cd-4f46-bc0a-fe180888eef4.png</url>
      <title>Forem: Nitish</title>
      <link>https://forem.com/nk2552003</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/nk2552003"/>
    <language>en</language>
    <item>
      <title>GitHub Suspended Me. Turns Out, That Was Fine</title>
      <dc:creator>Nitish</dc:creator>
      <pubDate>Mon, 27 Apr 2026 16:51:17 +0000</pubDate>
      <link>https://forem.com/nk2552003/github-suspended-me-turns-out-that-was-fine-3ba5</link>
      <guid>https://forem.com/nk2552003/github-suspended-me-turns-out-that-was-fine-3ba5</guid>
      <description>&lt;p&gt;Okay so I've been putting off writing this post for weeks because honestly I wasn't sure how much I wanted to share. But enough people have asked what happened with Ultimate Media Downloader that I figure I owe everyone an explanation. Fair warning: this is long. Make a coffee.&lt;/p&gt;

&lt;p&gt;Late March 2026. Everything was normal. I was pushing updates, answering issues, doing the usual open-source maintainer thing. Nothing felt off. I had notifications from GitHub, I was working on a fix for a bug that had been annoying me for days, and life was... fine, you know? Boring good. The kind of good you don't appreciate until it's gone.&lt;/p&gt;

&lt;p&gt;Then GitHub suspended my account.&lt;/p&gt;

&lt;h2&gt;
  
  
  Day One: The Screen That Broke My Brain
&lt;/h2&gt;

&lt;p&gt;I'm not going to pretend I handled it gracefully. I did not. &lt;/p&gt;

&lt;p&gt;I opened GitHub to push a commit and got the suspension screen. My brain kind of just... stopped for a second. I reread it three times thinking I was somehow misreading it. I wasn't.&lt;/p&gt;

&lt;p&gt;The reason they gave was vague. Something about policy violations and suspicious activity. I genuinely had no idea what I'd done. I mean — I host a media downloader. I've always known that sits in a gray area. But I wasn't the first person to do this, and there are way bigger projects doing the exact same thing still sitting on GitHub right now, so I figured I'd just... appeal it and it'd get sorted.&lt;/p&gt;

&lt;p&gt;Reader, it did not get sorted quickly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Shouting Into the GitHub Support Void
&lt;/h2&gt;

&lt;p&gt;Have you ever submitted an appeal to a large tech platform? It's a specific kind of miserable. You write this really thoughtful, detailed explanation. You cite examples. You reference other projects. You basically build a legal case for why your account should be reinstated. And then you get back an email that reads like it was written by someone who definitely did not read your email.&lt;/p&gt;

&lt;p&gt;That was my week two.&lt;/p&gt;

&lt;p&gt;I sent multiple follow-ups. I explained that the software is a tool and that tools don't have intent. I pointed out YouTube-DL, which does functionally the same thing and had its own GitHub drama a few years back. Nothing landed. Or if it did, nobody told me.&lt;/p&gt;

&lt;p&gt;What made it worse — and this is the part that kept me up at night — is that I had users. Real people relying on auto-updates that pulled from GitHub releases. My version checker hit the GitHub API. Everything was tangled up with my account. And I was locked out.&lt;/p&gt;

&lt;p&gt;By about day ten I stopped waiting and started planning.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Backwards Move That Actually Worked
&lt;/h2&gt;

&lt;p&gt;I'm skipping over some of the specifics here because honestly they're boring and a bit embarrassing. But the short version is: I managed to get temporary access to the repo through some recovery options I'd forgotten I'd set up years ago. &lt;/p&gt;

&lt;p&gt;My first instinct when I got in was to back everything up. And then I made what felt like a weird call at the time: I made the repository private.&lt;/p&gt;

&lt;p&gt;I know that sounds backwards. "Your project is already invisible because your account is suspended, why would you make it more invisible?" But my thinking was — if GitHub sees a popular public repo suddenly go private, maybe they interpret that as me taking security concerns seriously rather than being a bad actor. It was a gamble.&lt;/p&gt;

&lt;p&gt;Turns out it kind of worked? I started getting slightly less robotic responses from their support team. Something shifted. I don't know exactly what, and I'm not going to pretend I do.&lt;/p&gt;

&lt;h2&gt;
  
  
  Back In, But Not Really Welcome
&lt;/h2&gt;

&lt;p&gt;They reinstated the account. With conditions attached. Basically: the main repo for Ultimate Media Downloader couldn't stay as-is. Too "potentially problematic." That was their phrase, not mine.&lt;/p&gt;

&lt;p&gt;So I was back. But it didn't feel like a win. It felt like being let back into a party where the host is clearly not happy you're there. You're standing by the snack table and every few minutes someone glances at you and you're like — yeah I know, I know.&lt;/p&gt;

&lt;p&gt;That was the moment I actually started taking Codeberg seriously.&lt;/p&gt;

&lt;h2&gt;
  
  
  Fine. Let's Try This Codeberg Thing.
&lt;/h2&gt;

&lt;p&gt;I'd known Codeberg existed for a while. I'd seen it mentioned in open-source forums and had vaguely filed it away as "GitHub but smaller and European." Never felt urgent enough to actually explore.&lt;/p&gt;

&lt;p&gt;Now it felt urgent.&lt;/p&gt;

&lt;p&gt;I spent a day on the platform just clicking around. And the first thing I noticed was how — I don't know how to say this without sounding cheesy — how genuine it felt? There's no AI assistant trying to summarize your commits. No featured marketplace pushing you to buy things. No weird enterprise upsell banners. It's just a git hosting platform run by a non-profit that actually believes in what it's doing.&lt;/p&gt;

&lt;p&gt;That shouldn't be a revelation. But after the GitHub experience it kind of was.&lt;/p&gt;

&lt;p&gt;The other thing I noticed: nobody there was going to suspend my account for hosting a media tool. Because they actually care about software freedom. Not performatively — actually.&lt;/p&gt;

&lt;p&gt;By end of week four I'd made up my mind.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Actual Migration
&lt;/h2&gt;

&lt;p&gt;This part is less dramatic than the rest of the story. Migrations are mostly just tedious, not traumatic.&lt;/p&gt;

&lt;p&gt;I updated the README. Changed the clone URLs. Updated the version checker endpoint from GitHub's API to Codeberg's. Went through the contributing docs, the code of conduct, the issue templates — every file that had a github.com link in it. Found more than I expected. One of them was buried in a comment inside a Python file that I'd written like two years ago and completely forgot about. That took a minute.&lt;/p&gt;

&lt;p&gt;Total time: maybe a day and a half, spread over two days because I kept getting distracted.&lt;/p&gt;

&lt;p&gt;The harder part was more psychological. I'd been on GitHub for years. All my institutional memory of "where things live" pointed there. Switching platforms meant rewriting some mental muscle memory, which sounds small but isn't.&lt;/p&gt;

&lt;p&gt;But once it was done? I felt weirdly relieved.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where We're At Now
&lt;/h2&gt;

&lt;p&gt;It's late April. The project lives on Codeberg now. Everything works. Updates go out, the version checker works, people are downloading things just fine.&lt;/p&gt;

&lt;p&gt;The Codeberg community is smaller. That's real. Fewer people stumble across your project because there's no algorithm surfacing it. But the people who do find it seem more... intentional? Like they were looking for something specific rather than just scrolling. I've had better issue reports in the last few weeks than I used to get in a month.&lt;/p&gt;

&lt;p&gt;I still have my GitHub account. I'm using it mostly to mirror things over there, just so people who bookmarked old URLs don't hit dead ends. But I'm not building anything like that there anymore.&lt;/p&gt;

&lt;p&gt;But still using the githb to showcase my previous successful project and more. because i don't want to sart over all of it again.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Actual Takeaway
&lt;/h2&gt;

&lt;p&gt;I don't want to wrap this up with some neat lesson because the experience wasn't neat.&lt;/p&gt;

&lt;p&gt;It was stressful. I was anxious for basically a month straight. I sent emails to GitHub support that I now find slightly embarrassing in retrospect. I lost sleep. My project went dark for a stretch of time and I couldn't even tell users why because I didn't fully understand why myself.&lt;/p&gt;

&lt;p&gt;But — and I mean this — I wouldn't have moved to Codeberg if it hadn't happened. I was too comfortable. Sometimes that's what it takes.&lt;/p&gt;

&lt;p&gt;If you're one of the users who noticed things were broken and didn't get an explanation at the time: I'm sorry. That sucked and you deserved better communication from me. I was in reactive mode and honestly just trying to keep the thing alive.&lt;/p&gt;

&lt;p&gt;It's alive. It's on Codeberg. Come find it there.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;One more thing&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I still have like four documentation files somewhere that probably have a github.com URL hiding in them. I'll find them eventually. If you spot one before I do, open an issue. On Codeberg, obviously.&lt;/p&gt;

&lt;p&gt;— NK2552003 &lt;/p&gt;

&lt;p&gt;Writing from my home office which is definitely a real office and not just my bed with a laptop&lt;/p&gt;

&lt;p&gt;&lt;a href="https://codeberg.org/nk2552003/umd" rel="noopener noreferrer"&gt;Codeberg &amp;gt; UMD&lt;/a&gt;&lt;br&gt;
&lt;a href="https://codeberg.org/nk2552003" rel="noopener noreferrer"&gt;Github&lt;/a&gt;&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>git</category>
      <category>codeberg</category>
      <category>learning</category>
    </item>
    <item>
      <title>PasteShield - an Extension that can save you from deploying the secrets</title>
      <dc:creator>Nitish</dc:creator>
      <pubDate>Sat, 25 Apr 2026 06:04:05 +0000</pubDate>
      <link>https://forem.com/nk2552003/pasteshield-an-extension-that-can-save-you-from-deploying-the-secrets-422h</link>
      <guid>https://forem.com/nk2552003/pasteshield-an-extension-that-can-save-you-from-deploying-the-secrets-422h</guid>
      <description>&lt;h1&gt;
  
  
  You've done this. Don't lie. 😅
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# "just for testing, I'll remove it later"&lt;/span&gt;
const API_KEY &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"sk-prod-abc123supersecretdonotcommit"&lt;/span&gt;

git add &lt;span class="nb"&gt;.&lt;/span&gt;
git commit &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"fix stuff"&lt;/span&gt;
git push
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;em&gt;3 minutes later:&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;GitHub Secret Scanning Alert:&lt;/strong&gt; We found a secret in your repo...&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Yeah. We've all been there.&lt;/p&gt;


&lt;h2&gt;
  
  
  Meet PasteShield
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;PasteShield&lt;/strong&gt; is a VS Code extension that watches your clipboard like a hawk. Every time you hit &lt;code&gt;Ctrl+V&lt;/code&gt;, it scans the content &lt;em&gt;before&lt;/em&gt; it lands in your file.&lt;/p&gt;

&lt;p&gt;Think of it as a bouncer at the door of your codebase.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;No cloud. No subscription. No telemetry. 100% offline. Free forever.&lt;/p&gt;
&lt;/blockquote&gt;


&lt;h2&gt;
  
  
  See it in action
&lt;/h2&gt;

&lt;p&gt;You paste an API key → PasteShield goes "hold on bestie" →&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fsidkr222003%2Fpasteshield%2Fmain%2Fresources%2Fdemo.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fsidkr222003%2Fpasteshield%2Fmain%2Fresources%2Fdemo.gif" alt="PasteShield catching a secret mid-paste" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Three choices. Zero drama:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Cancel&lt;/strong&gt; — yeah don't do that&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Show Details&lt;/strong&gt; — tell me more&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Paste Anyway&lt;/strong&gt; — I know what I'm doing (do you though)&lt;/li&gt;
&lt;/ul&gt;

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


&lt;h2&gt;
  
  
  Also catches stuff already in your file
&lt;/h2&gt;

&lt;p&gt;It doesn't just guard the door — it also checks if anything sketchy &lt;em&gt;already&lt;/em&gt; got in, via CodeLens annotations right above the suspicious line:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fakgc2wjgu5v5cnf50vr9.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fakgc2wjgu5v5cnf50vr9.gif" alt="CodeLens warnings inline in VS Code" width="400" height="85"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;No hunting through files. The warning is &lt;em&gt;right there&lt;/em&gt;, above the guilty line.&lt;/p&gt;


&lt;h2&gt;
  
  
  What does it catch? Everything, basicall
&lt;/h2&gt;

&lt;p&gt;~200 patterns. 25+ categories. Scanned in &lt;strong&gt;under 50ms&lt;/strong&gt;.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Vibe&lt;/th&gt;
&lt;th&gt;Examples caught&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;AI keys&lt;/td&gt;
&lt;td&gt;OpenAI, Anthropic, Gemini, Groq, DeepSeek, xAI...&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cloud creds&lt;/td&gt;
&lt;td&gt;AWS, GCP, Azure — all the big ones&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Payment secrets&lt;/td&gt;
&lt;td&gt;Stripe, Razorpay, PayPal, Square&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DB connections&lt;/td&gt;
&lt;td&gt;MongoDB, Postgres, Supabase, Redis&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Auth tokens&lt;/td&gt;
&lt;td&gt;GitHub PAT, JWT, Slack, Discord&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PII&lt;/td&gt;
&lt;td&gt;SSNs, credit cards, Aadhaar, PAN, IBAN&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Unsafe code&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;eval()&lt;/code&gt;, &lt;code&gt;innerHTML&lt;/code&gt;, SQL injection patterns&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;...and 18 more&lt;/td&gt;
&lt;td&gt;Mobile/IoT, Maps, CDN, Crypto, Web3&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Too loud? Tune the noise level:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="nl"&gt;"pasteShield.minimumSeverity"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"high"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;critical&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;high&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;medium&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;(default)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;low&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Not ready to be blocked? Try silent mode 🤫
&lt;/h2&gt;

&lt;p&gt;New in v1.7 — silent mode logs everything to the sidebar &lt;em&gt;without&lt;/em&gt; interrupting your paste.&lt;/p&gt;

&lt;p&gt;Perfect if you're the type who wants data before commitment (reasonable, honestly).&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="nl"&gt;"pasteShield.silentMode"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;See the full history in the sidebar, export it as JSON, sleep better at night.&lt;/p&gt;


&lt;h2&gt;
  
  
  For teams
&lt;/h2&gt;

&lt;p&gt;Drop a &lt;code&gt;.pasteshield-policy.json&lt;/code&gt; in your repo (or host it at a URL) and your whole team gets the same rules automatically.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"template"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"strict"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"rules"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"block_pattern"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"pattern"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"openai-api-key"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"audit_logging"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"enabled"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;One update → everyone's protected. No Slack message needed.&lt;/p&gt;


&lt;h2&gt;
  
  
  Where it stores your secrets
&lt;/h2&gt;

&lt;p&gt;v1.7 upgraded this significantly. Credentials go into your &lt;strong&gt;OS keychain&lt;/strong&gt; — Windows Credential Manager, macOS Keychain, Linux libsecret — via VS Code's native &lt;code&gt;SecretStorage&lt;/code&gt; API.&lt;/p&gt;

&lt;p&gt;Nothing in &lt;code&gt;settings.json&lt;/code&gt;. Nothing in plaintext. Nothing in the cloud.&lt;/p&gt;

&lt;p&gt;And if you actually &lt;em&gt;want&lt;/em&gt; to store detected secrets properly, it integrates with:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;HashiCorp Vault · AWS Secrets Manager · Azure Key Vault · Google Secret Manager&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;All from inside VS Code. No tab switching.&lt;/p&gt;


&lt;h2&gt;
  
  
  vs Gitleaks / git-secrets
&lt;/h2&gt;

&lt;p&gt;Not a competition — they're complementary:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;You type/paste  →  [PasteShield catches it here] ← THIS
      ↓
You commit      →  [Gitleaks / git-secrets catch it here]
      ↓
You push        →  [GitHub Secret Scanning catches it here]
      ↓
Production      →  [Too late]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;PasteShield is your &lt;strong&gt;first&lt;/strong&gt; line of defense. Use all of them.&lt;/p&gt;


&lt;h2&gt;
  
  
  Install in 10 seconds
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Option 1:&lt;/strong&gt; VS Code Marketplace → search &lt;code&gt;PasteShield&lt;/code&gt; → Install&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Option 2:&lt;/strong&gt; Quick Open (&lt;code&gt;Ctrl+P&lt;/code&gt;) and paste:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ext install NK2552003.pasteshield
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;That's it. It starts working immediately. No config needed.&lt;/p&gt;


&lt;h2&gt;
  
  
  What's coming
&lt;/h2&gt;

&lt;p&gt;The roadmap is genuinely exciting:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;ML-based false-positive reduction&lt;/strong&gt; — smarter, fewer annoying alerts&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CLI version&lt;/strong&gt; — run it in CI/CD pipelines&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SARIF output&lt;/strong&gt; — plug into GitHub Advanced Security&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Auto secret rotation&lt;/strong&gt; via provider APIs&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Community pattern marketplace&lt;/strong&gt; — share and import rulesets&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;You paste something sketchy → PasteShield yells at you → you don't get fired → 🎉&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Free. Offline. 200+ patterns. Works in under 50ms.&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/sidkr222003" rel="noopener noreferrer"&gt;
        sidkr222003
      &lt;/a&gt; / &lt;a href="https://github.com/sidkr222003/PasteShield" rel="noopener noreferrer"&gt;
        PasteShield
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      PasteShield intercepts every paste (`Ctrl+V` / `Cmd+V`) in the editor and scans the clipboard content for dangerous patterns — API keys, hardcoded passwords, unsafe JavaScript, prototype pollution, and more — before the text ever reaches your file.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div&gt;
&lt;a rel="noopener noreferrer" href="https://github.com/sidkr222003/PasteShield/resources/icon.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fsidkr222003%2FPasteShield%2FHEAD%2Fresources%2Ficon.png" alt="PasteShield Logo" width="128" height="128"&gt;&lt;/a&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;PasteShield&lt;/h1&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Intercepts secrets before they land in your file — ~200 patterns, 100% offline.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=NK2552003.pasteshield" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/193940236e8e05cfdf83aa32a701f858e3ec36de214860dd144d5f83112874cd/68747470733a2f2f696d672e736869656c64732e696f2f76697375616c2d73747564696f2d6d61726b6574706c6163652f762f4e4b323535323030332e7061737465736869656c643f636f6c6f723d323536336562266c6162656c3d76657273696f6e267374796c653d666c61742d737175617265" alt="Version"&gt;&lt;/a&gt;
&lt;a href="https://marketplace.visualstudio.com/items?itemName=NK2552003.pasteshield" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/125cc52af1806fe41a1d3ab655802cfac27027f82ecb525a62558dcb637ec445/68747470733a2f2f696d672e736869656c64732e696f2f76697375616c2d73747564696f2d6d61726b6574706c6163652f692f4e4b323535323030332e7061737465736869656c643f636f6c6f723d323263353565267374796c653d666c61742d737175617265" alt="Installs"&gt;&lt;/a&gt;
&lt;a href="https://github.com/sidkr222003/PasteShield/LICENSE" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/e761be46171a7c2654382b23b1a73b45a136cdeaa1ea47b5a9e588b362719d34/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f7369646b723232323030332f7061737465736869656c643f7374796c653d666c61742d737175617265" alt="License"&gt;&lt;/a&gt;
&lt;a href="https://code.visualstudio.com" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/9ecdd3fe57ea32c09a6e18deda621571ece836d2fd934035025e2ea5211d419d/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5653253230436f64652d253545312e39332e302d3030374143433f7374796c653d666c61742d737175617265266c6f676f3d76697375616c73747564696f636f6465" alt="VS Code"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Overview&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;PasteShield intercepts every paste (&lt;code&gt;Ctrl+V&lt;/code&gt; / &lt;code&gt;Cmd+V&lt;/code&gt;) in the editor and scans the clipboard content for dangerous patterns — API keys, hardcoded passwords, unsafe JavaScript, prototype pollution, and more — before the text ever reaches your file.&lt;/p&gt;
&lt;div&gt;
  &lt;a rel="noopener noreferrer nofollow" href="https://raw.githubusercontent.com/sidkr222003/pasteshield/main/resources/demo.gif"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fsidkr222003%2Fpasteshield%2Fmain%2Fresources%2Fdemo.gif" alt="PasteShield paste interception demo" width="700"&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;It works entirely offline, using a high-performance regex engine that evaluates &lt;strong&gt;~200 pre-compiled patterns&lt;/strong&gt; across &lt;strong&gt;25+ categories&lt;/strong&gt; in under 50 ms. Detected threats are surfaced through inline warnings, CodeLens annotations, a persistent history sidebar, and an ASCII statistics dashboard.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Why PasteShield vs Gitleaks?&lt;/h3&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Gitleaks catches what's in your repo. PasteShield catches what never should have been.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;These tools are complementary, not competing:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Gitleaks&lt;/strong&gt;: Scans existing git repositories for leaked secrets (post-commit detection)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PasteShield&lt;/strong&gt;: Intercepts secrets at paste time, before they ever touch your filesystem (pre-commit prevention)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Use both for defense-in-depth: PasteShield as your first…&lt;/p&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/sidkr222003/PasteShield" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;





&lt;p&gt;&lt;em&gt;Built by Sid Kr. (NK2552003). MIT licensed. No VC funding, no upsell, no BS.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/sidkr222003/PasteShield" rel="noopener noreferrer"&gt;GITHUB&lt;/a&gt;&lt;br&gt;
&lt;a href="https://marketplace.visualstudio.com/items?itemName=NK2552003.pasteshield" rel="noopener noreferrer"&gt;MARKETPLACE VSCODE&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Drop a ⭐ on GitHub if this saved your job once. Or twice.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>vscode</category>
      <category>security</category>
      <category>devtools</category>
      <category>opensource</category>
    </item>
    <item>
      <title>The Quiet Files That Make a Website Trustworthy</title>
      <dc:creator>Nitish</dc:creator>
      <pubDate>Mon, 20 Apr 2026 15:59:35 +0000</pubDate>
      <link>https://forem.com/nk2552003/the-quiet-files-that-make-a-website-trustworthy-nn0</link>
      <guid>https://forem.com/nk2552003/the-quiet-files-that-make-a-website-trustworthy-nn0</guid>
      <description>&lt;p&gt;I used to think a website was only about visible things: pages, animations, speed, and "wow" UI.&lt;/p&gt;

&lt;p&gt;Then one day, after deploying my portfolio, a scanner flagged something tiny:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"security.txt not configured."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;At first, I ignored it.&lt;/p&gt;

&lt;p&gt;But that one warning sent me down a rabbit hole, and I learned something important:&lt;/p&gt;

&lt;p&gt;Some of the most important website files are the ones users never see.&lt;/p&gt;

&lt;p&gt;They are quiet, but they build trust, improve security, and help search engines understand your site.&lt;/p&gt;

&lt;p&gt;In this post, I will explain these files in a simple way:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;.well-known&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;security.txt&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;pgp-key.txt&lt;/code&gt; (your GPG public key)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;robots.txt&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sitemap.xml&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you are a beginner, this is for you.&lt;/p&gt;

&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;p&gt;If your website is public, these files should exist:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;/.well-known/security.txt&lt;/code&gt;: how to report vulnerabilities.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/.well-known/pgp-key.txt&lt;/code&gt;: your public encryption key for sensitive reports.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/robots.txt&lt;/code&gt;: crawler guidance.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/sitemap.xml&lt;/code&gt;: map of your public URLs.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Together, they make your site easier to trust, crawl, and maintain.&lt;/p&gt;

&lt;h2&gt;
  
  
  Imagine Your Website as a City
&lt;/h2&gt;

&lt;p&gt;Your homepage is the city center.&lt;/p&gt;

&lt;p&gt;Your projects page is the museum.&lt;/p&gt;

&lt;p&gt;Your contact page is city hall.&lt;/p&gt;

&lt;p&gt;Now imagine visitors are not only humans.&lt;/p&gt;

&lt;p&gt;Some are bots, crawlers, and security researchers.&lt;/p&gt;

&lt;p&gt;How do they know:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Where to report a vulnerability?&lt;/li&gt;
&lt;li&gt;Whether encrypted contact is available?&lt;/li&gt;
&lt;li&gt;What pages they should crawl?&lt;/li&gt;
&lt;li&gt;Where your important pages are listed?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That is where these files help:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;.well-known/&lt;/code&gt; (a standard place for machine-readable files).&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;security.txt&lt;/code&gt; (how to report vulnerabilities).&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;pgp-key.txt&lt;/code&gt; (how to send encrypted security reports).&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;robots.txt&lt;/code&gt; (crawler guidance).&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;sitemap.xml&lt;/code&gt; (map of your public pages).&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  1. &lt;code&gt;.well-known&lt;/code&gt;: The Official Notice Board
&lt;/h2&gt;

&lt;p&gt;Think of &lt;code&gt;.well-known&lt;/code&gt; as your website's official notice board for machines.&lt;/p&gt;

&lt;p&gt;It is a standards-based location where tools expect to find important metadata.&lt;/p&gt;

&lt;p&gt;Example paths:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;https://yourdomain.com/.well-known/security.txt&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;https://yourdomain.com/.well-known/pgp-key.txt&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Why It Matters
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Security scanners check this location first.&lt;/li&gt;
&lt;li&gt;Automation tools trust standard paths.&lt;/li&gt;
&lt;li&gt;It reduces confusion and makes your site look professional.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Quick Tip
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Keep these files simple text.&lt;/li&gt;
&lt;li&gt;Keep the URL stable.&lt;/li&gt;
&lt;li&gt;Avoid moving them around once published.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  2. &lt;code&gt;security.txt&lt;/code&gt;: "If You Find a Bug, Contact Me Here"
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;security.txt&lt;/code&gt; is like a public help desk for security researchers.&lt;/p&gt;

&lt;p&gt;If someone finds a vulnerability, they should not have to guess where to report it.&lt;/p&gt;

&lt;p&gt;A practical &lt;code&gt;security.txt&lt;/code&gt; can look like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Contact: mailto:security@yourdomain.com
Contact: https://yourdomain.com/contact
Encryption: https://yourdomain.com/.well-known/pgp-key.txt
Acknowledgments: https://yourdomain.com/security/thanks
Policy: https://yourdomain.com/contact
Canonical: https://yourdomain.com/.well-known/security.txt
Expires: 2027-04-20T00:00:00.000Z
Preferred-Languages: en
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  What Each Line Means
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;Contact&lt;/code&gt;: where someone can report a vulnerability&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Encryption&lt;/code&gt;: where your public key is published&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Acknowledgments&lt;/code&gt;: page where you thank valid reporters&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Policy&lt;/code&gt;: your disclosure policy or contact workflow&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Canonical&lt;/code&gt;: the official URL of this file&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Expires&lt;/code&gt;: validity date (update this before expiry)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Preferred-Languages&lt;/code&gt;: language preference for reports&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Why It Matters
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Encourages responsible disclosure.&lt;/li&gt;
&lt;li&gt;Helps researchers report safely and quickly.&lt;/li&gt;
&lt;li&gt;Improves trust signals for audits and security checks.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Common Mistakes
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Expired &lt;code&gt;Expires&lt;/code&gt; date&lt;/li&gt;
&lt;li&gt;Broken &lt;code&gt;Encryption&lt;/code&gt; URL&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Contact&lt;/code&gt; pointing to a dead inbox&lt;/li&gt;
&lt;li&gt;Publishing this file but never checking reports&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  3. &lt;code&gt;pgp-key.txt&lt;/code&gt; (Many People Call It a GPG Key): Your Locked Mailbox
&lt;/h2&gt;

&lt;p&gt;When a vulnerability is sensitive, researchers may want encrypted communication.&lt;/p&gt;

&lt;p&gt;That is where your public PGP key comes in.&lt;/p&gt;

&lt;p&gt;You publish your public key (usually ASCII-armored) at:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;https://yourdomain.com/.well-known/pgp-key.txt&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;-----BEGIN PGP PUBLIC KEY BLOCK-----
...
-----END PGP PUBLIC KEY BLOCK-----
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  How to Generate and Publish Quickly
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;gpg &lt;span class="nt"&gt;--full-generate-key&lt;/span&gt;
gpg &lt;span class="nt"&gt;--armor&lt;/span&gt; &lt;span class="nt"&gt;--export&lt;/span&gt; you@yourdomain.com &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; public/.well-known/pgp-key.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Important Notes
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;This file should contain only your public key block.&lt;/li&gt;
&lt;li&gt;Keep your private key secret.&lt;/li&gt;
&lt;li&gt;Reference this file from &lt;code&gt;security.txt&lt;/code&gt; using the &lt;code&gt;Encryption:&lt;/code&gt; field.&lt;/li&gt;
&lt;li&gt;If you rotate keys, update this file and &lt;code&gt;security.txt&lt;/code&gt; immediately.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Why It Matters
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Enables safe disclosure for high-impact findings.&lt;/li&gt;
&lt;li&gt;Shows your project takes security seriously.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  4. &lt;code&gt;robots.txt&lt;/code&gt;: Traffic Signs for Crawlers
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;robots.txt&lt;/code&gt; is the rule board for bots.&lt;/p&gt;

&lt;p&gt;It does not secure private data, but it tells compliant crawlers what they should and should not crawl.&lt;/p&gt;

&lt;p&gt;Simple example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User-agent: *
Allow: /

Sitemap: https://yourdomain.com/sitemap.xml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can also block internal routes if needed:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User-agent: *
Disallow: /admin/
Disallow: /private/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Why It Matters
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Helps crawl efficiency.&lt;/li&gt;
&lt;li&gt;Prevents unnecessary crawling of irrelevant areas.&lt;/li&gt;
&lt;li&gt;Connects crawlers to your sitemap.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Important Reminder
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;robots.txt&lt;/code&gt; is not access control.&lt;/li&gt;
&lt;li&gt;Do not rely on it to protect private data.&lt;/li&gt;
&lt;li&gt;Use real auth and server-side protection for sensitive routes.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  5. &lt;code&gt;sitemap.xml&lt;/code&gt;: Your SEO Map
&lt;/h2&gt;

&lt;p&gt;If &lt;code&gt;robots.txt&lt;/code&gt; is traffic signs, &lt;code&gt;sitemap.xml&lt;/code&gt; is the city map.&lt;/p&gt;

&lt;p&gt;It tells search engines what pages exist and how often they may change.&lt;/p&gt;

&lt;p&gt;Example entry:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight xml"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;url&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;loc&amp;gt;&lt;/span&gt;https://yourdomain.com/projects&lt;span class="nt"&gt;&amp;lt;/loc&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;changefreq&amp;gt;&lt;/span&gt;monthly&lt;span class="nt"&gt;&amp;lt;/changefreq&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;priority&amp;gt;&lt;/span&gt;0.8&lt;span class="nt"&gt;&amp;lt;/priority&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/url&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Why It Matters
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Faster discovery of pages.&lt;/li&gt;
&lt;li&gt;Better indexing consistency.&lt;/li&gt;
&lt;li&gt;Cleaner SEO foundation.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  What to Keep in Mind
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Include only canonical, public URLs.&lt;/li&gt;
&lt;li&gt;Keep it updated after route changes.&lt;/li&gt;
&lt;li&gt;Add new pages like &lt;code&gt;/security/thanks&lt;/code&gt; when relevant.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How these files work together
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;.well-known&lt;/code&gt; gives a standard location.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;security.txt&lt;/code&gt; gives a reporting workflow.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;pgp-key.txt&lt;/code&gt; gives confidential communication.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;robots.txt&lt;/code&gt; gives crawler guidance.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;sitemap.xml&lt;/code&gt; gives URL discovery.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Together, they quietly improve trust, security, and discoverability.&lt;/p&gt;

&lt;h2&gt;
  
  
  A short real-world flow
&lt;/h2&gt;

&lt;p&gt;Imagine someone finds an XSS issue on your site.&lt;/p&gt;

&lt;p&gt;Here is what happens when your setup is good:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;They check &lt;code&gt;/.well-known/security.txt&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;They see your contact and encryption info.&lt;/li&gt;
&lt;li&gt;They fetch your &lt;code&gt;/.well-known/pgp-key.txt&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;They send an encrypted report.&lt;/li&gt;
&lt;li&gt;You reproduce, fix, and thank them on &lt;code&gt;/security/thanks&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;No confusion. No random DMs. No lost report.&lt;/p&gt;

&lt;p&gt;That is why these files matter.&lt;/p&gt;

&lt;h2&gt;
  
  
  Story from my own setup
&lt;/h2&gt;

&lt;p&gt;When I first added these files, I thought:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"No normal visitor will ever read this."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;But scanners stopped complaining.&lt;/p&gt;

&lt;p&gt;My deployment checks became cleaner.&lt;/p&gt;

&lt;p&gt;And most importantly, I knew that if someone found a serious issue, they had a safe and clear way to reach me.&lt;/p&gt;

&lt;p&gt;That feeling is worth a lot.&lt;/p&gt;

&lt;h2&gt;
  
  
  Quick Next.js Structure (Copy-Friendly)
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;public/
  .well-known/
    security.txt
    pgp-key.txt
  robots.txt
  sitemap.xml

app/
  security/
    thanks/
      page.tsx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Verify in 30 seconds
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://yourdomain.com/.well-known/security.txt
curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://yourdomain.com/.well-known/pgp-key.txt | &lt;span class="nb"&gt;head&lt;/span&gt; &lt;span class="nt"&gt;-n&lt;/span&gt; 5
curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://yourdomain.com/robots.txt
curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://yourdomain.com/sitemap.xml | &lt;span class="nb"&gt;head&lt;/span&gt; &lt;span class="nt"&gt;-n&lt;/span&gt; 20
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If all four commands return valid content, your baseline is strong.&lt;/p&gt;

&lt;h2&gt;
  
  
  Beginner Checklist You Can Copy
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;[ ] Add &lt;code&gt;/.well-known/security.txt&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;[ ] Add &lt;code&gt;/.well-known/pgp-key.txt&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;[ ] Add &lt;code&gt;Encryption:&lt;/code&gt; and &lt;code&gt;Acknowledgments:&lt;/code&gt; in &lt;code&gt;security.txt&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;[ ] Add a &lt;code&gt;/security/thanks&lt;/code&gt; page&lt;/li&gt;
&lt;li&gt;[ ] Keep &lt;code&gt;robots.txt&lt;/code&gt; and &lt;code&gt;sitemap.xml&lt;/code&gt; updated&lt;/li&gt;
&lt;li&gt;[ ] Set a reminder to update &lt;code&gt;Expires&lt;/code&gt; before it lapses&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Final Thought
&lt;/h2&gt;

&lt;p&gt;Beautiful UI gets attention.&lt;/p&gt;

&lt;p&gt;These tiny files earn trust.&lt;/p&gt;

&lt;p&gt;If your site is public, these are not "extra" files anymore. They are part of good web citizenship.&lt;/p&gt;

&lt;p&gt;If you are building in public, these files are one of the easiest professional upgrades you can make in a single afternoon.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>security</category>
      <category>seo</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Building a VS Code Extension — Here's What It Does &amp; Need Your Help</title>
      <dc:creator>Nitish</dc:creator>
      <pubDate>Sun, 19 Apr 2026 17:15:47 +0000</pubDate>
      <link>https://forem.com/nk2552003/building-a-vs-code-extension-heres-what-it-does-need-your-help-2ad5</link>
      <guid>https://forem.com/nk2552003/building-a-vs-code-extension-heres-what-it-does-need-your-help-2ad5</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt; — Building &lt;a href="https://github.com/sidkr222003/DEV-TOOLKIT" rel="noopener noreferrer"&gt;Dev Toolkit&lt;/a&gt;, an open-source VS Code extension full of developer utilities. There are &lt;strong&gt;11 open issues&lt;/strong&gt;, all beginner-friendly. Come pick one and ship something real.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;Every developer has a list of tiny friction points they tolerate every day:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Manually hunting down leftover &lt;code&gt;console.log&lt;/code&gt; statements before a commit&lt;/li&gt;
&lt;li&gt;Forgetting which imports are actually used&lt;/li&gt;
&lt;li&gt;Having no clue how large a folder is until it's too late&lt;/li&gt;
&lt;li&gt;Wondering &lt;em&gt;"where is this function even called?"&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of these are hard problems individually. But nobody had packed them all into &lt;strong&gt;one extension&lt;/strong&gt;. So I built one.&lt;/p&gt;




&lt;h2&gt;
  
  
  What is Dev Toolkit?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Dev Toolkit&lt;/strong&gt; is a VS Code extension that bundles essential developer utilities into a single, clean package. It's written in &lt;strong&gt;TypeScript&lt;/strong&gt; and lives right inside your editor.&lt;/p&gt;

&lt;p&gt;Here's what it can do &lt;strong&gt;right now&lt;/strong&gt;:&lt;/p&gt;

&lt;h3&gt;
  
  
  File Size Viewer
&lt;/h3&gt;

&lt;p&gt;Displays the size of any file in the VS Code status bar — formatted in human-readable units (KB, MB, etc.). Also decorates the Explorer panel with per-folder and per-file sizes, with tooltips showing file count.&lt;/p&gt;

&lt;h3&gt;
  
  
  Console Log Remover
&lt;/h3&gt;

&lt;p&gt;One command. Removes every &lt;code&gt;console.*&lt;/code&gt; statement from your JS/TS file — or just from a selected block of code. Perfect pre-commit cleanup.&lt;/p&gt;

&lt;h3&gt;
  
  
  Unused Import Remover
&lt;/h3&gt;

&lt;p&gt;Scans your JavaScript/TypeScript file and strips out every import that isn't actually referenced. Clean files, no clutter.&lt;/p&gt;

&lt;h3&gt;
  
  
  One-Click Project Cleanup
&lt;/h3&gt;

&lt;p&gt;Runs three hygiene fixes in a single action:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Remove all &lt;code&gt;console.*&lt;/code&gt; calls&lt;/li&gt;
&lt;li&gt;Remove unused imports&lt;/li&gt;
&lt;li&gt;Trim trailing whitespace&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Function Reference Tracker
&lt;/h3&gt;

&lt;p&gt;Locate every reference to a function across your entire workspace. Great for understanding impact before refactoring.&lt;/p&gt;

&lt;h3&gt;
  
  
  Code Explainer
&lt;/h3&gt;

&lt;p&gt;Select any code block and get an AI-assisted explanation in a dedicated panel. Context-aware and fast.&lt;/p&gt;

&lt;h3&gt;
  
  
  Read Time Estimator
&lt;/h3&gt;

&lt;p&gt;Shows an estimated read time for JavaScript, TypeScript, and Markdown files in the status bar. Surprisingly useful for docs and long config files.&lt;/p&gt;

&lt;h3&gt;
  
  
  Code Style Mood
&lt;/h3&gt;

&lt;p&gt;Real-time code quality badges right in your status bar&lt;/p&gt;

&lt;p&gt;Hover the badge for a detailed breakdown of line length, naming conventions, comment density, and function complexity.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Stack
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;TypeScript    → 81.9%
CSS           → 7.3%
JavaScript    → 6.5%
HTML          → 4.3%
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Built using the &lt;strong&gt;VS Code Extension API&lt;/strong&gt;. Scaffolded with &lt;code&gt;yo code&lt;/code&gt;, bundled with webpack. No heavy dependencies — just clean VS Code APIs and a bit of TypeScript magic.&lt;/p&gt;




&lt;h2&gt;
  
  
  What's Coming Next — And Where You Come In
&lt;/h2&gt;

&lt;p&gt;This is where I need your help. There are &lt;strong&gt;11 open feature issues&lt;/strong&gt;, all tagged &lt;code&gt;good first issue&lt;/code&gt;:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;#&lt;/th&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;Why it's cool&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/sidkr222003/DEV-TOOLKIT/issues/14" rel="noopener noreferrer"&gt;#14&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Auto README Generator&lt;/td&gt;
&lt;td&gt;Generate a project README from your folder structure&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/sidkr222003/DEV-TOOLKIT/issues/13" rel="noopener noreferrer"&gt;#13&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Focus Mode (Distraction Killer)&lt;/td&gt;
&lt;td&gt;Collapse everything non-essential while you code&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/sidkr222003/DEV-TOOLKIT/issues/12" rel="noopener noreferrer"&gt;#12&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;"Did You Mean?" Fix Suggestions&lt;/td&gt;
&lt;td&gt;Typo-catching hints for common mistakes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/sidkr222003/DEV-TOOLKIT/issues/11" rel="noopener noreferrer"&gt;#11&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Coding Session Tracker&lt;/td&gt;
&lt;td&gt;Track time spent per file/project&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/sidkr222003/DEV-TOOLKIT/issues/10" rel="noopener noreferrer"&gt;#10&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;UI Component Preview (React)&lt;/td&gt;
&lt;td&gt;Inline previews of React components&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/sidkr222003/DEV-TOOLKIT/issues/9" rel="noopener noreferrer"&gt;#9&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Smart Snippet Predictor&lt;/td&gt;
&lt;td&gt;Context-aware snippet suggestions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/sidkr222003/DEV-TOOLKIT/issues/8" rel="noopener noreferrer"&gt;#8&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Dead Code Highlighter&lt;/td&gt;
&lt;td&gt;Visually flag unreachable code&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/sidkr222003/DEV-TOOLKIT/issues/7" rel="noopener noreferrer"&gt;#7&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;"Where is this used?" Heatmap&lt;/td&gt;
&lt;td&gt;Usage frequency heatmap per function&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/sidkr222003/DEV-TOOLKIT/issues/6" rel="noopener noreferrer"&gt;#6&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;File Complexity Meter&lt;/td&gt;
&lt;td&gt;Cyclomatic complexity score per file&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/sidkr222003/DEV-TOOLKIT/issues/5" rel="noopener noreferrer"&gt;#5&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Smart Rename Preview&lt;/td&gt;
&lt;td&gt;Preview all rename impacts before applying&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/sidkr222003/DEV-TOOLKIT/issues/3" rel="noopener noreferrer"&gt;#3&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Bug Risk Detector&lt;/td&gt;
&lt;td&gt;Static heuristics to flag risky code patterns&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Every one of these is scoped, interesting, and genuinely useful. No filler issues.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why Contribute?
&lt;/h2&gt;

&lt;p&gt;Whether you're a student building your portfolio or an experienced dev looking to give back to open source, this project is a good fit if you want to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Work with &lt;strong&gt;TypeScript&lt;/strong&gt; on a real, active codebase&lt;/li&gt;
&lt;li&gt;Learn the &lt;strong&gt;VS Code Extension API&lt;/strong&gt; (very marketable skill)&lt;/li&gt;
&lt;li&gt;Ship a feature used by real developers&lt;/li&gt;
&lt;li&gt;Get your name in the contributors list&lt;/li&gt;
&lt;li&gt;Add a meaningful open-source contribution to your GitHub profile&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No prior experience with VS Code extensions is needed. I'll help you get set up.&lt;/p&gt;




&lt;h2&gt;
  
  
  How to Get Started
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# 1. Fork &amp;amp; clone the repo&lt;/span&gt;
git clone https://github.com/YOUR_USERNAME/DEV-TOOLKIT.git
&lt;span class="nb"&gt;cd &lt;/span&gt;DEV-TOOLKIT

&lt;span class="c"&gt;# 2. Install dependencies&lt;/span&gt;
npm &lt;span class="nb"&gt;install&lt;/span&gt;

&lt;span class="c"&gt;# 3. Compile it&lt;/span&gt;
npm run compile

&lt;span class="c"&gt;# 4. Press F5 to launch the Extension Development Host&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Full details are in &lt;a href="https://github.com/sidkr222003/DEV-TOOLKIT/blob/main/CONTRIBUTING.md" rel="noopener noreferrer"&gt;&lt;code&gt;CONTRIBUTING.md&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Then just:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Pick an issue you like&lt;/li&gt;
&lt;li&gt;Comment on it — &lt;em&gt;"I'd like to work on this!"&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;Fork, build, and open a PR&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Repo:&lt;/strong&gt; &lt;a href="https://github.com/sidkr222003/DEV-TOOLKIT" rel="noopener noreferrer"&gt;github.com/sidkr222003/DEV-TOOLKIT&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Open Issues:&lt;/strong&gt; &lt;a href="https://github.com/sidkr222003/DEV-TOOLKIT/issues" rel="noopener noreferrer"&gt;github.com/sidkr222003/DEV-TOOLKIT/issues&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Contributing Guide:&lt;/strong&gt; &lt;a href="https://github.com/sidkr222003/DEV-TOOLKIT/blob/main/CONTRIBUTING.md" rel="noopener noreferrer"&gt;CONTRIBUTING.md&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;If you've ever wanted to build something that other developers actually use every day — this is a great place to start. Drop a comment below or open an issue and say hi. Let's build together.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>vscode</category>
      <category>typescript</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Forest Ash Theme: 21 Eye-Friendly VS Code Themes Inspired by Anime &amp; Nature</title>
      <dc:creator>Nitish</dc:creator>
      <pubDate>Sun, 22 Mar 2026 06:40:17 +0000</pubDate>
      <link>https://forem.com/nk2552003/forest-ash-theme-21-eye-friendly-vs-code-themes-inspired-by-anime-nature-3ccg</link>
      <guid>https://forem.com/nk2552003/forest-ash-theme-21-eye-friendly-vs-code-themes-inspired-by-anime-nature-3ccg</guid>
      <description>&lt;p&gt;Hey there, fellow developers!&lt;/p&gt;

&lt;p&gt;Ever find yourself squinting at your screen after a long coding marathon? Yeah, me too. That's why I created &lt;strong&gt;Forest Ash Theme&lt;/strong&gt; — a collection of 21 carefully crafted color themes for VS Code that feel like a warm embrace for your eyes.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Origin Story
&lt;/h2&gt;

&lt;p&gt;Inspired by the soothing textures of forest ash and the moody aesthetic of anime mood boards, these themes aren't just pretty — they're &lt;em&gt;optimized for readability&lt;/em&gt;. Think of them as a visual sanctuary during those 8-hour coding sessions.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's Inside the Box?
&lt;/h2&gt;

&lt;p&gt;You get &lt;strong&gt;21 unique themes&lt;/strong&gt; split into two beautiful palettes:&lt;/p&gt;

&lt;h3&gt;
  
  
  Dark Themes (11 total)
&lt;/h3&gt;

&lt;p&gt;The perfect choice for night owls and those who love low-glare environments:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Forest Ash&lt;/strong&gt; — The classic, timeless original&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Yoru Paper&lt;/strong&gt; — Inspired by Japanese night paper textures&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sumi Moon&lt;/strong&gt; — Dark ink inspired, lunar vibes&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Kitsune Ink&lt;/strong&gt; — Mystical fox-inspired palette&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Shoji Night&lt;/strong&gt; — Traditional Japanese door aesthetic&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Aizome Dusk&lt;/strong&gt; — Indigo and dusk combinations&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ronin Lantern&lt;/strong&gt; — Warm, wanderer-like ambiance&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bamboo Midnight&lt;/strong&gt; — Calm green and midnight tones&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Nebula Manga&lt;/strong&gt; — Cosmic manga vibes&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sakura Charcoal&lt;/strong&gt; — Cherry blossom &amp;amp; charcoal blend&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Kage Washi&lt;/strong&gt; — Shadow and traditional Japanese paper&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Light Themes (10 total)
&lt;/h3&gt;

&lt;p&gt;Perfect for daytime coding and sunlit environments:&lt;/p&gt;

&lt;p&gt;All the above themes have beautiful &lt;strong&gt;Light&lt;/strong&gt; variants that maintain the same aesthetic identity while being optimized for brighter environments.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why You'll Love It
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Design Philosophy
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Clarity         → Distinct tokens for different syntax elements
Calming Colors   → Desaturated, nature-inspired palettes  
Reduced Fatigue  → Carefully chosen contrast ratios
Consistency      → Each theme has its own unique identity
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Features That Matter
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Dark AND Light variants&lt;/strong&gt; — Choose what works for your time of day&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Syntax highlighting&lt;/strong&gt; — Every language pops perfectly&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;UI elements&lt;/strong&gt; — Buttons, menus, and panels all themed cohesively&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Custom token colors&lt;/strong&gt; — Comments, variables, functions — all distinct&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Terminal colors&lt;/strong&gt; — Your command line looks good too!&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How to Get Started
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step 1: Install from VS Code Marketplace
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Open VS Code&lt;/li&gt;
&lt;li&gt;Go to Extensions (&lt;code&gt;Cmd+Shift+X&lt;/code&gt; on Mac / &lt;code&gt;Ctrl+Shift+X&lt;/code&gt; on Windows/Linux)&lt;/li&gt;
&lt;li&gt;Search for &lt;strong&gt;"Forest Ash Theme"&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Click Install&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Step 2: Pick Your Vibe
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Open Command Palette (&lt;code&gt;Cmd+Shift+P&lt;/code&gt; / &lt;code&gt;Ctrl+Shift+P&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Type "Color Theme"&lt;/li&gt;
&lt;li&gt;Browse through the 21 options&lt;/li&gt;
&lt;li&gt;Press Enter to apply&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Step 3: Enjoy!
&lt;/h3&gt;

&lt;p&gt;Sit back and let your eyes thank you.&lt;/p&gt;

&lt;h2&gt;
  
  
  Perfect For...
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Night coders&lt;/strong&gt; — Developers who work late into the evening&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Day workers&lt;/strong&gt; — Those who need light themes for bright offices&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Design-conscious devs&lt;/strong&gt; — People who care about aesthetics&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Anyone with eye sensitivity&lt;/strong&gt; — Low contrast, high comfort&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Anime fans&lt;/strong&gt; — Who wants their IDE to look cooler? Everyone!&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Under the Hood
&lt;/h2&gt;

&lt;p&gt;Built with meticulous attention to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Color harmony&lt;/strong&gt; — Every palette follows color theory principles&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Contrast ratios&lt;/strong&gt; — WCAG compliance for accessibility&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Token coverage&lt;/strong&gt; — Support for 50+ languages and frameworks&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Custom UI theming&lt;/strong&gt; — Not just syntax, but your entire VS Code experience&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Get Involved
&lt;/h2&gt;

&lt;p&gt;Found a color combination that doesn't quite work for you? Have a theme idea? &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub&lt;/strong&gt;: &lt;a href="https://github.com/sidkr222003/Forest-Ash-Theme" rel="noopener noreferrer"&gt;Forest-Ash-Theme&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Issues &amp;amp; Suggestions&lt;/strong&gt;: We're always improving&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Star us&lt;/strong&gt;: If you love it, show some love on GitHub! ⭐&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;Your code editor is where you spend hours every single day. It deserves to be:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Beautiful&lt;/li&gt;
&lt;li&gt;Eye-friendly
&lt;/li&gt;
&lt;li&gt;Uniquely &lt;em&gt;you&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Forest Ash Theme checks all three boxes. Whether you're a seasoned dev or just starting your coding journey, there's a theme calling your name.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Ready to transform your VS Code experience?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Install Forest Ash Theme today and join the community of developers who've already ditched the eye strain. Your future self (especially the one coding at 2 AM) will thank you! &lt;/p&gt;

&lt;p&gt;Got a favorite theme? Drop it in the comments — I'd love to hear which one resonates with you! &lt;/p&gt;




&lt;h3&gt;
  
  
  Quick Links
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=NK2552003.forest-ash-theme-vscode" rel="noopener noreferrer"&gt;VS Code Marketplace&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/sidkr222003/Forest-Ash-Theme" rel="noopener noreferrer"&gt;GitHub Repository&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Happy coding, and may your eyes remain stress-free!&lt;/em&gt;&lt;/p&gt;

</description>
      <category>vscode</category>
      <category>themes</category>
      <category>design</category>
      <category>productivity</category>
    </item>
    <item>
      <title>How I Built a Big Data Survival Guide - Because My Semester Was Not Surviving Me</title>
      <dc:creator>Nitish</dc:creator>
      <pubDate>Fri, 27 Feb 2026 04:35:13 +0000</pubDate>
      <link>https://forem.com/nk2552003/how-i-built-a-big-data-survival-guide-because-my-semester-was-not-surviving-me-5bji</link>
      <guid>https://forem.com/nk2552003/how-i-built-a-big-data-survival-guide-because-my-semester-was-not-surviving-me-5bji</guid>
      <description>&lt;p&gt;When I first opened my Big Data Analytics syllabus, I thought:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Okay… this looks manageable.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Ten minutes later I saw Hadoop, Spark, distributed storage, stream mining, sampling algorithms, and architecture diagrams that looked like airport control systems.&lt;/p&gt;

&lt;p&gt;That’s when I realized something important:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Big Data isn’t hard because of concepts.&lt;br&gt;
It’s hard because everything is disconnected.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You learn one tool in class, another in labs, something else on YouTube, and by the end of the semester you understand pieces — but not the system.&lt;/p&gt;

&lt;p&gt;So instead of searching for the “perfect notes”,&lt;br&gt;
I decided to build something I wish existed from day one:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A Big Data Survival Guide&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;-&amp;gt; &lt;a href="https://github.com/NK2552003/Big-Data-Survival-Guide" rel="noopener noreferrer"&gt;https://github.com/NK2552003/Big-Data-Survival-Guide&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A structured repository that connects syllabus concepts, real-world understanding, and student-friendly explanations in one place.&lt;/p&gt;

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




&lt;h2&gt;
  
  
  Why I Created This
&lt;/h2&gt;

&lt;p&gt;Most university resources fall into one of two categories:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Too theoretical&lt;/strong&gt; – full of definitions, zero intuition&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Too practical&lt;/strong&gt; – tutorials without explaining &lt;em&gt;why things exist&lt;/em&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;As students, we don’t just need notes.&lt;br&gt;
We need a &lt;strong&gt;mental map&lt;/strong&gt; of the ecosystem.&lt;/p&gt;

&lt;p&gt;I wanted something that helps answer questions like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Why do we even need distributed storage?&lt;/li&gt;
&lt;li&gt;What problem does Hadoop actually solve?&lt;/li&gt;
&lt;li&gt;Why did Spark replace MapReduce in many workflows?&lt;/li&gt;
&lt;li&gt;How does streaming data differ from batch processing in practice?&lt;/li&gt;
&lt;li&gt;What part of this syllabus actually matters for industry?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That’s how the &lt;strong&gt;Big Data Survival Guide&lt;/strong&gt; started.&lt;/p&gt;

&lt;p&gt;Not as a project.&lt;br&gt;
But as a personal attempt to survive the semester 😅&lt;/p&gt;




&lt;h2&gt;
  
  
  What’s Inside the Repository
&lt;/h2&gt;

&lt;p&gt;Instead of dumping raw notes, I organized the material to feel like a guided path.&lt;/p&gt;

&lt;h3&gt;
  
  
  Foundations First (So Tools Make Sense Later)
&lt;/h3&gt;

&lt;p&gt;Before touching any framework, the guide explains:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What makes data “big”&lt;/li&gt;
&lt;li&gt;Why conventional systems fail at scale&lt;/li&gt;
&lt;li&gt;Difference between analytics vs reporting&lt;/li&gt;
&lt;li&gt;How modern data pipelines think about processing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This part is important because once the &lt;em&gt;problem&lt;/em&gt; is clear, the tools suddenly stop feeling random.&lt;/p&gt;




&lt;h3&gt;
  
  
  Understanding the Ecosystem, Not Just Definitions
&lt;/h3&gt;

&lt;p&gt;When students learn Hadoop or Spark, we often memorize components:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;HDFS&lt;/li&gt;
&lt;li&gt;NameNode&lt;/li&gt;
&lt;li&gt;MapReduce&lt;/li&gt;
&lt;li&gt;Executors&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;…but we don’t understand &lt;strong&gt;how they fit together&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;So in the guide, each technology is explained from a problem-solution perspective:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What issue existed before it&lt;/li&gt;
&lt;li&gt;How this system solves it&lt;/li&gt;
&lt;li&gt;Where it fits in the bigger pipeline&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This makes it easier to remember during exams &lt;em&gt;and&lt;/em&gt; understand during projects.&lt;/p&gt;




&lt;h3&gt;
  
  
  Stream Processing Made Less Scary
&lt;/h3&gt;

&lt;p&gt;Stream mining topics are usually where most students mentally exit the classroom.&lt;/p&gt;

&lt;p&gt;Counting distinct elements, sampling, moment estimation…&lt;br&gt;
sounds like math-heavy theory.&lt;/p&gt;

&lt;p&gt;So I rewrote these sections with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Simple explanations&lt;/li&gt;
&lt;li&gt;Real examples&lt;/li&gt;
&lt;li&gt;Step-by-step logic&lt;/li&gt;
&lt;li&gt;Why companies actually need these algorithms&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Because once you connect theory to scale problems, it stops feeling abstract.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why I Made It Open Source
&lt;/h2&gt;

&lt;p&gt;I realized something while studying:&lt;/p&gt;

&lt;p&gt;Every student is rebuilding the same notes separately.&lt;/p&gt;

&lt;p&gt;Different colleges.&lt;br&gt;
Same confusion.&lt;br&gt;
Same syllabus.&lt;br&gt;
Same panic before exams.&lt;/p&gt;

&lt;p&gt;So instead of keeping this private, I pushed it to GitHub so:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Anyone can use it&lt;/li&gt;
&lt;li&gt;Anyone can improve it&lt;/li&gt;
&lt;li&gt;Anyone can add diagrams or explanations&lt;/li&gt;
&lt;li&gt;Anyone can learn from it&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Because knowledge shouldn’t be locked in one notebook.&lt;/p&gt;




&lt;h2&gt;
  
  
  What I Learned While Building This
&lt;/h2&gt;

&lt;p&gt;Ironically, creating the guide taught me more than studying ever did.&lt;/p&gt;

&lt;p&gt;I learned that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Writing concepts forces real understanding&lt;/li&gt;
&lt;li&gt;Simplifying ideas exposes what you don’t actually know&lt;/li&gt;
&lt;li&gt;Organizing topics reveals the hidden structure of systems&lt;/li&gt;
&lt;li&gt;Teaching something is the fastest way to master it&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This project started as survival.&lt;br&gt;
It ended up becoming clarity.&lt;/p&gt;




&lt;h2&gt;
  
  
  Who This Is For
&lt;/h2&gt;

&lt;p&gt;If you’re:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A student studying Big Data Analytics&lt;/li&gt;
&lt;li&gt;Someone confused by distributed systems&lt;/li&gt;
&lt;li&gt;Preparing for exams and interviews&lt;/li&gt;
&lt;li&gt;Trying to understand how tools connect&lt;/li&gt;
&lt;li&gt;Or just starting your data engineering journey&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This guide is for you.&lt;/p&gt;

&lt;p&gt;Not as a replacement for textbooks —&lt;br&gt;
but as a bridge between &lt;strong&gt;theory and understanding&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Where This Is Going Next
&lt;/h2&gt;

&lt;p&gt;I don’t want this to stay just a notes repository.&lt;/p&gt;

&lt;p&gt;The vision is to evolve it into:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A visual learning map for Big Data&lt;/li&gt;
&lt;li&gt;A beginner-friendly data engineering handbook&lt;/li&gt;
&lt;li&gt;A project companion for students&lt;/li&gt;
&lt;li&gt;A resource educators can actually use in class&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Basically…&lt;/p&gt;

&lt;p&gt;From &lt;strong&gt;“notes to survive the semester”&lt;/strong&gt;&lt;br&gt;
to &lt;strong&gt;“a system to understand the field.”&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  If You Want to Check It Out
&lt;/h2&gt;

&lt;p&gt;Here’s the repository:&lt;/p&gt;

&lt;p&gt;-&amp;gt; &lt;a href="https://github.com/NK2552003/Big-Data-Survival-Guide" rel="noopener noreferrer"&gt;https://github.com/NK2552003/Big-Data-Survival-Guide&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If it helps you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Star it&lt;/li&gt;
&lt;li&gt;Suggest improvements&lt;/li&gt;
&lt;li&gt;Add explanations&lt;/li&gt;
&lt;li&gt;Share it with classmates&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Because if Big Data is already huge,&lt;br&gt;
learning it shouldn’t feel chaotic too.&lt;/p&gt;

</description>
      <category>datascience</category>
      <category>opensource</category>
      <category>learning</category>
      <category>bigdata</category>
    </item>
    <item>
      <title>From Beautiful Soup to Building the "Ultimate Media Downloader"</title>
      <dc:creator>Nitish</dc:creator>
      <pubDate>Sun, 04 Jan 2026 15:34:54 +0000</pubDate>
      <link>https://forem.com/nk2552003/from-beautiful-soup-to-building-the-ultimate-media-downloader-53d2</link>
      <guid>https://forem.com/nk2552003/from-beautiful-soup-to-building-the-ultimate-media-downloader-53d2</guid>
      <description>&lt;h2&gt;
  
  
  Libraries in Python that I Used
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Beautiful Soup (The OG)
&lt;/h3&gt;

&lt;p&gt;It’s literally what it sounds like. You feed it messy HTML code, and it cleans it up so you can find things. Perfect for static sites like Wikipedia or your uni's old-school portal.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Selenium / Playwright (The "Heavy Lifters")
&lt;/h3&gt;

&lt;p&gt;Some sites are annoying and use a ton of JavaScript (looking at you, infinite scrollers). These tools basically open a "ghost" browser and click things for you. It's like having a tiny robot living in your RAM.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. yt-dlp (The MVP)
&lt;/h3&gt;

&lt;p&gt;If you’re trying to download videos or audio, don't reinvent the wheel. This library is a beast. It supports basically every site on the planet.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Real Deal: ULTIMATE-MEDIA-DOWNLOADER
&lt;/h2&gt;

&lt;p&gt;To prove I wasn't just procrastinating on my finals, I put all this together into a project called &lt;strong&gt;ULTIMATE-MEDIA-DOWNLOADER (UMD)&lt;/strong&gt;. (Yeah, it's still under development, but it's already a tank).&lt;/p&gt;

&lt;p&gt;Check it out here: &lt;a href="https://github.com/NK2552003/ULTIMATE-MEDIA-DOWNLOADER" rel="noopener noreferrer"&gt;NK2552003/ULTIMATE-MEDIA-DOWNLOADER&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Why is it cool?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;It’s Fast:&lt;/strong&gt; It uses &lt;code&gt;yt-dlp&lt;/code&gt; under the hood, so it doesn't break every time YouTube changes its UI.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;It Looks Sick:&lt;/strong&gt; I used the &lt;code&gt;Rich&lt;/code&gt; library, so instead of boring white text, you get actual progress bars and colors in your terminal. (Makes you look like a hacker in the library, 10/10 would recommend).&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;No Setup Pain:&lt;/strong&gt; I made a script that handles all the annoying installs for you.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Try it out
&lt;/h3&gt;

&lt;p&gt;If you want to play around with it:&lt;/p&gt;

&lt;p&gt;Install in just 2 commands - no virtual environment needed!&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/NK2552003/ULTIMATE-MEDIA-DOWNLOADER.git
&lt;span class="nb"&gt;cd &lt;/span&gt;ULTIMATE-MEDIA-DOWNLOADER
./scripts/install.sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Windows users:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/NK2552003/ULTIMATE-MEDIA-DOWNLOADER.git
&lt;span class="nb"&gt;cd &lt;/span&gt;ULTIMATE-MEDIA-DOWNLOADER
scripts&lt;span class="se"&gt;\i&lt;/span&gt;nstall.bat
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's it! Once it's ready, just throw a link at it, now user it form anywhere&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;umd &amp;lt;URL&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  ️ Disclaimer (The "Don't Sue Me" Part)
&lt;/h2&gt;

&lt;p&gt;Look, I built this for &lt;strong&gt;educational purposes only&lt;/strong&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Be Ethical:&lt;/strong&gt; Only download content you have permission to access. This tool is meant for personal backups or studying, not for pirating or re-distributing copyrighted stuff.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Terms of Service:&lt;/strong&gt; Every website has its own rules. By using this tool, you're responsible for making sure you aren't breaking any laws or ToS.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No Liability:&lt;/strong&gt; I (the developer) am not responsible for how you use this tool or any consequences that come from it. Use your brain!&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Pro-Tips for My Fellow Colleagues
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Don't be a jerk:&lt;/strong&gt; If you scrape a site 10,000 times in a second, their servers will hate you and they might block your IP. Use &lt;code&gt;time.sleep()&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Robots.txt is a thing:&lt;/strong&gt; Check &lt;code&gt;website.com/robots.txt&lt;/code&gt; to see if they actually allow scraping. (Most of the time they're cool with it if it's for "educational purposes" lol).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Metadata is king:&lt;/strong&gt; Don't just download the file; grab the title, the thumbnail, and the tags. It makes your folders look way cleaner.&lt;/li&gt;
&lt;/ol&gt;

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

&lt;p&gt;Web scraping is probably the most useful skill I've picked up outside of class. It saves so much time and honestly, it’s just fun to see code doing work for you.&lt;/p&gt;

&lt;p&gt;If you like the project, &lt;strong&gt;give it a star on GitHub!&lt;/strong&gt; It helps with my "hired-after-graduation" ego. ⭐️&lt;/p&gt;

&lt;p&gt;If you want to contribute then visit my github that is given above &lt;/p&gt;

&lt;p&gt;Peace out! ✌️&lt;/p&gt;

</description>
      <category>python</category>
      <category>webscraping</category>
      <category>opensource</category>
      <category>showdev</category>
    </item>
    <item>
      <title>The Anthology of a Creative Developer: A 2026 Portfolio</title>
      <dc:creator>Nitish</dc:creator>
      <pubDate>Fri, 02 Jan 2026 04:35:43 +0000</pubDate>
      <link>https://forem.com/nk2552003/the-anthology-of-a-creative-developer-a-2026-portfolio-56jp</link>
      <guid>https://forem.com/nk2552003/the-anthology-of-a-creative-developer-a-2026-portfolio-56jp</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/new-year-new-you-google-ai-2025-12-31"&gt;New Year, New You Portfolio Challenge Presented by Google AI&lt;/a&gt;&lt;/em&gt; (just check my github, not for prizes 😅)&lt;/p&gt;

&lt;h2&gt;
  
  
  The Prologue: Beyond the "Sectioned Resume"
&lt;/h2&gt;

&lt;p&gt;Most portfolios feel like a list of ingredients. For 2026, I wanted mine to be the &lt;strong&gt;complete meal.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I’m &lt;strong&gt;Nitish Kumar&lt;/strong&gt;, an undergraduate engineering student and creative developer. I’ve always felt that code is just another way of storytelling—so I ditched the typical "Hero-About-Projects" grid. Instead, I built a &lt;strong&gt;narrative experience&lt;/strong&gt; that reflects how I think, build, and observe the world.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Gallery
&lt;/h2&gt;

&lt;p&gt;I built this to be "authored"—a stroll through a digital gallery rather than a scroll through a resume.&lt;/p&gt;

&lt;p&gt;🔗 &lt;strong&gt;Explore the Story:&lt;/strong&gt; &lt;a href="https://nitishkr.fun" rel="noopener noreferrer"&gt;https://nitishkr.fun&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The Craft (How I Built It)
&lt;/h2&gt;

&lt;p&gt;If this portfolio were a book, here is how I bound the pages:&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;The Technical Spine&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Next.js (App Router):&lt;/strong&gt; The foundation that holds the chapters together.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;TypeScript:&lt;/strong&gt; My editor, ensuring every "sentence" (and variable) makes sense.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GSAP:&lt;/strong&gt; The cinematography—adding subtle, intentional motion that guides the eye.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tailwind CSS:&lt;/strong&gt; For the editorial aesthetic and spacing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cloud Run:&lt;/strong&gt; My printing press, keeping everything fast and accessible.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;The Editorial Vision&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;I treated the design like a high-end magazine. Each section is a chapter:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Identity:&lt;/strong&gt; The "Who" and the mindset.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;The Workshop:&lt;/strong&gt; Skills and tools as a craftsman’s kit.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;The Lab:&lt;/strong&gt; Projects as experiments, not just finished products.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;The Lens:&lt;/strong&gt; Using photography as a reflection of how I observe UI/UX in the real world.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Google AI: The Creative Director&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Google AI wasn't a "generator" for me; it was a &lt;strong&gt;thinking partner&lt;/strong&gt;. I used it to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Refine the Copy:&lt;/strong&gt; Helping me transition from dry technical descriptions to narrative-driven prose.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Accessibility Review:&lt;/strong&gt; Ensuring the "story" remains readable for everyone.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Logic Soundboarding:&lt;/strong&gt; Using AI to brainstorm the best way to structure a chapter-based layout.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  The "Director's Cut" (What I'm Proud Of)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Story-Driven Flow:&lt;/strong&gt; The site feels like a single, continuous conversation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Intentional Dark Mode:&lt;/strong&gt; Designed from the ground up to feel like a premium "night-time" reading experience.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Power of Restraint:&lt;/strong&gt; Knowing when to stop adding features and start refining the white space.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Photography Integration:&lt;/strong&gt; My photos aren't just "assets"—they are windows into my perspective as a designer.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Closing Thoughts
&lt;/h2&gt;

&lt;p&gt;This portfolio is my way of proving that engineering is an art form. It’s about more than just shipping code; it’s about crafting experiences that linger. &lt;/p&gt;

&lt;p&gt;Thanks for checking it out, and &lt;strong&gt;Happy New Year!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Let's connect!&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/nk2552003" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="//www.linkedin.com/in/nk2552003"&gt;LinkedIn&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




</description>
      <category>devchallenge</category>
      <category>googleaichallenge</category>
      <category>portfolio</category>
      <category>gemini</category>
    </item>
    <item>
      <title>I Rewrote My Media Downloader from Scratch - Here's What I Learned</title>
      <dc:creator>Nitish</dc:creator>
      <pubDate>Fri, 31 Oct 2025 07:29:56 +0000</pubDate>
      <link>https://forem.com/nk2552003/i-rewrote-my-media-downloader-from-scratch-heres-what-i-learned-2ca7</link>
      <guid>https://forem.com/nk2552003/i-rewrote-my-media-downloader-from-scratch-heres-what-i-learned-2ca7</guid>
      <description>&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;It started simple enough - I wanted to download YouTube videos for offline studying. Couldn't stream during power cuts, and mobile data was expensive. So I hacked together a Python script using &lt;code&gt;youtube-dl&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Fast forward a few months, and that "simple script" had become a 2000-line monster with zero documentation, no error handling, and more bugs than features. Friends kept asking me to add Instagram support, then Spotify, then TikTok... and each time I'd just copy-paste code and pray it worked.&lt;/p&gt;

&lt;p&gt;It was time for a complete rewrite.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Ultimate Media Downloader v2.0.0&lt;/strong&gt; - a CLI tool that downloads media from 1000+ platforms with proper architecture, comprehensive docs, and features I actually wish I had from day one.&lt;/p&gt;

&lt;h3&gt;
  
  
  Key Features
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;🌐 Universal platform support (YouTube, Spotify, Instagram, TikTok, SoundCloud, Twitter, Facebook, Twitch, Apple Music, and more via yt-dlp)&lt;/li&gt;
&lt;li&gt;⚡ Concurrent downloads with resume capability&lt;/li&gt;
&lt;li&gt;🎨 Beautiful CLI with progress bars and real-time stats&lt;/li&gt;
&lt;li&gt;🔐 Proxy support, SSL/TLS bypass, Cloudflare protection&lt;/li&gt;
&lt;li&gt;📦 One-command installation scripts for all platforms&lt;/li&gt;
&lt;li&gt;📚 Actually useful documentation (8+ guides with flowcharts)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Technical Deep Dive
&lt;/h2&gt;

&lt;h2&gt;
  
  
  What I Learned
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Documentation is Not Optional
&lt;/h3&gt;

&lt;p&gt;Writing docs made me realize how confusing my own code was. If I couldn't explain it simply, it was probably too complex. Created:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Architecture overview with Mermaid diagrams&lt;/li&gt;
&lt;li&gt;Usage guides with real examples&lt;/li&gt;
&lt;li&gt;Contributing guidelines&lt;/li&gt;
&lt;li&gt;Troubleshooting FAQ&lt;/li&gt;
&lt;li&gt;Command reference&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. Setup Scripts Matter
&lt;/h3&gt;

&lt;p&gt;"Just install these 10 dependencies" doesn't work. Created automated scripts:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Linux/macOS&lt;/span&gt;
./scripts/install.sh

&lt;span class="c"&gt;# Windows&lt;/span&gt;
scripts&lt;span class="se"&gt;\i&lt;/span&gt;nstall.bat
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;One command, everything works. Made onboarding 10x easier.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Error Messages Should Be Helpful
&lt;/h3&gt;

&lt;p&gt;Changed from:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Error: Download failed
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;❌ Download failed for https://example.com/video
   Reason: 403 Forbidden - Video may be private or region-locked

   Suggestions:
   • Check if the video is publicly accessible
   • Try using --cookies for authenticated content
   • Use --proxy if content is region-restricted

   Need help? Open an issue: https://github.com/...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  4. Testing Saves Time
&lt;/h3&gt;

&lt;p&gt;Spent 2 weeks writing tests. Saved myself months of debugging later. Every platform has unit tests, integration tests, and edge case coverage.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Git Commits Tell a Story
&lt;/h3&gt;

&lt;p&gt;Used conventional commits:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;feat: add Instagram story support
fix: handle rate limiting on Spotify
docs: add Mermaid flowcharts for download process
refactor: extract common validation logic
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Made it easier to track what changed and why.&lt;/p&gt;

&lt;h2&gt;
  
  
  Installation &amp;amp; Usage
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Quick Start
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Clone and install&lt;/span&gt;
git clone https://codeberg.org/nk2552003/umd.git
&lt;span class="nb"&gt;cd &lt;/span&gt;umd
./scripts/install.sh

&lt;span class="c"&gt;# Download a video&lt;/span&gt;
umd &lt;span class="s2"&gt;"https://www.youtube.com/watch?v=dQw4w9WgXcQ"&lt;/span&gt;

&lt;span class="c"&gt;# Download with quality selection&lt;/span&gt;
umd &lt;span class="nt"&gt;--quality&lt;/span&gt; 1080p &lt;span class="s2"&gt;"URL_HERE"&lt;/span&gt;

&lt;span class="c"&gt;# Download entire playlist&lt;/span&gt;
umd &lt;span class="nt"&gt;--batch&lt;/span&gt; &lt;span class="s2"&gt;"PLAYLIST_URL"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Example Commands
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# YouTube video&lt;/span&gt;
umd &lt;span class="s2"&gt;"https://youtube.com/watch?v=VIDEO_ID"&lt;/span&gt;

&lt;span class="c"&gt;# Spotify playlist (downloads from YouTube)&lt;/span&gt;
umd &lt;span class="s2"&gt;"https://open.spotify.com/playlist/PLAYLIST_ID"&lt;/span&gt;

&lt;span class="c"&gt;# Instagram reel&lt;/span&gt;
umd &lt;span class="s2"&gt;"https://instagram.com/reel/REEL_ID/"&lt;/span&gt;

&lt;span class="c"&gt;# TikTok video&lt;/span&gt;
umd &lt;span class="s2"&gt;"https://tiktok.com/@user/video/VIDEO_ID"&lt;/span&gt;

&lt;span class="c"&gt;# Twitter video&lt;/span&gt;
umd &lt;span class="s2"&gt;"https://twitter.com/user/status/TWEET_ID"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  What's Next
&lt;/h2&gt;

&lt;p&gt;Working on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GUI Interface&lt;/strong&gt; - Electron or PyQt desktop app&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Browser Extension&lt;/strong&gt; - One-click downloads from any page&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cloud Storage Integration&lt;/strong&gt; - Direct upload to Drive/Dropbox&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mobile App&lt;/strong&gt; - React Native companion&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;REST API&lt;/strong&gt; - For third-party integrations&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Challenges I'm Still Solving
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Rate Limiting&lt;/strong&gt; - Some platforms are aggressive. Need smarter throttling&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DRM Content&lt;/strong&gt; - Can't download DRM-protected media (and shouldn't)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Private Content&lt;/strong&gt; - Cookie/auth handling is tricky&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Live Streams&lt;/strong&gt; - Quality varies, need better handling&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Contributing
&lt;/h2&gt;

&lt;p&gt;The project is open source and I'd love contributions! Whether it's:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Adding new platform support&lt;/li&gt;
&lt;li&gt;Improving documentation&lt;/li&gt;
&lt;li&gt;Fixing bugs&lt;/li&gt;
&lt;li&gt;Adding tests&lt;/li&gt;
&lt;li&gt;Suggesting features&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Check out the repo: &lt;a href="https://codeberg.org/nk2552003/umd.git" rel="noopener noreferrer"&gt;ULTIMATE-MEDIA-DOWNLOADER&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;This rewrite taught me that good software is 20% code and 80% everything else - architecture, documentation, testing, user experience, and maintainability.&lt;/p&gt;

&lt;p&gt;If you're thinking about rewriting your project from scratch, my advice:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Don't rush&lt;/strong&gt; - Take time to plan the architecture&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Write docs as you code&lt;/strong&gt; - Future you will thank present you&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Test early&lt;/strong&gt; - Don't wait until everything breaks&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Listen to users&lt;/strong&gt; - They'll find bugs you never imagined&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Iterate&lt;/strong&gt; - v2.0 won't be perfect, and that's okay&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Would love to hear your thoughts, especially if you've gone through similar rewrites. What worked? What didn't?&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://codeberg.org/nk2552003/umd.git" rel="noopener noreferrer"&gt;https://codeberg.org/nk2552003/umd.git&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Star if you find it useful!&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Open to feedback and contributions&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>python</category>
      <category>opensource</category>
      <category>cli</category>
      <category>webdev</category>
    </item>
    <item>
      <title>The Brew, The Choco, and The Scoop: A Developer’s Tale of Package Managers Across OSs</title>
      <dc:creator>Nitish</dc:creator>
      <pubDate>Mon, 18 Aug 2025 03:16:21 +0000</pubDate>
      <link>https://forem.com/nk2552003/the-brew-the-choco-and-the-scoop-a-developers-tale-of-package-managers-across-oss-22of</link>
      <guid>https://forem.com/nk2552003/the-brew-the-choco-and-the-scoop-a-developers-tale-of-package-managers-across-oss-22of</guid>
      <description>&lt;p&gt;Imagine you’ve just set up a brand-new laptop.&lt;/p&gt;

&lt;p&gt;You’re excited, coffee in hand ☕️, ready to code. But before you can write even a single line, you need your toolkit — Git, Node.js, Python, Docker, VS Code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Now comes the ancient developer’s question:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;👉 &lt;em&gt;&lt;strong&gt;“Should I download them one by one… or is there a magical tool that installs everything for me?”&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;That magical tool is called a package manager. And in this article, we’ll walk through the developer-friendly package managers across Windows, macOS, and Linux distros, with a story-like journey and step-by-step guides.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Origins: Linux, the Old Wise One
&lt;/h2&gt;

&lt;p&gt;Linux has had package managers since forever. That’s why it’s often called the “wise old grandparent” of developer tooling.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Depending on your Linux distro:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Debian/Ubuntu → &lt;strong&gt;apt&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt update
sudo apt install git
sudo apt install python3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Fedora/RHEL →&lt;strong&gt;dnf&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo dnf install git
sudo dnf install nodejs
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Arch Linux → &lt;strong&gt;pacman&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo pacman -S git
sudo pacman -S docker
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With Linux, you’ve always had the comfort of typing a command and watching the system do the rest. But what about Windows and macOS?&lt;/p&gt;




&lt;h2&gt;
  
  
  Enter Homebrew: The Rebel on macOS
&lt;/h2&gt;

&lt;p&gt;Back in the day, macOS users struggled — you had to click, drag, and install everything manually. Then came Homebrew (or just “brew”), calling itself “the missing package manager for macOS.”&lt;/p&gt;

&lt;p&gt;🔧 &lt;strong&gt;Installing Homebrew&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Open Terminal and paste:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After installation, you might need to add it to your PATH:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' &amp;gt;&amp;gt; ~/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Using Homebrew&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Install Git:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;brew install git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Install Node.js:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;brew install node
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Install apps (like Chrome, VS Code):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;brew install --cask google-chrome
brew install --cask visual-studio-code

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And suddenly, macOS wasn’t behind Linux anymore.&lt;/p&gt;




&lt;h2&gt;
  
  
  Windows Joins the Party: Chocolatey, Scoop, and WinGet
&lt;/h2&gt;

&lt;p&gt;Windows devs had it the hardest. Download → Next → Next → Finish → Reboot. Repeat × 10.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Then came the heroes:&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;🍫** Chocolatey (the Classic)**&lt;/p&gt;

&lt;p&gt;Chocolatey is like the old guard of Windows package managers — huge library, lots of community support.&lt;/p&gt;

&lt;p&gt;Install Chocolatey&lt;br&gt;
Run PowerShell as Administrator:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Use Chocolatey&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;choco install git
choco install nodejs
choco install vscode
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Scoop (the Minimalist)
&lt;/h2&gt;

&lt;p&gt;Scoop is for devs who don’t like “admin permissions” or clutter. Everything installs in your home folder.&lt;/p&gt;

&lt;p&gt;Install Scoop&lt;br&gt;
Run PowerShell (non-admin):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
Invoke-RestMethod -Uri https://get.scoop.sh | Invoke-Expression
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Use Scoop&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;scoop install python
scoop install ffmpeg
scoop install docker
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  WinGet (Microsoft’s Official Knight)
&lt;/h2&gt;

&lt;p&gt;Finally, Microsoft gave Windows an official package manager: WinGet.&lt;br&gt;
It’s already built into Windows 10 (latest) and Windows 11.&lt;/p&gt;

&lt;p&gt;Use WinGet&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;winget install git.git
winget install Microsoft.VisualStudioCode
winget install Google.Chrome
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;WinGet is slowly catching up with Chocolatey and Scoop, but it’s great because it’s native.&lt;/p&gt;




&lt;h2&gt;
  
  
  Cross-Platform Heroes
&lt;/h2&gt;

&lt;p&gt;If you’re the kind of dev who works on multiple OSs (like coding on mac, testing on Linux server, gaming on Windows), these tools feel like part of the same story:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Linux: apt, dnf, pacman → the originals&lt;/li&gt;
&lt;li&gt;macOS: brew → the rebel&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Windows: choco, scoop, winget → the trio of saviors&lt;/p&gt;


&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Package managers save time, clicks, and headaches.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;They turn a 2-hour setup into a 10-minute script.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The next time you get a fresh laptop or set up a dev environment, don’t go the “download → next → finish” route. Instead, pick your tool:&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Linux → apt, dnf, pacman&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;macOS → brew&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Windows → choco, scoop, winget&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And you’ll feel like a magician, installing an entire dev environment with just a few commands.&lt;/p&gt;




</description>
      <category>programming</category>
      <category>terminal</category>
      <category>tooling</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Why .env and .env.local Files Are Crucial in Modern Development Projects</title>
      <dc:creator>Nitish</dc:creator>
      <pubDate>Sun, 03 Aug 2025 03:09:14 +0000</pubDate>
      <link>https://forem.com/nk2552003/why-env-and-envlocal-files-are-crucial-in-modern-development-projects-3jop</link>
      <guid>https://forem.com/nk2552003/why-env-and-envlocal-files-are-crucial-in-modern-development-projects-3jop</guid>
      <description>&lt;p&gt;Ever wondered how applications know your API keys, secret tokens, or database credentials without hardcoding them into your code?&lt;/p&gt;

&lt;p&gt;That magic comes from environment variables. And in many modern web development projects (especially in Node.js, React, Next.js, etc.), we use .env and .env.local files to store these values.&lt;/p&gt;

&lt;p&gt;Let’s break down what these files are, why they’re important, how they’re different, and some best practices to follow!&lt;/p&gt;




&lt;h2&gt;
  
  
  What is a .env file?
&lt;/h2&gt;

&lt;p&gt;A .env file is a simple text file that stores environment variables in a key-value format.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;DATABASE_URL="postgres://user:password@localhost:5432/mydb"
API_KEY="12345-abcdef"
PORT=3000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;These variables can then be accessed inside your app using tools like &lt;code&gt;dotenv&lt;/code&gt; in &lt;code&gt;Node.js&lt;/code&gt; or automatically in frameworks like Next.js, React, or Vite.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why is it important?
&lt;/h2&gt;

&lt;p&gt;Here’s why .env files are essential:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Separation of Secrets from Code&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You should never hardcode API keys, database URLs, or other secrets into your codebase. &lt;code&gt;.env&lt;/code&gt; files let you keep those values separate.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Flexibility across Environments&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Whether you're working on development, staging, or production—each environment may need different values.&lt;/p&gt;

&lt;p&gt;With &lt;code&gt;.env&lt;/code&gt;, you can easily switch between these.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cleaner Code&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Instead of littering your codebase with config values, you reference environment variables like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const apiKey = process.env.API_KEY;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Version Control Safety&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can (and should!) add &lt;code&gt;.env&lt;/code&gt; to your &lt;code&gt;.gitignore&lt;/code&gt; file so sensitive data doesn’t get pushed to GitHub.&lt;/p&gt;




&lt;h2&gt;
  
  
  What about .env.local?
&lt;/h2&gt;

&lt;p&gt;This is where things get a bit more contextual and powerful.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;.env.local&lt;/code&gt; is commonly used in frameworks like &lt;code&gt;Next.js&lt;/code&gt; or &lt;code&gt;Create React App&lt;/code&gt;, and is specifically meant for &lt;code&gt;local development&lt;/code&gt; only.&lt;/p&gt;

&lt;p&gt;It lets you override values in .env or add machine-specific variables that shouldn't be committed to version control.&lt;/p&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;h3&gt;
  
  
  .env (committed to git)
&lt;/h3&gt;



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

&lt;/div&gt;



&lt;h3&gt;
  
  
  .env.local (not committed to git)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;API_URL=http://localhost:4000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In this case, your local machine uses a development server, while production uses the live API.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;code&gt;.env&lt;/code&gt; vs &lt;code&gt;.env.local&lt;/code&gt; — What’s the Difference?
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;&lt;code&gt;.env&lt;/code&gt;&lt;/th&gt;
&lt;th&gt;&lt;code&gt;.env.local&lt;/code&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Purpose&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Shared base config&lt;/td&gt;
&lt;td&gt;Local developer overrides&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Should be committed?&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Used in production?&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Can be&lt;/td&gt;
&lt;td&gt;Never&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Use case&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Default settings&lt;/td&gt;
&lt;td&gt;Developer-specific changes&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  Best Practices
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;h3&gt;
  
  
  Add &lt;code&gt;.env.local&lt;/code&gt; to &lt;code&gt;.gitignore&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Your secrets should never be in Git.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;h3&gt;
  
  
  Use &lt;code&gt;.env&lt;/code&gt; for non-sensitive defaults
&lt;/h3&gt;

&lt;p&gt;E.g., logging level, app name, etc.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;h3&gt;
  
  
  Prefix with NEXT_PUBLIC_ in Next.js
&lt;/h3&gt;

&lt;p&gt;Only &lt;code&gt;env&lt;/code&gt; vars that begin with &lt;code&gt;NEXT_PUBLIC_&lt;/code&gt; are exposed to the browser:&lt;br&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;

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

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;h3&gt;
  
  
  Use &lt;code&gt;dotenv&lt;/code&gt; or built-in support
&lt;/h3&gt;

&lt;p&gt;Node apps can use the &lt;code&gt;dotenv&lt;/code&gt; package:&lt;br&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;require('dotenv').config();
console.log(process.env.API_KEY);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;h3&gt;
  
  
  Avoid committing secrets
&lt;/h3&gt;

&lt;p&gt;Even in &lt;code&gt;.env&lt;/code&gt;, don’t add real passwords or tokens if it will be versioned.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Common Mistakes to Avoid
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Hardcoding values:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const apiKey = "123456"; // DON'T DO THIS!
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Forgetting to restart dev server after changes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Always restart your dev server when you change &lt;code&gt;env&lt;/code&gt; files, or they may not reload.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Thinking .env.local works in production&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It’s meant for local development only.&lt;/p&gt;




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

&lt;p&gt;Using .env and .env.local files the right way is one of the simplest but most crucial best practices in modern app development.&lt;/p&gt;

&lt;p&gt;They make your app more secure, configurable, and collaborative-friendly across teams and environments.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;So next time you spin up a project, make sure your config is where it belongs—not buried inside your code, but safe and flexible inside a .env file!&lt;/code&gt;&lt;/p&gt;

</description>
      <category>react</category>
      <category>webdev</category>
      <category>dotenv</category>
      <category>beginners</category>
    </item>
    <item>
      <title>How to Make Your First Open Source Contribution – The Easy Way!</title>
      <dc:creator>Nitish</dc:creator>
      <pubDate>Thu, 31 Jul 2025 03:58:33 +0000</pubDate>
      <link>https://forem.com/nk2552003/how-to-make-your-first-open-source-contribution-the-easy-way-48pl</link>
      <guid>https://forem.com/nk2552003/how-to-make-your-first-open-source-contribution-the-easy-way-48pl</guid>
      <description>&lt;p&gt;Contributing to open source can feel intimidating when you’re just getting started. But thanks to repositories like &lt;a href="https://github.com/firstcontributions/first-contributions" rel="noopener noreferrer"&gt;First Contributions&lt;/a&gt;, your journey into the world of open source can be smooth, guided, and beginner-friendly.&lt;/p&gt;

&lt;p&gt;In this article, I’ll walk you through:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Setting up Git and SSH (Windows, macOS, Linux)&lt;/li&gt;
&lt;li&gt;Forking and cloning a repository&lt;/li&gt;
&lt;li&gt;Making your first pull request (PR)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Let’s dive in!&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 1: Set Up Git
&lt;/h2&gt;

&lt;p&gt;If you haven’t already, install Git on your machine:&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;For Windows:&lt;/strong&gt;
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Download and install Git from 👉 &lt;a href="https://git-scm.com/downloads" rel="noopener noreferrer"&gt;https://git-scm.com/downloads&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;During installation, choose default options unless you have specific preferences.&lt;/li&gt;
&lt;li&gt;After install, open &lt;strong&gt;Git Bash&lt;/strong&gt; (or your terminal of choice).&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;For macOS:&lt;/strong&gt;
&lt;/h3&gt;



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

&lt;/div&gt;



&lt;h3&gt;
  
  
  &lt;strong&gt;For Linux:&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install &lt;/span&gt;git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now configure Git (same email as your GitHub account):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git config &lt;span class="nt"&gt;--global&lt;/span&gt; user.name &lt;span class="s2"&gt;"Your Name"&lt;/span&gt;
git config &lt;span class="nt"&gt;--global&lt;/span&gt; user.email &lt;span class="s2"&gt;"you@example.com"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Step 2: Generate SSH Key (if not done yet)
&lt;/h2&gt;

&lt;p&gt;SSH lets your computer securely connect to GitHub without typing your username and password each time.&lt;/p&gt;

&lt;h3&gt;
  
  
  Check if you already have one:
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;ls&lt;/span&gt; &lt;span class="nt"&gt;-al&lt;/span&gt; ~/.ssh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Look for files like &lt;code&gt;id_rsa&lt;/code&gt; or &lt;code&gt;id_ed25519&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  If not, create one:
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ssh-keygen &lt;span class="nt"&gt;-t&lt;/span&gt; ed25519 &lt;span class="nt"&gt;-C&lt;/span&gt; &lt;span class="s2"&gt;"your_email@example.com"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Press Enter to accept the default file location.&lt;/li&gt;
&lt;li&gt;Optionally set a passphrase for more security.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Add the SSH key to your GitHub account:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Copy your SSH key:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cat&lt;/span&gt; ~/.ssh/id_ed25519.pub
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Copy the entire output.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Go to 👉 &lt;a href="https://github.com/settings/keys" rel="noopener noreferrer"&gt;GitHub SSH settings&lt;/a&gt;, click &lt;strong&gt;"New SSH key"&lt;/strong&gt;, give it a title, and paste the key.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Test the connection:
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ssh &lt;span class="nt"&gt;-T&lt;/span&gt; git@github.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If successful, you’ll see:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Hi your-username! You've successfully authenticated.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  For Windows Users:
&lt;/h4&gt;

&lt;p&gt;Make sure to use &lt;strong&gt;Git Bash&lt;/strong&gt; or &lt;strong&gt;WSL terminal&lt;/strong&gt; for the above commands.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 3: Fork the Repository
&lt;/h2&gt;

&lt;p&gt;Head over to the &lt;a href="https://github.com/firstcontributions/first-contributions" rel="noopener noreferrer"&gt;First Contributions GitHub Repo&lt;/a&gt; and click the &lt;strong&gt;"Fork"&lt;/strong&gt; button on the top-right to create a copy of the repo under your GitHub account click on &lt;strong&gt;SSH&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 4: Clone the Forked Repository
&lt;/h2&gt;

&lt;p&gt;Use SSH to clone your fork locally:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone git@github.com:your-username/first-contributions.git
&lt;span class="nb"&gt;cd &lt;/span&gt;first-contributions
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Step 5: Create a New Branch
&lt;/h2&gt;

&lt;p&gt;It's good practice to create a separate branch for your changes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git checkout &lt;span class="nt"&gt;-b&lt;/span&gt; add-your-name
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Step 6: Add Your Name
&lt;/h2&gt;

&lt;p&gt;Open the &lt;code&gt;Contributors.md&lt;/code&gt; file in your editor and &lt;strong&gt;add your name&lt;/strong&gt; at the end of the list. Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;Your Name&lt;/span&gt;&lt;span class="p"&gt;](&lt;/span&gt;&lt;span class="sx"&gt;https://github.com/your-username&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Step 7: Commit Your Changes
&lt;/h2&gt;

&lt;p&gt;Stage and commit your changes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git add Contributors.md
git commit &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"Add Your Name to Contributors list"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Step 8: Push Your Changes
&lt;/h2&gt;



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

&lt;/div&gt;






&lt;h2&gt;
  
  
  Step 9: Submit a Pull Request (PR)
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Go to your forked repository on GitHub.&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;"Compare &amp;amp; pull request"&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Add a descriptive title and comment.&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;"Create pull request"&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;🎉 That’s it! You just made your first open source contribution! A maintainer will review your PR and merge it once approved.&lt;/p&gt;




&lt;h2&gt;
  
  
  Bonus: Use Their Interactive Tutorial
&lt;/h2&gt;

&lt;p&gt;Want to try this in the browser without installing Git?&lt;/p&gt;

&lt;p&gt;Check out 👉 &lt;a href="https://firstcontributions.github.io" rel="noopener noreferrer"&gt;https://firstcontributions.github.io&lt;/a&gt; – an interactive Git tutorial via Gitpod. No setup required!&lt;/p&gt;




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

&lt;p&gt;The &lt;code&gt;first-contributions&lt;/code&gt; repo is a great place to break the ice in open source. It’s designed to teach, encourage, and guide.&lt;/p&gt;

&lt;p&gt;If you’ve made your first PR, &lt;strong&gt;congrats!&lt;/strong&gt; 🥳&lt;br&gt;
Now you’re ready to explore more projects and make meaningful contributions to the tech community.&lt;/p&gt;

&lt;p&gt;Feel free to share your first PR or ask questions in the comments below! 👇&lt;/p&gt;




&lt;h2&gt;
  
  
  Helpful Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Repo: &lt;a href="https://github.com/firstcontributions/first-contributions" rel="noopener noreferrer"&gt;github.com/firstcontributions/first-contributions&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;GitHub SSH Guide: &lt;a href="https://docs.github.com/en/authentication/connecting-to-github-with-ssh" rel="noopener noreferrer"&gt;docs.github.com/en/authentication/connecting-to-github-with-ssh&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Git Handbook: &lt;a href="https://guides.github.com/introduction/git-handbook/" rel="noopener noreferrer"&gt;https://guides.github.com/introduction/git-handbook/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>github</category>
      <category>git</category>
      <category>beginners</category>
      <category>devops</category>
    </item>
  </channel>
</rss>
