<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Nitish</title>
    <description>The latest articles on DEV Community by Nitish (@nk2552003).</description>
    <link>https://dev.to/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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3399338%2Fa1aea1f8-46cd-4f46-bc0a-fe180888eef4.png</url>
      <title>DEV Community: Nitish</title>
      <link>https://dev.to/nk2552003</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/nk2552003"/>
    <language>en</language>
    <item>
      <title>Built a Repository for Student Offers</title>
      <dc:creator>Nitish</dc:creator>
      <pubDate>Mon, 14 Sep 2026 04:45:44 +0000</pubDate>
      <link>https://dev.to/nk2552003/built-a-repository-for-student-offers-58b2</link>
      <guid>https://dev.to/nk2552003/built-a-repository-for-student-offers-58b2</guid>
      <description>&lt;p&gt;As a student, I kept finding useful student offers randomly — sometimes through GitHub, sometimes from a friend, and sometimes from a post I happened to come across.&lt;/p&gt;

&lt;p&gt;Free developer tools, AI tools, cloud credits, design software, premium plans, learning platforms… there are actually a lot of benefits available to students.&lt;/p&gt;

&lt;p&gt;The problem is that &lt;strong&gt;they're scattered everywhere&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;So I decided to put them together.&lt;/p&gt;

&lt;h2&gt;
  
  
  Student Offer Repository
&lt;/h2&gt;

&lt;p&gt;I created an open-source GitHub repository where students can find useful offers, tools, credits, trials, and education plans in one place.&lt;/p&gt;

&lt;p&gt;The repository currently contains &lt;strong&gt;200+ listings&lt;/strong&gt;, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Free student and education plans&lt;/li&gt;
&lt;li&gt;Developer tools&lt;/li&gt;
&lt;li&gt;AI tools and services&lt;/li&gt;
&lt;li&gt;Cloud credits&lt;/li&gt;
&lt;li&gt;Design and productivity tools&lt;/li&gt;
&lt;li&gt;Learning platforms&lt;/li&gt;
&lt;li&gt;GitHub Student Developer Pack benefits&lt;/li&gt;
&lt;li&gt;Free trials and credits&lt;/li&gt;
&lt;li&gt;Region-specific offers&lt;/li&gt;
&lt;li&gt;Expired/replaced offers for reference&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Not Just a List of Links
&lt;/h2&gt;

&lt;p&gt;One thing I didn't want was another README containing hundreds of links with no context.&lt;/p&gt;

&lt;p&gt;For the offers, I've tried to include the details that actually matter before signing up:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Eligibility&lt;/strong&gt; — Who can claim it?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Region&lt;/strong&gt; — Is it available globally or only in certain countries?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Verification&lt;/strong&gt; — Student email, university ID, SheerID, GitHub Education, etc.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Duration&lt;/strong&gt; — A few months, one year, or while you're a student?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Renewal&lt;/strong&gt; — Can you renew it after it expires?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Billing&lt;/strong&gt; — Does it require a card or automatically convert to a paid plan?&lt;/p&gt;

&lt;p&gt;And wherever possible, I've included the &lt;strong&gt;official source&lt;/strong&gt; so the information can be verified.&lt;/p&gt;

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

&lt;p&gt;There are some seriously useful tools available to students that many of us simply don't know about.&lt;/p&gt;

&lt;p&gt;You might already be eligible for software or services that would normally cost money.&lt;/p&gt;

&lt;p&gt;Instead of searching:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Does X have a student plan?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;every time I discover a new tool, I wanted a place where I could just search one repository.&lt;/p&gt;

&lt;p&gt;And if I'm already collecting this information for myself, I thought it might be useful to other students too.&lt;/p&gt;

&lt;p&gt;So I made it public and open source.&lt;/p&gt;

&lt;h2&gt;
  
  
  It's Community Driven
&lt;/h2&gt;

&lt;p&gt;I definitely won't be able to discover every student offer myself.&lt;/p&gt;

&lt;p&gt;That's why contributions are welcome.&lt;/p&gt;

&lt;p&gt;If you find:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a new student offer&lt;/li&gt;
&lt;li&gt;an expired offer&lt;/li&gt;
&lt;li&gt;incorrect eligibility information&lt;/li&gt;
&lt;li&gt;a better official source&lt;/li&gt;
&lt;li&gt;a country-specific student benefit&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;you can open an issue or submit a pull request.&lt;/p&gt;

&lt;p&gt;The goal is to gradually build a reliable, community-maintained collection that students can actually use.&lt;/p&gt;

&lt;h2&gt;
  
  
  Check It Out
&lt;/h2&gt;

&lt;p&gt;If you're a student, spend a few minutes browsing through it.&lt;/p&gt;

&lt;p&gt;You might discover something you didn't even know you could get for free.&lt;/p&gt;

&lt;p&gt;GitHub:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/NK2552003/Student-Offer-Repository" rel="noopener noreferrer"&gt;https://github.com/NK2552003/Student-Offer-Repository&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If it helps you, consider giving the repository a ⭐.&lt;/p&gt;

&lt;p&gt;And if you know an offer that's missing, feel free to contribute.&lt;/p&gt;

&lt;p&gt;Still building it. Still adding more.&lt;/p&gt;




</description>
      <category>beginners</category>
      <category>offers</category>
      <category>productivity</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>LLM Fundamentals Every Developer Should Actually Understand</title>
      <dc:creator>Nitish</dc:creator>
      <pubDate>Tue, 08 Sep 2026 17:16:33 +0000</pubDate>
      <link>https://dev.to/nk2552003/llm-fundamentals-every-developer-should-actually-understand-2h8</link>
      <guid>https://dev.to/nk2552003/llm-fundamentals-every-developer-should-actually-understand-2h8</guid>
      <description>&lt;p&gt;If you're building anything with AI right now, you're probably treating the LLM like a magic box: you send text in, text comes out, and when it doesn't work you just... poke it differently and hope. That works up to a point. But there are a handful of underlying mechanics that, once you understand them, completely change how you debug prompts, design agents, and reason about cost and reliability.&lt;/p&gt;

&lt;p&gt;I recently went through &lt;a href="https://www.aihero.dev/llm-fundamentals" rel="noopener noreferrer"&gt;Matt Pocock's free "LLM Fundamentals" video series on AI Hero&lt;/a&gt;, and it's a genuinely great five-lesson crash course on exactly this. Below is my own write-up of the core ideas, partly as notes for myself and partly because I think every dev working with AI APIs should know this stuff cold.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Conversations are just a list of messages
&lt;/h2&gt;

&lt;p&gt;Under the hood, a "chat" with an LLM isn't a chat at all — it's an array of messages that gets replayed to the model every single time. Two roles matter most:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;User messages&lt;/strong&gt; — what you send&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Assistant messages&lt;/strong&gt; — what the model sends back&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Sitting above all of that is the &lt;strong&gt;system prompt&lt;/strong&gt;: an instruction block at the very start of the history that's usually invisible to the end user but highly visible — and highly obeyed — by the model. If there's a conflict between what the system prompt says and what the user asks for, the model will generally side with the system prompt. This is the whole mechanism behind "custom GPTs," AI coding assistants with personalities, and most jailbreak-resistance efforts (imperfect as they are).&lt;/p&gt;

&lt;p&gt;Two more things live inside assistant messages that are easy to overlook:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Reasoning tokens&lt;/strong&gt; — the "thinking" text some models produce before their final answer. It's not a separate channel; it's just another part of the same message.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;File parts&lt;/strong&gt; — messages can carry more than text. You can attach a PDF for the model to summarize, or get an image back as part of a response.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The upshot: once you think of "the conversation" as a plain array of typed message parts instead of a chat bubble UI, a lot of AI SDK code stops feeling mysterious.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Text becomes numbers — and that's all a model actually sees
&lt;/h2&gt;

&lt;p&gt;LLMs don't read words. They read &lt;strong&gt;tokens&lt;/strong&gt; — numbers derived from your text via a process called encoding, and turned back into text via decoding.&lt;/p&gt;

&lt;p&gt;The vocabulary of tokens is built by analyzing a huge corpus of text: start with individual characters, find common groupings of characters, then find common groupings of &lt;em&gt;those&lt;/em&gt; groupings, until you've built up a vocabulary of a few tens of thousands of "chunks." A bigger vocabulary means common words get compressed into fewer tokens, which is more efficient — a word like "understanding" might take 5 tokens in a small vocabulary but only 2 in a large one.&lt;/p&gt;

&lt;p&gt;This is also why unusual or made-up words get chopped up strangely — a nonsense word like "Frabjous" doesn't appear often (or at all) in the training corpus, so the tokenizer has to break it into a surprising number of small fragments instead of recognizing it as a clean chunk.&lt;/p&gt;

&lt;p&gt;Why does this matter practically? Because:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;You're billed per token&lt;/strong&gt;, input and output, usually at different rates.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Input tokens&lt;/strong&gt; include your entire conversation history, your system prompt, &lt;em&gt;and&lt;/em&gt; your tool definitions — not just the message you just typed.&lt;/li&gt;
&lt;li&gt;Trimming unnecessary output (by asking for concise responses, structured formats, etc.) is a legitimate way to cut cost.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you want to actually see this happen, the &lt;a href="https://tiktokenizer.vercel.app/" rel="noopener noreferrer"&gt;Tiktokenizer playground&lt;/a&gt; is a great way to watch text get chopped into tokens live.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. The context window has a ceiling — and a soft spot
&lt;/h2&gt;

&lt;p&gt;The &lt;strong&gt;context window&lt;/strong&gt; is input tokens + output tokens, combined, and every model has a hard limit on it. Push a conversation past that limit and you'll get an error — sometimes mid-generation, where the model starts a response and simply runs out of room to finish it. The model has no built-in awareness of this limit; it can't gracefully plan around it.&lt;/p&gt;

&lt;p&gt;But the harder problem isn't the hard limit — it's what happens well before you hit it: the &lt;strong&gt;"lost in the middle"&lt;/strong&gt; effect. Information near the start and end of a long context gets attended to reasonably well; information buried in the middle gets less attention from the model, and retrieval quality drops accordingly. This gets worse, not better, as context windows get larger.&lt;/p&gt;

&lt;p&gt;The practical implication is important: a huge context window is not a green light to dump everything you have into the prompt. A model that supports 1M tokens of context will usually still perform better with a focused 20K-token prompt than a sprawling 500K-token one. Bigger context is a safety net, not an invitation.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Tools are just a structured way for the LLM to ask you for things
&lt;/h2&gt;

&lt;p&gt;"Tool calling" (or "function calling") sounds fancier than it is. Here's the whole mechanism:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;You describe available tools in the system prompt — a &lt;strong&gt;name&lt;/strong&gt;, a &lt;strong&gt;description&lt;/strong&gt;, and a set of &lt;strong&gt;parameters&lt;/strong&gt; defined via JSON Schema.&lt;/li&gt;
&lt;li&gt;The user sends a message, e.g. &lt;em&gt;"write a new file called .gitignore."&lt;/em&gt; You don't have to explicitly say "use the writeFile tool" — the model decides for itself which tool fits, if any.&lt;/li&gt;
&lt;li&gt;The model responds not with plain text, but with a &lt;strong&gt;tool call&lt;/strong&gt;: a structured message containing an &lt;code&gt;id&lt;/code&gt;, the tool name, and the arguments it wants to call it with.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Crucially, nothing has actually happened yet.&lt;/strong&gt; The model has only produced a message describing what it &lt;em&gt;wants&lt;/em&gt; to do. Your application code is responsible for actually executing that action — writing the file, hitting the API, querying the database, whatever the tool represents.&lt;/li&gt;
&lt;li&gt;You send a &lt;strong&gt;tool result&lt;/strong&gt; back to the model, referencing the same &lt;code&gt;id&lt;/code&gt;, describing what happened (success or failure — error messages need to go back to the model too, so it can adapt).&lt;/li&gt;
&lt;li&gt;The model sees the full updated history and responds with a natural-language summary — something like &lt;em&gt;"Done. What should go in there?"&lt;/em&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That's it. Tool calling is a request/response loop layered on top of the same plain message array from section 1. This simple loop — describe tools, let the model choose, execute on your machine, report back — is the entire mechanism behind how tools like Claude Code and Cursor read files, run commands, and modify your codebase.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Agents vs. workflows: who's driving?
&lt;/h2&gt;

&lt;p&gt;Once you're chaining multiple LLM calls together, you're building either a &lt;strong&gt;workflow&lt;/strong&gt; or an &lt;strong&gt;agent&lt;/strong&gt; — and the difference comes down to one question: &lt;em&gt;who decides when to stop?&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Workflow&lt;/strong&gt;: the developer writes the steps in code. Call the LLM, do something with the result, maybe call it again, then stop — all according to predetermined logic. The control flow lives in your code, not in the model's head.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Agent&lt;/strong&gt;: you hand the LLM a set of tools and let it decide, turn by turn, what to call next and when it's actually finished. There's no predetermined path — the model improvises its way through the problem.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Neither is strictly better. Agents shine when the steps required to solve a problem aren't knowable in advance and the system needs room to improvise. Workflows shine when the task is well-understood and needs to be done the same reliable way every time — and they're honestly underrated, since "agent" gets all the hype while "workflow" sounds boring by comparison.&lt;/p&gt;

&lt;p&gt;A good example of a workflow pattern: splitting a long document into chunks, summarizing each chunk independently and in parallel, then summarizing the summaries. No improvisation needed — just orchestration. That's a workflow doing a job an agent would do less predictably and at higher cost.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this actually matters
&lt;/h2&gt;

&lt;p&gt;None of these five ideas are complicated on their own. But together they explain almost every weird failure mode you'll hit building with LLMs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Model "ignoring" your instructions later in a long chat? Lost in the middle.&lt;/li&gt;
&lt;li&gt;API call failing on an otherwise-fine prompt? You blew the context window.&lt;/li&gt;
&lt;li&gt;Costs creeping up unexpectedly? Check your tool definitions and conversation history — they're input tokens too.&lt;/li&gt;
&lt;li&gt;Model doing something bizarre with an unusual identifier or made-up term? Tokenization artifacts.&lt;/li&gt;
&lt;li&gt;Agent looping forever or doing something unpredictable? You probably wanted a workflow.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Full credit to Matt Pocock for putting this together — the &lt;a href="https://www.aihero.dev/llm-fundamentals" rel="noopener noreferrer"&gt;original five-part series&lt;/a&gt; has diagrams for every concept above and is worth watching directly if you want the visual walkthrough rather than my recap.&lt;/p&gt;

&lt;p&gt;What's the LLM quirk that's bitten you the hardest in production? Curious to hear war stories in the comments.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>beginners</category>
      <category>webdev</category>
    </item>
    <item>
      <title>The Twenty-Minute Problem</title>
      <dc:creator>Nitish</dc:creator>
      <pubDate>Mon, 27 Jul 2026 13:59:50 +0000</pubDate>
      <link>https://dev.to/nk2552003/the-twenty-minute-problem-37ja</link>
      <guid>https://dev.to/nk2552003/the-twenty-minute-problem-37ja</guid>
      <description>&lt;p&gt;It was a Sunday, and Shreyansh had exactly one job: get a new laptop ready for work by lunch.&lt;/p&gt;

&lt;p&gt;He opened a terminal, typed &lt;code&gt;git clone&lt;/code&gt;, and watched the repo drop onto his machine. Simple enough. Then came the real work.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;npm install&lt;/code&gt; — fine, that one runs itself. But then the README asked for a specific Node version, so he opened a version manager and switched. Then it wanted three environment variables, so he dug through an old Slack thread to find them. Then a database needed to exist locally, so he installed it, started the service, and typed out a handful of &lt;code&gt;CREATE TABLE&lt;/code&gt; statements from memory because the schema file was buried two folders deep. Then a &lt;code&gt;.env.example&lt;/code&gt; file needed copying and renaming — a step so small it was almost insulting, and yet he forgot it twice.&lt;/p&gt;

&lt;p&gt;By the time everything ran, it was well past noon. Nothing about the process was hard. It was just long, repetitive, and full of little steps that lived only in his memory or in someone else's head.&lt;/p&gt;

&lt;p&gt;That evening, Shreyansh decided the next new laptop would not cost him a morning.&lt;/p&gt;

&lt;h2&gt;
  
  
  The First Script
&lt;/h2&gt;

&lt;p&gt;He opened a blank file and named it &lt;code&gt;setup.sh&lt;/code&gt;. Not because it was clever, but because it was the most boring, obvious name he could pick — anyone opening the project folder would know exactly what it did.&lt;/p&gt;

&lt;p&gt;He started small:&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;#!/bin/bash&lt;/span&gt;
npm &lt;span class="nb"&gt;install&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;One line. It didn't solve much on its own, but it proved the idea: a script is just a list of commands that a human would normally type one at a time, written down so the computer can type them instead.&lt;/p&gt;

&lt;p&gt;Then he added the next annoying step — copying the environment file:&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="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt; &lt;span class="nt"&gt;-f&lt;/span&gt; .env &lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then
  &lt;/span&gt;&lt;span class="nb"&gt;cp&lt;/span&gt; .env.example .env
  &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Created .env — remember to fill in your values"&lt;/span&gt;
&lt;span class="k"&gt;fi&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That &lt;code&gt;if&lt;/code&gt; check mattered. He'd learned the hard way, on an older project, that a script which blindly overwrites files is worse than no script at all — it can wipe out someone's real configuration in half a second. A good setup script is polite. It checks before it acts.&lt;/p&gt;

&lt;h2&gt;
  
  
  Teaching It to Notice Things
&lt;/h2&gt;

&lt;p&gt;The database was the part he dreaded most, so he tackled it next.&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="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt; &lt;span class="nb"&gt;command&lt;/span&gt; &lt;span class="nt"&gt;-v&lt;/span&gt; postgres &amp;amp;&amp;gt; /dev/null&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then
  &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Postgres not found — installing..."&lt;/span&gt;
  brew &lt;span class="nb"&gt;install &lt;/span&gt;postgresql
&lt;span class="k"&gt;fi

&lt;/span&gt;brew services start postgresql
createdb myapp_dev 2&amp;gt;/dev/null &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Database already exists, skipping"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each line was small, but together they did something bigger: the script could now look at a machine, notice what was missing, and fix only that. It didn't matter if Postgres was already installed — the script would check first and skip the step, the same way a careful person would.&lt;/p&gt;

&lt;p&gt;He added the schema next, so a fresh database wasn't just empty but actually usable:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;psql myapp_dev &lt;span class="nt"&gt;-f&lt;/span&gt; schema.sql
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;By the end of the evening, &lt;code&gt;setup.sh&lt;/code&gt; was maybe thirty lines long. Not clever, not fancy — just a record of every small decision he used to make by hand, written down once so he'd never have to make them again.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Second Laptop
&lt;/h2&gt;

&lt;p&gt;Three weeks later, a new teammate joined. Shreyansh sent over the repo and one instruction:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;chmod +x setup.sh &amp;amp;&amp;amp; ./setup.sh&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Eleven minutes later, she messaged back: &lt;em&gt;"It's running. Weirdly satisfying to watch."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;No Slack thread. No hunting for a schema file. No forgotten &lt;code&gt;.env&lt;/code&gt; copy. The script didn't know anything Shreyansh didn't know — it just remembered it more reliably than he did, and it never got tired of typing the same commands.&lt;/p&gt;

&lt;p&gt;That was the real shift. The script wasn't saving &lt;em&gt;time&lt;/em&gt; so much as it was saving &lt;em&gt;attention&lt;/em&gt;. Every manual step is a place where someone can get distracted, mistype, or skip something without noticing. A script either runs the step or it doesn't — there's no in-between where it "forgot," the way a tired person at 11 AM might.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the Script Actually Bought Him
&lt;/h2&gt;

&lt;p&gt;Looking back, the thirty lines in &lt;code&gt;setup.sh&lt;/code&gt; were doing four separate jobs at once, even though it didn't feel like it while he was writing them:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;A record.&lt;/strong&gt; The script was the real documentation. Not a README that could drift out of date, but something that either worked or loudly didn't.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A safety net.&lt;/strong&gt; The &lt;code&gt;if&lt;/code&gt; checks meant it was safe to run twice, on a clean machine or a messy one, without asking first "wait, will this break anything?"&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A shared starting line.&lt;/strong&gt; Everyone who ran it ended up in the exact same place — same dependencies, same database state, same environment file — instead of five slightly different setups that "mostly" matched.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A found half-day.&lt;/strong&gt; Multiply eleven minutes by every new machine, every fresh clone, every time someone wiped their laptop and started over. The minutes were small. The total wasn't.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Part People Skip
&lt;/h2&gt;

&lt;p&gt;Shreyansh almost stopped there, but one more habit made the difference between a script people trusted and one they quietly avoided: he made it talk.&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="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"→ Installing dependencies..."&lt;/span&gt;
npm &lt;span class="nb"&gt;install
echo&lt;/span&gt; &lt;span class="s2"&gt;"✓ Dependencies installed"&lt;/span&gt;

&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"→ Setting up database..."&lt;/span&gt;
createdb myapp_dev 2&amp;gt;/dev/null &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"  (already exists)"&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"✓ Database ready"&lt;/span&gt;

&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;""&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"All set. Run 'npm start' to begin."&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A script that runs silently for two minutes feels like it might have frozen. A script that narrates itself — even in short, plain lines — feels like it's under control, and so does the person running it. That small bit of feedback was the difference between a teammate watching calmly and a teammate opening a second terminal to check if anything was actually happening.&lt;/p&gt;

</description>
      <category>bash</category>
      <category>automation</category>
      <category>devops</category>
    </item>
    <item>
      <title>Build Something I Desperately Needed as a CS Student</title>
      <dc:creator>Nitish</dc:creator>
      <pubDate>Thu, 07 May 2026 18:03:04 +0000</pubDate>
      <link>https://dev.to/nk2552003/build-something-i-desperately-needed-as-a-cs-student-47m2</link>
      <guid>https://dev.to/nk2552003/build-something-i-desperately-needed-as-a-cs-student-47m2</guid>
      <description>&lt;p&gt;Let me be real with you.&lt;/p&gt;

&lt;p&gt;Last semester, I was convinced I was putting in solid hours every day. I'd sit down at 10am, open VS Code, and look up at the clock — it'd be 4pm. Six hours. That felt productive.&lt;/p&gt;

&lt;p&gt;But when exam season hit and I needed to actually &lt;em&gt;measure&lt;/em&gt; what I'd been doing, I had nothing. No data. No proof to myself. Just vibes and a half-finished project.&lt;/p&gt;

&lt;p&gt;I tried timer apps. I tried Toggl. I tried writing it down in Obsidian. None of it stuck because &lt;strong&gt;the context switch killed me&lt;/strong&gt; — having to go &lt;em&gt;outside&lt;/em&gt; my editor to log a session meant I just... didn't.&lt;/p&gt;

&lt;p&gt;And VS Code? VS Code, which I live in for 8+ hours a day, had absolutely nothing built in for this.&lt;/p&gt;

&lt;p&gt;No session timer. No focus score. No "hey, you've been idle for 20 minutes, are you still actually working?" No Pomodoro. No history of which projects ate your week. Nothing.&lt;/p&gt;

&lt;p&gt;That gap felt absurd to me. So I built something.&lt;/p&gt;




&lt;h2&gt;
  
  
  Meet FocusForge
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff0e5fuhgzenwny2esg4y.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%2Ff0e5fuhgzenwny2esg4y.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=NK2552003.focusforge" rel="noopener noreferrer"&gt;FocusForge: Coding Session Tracker&lt;/a&gt;&lt;/strong&gt; — a VS Code extension that turns your editor into a local-first productivity cockpit.&lt;/p&gt;

&lt;p&gt;It tracks what &lt;em&gt;actually&lt;/em&gt; matters:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Real active time&lt;/strong&gt; — not just "window open" time. It detects when you're idle and separates it from genuine work time.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Focus Score&lt;/strong&gt; — a live gauge built from your active ratio, flow minutes, break hygiene, and idle interruptions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pomodoro Mode&lt;/strong&gt; — 25/5/15 defaults, auto-advance, sound, status badges, all native inside VS Code.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Flow State detection&lt;/strong&gt; — once you've been heads-down for 25 minutes straight, it recognizes that and tracks it separately.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Project analytics&lt;/strong&gt; — auto-detected from your Git workspace so you know exactly where your hours are going.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Session journal&lt;/strong&gt; — add a mood, a one-liner about what you worked on, blockers. Perfect for standups.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;100+ achievements&lt;/strong&gt; — because learning to code is hard, and small wins matter.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Issue integration&lt;/strong&gt; — log, comment, close issues right from your sidebar.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Weekly reports&lt;/strong&gt; — Markdown or HTML, saved locally in &lt;code&gt;.vscode/session-reports/&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All of it lives in your VS Code global state. No cloud. No account. No extension-owned backend. Your data is yours.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Problem VS Code Doesn't Solve (Yet)
&lt;/h2&gt;

&lt;p&gt;Here's what surprised me when I started building this: VS Code is &lt;em&gt;incredibly&lt;/em&gt; powerful but treats your time as completely invisible.&lt;/p&gt;

&lt;p&gt;You can see which file you're editing. You can see Git blame. You can see lint errors in real time. But it has no concept of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;How long you've been coding today&lt;/strong&gt; vs. how long you've had the editor open&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Whether you're in a flow state&lt;/strong&gt; or just context-switching every 3 minutes&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Which project is actually consuming your week&lt;/strong&gt; (hint: never the one you think)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;How many Pomodoros you completed&lt;/strong&gt; before you hit burnout&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What you were working on last Tuesday&lt;/strong&gt; when your team asks in standup&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For students especially — where there's no manager tracking your hours, no ticket system forcing structure — this invisibility is brutal. You lose entire weeks without realizing it.&lt;/p&gt;

&lt;p&gt;FocusForge makes all of that visible.&lt;/p&gt;




&lt;h2&gt;
  
  
  How It Actually Works
&lt;/h2&gt;

&lt;p&gt;When you open VS Code with FocusForge installed, it starts a session automatically. From there:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Today tab&lt;/strong&gt; gives you a live dashboard — active time, idle time, efficiency percentage, current state (active / idle / paused / flow / deep work), a Focus Score gauge with color zones, and a 12-week contribution-style heatmap.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Deep Work Mode&lt;/strong&gt; is my personal favourite. It's a focused coding block that hides the activity bar, mutes notifications, and gives you a full-screen distraction-free environment with a countdown. When you're studying for a test or pushing to finish a feature before deadline, this mode is the difference.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The History tab&lt;/strong&gt; shows a 14-session bar chart with clickable detail panels — active time, efficiency, focus score, peak streak, flow time, break counts, commits made during the session, and language breakdown.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Journal&lt;/strong&gt; is lightweight on purpose. Just a mood, a one-liner, optional blockers. The weekly view is perfect for async standups and self-reflection.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub Issue Log&lt;/strong&gt; connects to your local repo automatically. No setup beyond a GitHub token if you want remote repos. You can create, comment, close, and log issue completions — and they'll show up in your weekly report.&lt;/p&gt;




&lt;h2&gt;
  
  
  Install It
&lt;/h2&gt;

&lt;p&gt;Search &lt;strong&gt;FocusForge&lt;/strong&gt; in the VS Code Extensions tab, or:&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.focusforge
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or grab it directly from the &lt;a href="https://marketplace.visualstudio.com/items?itemName=NK2552003.focusforge" rel="noopener noreferrer"&gt;VS Code Marketplace →&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The Soundtrack to Your Flow State 🎧
&lt;/h2&gt;

&lt;p&gt;Here's a feature I didn't plan but ended up loving more than almost anything else in FocusForge.&lt;/p&gt;

&lt;p&gt;I was three hours into a debugging session once, headphones in, streaming &lt;a href="https://musicforprogramming.net" rel="noopener noreferrer"&gt;musicforprogramming.net&lt;/a&gt; in a separate tab. The kind of slow, atmospheric, textural music specifically curated for deep coding work — no lyrics, no sudden drops, just long drifting soundscapes that keep your brain in a calm, engaged state.&lt;/p&gt;

&lt;p&gt;And then my tab crashed. Lost the music. Lost the flow. Closed my laptop out of frustration.&lt;/p&gt;

&lt;p&gt;That's when I discovered &lt;a href="https://github.com/isdampe/music-for-programming" rel="noopener noreferrer"&gt;isdampe's &lt;code&gt;music-for-programming&lt;/code&gt;&lt;/a&gt; — a Node.js CLI that streams musicforprogramming.net (and toggleable rain from rainymood.com) directly into your terminal. Beautiful little tool. But it still meant context-switching out of my editor.&lt;/p&gt;

&lt;p&gt;So I brought it inside.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FocusForge's Ambient Audio panel&lt;/strong&gt; streams directly from musicforprogramming.net — 70+ episodes of handpicked coding soundscapes, from drone textures to modular synthesis to field recordings — all playable right from your VS Code sidebar. No browser tab. No Spotify. No notifications from a separate app.&lt;/p&gt;

&lt;p&gt;You can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Browse and play any episode from the musicforprogramming.net catalogue&lt;/li&gt;
&lt;li&gt;Toggle rain overlay on/off (yes, rain + ambient music is genuinely incredible for focus)&lt;/li&gt;
&lt;li&gt;Set volume independently&lt;/li&gt;
&lt;li&gt;Auto-start audio when a session begins&lt;/li&gt;
&lt;li&gt;Audio pauses automatically when you go idle — resumes when you're back&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The pausing-on-idle part is what makes it feel &lt;em&gt;intentional&lt;/em&gt;. The music isn't just background noise — it's tied to your actual work state. When you're in flow, it plays. When you drift away, it quietly stops. When you return, it picks back up. It mirrors your focus in a way that nothing else does.&lt;/p&gt;

&lt;p&gt;Huge credit to &lt;a href="https://github.com/isdampe" rel="noopener noreferrer"&gt;isdampe&lt;/a&gt; for the original &lt;code&gt;music-for-programming&lt;/code&gt; repo that inspired this, and to the team at &lt;a href="https://musicforprogramming.net" rel="noopener noreferrer"&gt;musicforprogramming.net&lt;/a&gt; for building one of the most genuinely useful resources for developers that almost nobody talks about.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why I'm Sharing This
&lt;/h2&gt;

&lt;p&gt;I've seen a lot of "I built a thing" posts where the tool is clearly built for a portfolio and never used by anyone including the author. That's not this.&lt;/p&gt;

&lt;p&gt;I use FocusForge starting today as i published it now. I think it will change on how I think about my sessions. The journal alone has saved me in standup conversations more times than I can count.&lt;/p&gt;

&lt;p&gt;If you're a student grinding through projects, a developer freelancing without a time-tracking system, or just someone who wants to know where their coding hours &lt;em&gt;actually&lt;/em&gt; go — this was built for you.&lt;/p&gt;

&lt;p&gt;Go forge something.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Built with TypeScript, VS Code Extension API, and a lot of late-night sessions that FocusForge dutifully tracked.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>vscode</category>
      <category>tooling</category>
      <category>newbie</category>
    </item>
    <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://dev.to/nk2552003/github-suspended-me-turns-out-that-was-fine-3ba5</link>
      <guid>https://dev.to/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://dev.to/nk2552003/pasteshield-an-extension-that-can-save-you-from-deploying-the-secrets-422h</link>
      <guid>https://dev.to/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://dev.to/nk2552003/the-quiet-files-that-make-a-website-trustworthy-nn0</link>
      <guid>https://dev.to/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://dev.to/nk2552003/building-a-vs-code-extension-heres-what-it-does-need-your-help-2ad5</link>
      <guid>https://dev.to/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://dev.to/nk2552003/forest-ash-theme-21-eye-friendly-vs-code-themes-inspired-by-anime-nature-3ccg</link>
      <guid>https://dev.to/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://dev.to/nk2552003/how-i-built-a-big-data-survival-guide-because-my-semester-was-not-surviving-me-5bji</link>
      <guid>https://dev.to/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://dev.to/nk2552003/from-beautiful-soup-to-building-the-ultimate-media-downloader-53d2</link>
      <guid>https://dev.to/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://dev.to/nk2552003/the-anthology-of-a-creative-developer-a-2026-portfolio-56jp</link>
      <guid>https://dev.to/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>
  </channel>
</rss>
