<?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: Muhammad Hamid Raza</title>
    <description>The latest articles on DEV Community by Muhammad Hamid Raza (@hamidrazadev).</description>
    <link>https://dev.to/hamidrazadev</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3131979%2F8333e423-4d9b-4851-ab42-f268ef4993c4.png</url>
      <title>DEV Community: Muhammad Hamid Raza</title>
      <link>https://dev.to/hamidrazadev</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/hamidrazadev"/>
    <language>en</language>
    <item>
      <title>VS Code Tips and Tricks That Will Seriously Boost Your Developer Experience</title>
      <dc:creator>Muhammad Hamid Raza</dc:creator>
      <pubDate>Sat, 18 Apr 2026 17:05:31 +0000</pubDate>
      <link>https://dev.to/hamidrazadev/vs-code-tips-and-tricks-that-will-seriously-boost-your-developer-experience-em5</link>
      <guid>https://dev.to/hamidrazadev/vs-code-tips-and-tricks-that-will-seriously-boost-your-developer-experience-em5</guid>
      <description>&lt;p&gt;You open VS Code, stare at your editor, and start typing. Same workflow, same shortcuts, same frustration when something takes longer than it should. Sound familiar? 😅&lt;/p&gt;

&lt;p&gt;VS Code is probably the most popular code editor on the planet right now — and for good reason. It's fast, flexible, and packed with features. But most developers only use maybe 20% of what it actually offers. The other 80%? It's just sitting there, waiting to save you hours every week.&lt;/p&gt;

&lt;p&gt;Whether you've been using VS Code for years or just installed it last week, there are always small tweaks and hidden features that make the experience feel smoother, faster, and honestly — a lot more enjoyable.&lt;/p&gt;

&lt;p&gt;So here's the question: what if your editor could work &lt;em&gt;for&lt;/em&gt; you instead of just being a window you type code into?&lt;/p&gt;




&lt;h2&gt;
  
  
  What Is "Developer Experience" in VS Code?
&lt;/h2&gt;

&lt;p&gt;Developer experience (DX) is exactly what it sounds like — how enjoyable, efficient, and smooth your day-to-day coding feels.&lt;/p&gt;

&lt;p&gt;Think of it like a kitchen. A good kitchen has everything in the right place. Your tools are sharp, the layout makes sense, and you can cook without bumping into stuff. A bad kitchen? You're hunting for utensils, the stove is too far from the sink, and somehow you always burn the pasta.&lt;/p&gt;

&lt;p&gt;VS Code is your kitchen. The tips in this post help you organize it so everything is right where you need it.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why This Matters for Everyday Development
&lt;/h2&gt;

&lt;p&gt;Bad DX kills momentum. When your editor slows you down — slow search, messy file navigation, no snippets, zero shortcuts — you break your flow constantly.&lt;/p&gt;

&lt;p&gt;And flow is everything in development. Once you lose it, getting it back takes time.&lt;/p&gt;

&lt;p&gt;Improving your VS Code setup is not about being fancy. It's about removing friction. When your editor feels natural and responsive, you write better code, debug faster, and ship more confidently.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Tips and Tricks That Actually Help 🚀
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Master the Command Palette
&lt;/h3&gt;

&lt;p&gt;Press &lt;code&gt;Ctrl + Shift + P&lt;/code&gt; (or &lt;code&gt;Cmd + Shift + P&lt;/code&gt; on Mac). That's it. That's your superpower.&lt;/p&gt;

&lt;p&gt;The Command Palette gives you access to literally every VS Code feature — without touching your mouse. You can open settings, install extensions, run tasks, change themes, and more. If you're not using this daily, you're leaving speed on the table.&lt;/p&gt;




&lt;h3&gt;
  
  
  2. Use Multi-Cursor Editing
&lt;/h3&gt;

&lt;p&gt;Need to rename the same variable in five places at once? Don't do it one by one like it's 2005.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;Alt + Click&lt;/code&gt; (or &lt;code&gt;Option + Click&lt;/code&gt; on Mac) to place multiple cursors wherever you want.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Ctrl + D&lt;/code&gt; to select the next occurrence of the highlighted word and edit them all at once.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This one trick alone can shave serious time off repetitive edits.&lt;/p&gt;




&lt;h3&gt;
  
  
  3. Open Files Instantly with Quick Open
&lt;/h3&gt;

&lt;p&gt;Press &lt;code&gt;Ctrl + P&lt;/code&gt; and start typing the filename. VS Code fuzzy-searches your project and opens it almost instantly.&lt;/p&gt;

&lt;p&gt;No folder-diving. No sidebar scrolling. Just type and go. ⚡&lt;/p&gt;




&lt;h3&gt;
  
  
  4. Set Up a Good Font and Theme
&lt;/h3&gt;

&lt;p&gt;This sounds cosmetic, but it genuinely affects how long you can comfortably code.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Fira Code&lt;/strong&gt; and &lt;strong&gt;JetBrains Mono&lt;/strong&gt; are developer favorites with built-in ligatures (those little symbols where &lt;code&gt;=&amp;gt;&lt;/code&gt; and &lt;code&gt;!==&lt;/code&gt; look cleaner).&lt;/li&gt;
&lt;li&gt;A good dark theme like &lt;strong&gt;One Dark Pro&lt;/strong&gt;, &lt;strong&gt;Catppuccin&lt;/strong&gt;, or &lt;strong&gt;Dracula Official&lt;/strong&gt; reduces eye strain during long sessions.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Go to settings and enable &lt;code&gt;"editor.fontLigatures": true&lt;/code&gt; if your font supports it.&lt;/p&gt;




&lt;h3&gt;
  
  
  5. Create and Use Code Snippets
&lt;/h3&gt;

&lt;p&gt;If you type the same boilerplate code every day, it's time to automate it.&lt;/p&gt;

&lt;p&gt;VS Code lets you create custom snippets. For example, you can type &lt;code&gt;rfc&lt;/code&gt; and have it expand into a full React functional component skeleton instantly.&lt;/p&gt;

&lt;p&gt;Go to &lt;strong&gt;File → Preferences → Configure User Snippets&lt;/strong&gt;, pick your language, and add your own. It takes ten minutes to set up and saves you hours over time.&lt;/p&gt;




&lt;h3&gt;
  
  
  6. Split Editor and Work in Parallel
&lt;/h3&gt;

&lt;p&gt;Press &lt;code&gt;Ctrl + \&lt;/code&gt; to split your editor into two panels. Now you can have your component file on the left and its CSS on the right. Or your frontend code and API response side by side.&lt;/p&gt;

&lt;p&gt;This is one of those things that sounds small until you actually start using it every day. 👀&lt;/p&gt;




&lt;h3&gt;
  
  
  7. Use the Integrated Terminal Properly
&lt;/h3&gt;

&lt;p&gt;You don't need to leave VS Code to run your commands. Press &lt;code&gt;Ctrl + `&lt;/code&gt; to open the integrated terminal.&lt;/p&gt;

&lt;p&gt;Better yet — you can open &lt;strong&gt;multiple terminals&lt;/strong&gt; at once using the &lt;code&gt;+&lt;/code&gt; button in the terminal panel. One for your dev server, one for Git, one for npm commands. No more Alt-Tabbing between windows.&lt;/p&gt;




&lt;h3&gt;
  
  
  8. Enable Auto Save
&lt;/h3&gt;

&lt;p&gt;Go to &lt;strong&gt;File → Auto Save&lt;/strong&gt; and turn it on. Done.&lt;/p&gt;

&lt;p&gt;You will never again lose changes because you forgot to hit &lt;code&gt;Ctrl + S&lt;/code&gt;. It's one of the simplest but most underrated quality-of-life improvements in VS Code.&lt;/p&gt;




&lt;h3&gt;
  
  
  9. Use Peek Definition Instead of Jumping Around
&lt;/h3&gt;

&lt;p&gt;Instead of opening a new file to check a function definition, press &lt;code&gt;Alt + F12&lt;/code&gt;. VS Code shows the definition right inline without leaving your current file.&lt;/p&gt;

&lt;p&gt;Use &lt;code&gt;F12&lt;/code&gt; if you actually want to navigate to it. Use &lt;code&gt;Ctrl + Click&lt;/code&gt; for the same. But Peek is perfect when you just want a quick look.&lt;/p&gt;




&lt;h3&gt;
  
  
  10. Customize Keyboard Shortcuts
&lt;/h3&gt;

&lt;p&gt;VS Code lets you remap any shortcut to whatever feels natural to you.&lt;/p&gt;

&lt;p&gt;Go to &lt;strong&gt;File → Preferences → Keyboard Shortcuts&lt;/strong&gt; and search for any action. If the default shortcut feels awkward, change it. Your setup should match &lt;em&gt;you&lt;/em&gt;, not the other way around.&lt;/p&gt;




&lt;h3&gt;
  
  
  11. Use GitLens Extension for Better Git Workflows
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;GitLens&lt;/strong&gt; is a free extension that supercharges the built-in Git features. It shows you who changed a line and when — right inside the editor, inline.&lt;/p&gt;

&lt;p&gt;No more guessing who wrote that mysterious block of code. You'll know exactly when it was added and why (if the commit message was decent 😄).&lt;/p&gt;




&lt;h3&gt;
  
  
  12. Turn on Bracket Pair Colorization
&lt;/h3&gt;

&lt;p&gt;Deeply nested code is hard to read. VS Code has a built-in feature that colors matching brackets differently so you can instantly see which bracket belongs to which block.&lt;/p&gt;

&lt;p&gt;Enable it in settings:&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;"editor.bracketPairColorization.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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It's a small visual tweak that makes a real difference in readability.&lt;/p&gt;




&lt;h3&gt;
  
  
  13. Use Workspaces for Multi-Project Work
&lt;/h3&gt;

&lt;p&gt;If you're working on multiple related repos, a VS Code Workspace lets you open all of them together in one window with shared settings.&lt;/p&gt;

&lt;p&gt;Go to &lt;strong&gt;File → Save Workspace As&lt;/strong&gt; and configure your folders. It keeps everything organized without opening a dozen separate windows.&lt;/p&gt;




&lt;h3&gt;
  
  
  14. Zen Mode for Deep Focus
&lt;/h3&gt;

&lt;p&gt;Press &lt;code&gt;Ctrl + K Z&lt;/code&gt; to enter Zen Mode. Everything disappears — sidebar, status bar, tabs. Just you and your code.&lt;/p&gt;

&lt;p&gt;When you need to focus on a tricky problem without distractions, this mode is genuinely helpful.&lt;/p&gt;




&lt;h2&gt;
  
  
  Quick Comparison: Without vs. With These Tips
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Situation&lt;/th&gt;
&lt;th&gt;Without the Tips&lt;/th&gt;
&lt;th&gt;With the Tips&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Opening a file&lt;/td&gt;
&lt;td&gt;Clicking through the sidebar&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;Ctrl + P&lt;/code&gt; and done in 1 second&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Renaming a variable in 10 places&lt;/td&gt;
&lt;td&gt;Edit one by one&lt;/td&gt;
&lt;td&gt;Multi-cursor in seconds&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Running terminal commands&lt;/td&gt;
&lt;td&gt;Alt-Tab to a separate terminal&lt;/td&gt;
&lt;td&gt;Integrated terminal in the same window&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Checking a function definition&lt;/td&gt;
&lt;td&gt;Navigating to a different file&lt;/td&gt;
&lt;td&gt;Peek Definition inline&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tracking code changes&lt;/td&gt;
&lt;td&gt;Guessing or checking Git log&lt;/td&gt;
&lt;td&gt;GitLens shows it inline&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  Best Tips / Do's and Don'ts ✅
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Do:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Take 10 minutes to set up custom snippets for your most-used code patterns.&lt;/li&gt;
&lt;li&gt;Learn at least five keyboard shortcuts this week. Just five.&lt;/li&gt;
&lt;li&gt;Install only the extensions you actually need. Don't hoard them.&lt;/li&gt;
&lt;li&gt;Use the Command Palette when you don't know a shortcut — it teaches you shortcuts over time.&lt;/li&gt;
&lt;li&gt;Keep your settings synced across machines using VS Code's built-in Settings Sync.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Don't:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Don't install 30 extensions and wonder why VS Code is slow.&lt;/li&gt;
&lt;li&gt;Don't ignore the built-in features just because you haven't explored them.&lt;/li&gt;
&lt;li&gt;Don't use your mouse for things a shortcut can do in one keystroke.&lt;/li&gt;
&lt;li&gt;Don't skip font and theme setup — your eyes will thank you during late-night sessions.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Common Mistakes Developers Make with VS Code
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Installing too many extensions&lt;/strong&gt;&lt;br&gt;
This is the number one performance killer. Every extension adds a little overhead. Install only what you use regularly. Review and uninstall the ones you haven't touched in months.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Never touching the settings&lt;/strong&gt;&lt;br&gt;
VS Code's default settings are okay, but they're not optimized for you. Spending 15 minutes in &lt;code&gt;settings.json&lt;/code&gt; can dramatically improve your experience. Things like tab size, word wrap, format on save — these matter daily.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ignoring keyboard shortcuts&lt;/strong&gt;&lt;br&gt;
Developers who rely entirely on their mouse spend significantly more time on repetitive tasks. You don't need to memorize every shortcut. Start with the ten most useful ones and build from there.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Not using version control inside VS Code&lt;/strong&gt;&lt;br&gt;
The built-in Source Control panel is actually great. Many beginners jump out to a separate Git client when VS Code already handles staging, committing, and branching quite well.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Not syncing settings across devices&lt;/strong&gt;&lt;br&gt;
If you work on multiple machines and you're not using Settings Sync, you're setting up VS Code from scratch every time. Turn it on under &lt;strong&gt;Accounts → Settings Sync&lt;/strong&gt; and save yourself the hassle.&lt;/p&gt;




&lt;h2&gt;
  
  
  Wrapping Up 💡
&lt;/h2&gt;

&lt;p&gt;VS Code is already a great editor. But with the right setup, it becomes &lt;em&gt;your&lt;/em&gt; editor — one that matches how you think and work.&lt;/p&gt;

&lt;p&gt;You don't need to implement all of these today. Pick three things from this list, try them for a week, and see how they feel. Then add more when you're ready.&lt;/p&gt;

&lt;p&gt;The goal isn't to become a VS Code power user overnight. The goal is to slowly remove the little friction points that interrupt your flow — until coding feels genuinely smooth and enjoyable.&lt;/p&gt;

&lt;p&gt;Because when your tools feel good, your work feels good too.&lt;/p&gt;




&lt;p&gt;If you found this helpful, there's a lot more where this came from. Check out more dev tips, tools breakdowns, and tutorials at &lt;strong&gt;&lt;a href="https://hamidrazadev.com" rel="noopener noreferrer"&gt;hamidrazadev.com&lt;/a&gt;&lt;/strong&gt; — a blog built specifically for developers who want to keep leveling up.&lt;/p&gt;

&lt;p&gt;Share this post with a developer friend who's still clicking through their sidebar one folder at a time 😄. And if you've got a VS Code tip that changed your workflow, drop it in the comments — let's build the list together.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>vscode</category>
      <category>productivity</category>
      <category>coding</category>
    </item>
    <item>
      <title>From BSOD to Dev Workstation: How I Rebuilt My PC the Right Way (And Learned a Ton Doing It)</title>
      <dc:creator>Muhammad Hamid Raza</dc:creator>
      <pubDate>Fri, 17 Apr 2026 04:53:22 +0000</pubDate>
      <link>https://dev.to/hamidrazadev/from-bsod-to-dev-workstation-how-i-rebuilt-my-pc-the-right-way-and-learned-a-ton-doing-it-52lp</link>
      <guid>https://dev.to/hamidrazadev/from-bsod-to-dev-workstation-how-i-rebuilt-my-pc-the-right-way-and-learned-a-ton-doing-it-52lp</guid>
      <description>&lt;p&gt;You know that feeling when your computer is stuck in a loop, crashing over and over, and you're sitting there thinking &lt;em&gt;"why does this exist"&lt;/em&gt;? 😤&lt;/p&gt;

&lt;p&gt;Yeah. That was me. Blue screen. Reboot. Blue screen. Reboot. A cycle of pure suffering.&lt;/p&gt;

&lt;p&gt;But here's the thing — that disaster turned into one of the best learning experiences I've had as a developer. I went from crying over a broken machine to understanding system architecture, disk management, and package management like a proper engineer.&lt;/p&gt;

&lt;p&gt;If you've ever been in that situation — or if you just want to know how to set up a clean, resilient developer workstation from scratch — this one's for you.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Actually Happened (Phase 1: The Patched Nightmare)
&lt;/h2&gt;

&lt;p&gt;My HP Compaq was stuck in a BSOD loop. The culprit? A "patched" version of Windows 11 that someone had modified to bypass hardware checks.&lt;/p&gt;

&lt;p&gt;It seemed smart at the time. Skip the TPM requirements, skip the Secure Boot checks, save time. Right?&lt;/p&gt;

&lt;p&gt;Wrong.&lt;/p&gt;

&lt;p&gt;Every install attempt crashed with &lt;code&gt;ACPI.sys&lt;/code&gt; errors. Then came the real gut punch: &lt;strong&gt;error 0x80070570&lt;/strong&gt; — which basically means the install files themselves were corrupt. The "shortcut" version of Windows was actually a ticking time bomb.&lt;/p&gt;

&lt;p&gt;Here's the lesson I didn't know I needed:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Patched or modified Windows installers are not shortcuts. They are the longest, most painful road to failure.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The files are corrupt. The registry gets messy. Drivers behave weirdly. And you will spend 10x more time debugging than you would have spent just doing it right from the start.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Turning Point (Phase 2: The Senior Dev Rebuild)
&lt;/h2&gt;

&lt;p&gt;We stopped chasing quick fixes and decided to do it properly. This is where things actually started moving forward.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Get a legitimate Windows ISO&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Downloaded a clean Windows 11 ISO directly from Microsoft. No torrents. No "activator" versions. Just the real thing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2: Use Rufus the right way&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://rufus.ie/" rel="noopener noreferrer"&gt;Rufus&lt;/a&gt; is a free tool that creates bootable USB drives. But the real magic? It can &lt;strong&gt;bypass TPM 2.0 and Secure Boot requirements&lt;/strong&gt; for older machines — legally and cleanly, without touching the installer itself.&lt;/p&gt;

&lt;p&gt;For older hardware like HP Compaq machines, this is a lifesaver. Rufus handles the bypass at the image level, so the installed Windows stays clean and stable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3: The nuclear option — diskpart&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This was the most important step. Before installing Windows, I booted into the installer, opened Command Prompt with &lt;code&gt;Shift + F10&lt;/code&gt;, and ran:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;diskpart
list disk
&lt;span class="k"&gt;select &lt;/span&gt;disk 0
clean
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;clean&lt;/code&gt; command wiped everything off the SSD. Every partition. Every trace of the patched version.&lt;/p&gt;

&lt;p&gt;Starting with a completely clean disk meant no leftover corrupt files, no ghost partitions, no weird driver conflicts. It felt scary at first, but it was exactly the right call.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why a Clean Install Matters More Than You Think
&lt;/h2&gt;

&lt;p&gt;A lot of people upgrade Windows over an existing install, or they let a patched version "update" itself. Here's why that's a problem:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Corrupt files carry over.&lt;/strong&gt; Old errors don't disappear — they just hide.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Driver conflicts build up.&lt;/strong&gt; Especially on HP machines with specific hardware.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The registry becomes a mess.&lt;/strong&gt; Unused entries stack up and slow everything down.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Security holes stay open.&lt;/strong&gt; Patched installs often disable Windows Defender and other protections silently.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A clean slate isn't just about speed. It's about having a system you can actually trust.&lt;/p&gt;




&lt;h2&gt;
  
  
  Victory and Optimization (Phase 3: Building the Dev Setup)
&lt;/h2&gt;

&lt;p&gt;Once Windows was installed cleanly, the real work began. A fresh Windows install is just a starting point — not a workstation.&lt;/p&gt;

&lt;h3&gt;
  
  
  🖥️ Drivers: Do It Manually
&lt;/h3&gt;

&lt;p&gt;The first instinct after a fresh install is to grab something like Driver Booster and let it "auto-install everything." Don't.&lt;/p&gt;

&lt;p&gt;Third-party driver tools are notorious for installing outdated or generic drivers that cause more problems than they solve. Instead:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Find your exact hardware model (HP Compaq with Intel HD Graphics 2500 in this case).&lt;/li&gt;
&lt;li&gt;Go to Intel's official website or the HP support page.&lt;/li&gt;
&lt;li&gt;Download the exact driver for your hardware and Windows version.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;After installing the correct Intel HD Graphics 2500 driver manually, the GPU correctly recognized &lt;strong&gt;1.7GB of shared memory&lt;/strong&gt; — which matters a lot for design work and running modern web UIs smoothly.&lt;/p&gt;

&lt;h3&gt;
  
  
  ⚡ PowerShell 7 + Chocolatey
&lt;/h3&gt;

&lt;p&gt;This is where things got genuinely fun.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PowerShell 7&lt;/strong&gt; is a massive upgrade from the default Windows PowerShell. It's cross-platform, faster, and far more capable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Chocolatey&lt;/strong&gt; (&lt;code&gt;choco&lt;/code&gt;) is a package manager for Windows — think of it like &lt;code&gt;apt&lt;/code&gt; on Linux or &lt;code&gt;brew&lt;/code&gt; on macOS. Instead of clicking through installer wizards, you install software with a single command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;choco&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;install&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;nodejs-lts&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;choco&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;install&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;git&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;choco&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;install&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;vscode&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Done. Clean. No random checkboxes offering you browser toolbars. No manual updates. Just software installed the way developers like it.&lt;/p&gt;

&lt;p&gt;This is one of those tools that, once you start using it, you wonder how you ever lived without it.&lt;/p&gt;

&lt;h3&gt;
  
  
  ✅ Official Installs Only
&lt;/h3&gt;

&lt;p&gt;VS Code and Chrome were installed through their official installers (or Chocolatey), not through sketchy third-party sites. This keeps the Windows registry clean and ensures you're getting the actual software without bundled garbage.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Recovery Plan: Lahore-Proofing Your Machine 🛡️
&lt;/h2&gt;

&lt;p&gt;Here's something nobody talks about in Western developer tutorials: &lt;strong&gt;load shedding is real&lt;/strong&gt;, and it will corrupt your Windows install if you're not careful.&lt;/p&gt;

&lt;p&gt;A sudden power cut during a Windows update, a driver install, or even just heavy disk activity can corrupt system files. I've seen it happen. So we built a three-layer protection plan.&lt;/p&gt;

&lt;h3&gt;
  
  
  Layer 1: System Restore Point
&lt;/h3&gt;

&lt;p&gt;A System Restore Point is your "Undo" button. If something breaks after a driver install or a Windows update, you can roll back to this exact moment without losing your files.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to create one:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Search for "Create a restore point" in the Start menu.&lt;/li&gt;
&lt;li&gt;Select your C: drive and click "Configure" → "Turn on system protection."&lt;/li&gt;
&lt;li&gt;Click "Create" and give it a name like "Fresh Setup - Clean Install."&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Do this right after every major change to your system.&lt;/p&gt;

&lt;h3&gt;
  
  
  Layer 2: System Image Backup
&lt;/h3&gt;

&lt;p&gt;A System Restore Point is great for small issues. But if your SSD completely fails or gets corrupted beyond repair, you need a full backup.&lt;/p&gt;

&lt;p&gt;A &lt;strong&gt;System Image&lt;/strong&gt; copies your entire C: drive — Windows, drivers, installed software, settings — onto another drive. Think of it as your "Insurance Policy."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to create one:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Go to Control Panel → Backup and Restore (Windows 7).&lt;/li&gt;
&lt;li&gt;Click "Create a system image."&lt;/li&gt;
&lt;li&gt;Save it to your 250GB HDD (external or secondary drive).&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If disaster strikes, you can restore the entire system from this image in minutes instead of hours.&lt;/p&gt;

&lt;h3&gt;
  
  
  Layer 3: Cloud and GitHub Sync
&lt;/h3&gt;

&lt;p&gt;No matter how good your local backups are, they're useless if the whole machine is stolen, flooded, or physically destroyed.&lt;/p&gt;

&lt;p&gt;For a Next.js developer with active projects:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub&lt;/strong&gt; for all code. Push regularly. Use private repos for sensitive projects.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Google Drive or OneDrive&lt;/strong&gt; for ICS notes, PDFs, and documents.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;VS Code Settings Sync&lt;/strong&gt; (built-in) to back up your extensions and editor config.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These three layers mean you can lose the entire machine and be back to full productivity within an hour.&lt;/p&gt;




&lt;h2&gt;
  
  
  Key Lessons That Actually Stick
&lt;/h2&gt;

&lt;p&gt;Let's be honest — the best lessons come from the worst experiences. Here's what this whole journey taught me:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;💡 Shortcuts usually cost you more time, not less.&lt;/strong&gt; The patched Windows was supposed to save 20 minutes. It cost days of debugging.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;💡 Clean installs are non-negotiable.&lt;/strong&gt; If something is deeply broken, wipe it and start fresh. Fighting corrupt systems is a losing battle.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;💡 Manual driver installs beat auto-driver tools.&lt;/strong&gt; Know your hardware. Install only what you need, from the official source.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;💡 Package managers are a superpower.&lt;/strong&gt; Once you start managing software through Chocolatey (or &lt;code&gt;winget&lt;/code&gt;), you'll never go back to clicking through wizard installers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;💡 Backups are not optional.&lt;/strong&gt; Especially if you're working in an area with unstable power. One bad outage can ruin weeks of work.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;💡 The "right way" isn't the hard way.&lt;/strong&gt; It just feels harder at the start because it's unfamiliar. But it saves you from exponentially bigger problems later.&lt;/p&gt;




&lt;h2&gt;
  
  
  Common Mistakes People Make During Windows Setup
&lt;/h2&gt;

&lt;p&gt;These are the traps that catch most beginners — and some experienced people too:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;❌ Using modified or "lite" Windows ISOs.&lt;/strong&gt; They corrupt easily, disable security features, and cause random driver issues. Always use official ISOs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;❌ Skipping the disk clean before install.&lt;/strong&gt; Leftover partitions and old files cause weird conflicts. Use &lt;code&gt;diskpart clean&lt;/code&gt; for a true fresh start.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;❌ Installing every driver with Driver Booster or similar tools.&lt;/strong&gt; These tools inject outdated and generic drivers. Install manually from official sources.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;❌ Skipping system backups because "nothing has gone wrong yet."&lt;/strong&gt; That's exactly when disasters happen — before you're prepared.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;❌ Installing random software from unverified sites.&lt;/strong&gt; Your registry fills up, startup times increase, and security risks multiply. Use Chocolatey, &lt;code&gt;winget&lt;/code&gt;, or official sites only.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;❌ Not setting up cloud sync for active projects.&lt;/strong&gt; Local backups are great, but they don't protect against hardware failure or theft. GitHub is free. Use it.&lt;/p&gt;




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

&lt;p&gt;What started as a total disaster — a BSOD loop, corrupt files, and a lot of frustrated emojis — turned into a genuinely valuable learning experience.&lt;/p&gt;

&lt;p&gt;The machine that once couldn't even boot is now a clean, fast, developer-ready workstation. It has proper drivers, a modern terminal, a package manager, and three layers of backup protection built specifically for the power grid realities of Lahore.&lt;/p&gt;

&lt;p&gt;More importantly, the process taught something that no tutorial can rush: &lt;strong&gt;understanding &lt;em&gt;why&lt;/em&gt; each step matters, not just following instructions blindly.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If your machine is acting up, or if you just want to set up a clean developer environment from scratch, follow the process above. It's not glamorous, but it works — and you'll understand your own system far better for it. 🔧&lt;/p&gt;

&lt;p&gt;Want more practical, no-fluff developer content? Check out &lt;a href="https://hamidrazadev.com" rel="noopener noreferrer"&gt;hamidrazadev.com&lt;/a&gt; for more posts like this. And if this helped you, feel free to share it — there's definitely another developer out there stuck in a BSOD loop who needs it. 🚀&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>productivity</category>
      <category>tutorial</category>
      <category>infrastructure</category>
    </item>
    <item>
      <title>OpenRouter vs Hugging Face: Which One Should You Actually Use?</title>
      <dc:creator>Muhammad Hamid Raza</dc:creator>
      <pubDate>Mon, 13 Apr 2026 07:53:31 +0000</pubDate>
      <link>https://dev.to/hamidrazadev/openrouter-vs-hugging-face-which-one-should-you-actually-use-3o24</link>
      <guid>https://dev.to/hamidrazadev/openrouter-vs-hugging-face-which-one-should-you-actually-use-3o24</guid>
      <description>&lt;p&gt;So you've been exploring AI tools, and now you're staring at two names that keep showing up everywhere — &lt;strong&gt;OpenRouter&lt;/strong&gt; and &lt;strong&gt;Hugging Face&lt;/strong&gt;. Both sound important. Both involve AI models. And both have enough features to make your head spin if you try to compare them too fast.&lt;/p&gt;

&lt;p&gt;Here's the thing though: asking "which one is better" is like asking whether a highway is better than a factory. They're not really competing — they're doing different jobs. But once you understand what each one does, the choice becomes obvious. 😊&lt;/p&gt;

&lt;p&gt;Let's break it all down.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Is OpenRouter?
&lt;/h2&gt;

&lt;p&gt;OpenRouter is essentially a &lt;strong&gt;universal API gateway for AI models&lt;/strong&gt;. Think of it like a single remote control that works with every TV in the house.&lt;/p&gt;

&lt;p&gt;Instead of signing up for OpenAI, then Anthropic, then Google, then managing three different API keys, three billing dashboards, and three different code setups — you just use OpenRouter. One API key. One endpoint. Access to models from all of them.&lt;/p&gt;

&lt;p&gt;It uses an OpenAI-compatible API format, which means if you've already written code for GPT-4, switching to Claude or Gemini is just a one-line change.&lt;/p&gt;

&lt;p&gt;It also has a handy &lt;strong&gt;Playground&lt;/strong&gt; where you can send the same prompt to multiple models at once and compare their responses side by side in real time. That alone saves hours of manual testing.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Is Hugging Face?
&lt;/h2&gt;

&lt;p&gt;Hugging Face is something much bigger — it's the &lt;strong&gt;GitHub of AI models&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It hosts hundreds of thousands of pre-trained models for text, images, audio, and more. It has community discussions, leaderboards, trending models, research papers, and even compute options for running your own models. It's where developers go to find, explore, test, and download AI models.&lt;/p&gt;

&lt;p&gt;It also provides tools like the &lt;strong&gt;Transformers&lt;/strong&gt; library (one of the most popular ML libraries in the world), datasets, model training notebooks, and infrastructure for deploying your own models.&lt;/p&gt;

&lt;p&gt;If you want to explore the open-source AI ecosystem — Llama variants, Qwen, DeepSeek, fine-tuned niche models — Hugging Face is where you go first.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why This Comparison Actually Matters
&lt;/h2&gt;

&lt;p&gt;If you're a developer building an AI-powered app, this decision affects three things directly:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;How fast you ship&lt;/strong&gt; — Managing multiple API integrations slows you down.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;How much you spend&lt;/strong&gt; — Model costs vary wildly across providers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;How much control you have&lt;/strong&gt; — Some use cases need open-source models you can self-host.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Getting this right early saves you from painful refactors later. 🔧&lt;/p&gt;




&lt;h2&gt;
  
  
  Key Differences: OpenRouter vs Hugging Face
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;OpenRouter&lt;/th&gt;
&lt;th&gt;Hugging Face&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Primary purpose&lt;/td&gt;
&lt;td&gt;Multi-model API gateway&lt;/td&gt;
&lt;td&gt;Model hub &amp;amp; ML ecosystem&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Model access&lt;/td&gt;
&lt;td&gt;Frontier models (GPT, Claude, Gemini, etc.)&lt;/td&gt;
&lt;td&gt;Open-source &amp;amp; community models&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;API support&lt;/td&gt;
&lt;td&gt;Yes, OpenAI-compatible&lt;/td&gt;
&lt;td&gt;Yes, Inference API + Endpoints&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Free tier&lt;/td&gt;
&lt;td&gt;Yes (limited credits)&lt;/td&gt;
&lt;td&gt;Yes (free Inference API)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Self-hosting&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes (download &amp;amp; run locally)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Community &amp;amp; research&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Very active&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Best for&lt;/td&gt;
&lt;td&gt;App developers, API users&lt;/td&gt;
&lt;td&gt;Researchers, ML engineers&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  Benefits With Real-Life Examples
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;✅ OpenRouter — Great for App Developers&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;One API for everything&lt;/strong&gt; — Building a chatbot? You can start with a free open-source model, then upgrade to Claude or GPT-4 for production, all without touching your codebase.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cost optimization&lt;/strong&gt; — OpenRouter lets you route to the cheapest provider that meets your latency requirements. Great when you're running thousands of API calls per day.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Side-by-side model testing&lt;/strong&gt; — Use the Playground to compare Claude 3 vs Gemini 1.5 vs Mistral on your exact use case before committing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Minimal setup&lt;/strong&gt; — If you already know the OpenAI SDK, you're basically already set up.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;✅ Hugging Face — Great for ML Engineers &amp;amp; Researchers&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Model discovery&lt;/strong&gt; — Need a small, fast embedding model? A specialized medical NLP model? There are thousands of community-trained models waiting.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Open-source freedom&lt;/strong&gt; — Download the model, run it on your own server, modify it, fine-tune it. Full control.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Transformers library&lt;/strong&gt; — One of the most used libraries in ML. Works with PyTorch and TensorFlow. Makes loading and running models simple.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Inference Endpoints&lt;/strong&gt; — Don't want to manage GPU servers yourself? Hugging Face lets you deploy a model with dedicated compute, priced per hour.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  OpenRouter vs Hugging Face: When to Use Which
&lt;/h2&gt;

&lt;p&gt;Here's the honest, practical breakdown:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use OpenRouter when:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You're building an app and need quick, flexible access to frontier models&lt;/li&gt;
&lt;li&gt;You want to switch between GPT, Claude, Gemini, and others without code changes&lt;/li&gt;
&lt;li&gt;You want cost routing and don't want to manage multiple billing accounts&lt;/li&gt;
&lt;li&gt;You just need a reliable API and don't care about the underlying infrastructure&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Use Hugging Face when:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You want to explore or download open-source models&lt;/li&gt;
&lt;li&gt;You're doing ML research or model fine-tuning&lt;/li&gt;
&lt;li&gt;You need a specialized model (text classification, image captioning, speech-to-text, etc.)&lt;/li&gt;
&lt;li&gt;You want full control over the model and your data&lt;/li&gt;
&lt;li&gt;You're building ML pipelines using the Transformers or Datasets libraries&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Use both when:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You want to browse and pick a model on Hugging Face, then deploy it via an Inference Endpoint or run it locally with Ollama — while also using OpenRouter to access frontier models in the same app.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is actually a very common setup in 2026. They complement each other well.&lt;/p&gt;




&lt;h2&gt;
  
  
  Tips for Making the Right Choice
&lt;/h2&gt;

&lt;p&gt;💡 &lt;strong&gt;Start with your use case, not the tool.&lt;/strong&gt; Are you calling AI for text generation in an app? OpenRouter. Training or exploring models? Hugging Face.&lt;/p&gt;

&lt;p&gt;💡 &lt;strong&gt;Don't overcomplicate early on.&lt;/strong&gt; If you're building your first AI feature, OpenRouter's simplicity wins. Get the app working first.&lt;/p&gt;

&lt;p&gt;💡 &lt;strong&gt;Check the free tiers first.&lt;/strong&gt; Both platforms have free usage. Test before you commit money.&lt;/p&gt;

&lt;p&gt;💡 &lt;strong&gt;Think about data privacy.&lt;/strong&gt; If your data is sensitive, open-source models on Hugging Face (run locally) keep data off third-party servers. OpenRouter routes through provider APIs, so understand the data policies of each model.&lt;/p&gt;

&lt;p&gt;💡 &lt;strong&gt;Use the Playground.&lt;/strong&gt; OpenRouter's side-by-side model testing is genuinely useful when you're trying to pick the right model for a task.&lt;/p&gt;




&lt;h2&gt;
  
  
  Common Mistakes Developers Make
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;❌ Treating them as direct competitors&lt;/strong&gt;&lt;br&gt;
They're not. One is an API layer, the other is a model ecosystem. You can absolutely use both.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;❌ Using Hugging Face's free Inference API in production&lt;/strong&gt;&lt;br&gt;
The free API tier on Hugging Face is for testing, not production workloads. It has rate limits and no uptime guarantees. If you're shipping a product, use Inference Endpoints or a proper provider.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;❌ Assuming OpenRouter hosts its own models&lt;/strong&gt;&lt;br&gt;
It doesn't. OpenRouter is a routing layer — it sends your requests to the actual model providers (OpenAI, Anthropic, Google, etc.). The performance and output you get is from those underlying providers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;❌ Ignoring costs&lt;/strong&gt;&lt;br&gt;
Model pricing varies a lot across providers. OpenRouter makes this visible and comparable, which is genuinely useful. Always check the pricing page before picking a model for a high-volume use case.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;❌ Not reading the model card on Hugging Face&lt;/strong&gt;&lt;br&gt;
Every model on Hugging Face has a model card explaining its intended use, limitations, and training data. Skipping it is a mistake, especially if you're picking a model for a specific industry or sensitive use case.&lt;/p&gt;




&lt;h2&gt;
  
  
  Final Verdict
&lt;/h2&gt;

&lt;p&gt;So — which is better?&lt;/p&gt;

&lt;p&gt;Neither. And both. It depends entirely on what you're trying to do.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;OpenRouter&lt;/strong&gt; is your best friend if you're a developer who wants fast, flexible, low-maintenance access to top AI models through a single API. It's clean, practical, and built for shipping.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hugging Face&lt;/strong&gt; is your best friend if you want to explore, experiment, research, or run open-source models with full control. It's the world's largest AI model community, and there's nothing else quite like it.&lt;/p&gt;

&lt;p&gt;Most experienced developers end up using both — OpenRouter for production API calls, Hugging Face for model discovery and open-source experimentation.&lt;/p&gt;

&lt;p&gt;Start with the one that fits your current project. You'll probably end up using both eventually. 🚀&lt;/p&gt;




&lt;p&gt;If this helped you think more clearly about your AI tooling setup, check out more practical developer guides at &lt;strong&gt;&lt;a href="https://hamidrazadev.com" rel="noopener noreferrer"&gt;hamidrazadev.com&lt;/a&gt;&lt;/strong&gt;. There's always something useful brewing there. 😊&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>tooling</category>
      <category>discuss</category>
    </item>
    <item>
      <title>How to Use Claude Code with OpenRouter — Run Any AI Model for Free or Cheap 🚀</title>
      <dc:creator>Muhammad Hamid Raza</dc:creator>
      <pubDate>Sun, 12 Apr 2026 07:37:25 +0000</pubDate>
      <link>https://dev.to/hamidrazadev/how-to-use-claude-code-with-openrouter-run-any-ai-model-for-free-or-cheap-3bif</link>
      <guid>https://dev.to/hamidrazadev/how-to-use-claude-code-with-openrouter-run-any-ai-model-for-free-or-cheap-3bif</guid>
      <description>&lt;p&gt;Ever wished you could use Claude Code with models other than just the official Anthropic ones? Maybe you want to try a powerful free model, cut costs, or experiment with something new like NVIDIA's Nemotron?&lt;/p&gt;

&lt;p&gt;Good news — it's totally possible. Claude Code supports custom API base URLs, which means you can point it to &lt;strong&gt;OpenRouter&lt;/strong&gt; and instantly unlock access to dozens of AI models, including free ones. 💡&lt;/p&gt;

&lt;p&gt;In this guide, I'll walk you through the complete setup on &lt;strong&gt;Windows, macOS, and Linux&lt;/strong&gt; — step by step, no fluff.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Is OpenRouter?
&lt;/h2&gt;

&lt;p&gt;OpenRouter is a unified API gateway that gives you access to many AI models — from OpenAI and Anthropic to Google, Meta, Mistral, NVIDIA, and more — all through a single API endpoint.&lt;/p&gt;

&lt;p&gt;Think of it like a TV remote that controls every streaming platform. Instead of managing separate API keys for each provider, you get one key that works everywhere.&lt;/p&gt;

&lt;p&gt;Some models on OpenRouter are &lt;strong&gt;completely free&lt;/strong&gt;. Others cost a fraction of what you'd pay directly. It's a great way to experiment without burning through credits.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why Use Claude Code with OpenRouter?
&lt;/h2&gt;

&lt;p&gt;Claude Code is a powerful AI coding assistant that runs in your terminal. By default, it talks directly to Anthropic's API. But since it supports environment variable overrides, you can redirect it to any OpenAI-compatible endpoint — including OpenRouter.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Reasons you might want to do this:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;💸 You want to use a &lt;strong&gt;free model&lt;/strong&gt; to save money&lt;/li&gt;
&lt;li&gt;🧪 You want to &lt;strong&gt;experiment&lt;/strong&gt; with different models for different tasks&lt;/li&gt;
&lt;li&gt;🌐 You already have OpenRouter credits and don't want to maintain two separate accounts&lt;/li&gt;
&lt;li&gt;⚡ You want to try newer open-source models like NVIDIA Nemotron, Llama, Qwen, etc.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  What You'll Need
&lt;/h2&gt;

&lt;p&gt;Before we start, make sure you have:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ &lt;strong&gt;Claude Code installed&lt;/strong&gt; — via &lt;code&gt;npm install -g @anthropic-ai/claude-code&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;An OpenRouter account&lt;/strong&gt; — sign up free at &lt;a href="https://openrouter.ai" rel="noopener noreferrer"&gt;openrouter.ai&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;Your OpenRouter API key&lt;/strong&gt; — get it from the OpenRouter dashboard under "API Keys"&lt;/li&gt;
&lt;li&gt;✅ A model name from OpenRouter you want to use (e.g., &lt;code&gt;nvidia/nemotron-3-super-120b-a12b:free&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Where Is the Settings File?
&lt;/h2&gt;

&lt;p&gt;Claude Code reads its configuration from a &lt;code&gt;settings.json&lt;/code&gt; file. Here's where to find it depending on your OS:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Operating System&lt;/th&gt;
&lt;th&gt;Settings File Path&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Windows&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;C:\Users\&amp;lt;YourUsername&amp;gt;\.claude\settings.json&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;macOS&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;~/.claude/settings.json&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Linux&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;~/.claude/settings.json&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;If the file doesn't exist yet, just create it. Claude Code will pick it up automatically.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step-by-Step Setup
&lt;/h2&gt;

&lt;h3&gt;
  
  
  🪟 Windows
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Step 1:&lt;/strong&gt; Open File Explorer and navigate to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="kd"&gt;C&lt;/span&gt;:\Users\&amp;lt;YourUsername&amp;gt;\.claude\
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Replace &lt;code&gt;&amp;lt;YourUsername&amp;gt;&lt;/code&gt; with your actual Windows username.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2:&lt;/strong&gt; If the &lt;code&gt;.claude&lt;/code&gt; folder doesn't exist, create it manually.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3:&lt;/strong&gt; Inside that folder, open or create &lt;code&gt;settings.json&lt;/code&gt; using Notepad or VS Code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4:&lt;/strong&gt; Paste the following configuration:&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;"env"&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;"ANTHROPIC_BASE_URL"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://openrouter.ai/api"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"ANTHROPIC_AUTH_TOKEN"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"your-openrouter-api-key-here"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"ANTHROPIC_API_KEY"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"ANTHROPIC_DEFAULT_SONNET_MODEL"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"nvidia/nemotron-3-super-120b-a12b:free"&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;&lt;strong&gt;Step 5:&lt;/strong&gt; Replace &lt;code&gt;your-openrouter-api-key-here&lt;/code&gt; with your actual OpenRouter API key.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 6:&lt;/strong&gt; Save the file and open a new terminal. Run:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;You're done! 🎉&lt;/p&gt;




&lt;h3&gt;
  
  
  🍎 macOS
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Step 1:&lt;/strong&gt; Open Terminal.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2:&lt;/strong&gt; Navigate to the &lt;code&gt;.claude&lt;/code&gt; folder:&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;cd&lt;/span&gt; ~/.claude
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If it doesn't exist yet, create it:&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;mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; ~/.claude
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 3:&lt;/strong&gt; Open or create the settings file using your preferred editor:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nano ~/.claude/settings.json
&lt;span class="c"&gt;# or&lt;/span&gt;
code ~/.claude/settings.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 4:&lt;/strong&gt; Paste this configuration:&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;"env"&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;"ANTHROPIC_BASE_URL"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://openrouter.ai/api"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"ANTHROPIC_AUTH_TOKEN"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"your-openrouter-api-key-here"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"ANTHROPIC_API_KEY"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"ANTHROPIC_DEFAULT_SONNET_MODEL"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"nvidia/nemotron-3-super-120b-a12b:free"&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;&lt;strong&gt;Step 5:&lt;/strong&gt; Replace &lt;code&gt;your-openrouter-api-key-here&lt;/code&gt; with your real key.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 6:&lt;/strong&gt; Save and close. Then open a new terminal window and run:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;That's it for macOS! 🍏&lt;/p&gt;




&lt;h3&gt;
  
  
  🐧 Linux
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Step 1:&lt;/strong&gt; Open your terminal.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2:&lt;/strong&gt; Navigate to (or create) the &lt;code&gt;.claude&lt;/code&gt; directory:&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;mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; ~/.claude &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;cd&lt;/span&gt; ~/.claude
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 3:&lt;/strong&gt; Create or edit the settings file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nano ~/.claude/settings.json
&lt;span class="c"&gt;# or&lt;/span&gt;
vim ~/.claude/settings.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 4:&lt;/strong&gt; Paste the configuration:&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;"env"&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;"ANTHROPIC_BASE_URL"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://openrouter.ai/api"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"ANTHROPIC_AUTH_TOKEN"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"your-openrouter-api-key-here"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"ANTHROPIC_API_KEY"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"ANTHROPIC_DEFAULT_SONNET_MODEL"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"nvidia/nemotron-3-super-120b-a12b:free"&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;&lt;strong&gt;Step 5:&lt;/strong&gt; Replace the API key placeholder with your real OpenRouter key.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 6:&lt;/strong&gt; Save the file. Open a fresh terminal session and run:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;Linux users, you're set! 🐧&lt;/p&gt;




&lt;h2&gt;
  
  
  Understanding the Configuration Fields
&lt;/h2&gt;

&lt;p&gt;Here's what each field in the config actually does:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;ANTHROPIC_BASE_URL&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Tells Claude Code to use OpenRouter's API instead of Anthropic's&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;ANTHROPIC_AUTH_TOKEN&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Your OpenRouter API key used for authentication&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;ANTHROPIC_API_KEY&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Left empty intentionally — OpenRouter handles auth via the token&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;ANTHROPIC_DEFAULT_SONNET_MODEL&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The model you want Claude Code to use by default&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The &lt;code&gt;ANTHROPIC_DEFAULT_SONNET_MODEL&lt;/code&gt; field is where the magic happens. Change this to any model ID from OpenRouter's model list and Claude Code will use it.&lt;/p&gt;




&lt;h2&gt;
  
  
  How to Find Model IDs on OpenRouter
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Go to &lt;a href="https://openrouter.ai/models" rel="noopener noreferrer"&gt;openrouter.ai/models&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Browse or search for the model you want&lt;/li&gt;
&lt;li&gt;Click on it to see the model ID&lt;/li&gt;
&lt;li&gt;Copy the full model string (e.g., &lt;code&gt;meta-llama/llama-3.3-70b-instruct:free&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Paste it as the value of &lt;code&gt;ANTHROPIC_DEFAULT_SONNET_MODEL&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Models with &lt;code&gt;:free&lt;/code&gt; at the end are completely free to use — no credits needed. 👀&lt;/p&gt;




&lt;h2&gt;
  
  
  Pros and Cons
&lt;/h2&gt;

&lt;h3&gt;
  
  
  ✅ Advantages of Using Claude Code with OpenRouter
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Access to free models — great for learning and experimenting&lt;/li&gt;
&lt;li&gt;One API key for many models&lt;/li&gt;
&lt;li&gt;Flexibility to switch models without reinstalling anything&lt;/li&gt;
&lt;li&gt;Works with open-source models that Anthropic doesn't offer&lt;/li&gt;
&lt;li&gt;Useful if you're on a budget but still want powerful coding assistance&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  ⚠️ Things to Be Aware Of
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Not every OpenRouter model is as capable as Claude Sonnet or Opus&lt;/li&gt;
&lt;li&gt;Free models sometimes have rate limits or slower response times&lt;/li&gt;
&lt;li&gt;Some models may not follow Claude Code's system prompts as precisely&lt;/li&gt;
&lt;li&gt;If the model doesn't support tool use well, Claude Code's agentic features may behave unexpectedly&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Best Tips
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;✅ Do this:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Always test your setup with a simple prompt first before using it on a real project&lt;/li&gt;
&lt;li&gt;Use free models for low-stakes tasks like drafting, explaining code, or answering questions&lt;/li&gt;
&lt;li&gt;Keep your API key private — never commit &lt;code&gt;settings.json&lt;/code&gt; to a public Git repo&lt;/li&gt;
&lt;li&gt;Check the OpenRouter model card for context window size before using a model on large codebases&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;❌ Avoid this:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Don't leave your real API key in shared machines or public repositories&lt;/li&gt;
&lt;li&gt;Don't assume every model will behave exactly like Claude — each model has its own strengths and quirks&lt;/li&gt;
&lt;li&gt;Don't set &lt;code&gt;ANTHROPIC_API_KEY&lt;/code&gt; to your actual Anthropic key when using OpenRouter — it's not needed and might cause confusion&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Common Mistakes People Make
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Wrong API base URL format&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Some people accidentally set the URL to &lt;code&gt;https://openrouter.ai/api/v1&lt;/code&gt;. The correct value is &lt;code&gt;https://openrouter.ai/api&lt;/code&gt; — Claude Code appends &lt;code&gt;/v1/messages&lt;/code&gt; automatically.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Leaving the model name blank or wrong&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If &lt;code&gt;ANTHROPIC_DEFAULT_SONNET_MODEL&lt;/code&gt; is missing or has a typo, Claude Code may fall back to an unexpected default or throw an error. Always double-check the model ID from OpenRouter's model list.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Using an expired or invalid API key&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;OpenRouter keys are easy to rotate. If Claude Code starts returning auth errors, go to your OpenRouter dashboard and create a fresh API key.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Not restarting the terminal&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Settings are read when Claude Code starts. If you edit &lt;code&gt;settings.json&lt;/code&gt; while Claude Code is running, the changes won't apply until you restart your terminal.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Committing the settings file to Git&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This one hurts. Your &lt;code&gt;settings.json&lt;/code&gt; contains your API key. Add &lt;code&gt;.claude/&lt;/code&gt; to your &lt;code&gt;.gitignore&lt;/code&gt; to avoid accidentally pushing it to a public repository.&lt;/p&gt;




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

&lt;p&gt;Setting up Claude Code with OpenRouter is genuinely simple once you know where the settings file lives. A few lines of JSON and you unlock access to a wide range of AI models — including free ones — all from your existing terminal workflow.&lt;/p&gt;

&lt;p&gt;Whether you're on Windows, macOS, or Linux, the process is essentially the same: find the settings file, drop in the config, and you're good to go. 🔧&lt;/p&gt;

&lt;p&gt;The best part? You can switch models anytime just by changing one line. That kind of flexibility is rare and genuinely useful for anyone who codes with AI tools regularly.&lt;/p&gt;

&lt;p&gt;If this guide helped you, I'd love it if you shared it with a fellow developer who's been curious about Claude Code but didn't want to deal with API costs. And if you're looking for more practical dev guides like this, check out 👉 &lt;strong&gt;&lt;a href="https://hamidrazadev.com" rel="noopener noreferrer"&gt;hamidrazadev.com&lt;/a&gt;&lt;/strong&gt; — there's a lot more where this came from.&lt;/p&gt;

&lt;p&gt;Happy coding! 😊&lt;/p&gt;

</description>
      <category>claude</category>
      <category>ai</category>
      <category>webdev</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>WSL Explained: Why Windows Developers Are Obsessed With It 🐧</title>
      <dc:creator>Muhammad Hamid Raza</dc:creator>
      <pubDate>Fri, 10 Apr 2026 16:56:16 +0000</pubDate>
      <link>https://dev.to/hamidrazadev/wsl-explained-why-windows-developers-are-obsessed-with-it-cm7</link>
      <guid>https://dev.to/hamidrazadev/wsl-explained-why-windows-developers-are-obsessed-with-it-cm7</guid>
      <description>&lt;p&gt;Have you ever been a Windows user who secretly envied Linux developers? You know — the ones who casually run a one-liner in the terminal and get everything working in seconds while you're still fighting with PATH variables and permission errors?&lt;/p&gt;

&lt;p&gt;That was the daily reality for a lot of Windows developers. Until WSL came along and changed everything.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;WSL&lt;/strong&gt; — short for &lt;strong&gt;Windows Subsystem for Linux&lt;/strong&gt; — is one of the most genuinely useful tools Microsoft has shipped in years. It lets you run a full Linux environment directly inside Windows, no dual-boot, no virtual machine, no hassle.&lt;/p&gt;

&lt;p&gt;So what exactly is it? Why should you care? And is it really as helpful as people say?&lt;/p&gt;

&lt;p&gt;Let's find out. 👇&lt;/p&gt;




&lt;h2&gt;
  
  
  What Is WSL?
&lt;/h2&gt;

&lt;p&gt;Think of WSL as a translation layer built into Windows. It lets your Windows machine speak "Linux" fluently.&lt;/p&gt;

&lt;p&gt;Here's a simple way to think about it: imagine you're in an English-speaking office, but your best collaborator speaks French. Instead of flying to France or hiring a full-time translator (that's a VM), you install a small translation app on your computer (that's WSL). Now you can communicate instantly without switching desks.&lt;/p&gt;

&lt;p&gt;WSL does the same thing for your system. You can open a terminal, type Linux commands, run Linux tools, and work with Linux file systems — all without leaving Windows.&lt;/p&gt;

&lt;p&gt;There are two versions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;WSL 1&lt;/strong&gt; — the original, which translates Linux calls into Windows calls&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;WSL 2&lt;/strong&gt; — the current version, which runs a real Linux kernel inside a lightweight virtual machine. It's faster, more compatible, and what most people use today&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can install popular distros like Ubuntu, Debian, Kali Linux, or Fedora directly from the Microsoft Store.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why WSL Matters for Developers
&lt;/h2&gt;

&lt;p&gt;Here's a real situation many Windows developers have faced:&lt;/p&gt;

&lt;p&gt;You're following a tutorial. The instructor is on macOS or Linux. They run a command. It works perfectly. You try the same command on Windows. Error. You try the Windows equivalent. Different error. You spend 45 minutes on Stack Overflow. You feel like giving up.&lt;/p&gt;

&lt;p&gt;WSL fixes that.&lt;/p&gt;

&lt;p&gt;Most open-source tools, frameworks, and documentation are written with Linux/macOS in mind. Bash scripts, package managers like &lt;code&gt;apt&lt;/code&gt;, native Node.js and Python setups, Docker, and backend development workflows all behave much more smoothly on Linux.&lt;/p&gt;

&lt;p&gt;With WSL, you get that same smooth experience without leaving Windows. Your files, apps, and everything else stay exactly where they are.&lt;/p&gt;




&lt;h2&gt;
  
  
  Benefits of WSL with Real-Life Examples
&lt;/h2&gt;

&lt;h3&gt;
  
  
  ✅ Run Linux Commands on Windows
&lt;/h3&gt;

&lt;p&gt;Before WSL, running &lt;code&gt;grep&lt;/code&gt;, &lt;code&gt;sed&lt;/code&gt;, &lt;code&gt;awk&lt;/code&gt;, or shell scripts on Windows required workarounds or third-party tools. Now you just open your Ubuntu terminal in WSL and type them directly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt; A developer automating file renaming across hundreds of files uses a simple Bash one-liner that would take a full PowerShell script to replicate.&lt;/p&gt;




&lt;h3&gt;
  
  
  ✅ No Dual-Boot Headaches
&lt;/h3&gt;

&lt;p&gt;Setting up dual boot is time-consuming, risky, and annoying to manage. You have to restart your machine every time you want to switch. WSL eliminates that entirely.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt; A student learning Linux commands for a university course uses WSL on their Windows laptop without ever partitioning their hard drive.&lt;/p&gt;




&lt;h3&gt;
  
  
  ✅ Use Linux Dev Tools Natively
&lt;/h3&gt;

&lt;p&gt;Tools like &lt;code&gt;make&lt;/code&gt;, &lt;code&gt;gcc&lt;/code&gt;, &lt;code&gt;curl&lt;/code&gt;, &lt;code&gt;git&lt;/code&gt;, &lt;code&gt;vim&lt;/code&gt;, and dozens of others work out of the box in WSL. No emulation, no compatibility layer workarounds.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt; A backend developer compiles a C++ project using &lt;code&gt;g++&lt;/code&gt; inside WSL the same way it would work on a Linux server in production.&lt;/p&gt;




&lt;h3&gt;
  
  
  ✅ Faster and Lighter Than a Virtual Machine
&lt;/h3&gt;

&lt;p&gt;Running a full VM like VirtualBox or VMware takes a lot of RAM and CPU. WSL 2 uses a lightweight virtual machine that starts in seconds and uses a fraction of the resources.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt; A developer on a mid-range laptop who previously crashed their VM regularly now runs WSL without any performance issues.&lt;/p&gt;




&lt;h3&gt;
  
  
  ✅ Seamless File Access Between Windows and Linux
&lt;/h3&gt;

&lt;p&gt;With WSL, you can access your Windows files from Linux and your Linux files from Windows Explorer. Both systems talk to each other comfortably.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt; You write code in VS Code on Windows, and that code lives in your Linux file system via WSL. Both sides see it perfectly.&lt;/p&gt;




&lt;h3&gt;
  
  
  ✅ Works Great With VS Code
&lt;/h3&gt;

&lt;p&gt;With the &lt;strong&gt;Remote - WSL&lt;/strong&gt; extension in VS Code, you can open a WSL folder in VS Code as if it were a native Linux environment. The editor runs on Windows but the code runs in Linux.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt; A full-stack developer uses VS Code on Windows with a Node.js project inside WSL. It feels exactly like working on a Linux machine.&lt;/p&gt;




&lt;h3&gt;
  
  
  ✅ Docker Integration
&lt;/h3&gt;

&lt;p&gt;Docker Desktop on Windows integrates directly with WSL 2. This means containers run faster and more reliably compared to the old Hyper-V backend.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt; A developer running a multi-container app with Docker Compose sees noticeably faster build times after switching to the WSL 2 backend.&lt;/p&gt;




&lt;h2&gt;
  
  
  WSL vs Full Virtual Machine — What's the Difference?
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;WSL 2&lt;/th&gt;
&lt;th&gt;Full VM (VirtualBox / VMware)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Startup time&lt;/td&gt;
&lt;td&gt;Seconds&lt;/td&gt;
&lt;td&gt;Minutes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RAM usage&lt;/td&gt;
&lt;td&gt;Low&lt;/td&gt;
&lt;td&gt;High&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;File access&lt;/td&gt;
&lt;td&gt;Shared with Windows&lt;/td&gt;
&lt;td&gt;Separate disk&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Installation&lt;/td&gt;
&lt;td&gt;Simple (one command)&lt;/td&gt;
&lt;td&gt;Manual setup needed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Performance&lt;/td&gt;
&lt;td&gt;Near-native&lt;/td&gt;
&lt;td&gt;Slower&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GUI support&lt;/td&gt;
&lt;td&gt;Supported (WSLg)&lt;/td&gt;
&lt;td&gt;Full GUI always&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Best for&lt;/td&gt;
&lt;td&gt;Dev work, CLI tools&lt;/td&gt;
&lt;td&gt;Full isolated environments&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;For most developers doing everyday development work, WSL 2 wins easily. A full VM is still useful when you need a completely isolated environment, but for coding, scripts, and tools, WSL is the better choice.&lt;/p&gt;




&lt;h2&gt;
  
  
  Best Tips for Using WSL
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;💡 Use WSL 2, not WSL 1.&lt;/strong&gt; WSL 2 has better file I/O performance, full system call compatibility, and Docker support. Always prefer it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;💡 Store your project files inside the Linux file system.&lt;/strong&gt; When you keep files at &lt;code&gt;/home/yourname/projects&lt;/code&gt; instead of &lt;code&gt;/mnt/c/Users/...&lt;/code&gt;, file operations are significantly faster.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;💡 Install the VS Code Remote - WSL extension.&lt;/strong&gt; It makes working inside WSL feel completely native and comfortable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;💡 Use Windows Terminal.&lt;/strong&gt; It's clean, fast, and supports multiple tabs including WSL sessions alongside PowerShell and CMD.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;💡 Learn basic Bash.&lt;/strong&gt; Even a small amount of Bash knowledge unlocks a lot of productivity inside WSL.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;💡 Do:&lt;/strong&gt; Run your dev servers, scripts, and build tools inside WSL for better compatibility.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🚫 Don't:&lt;/strong&gt; Edit files stored in WSL using Windows Explorer directly. Use a proper editor with WSL integration to avoid permission issues.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🚫 Don't:&lt;/strong&gt; Install WSL 1 unless you have a very specific reason. WSL 2 is almost always the better option.&lt;/p&gt;




&lt;h2&gt;
  
  
  Common Mistakes People Make With WSL
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Storing project files on the Windows side
&lt;/h3&gt;

&lt;p&gt;Many beginners put their projects in &lt;code&gt;C:\Users\...&lt;/code&gt; and then access them from WSL via &lt;code&gt;/mnt/c/...&lt;/code&gt;. This works, but it's slow. The cross-filesystem access between Windows and Linux has overhead.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fix:&lt;/strong&gt; Move your projects into the Linux file system (&lt;code&gt;/home/username/&lt;/code&gt;) for much better performance.&lt;/p&gt;




&lt;h3&gt;
  
  
  2. Forgetting to set WSL 2 as default
&lt;/h3&gt;

&lt;p&gt;After installing WSL, some people skip setting the default version to WSL 2 and end up running WSL 1 without realizing it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fix:&lt;/strong&gt; Run this command once after installation:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;wsl &lt;span class="nt"&gt;--set-default-version&lt;/span&gt; 2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  3. Running GUI-heavy workflows without WSLg
&lt;/h3&gt;

&lt;p&gt;Before WSLg (the GUI support layer), Linux GUI apps didn't work inside WSL. Some people still expect this limitation and miss out.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fix:&lt;/strong&gt; WSL 2 on recent versions of Windows 11 supports GUI Linux apps natively via WSLg. Just make sure your Windows is up to date.&lt;/p&gt;




&lt;h3&gt;
  
  
  4. Not using Windows Terminal
&lt;/h3&gt;

&lt;p&gt;Opening WSL through the old Command Prompt window is not a great experience. Some users stick with it and wonder why things feel clunky.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fix:&lt;/strong&gt; Install Windows Terminal from the Microsoft Store. It is free, fast, and makes the whole experience far more enjoyable.&lt;/p&gt;




&lt;h3&gt;
  
  
  5. Treating WSL like a toy
&lt;/h3&gt;

&lt;p&gt;Some people install WSL, run a few commands, and then forget about it. They miss the real value.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fix:&lt;/strong&gt; Actually build something with it. Run a server, set up a project, use Docker. Once you feel the difference in your actual workflow, you won't go back.&lt;/p&gt;




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

&lt;p&gt;WSL is one of the best tools a Windows developer can have in their setup today. It closes the gap between Windows and Linux development without making you choose between them.&lt;/p&gt;

&lt;p&gt;You get Linux tools, Linux compatibility, and Linux performance — right inside your Windows machine. No dual boot. No heavy VM. No excuses.&lt;/p&gt;

&lt;p&gt;Whether you're a student learning Linux basics, a frontend developer following tutorials, or a backend engineer running servers locally, WSL makes your workflow smoother, faster, and a lot less frustrating.&lt;/p&gt;

&lt;p&gt;If you haven't tried it yet, give it a shot. You might be surprised how quickly it becomes part of your daily routine. 🚀&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Want more developer tips and tools explained clearly?&lt;/strong&gt;&lt;br&gt;
Visit &lt;a href="https://hamidrazadev.com" rel="noopener noreferrer"&gt;hamidrazadev.com&lt;/a&gt; for more practical blog posts on frontend development, developer productivity, and web tools.&lt;/p&gt;

&lt;p&gt;If this helped you, share it with a fellow developer who's still fighting Windows terminal issues. 😊&lt;/p&gt;

</description>
      <category>linux</category>
      <category>windows</category>
      <category>productivity</category>
      <category>discuss</category>
    </item>
    <item>
      <title>VS Code 1.115: The Update That Makes Your Dev Workflow Feel Like Magic 🚀</title>
      <dc:creator>Muhammad Hamid Raza</dc:creator>
      <pubDate>Wed, 08 Apr 2026 13:12:56 +0000</pubDate>
      <link>https://dev.to/hamidrazadev/vs-code-1115-the-update-that-makes-your-dev-workflow-feel-like-magic-2d03</link>
      <guid>https://dev.to/hamidrazadev/vs-code-1115-the-update-that-makes-your-dev-workflow-feel-like-magic-2d03</guid>
      <description>&lt;p&gt;Ever updated VS Code, glanced at the release notes, and thought &lt;em&gt;"okay that's cool"&lt;/em&gt; — but then kept coding without really digging in? Same. Most of us miss genuinely useful features because the changelog can feel like a wall of text.&lt;/p&gt;

&lt;p&gt;So let's fix that.&lt;/p&gt;

&lt;p&gt;VS Code 1.115 dropped on April 3, 2026, and this one has some really solid improvements — especially if you're working with AI agents, terminals, or remote machines. Whether you're a solo dev or part of a team, there's something in here worth knowing about.&lt;/p&gt;

&lt;p&gt;Let's break it all down in plain English. 👀&lt;/p&gt;




&lt;h2&gt;
  
  
  What Is VS Code 1.115?
&lt;/h2&gt;

&lt;p&gt;VS Code releases updates in rolling cycles, and version 1.115 covers changes made between &lt;strong&gt;March 31 and April 2, 2026&lt;/strong&gt;. These aren't massive rewrites — they're focused, practical improvements that smooth out real developer pain points.&lt;/p&gt;

&lt;p&gt;This release touches four main areas:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Terminal improvements&lt;/li&gt;
&lt;li&gt;Agent and chat session upgrades&lt;/li&gt;
&lt;li&gt;Remote SSH support&lt;/li&gt;
&lt;li&gt;UI and browser polish&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Why This Update Matters
&lt;/h2&gt;

&lt;p&gt;If you're using VS Code's built-in AI agent features, background terminals, or SSH remotes, this update directly improves how you work. The team at Microsoft is clearly doubling down on making AI-assisted development feel less clunky and more natural.&lt;/p&gt;

&lt;p&gt;Even if you're not deep into agents yet, the terminal paste fix alone is worth noting. How many times have you needed to paste an image into a terminal and had to find a workaround? No more.&lt;/p&gt;




&lt;h2&gt;
  
  
  What's New in VS Code 1.115
&lt;/h2&gt;

&lt;p&gt;Let's go through each update, grouped by day.&lt;/p&gt;




&lt;h3&gt;
  
  
  🗓️ April 2, 2026
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Test coverage in the minimap&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You can now enable test coverage indicators directly in the minimap. This is a subtle but useful addition for anyone doing TDD or trying to get a quick visual sense of how well their codebase is covered — without needing to open a separate panel.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Paste files into the terminal&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You can now paste files — including images — into the integrated terminal using &lt;code&gt;Ctrl+V&lt;/code&gt;, drag-and-drop, or right-click paste. This is one of those small things that makes a big difference when you're trying to move fast.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Background terminal improvements for agents&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This one is big for AI agent workflows. Background terminals now &lt;strong&gt;automatically notify the agent&lt;/strong&gt; when a command finishes, including the exit code and output. Even better — if a background terminal is waiting for user input, VS Code detects that and surfaces it to you.&lt;/p&gt;

&lt;p&gt;Before this, agents could kick off a terminal command and then just... not know what happened. Now there's a proper feedback loop.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pinch-to-zoom in the integrated browser (Mac)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Mac users can now use pinch-to-zoom gestures inside the integrated browser. A small quality-of-life upgrade, but it brings the built-in browser experience closer to a real browser.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;code serve-web&lt;/code&gt; CLI updates&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;code serve-web&lt;/code&gt; command now supports three new options:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;--disable-telemetry&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--default-folder&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--default-workspace&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Useful for teams running VS Code in a web/server context who want more control over the default experience.&lt;/p&gt;




&lt;h3&gt;
  
  
  🗓️ April 1, 2026
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Copilot session entitlements and usage info&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The Copilot status bar now shows entitlement and usage information inside &lt;strong&gt;Sessions&lt;/strong&gt;. If you've ever wondered how much of your Copilot quota you've used mid-session, this gives you visibility without leaving your editor.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SSH remote support with automatic CLI setup&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is a genuinely useful addition. VS Code can now connect to remote machines over SSH and &lt;strong&gt;automatically install the CLI&lt;/strong&gt; and start it in &lt;strong&gt;agent host mode&lt;/strong&gt;. Previously, you'd need to set things up manually on the remote side. Now it handles it for you.&lt;/p&gt;

&lt;p&gt;For anyone doing remote development — whether on a server, a cloud VM, or a colleague's machine — this removes a real friction point.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;File edit tracking and restoration in agent sessions&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Agents can now &lt;strong&gt;track and restore file edits&lt;/strong&gt; made during a session. This means you get proper diffs, undo/redo, and state restoration for any changes an agent made.&lt;/p&gt;

&lt;p&gt;This is important. AI-assisted editing is only as trustworthy as your ability to review and reverse it. Now you have the tools to do both.&lt;/p&gt;




&lt;h3&gt;
  
  
  🗓️ March 31, 2026
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Chat can track and link open browser tabs&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Chat sessions can now track browser tabs that were opened or interacted with during a session. Agents can reference those open pages directly. If you asked an agent to open docs and then want it to pull info from them, this makes that flow work properly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;send_to_terminal&lt;/code&gt; tool for agents&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A new &lt;code&gt;send_to_terminal&lt;/code&gt; tool lets agents send commands to background terminals — with user confirmation. This fixes a known issue where &lt;code&gt;run_in_terminal&lt;/code&gt; with a timeout would push terminals to the background and make them read-only. Now that scenario is handled cleanly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Rename agent sessions from the client side&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You can now rename agent sessions directly from the client, thanks to a new rename capability in the Agent Host Protocol. Helpful when you're juggling multiple sessions and need to stay organized.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Favicons in Go to File quick pick&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Open web pages now display their favicons in the &lt;strong&gt;Go to File&lt;/strong&gt; quick pick list. A small visual improvement that makes it easier to identify browser tabs at a glance.&lt;/p&gt;




&lt;h2&gt;
  
  
  Comparison: Before vs. After — Agent Terminal Workflow
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Scenario&lt;/th&gt;
&lt;th&gt;Before 1.115&lt;/th&gt;
&lt;th&gt;After 1.115&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Agent runs background command&lt;/td&gt;
&lt;td&gt;No notification when done&lt;/td&gt;
&lt;td&gt;Agent gets exit code + output&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Background terminal needs input&lt;/td&gt;
&lt;td&gt;Silently blocked&lt;/td&gt;
&lt;td&gt;Detected and surfaced to user&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Agent sends command to terminal&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;run_in_terminal&lt;/code&gt; timeout issues&lt;/td&gt;
&lt;td&gt;Clean &lt;code&gt;send_to_terminal&lt;/code&gt; with confirmation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SSH remote setup&lt;/td&gt;
&lt;td&gt;Manual CLI install required&lt;/td&gt;
&lt;td&gt;Auto-installs CLI + starts agent host&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;If you work with agents regularly, this table basically summarizes why 1.115 is a meaningful release.&lt;/p&gt;




&lt;h2&gt;
  
  
  Tips for Getting the Most Out of VS Code 1.115
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;✅ Do:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Enable test coverage in the minimap if you're writing tests — it's a fast visual cue&lt;/li&gt;
&lt;li&gt;Try the SSH auto-install feature on your next remote dev session instead of setting things up manually&lt;/li&gt;
&lt;li&gt;Review agent session diffs before accepting them — the new restoration feature makes this easier than ever&lt;/li&gt;
&lt;li&gt;Rename your agent sessions so you can find them later&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;❌ Don't:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ignore background terminal notifications — they're telling you something important&lt;/li&gt;
&lt;li&gt;Skip reviewing file edits made by agents just because undo is now available&lt;/li&gt;
&lt;li&gt;Forget to check your Copilot usage in the Sessions panel if you're on a limited plan&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Common Mistakes People Make After a VS Code Update
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Skipping the release notes entirely&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Most developers install the update and move on. The result? They miss features that could save them hours. You don't need to read everything — but skimming the highlights takes three minutes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Not testing new agent features with real workflows&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It's easy to read about a feature and think "cool" without actually using it. The background terminal improvements in 1.115 are genuinely useful — but you'll only feel that benefit if you try them in an actual agent session.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Assuming remote SSH setup is still manual&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Habits are hard to break. If you've been setting up VS Code CLI manually on every remote machine, you might keep doing it out of muscle memory. The auto-install feature is now available — use it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Overlooking small UI changes&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The favicon display in Go to File and the minimap coverage indicators seem minor. But they add up. A cleaner visual workspace means fewer context switches and less cognitive load over a full workday.&lt;/p&gt;




&lt;h2&gt;
  
  
  Wrapping Up
&lt;/h2&gt;

&lt;p&gt;VS Code 1.115 is a focused, practical update. It doesn't reinvent the editor — it makes the things you already do smoother, faster, and more reliable.&lt;/p&gt;

&lt;p&gt;The biggest wins here are for developers working with AI agents and remote machines. The background terminal improvements, file edit tracking, and SSH auto-setup are all genuinely useful additions that remove real friction from real workflows.&lt;/p&gt;

&lt;p&gt;If you haven't updated yet, do it. And actually read through the release notes — even just once. You'll find at least one feature that makes you think &lt;em&gt;"wait, that was always the problem I had."&lt;/em&gt; 💡&lt;/p&gt;

&lt;p&gt;For more practical dev content, check out &lt;strong&gt;&lt;a href="https://hamidrazadev.com" rel="noopener noreferrer"&gt;hamidrazadev.com&lt;/a&gt;&lt;/strong&gt; — new posts every week on tools, tips, and web development.&lt;/p&gt;

&lt;p&gt;If this post helped you, share it with a developer friend who might be sleeping on these updates. Drop a comment if you found a feature in 1.115 that I didn't cover! 😊&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>vscode</category>
      <category>productivity</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Intersection Observer in JavaScript: Detect When Elements Enter the Screen (Without Breaking a Sweat)</title>
      <dc:creator>Muhammad Hamid Raza</dc:creator>
      <pubDate>Tue, 07 Apr 2026 13:14:50 +0000</pubDate>
      <link>https://dev.to/hamidrazadev/intersection-observer-in-javascript-detect-when-elements-enter-the-screen-without-breaking-a-1ilp</link>
      <guid>https://dev.to/hamidrazadev/intersection-observer-in-javascript-detect-when-elements-enter-the-screen-without-breaking-a-1ilp</guid>
      <description>&lt;p&gt;Ever built a webpage and thought, &lt;em&gt;"Wouldn't it be cool if this animation only triggered when the user actually scrolls to it?"&lt;/em&gt; Or maybe you've seen lazy-loaded images on big websites and wondered how they know exactly when to load? 🤔&lt;/p&gt;

&lt;p&gt;That magic has a name: the &lt;strong&gt;Intersection Observer API&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;If you've ever tried to detect element visibility using scroll events and &lt;code&gt;getBoundingClientRect()&lt;/code&gt;, you already know the pain. It works — until your page starts lagging because the browser is calculating positions on every single scroll tick. Not fun.&lt;/p&gt;

&lt;p&gt;Intersection Observer was built to solve exactly that problem. It's clean, efficient, and honestly pretty satisfying to use once it clicks. Let's break it down.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Is the Intersection Observer API?
&lt;/h2&gt;

&lt;p&gt;The &lt;strong&gt;Intersection Observer API&lt;/strong&gt; is a built-in JavaScript browser API that lets you watch when an element enters or exits the viewport (or any scrollable container) — without using scroll events.&lt;/p&gt;

&lt;p&gt;Think of it like a security guard standing at the entrance of a room. Instead of you constantly running to the door to check if someone arrived, the guard simply calls you the moment someone walks in. You don't have to do anything. You just wait for the call.&lt;/p&gt;

&lt;p&gt;In code terms: you tell the browser &lt;em&gt;"hey, watch this element for me"&lt;/em&gt;, and the browser notifies you the moment it becomes visible or hidden. No polling. No performance headaches. Just a clean callback.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why This Matters for Developers
&lt;/h2&gt;

&lt;p&gt;Before Intersection Observer existed, developers used scroll event listeners combined with &lt;code&gt;getBoundingClientRect()&lt;/code&gt; to track element positions. It worked, but it had real problems:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Performance issues&lt;/strong&gt; — scroll events fire extremely fast, dozens of times per second. Running calculations inside them tanks performance on complex pages.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Forced reflows&lt;/strong&gt; — calling &lt;code&gt;getBoundingClientRect()&lt;/code&gt; forces the browser to recalculate layout, which is expensive.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Messy code&lt;/strong&gt; — handling debouncing, cleanup, and edge cases made the code complicated fast.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Intersection Observer solves all of this. The browser handles the detection natively and efficiently, and your callback only runs when something actually changes. It's the right tool for the job.&lt;/p&gt;




&lt;h2&gt;
  
  
  Benefits with Real-Life Examples
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Lazy loading images&lt;/strong&gt; — Instead of loading all 80 product images on a page at once, you load them only when they're about to appear on screen. Faster initial load, less wasted bandwidth. ⚡&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Scroll-triggered animations&lt;/strong&gt; — Cards, text, or UI sections animate in only when the user scrolls to them. Feels polished, costs almost nothing extra.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Infinite scroll&lt;/strong&gt; — When the last list item enters the viewport, trigger the next page fetch. This is exactly how Twitter and Instagram feeds work.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Sticky headers and nav highlights&lt;/strong&gt; — Track which section is currently visible and highlight the matching navigation link automatically.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Analytics and ad visibility tracking&lt;/strong&gt; — Know whether a user actually &lt;em&gt;saw&lt;/em&gt; an ad or section, not just whether the page loaded.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each of these used to require messy scroll handlers. Now they're clean, readable, and fast.&lt;/p&gt;




&lt;h2&gt;
  
  
  How to Use It: Basic Syntax
&lt;/h2&gt;

&lt;p&gt;Here's the simplest form of Intersection Observer:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;observer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;IntersectionObserver&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;entries&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;entries&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;forEach&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;entry&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;entry&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;isIntersecting&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Element is visible!&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;entry&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;target&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;target&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;querySelector&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;.my-element&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;observer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;observe&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;target&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's it for the basics. Let's understand what each part does.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Callback
&lt;/h3&gt;

&lt;p&gt;The callback receives an array of &lt;code&gt;entries&lt;/code&gt;. Each entry represents an observed element and includes useful properties:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;entry.isIntersecting&lt;/code&gt; — &lt;code&gt;true&lt;/code&gt; if the element is currently visible in the viewport.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;entry.target&lt;/code&gt; — the actual DOM element being observed.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;entry.intersectionRatio&lt;/code&gt; — how much of the element is visible, from &lt;code&gt;0&lt;/code&gt; to &lt;code&gt;1&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;entry.boundingClientRect&lt;/code&gt; — the element's size and position.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  The Options Object
&lt;/h3&gt;

&lt;p&gt;You can pass an options object as the second argument to control behavior:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;options&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;root&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;         &lt;span class="c1"&gt;// null = viewport; or pass a scrollable element&lt;/span&gt;
  &lt;span class="na"&gt;rootMargin&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;0px&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="c1"&gt;// expand or shrink the detection area&lt;/span&gt;
  &lt;span class="na"&gt;threshold&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;0.5&lt;/span&gt;      &lt;span class="c1"&gt;// trigger when 50% of the element is visible&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;observer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;IntersectionObserver&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;callback&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;options&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;root&lt;/code&gt;&lt;/strong&gt; — The container to check against. &lt;code&gt;null&lt;/code&gt; means the browser viewport.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;rootMargin&lt;/code&gt;&lt;/strong&gt; — Like CSS margin, it expands or shrinks the detection zone. &lt;code&gt;"100px"&lt;/code&gt; would trigger 100px before the element actually enters the viewport — great for preloading.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;threshold&lt;/code&gt;&lt;/strong&gt; — A value (or array of values) between &lt;code&gt;0&lt;/code&gt; and &lt;code&gt;1&lt;/code&gt; defining when the callback fires. &lt;code&gt;0&lt;/code&gt; = any pixel visible, &lt;code&gt;1&lt;/code&gt; = fully visible.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Practical Example: Scroll-Triggered Animation
&lt;/h2&gt;

&lt;p&gt;Here's a real, working example you can drop into any project:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;HTML:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"card fade-in"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Hello, I animate in! 👋&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"card fade-in"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;So do I!&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"card fade-in"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Me too!&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;CSS:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.fade-in&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;opacity&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;transform&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;translateY&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;30px&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nl"&gt;transition&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;opacity&lt;/span&gt; &lt;span class="m"&gt;0.6s&lt;/span&gt; &lt;span class="n"&gt;ease&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;transform&lt;/span&gt; &lt;span class="m"&gt;0.6s&lt;/span&gt; &lt;span class="n"&gt;ease&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nc"&gt;.fade-in.visible&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;opacity&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;transform&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;translateY&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;JavaScript:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;observer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;IntersectionObserver&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;entries&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;entries&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;forEach&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;entry&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;entry&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;isIntersecting&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nx"&gt;entry&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;target&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;classList&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;visible&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
      &lt;span class="nx"&gt;observer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;unobserve&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;entry&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;target&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// stop watching after animation&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;threshold&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;0.1&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;querySelectorAll&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;.fade-in&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;forEach&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;el&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;observer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;observe&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;el&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;observer.unobserve()&lt;/code&gt; call on line 5 is key — once the animation fires, there's no reason to keep watching that element. This keeps things clean and memory-efficient.&lt;/p&gt;




&lt;h2&gt;
  
  
  Comparison: Scroll Event vs Intersection Observer
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;Scroll Event + getBoundingClientRect&lt;/th&gt;
&lt;th&gt;Intersection Observer&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Performance&lt;/td&gt;
&lt;td&gt;Poor on complex pages&lt;/td&gt;
&lt;td&gt;Excellent, native browser optimization&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ease of use&lt;/td&gt;
&lt;td&gt;Complex, lots of boilerplate&lt;/td&gt;
&lt;td&gt;Clean and minimal&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Debouncing needed&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Viewport detection&lt;/td&gt;
&lt;td&gt;Manual calculation&lt;/td&gt;
&lt;td&gt;Built-in&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Multiple elements&lt;/td&gt;
&lt;td&gt;Gets messy fast&lt;/td&gt;
&lt;td&gt;Observe as many as you need&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Browser support&lt;/td&gt;
&lt;td&gt;Universal&lt;/td&gt;
&lt;td&gt;All modern browsers ✅&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The scroll event approach isn't &lt;em&gt;wrong&lt;/em&gt; — but for visibility tracking, Intersection Observer is almost always the better choice.&lt;/p&gt;




&lt;h2&gt;
  
  
  Best Tips / Do's &amp;amp; Don'ts
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;✅ Do:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Always call &lt;code&gt;observer.unobserve(entry.target)&lt;/code&gt; after a one-time action (like triggering an animation) to free up resources.&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;rootMargin&lt;/code&gt; for preloading — trigger things slightly before they enter the viewport for a smoother user experience.&lt;/li&gt;
&lt;li&gt;Pass an array of thresholds like &lt;code&gt;[0, 0.25, 0.5, 0.75, 1]&lt;/code&gt; if you need to track how much of an element is visible at different stages.&lt;/li&gt;
&lt;li&gt;Store your observer in a variable so you can call &lt;code&gt;observer.disconnect()&lt;/code&gt; when the component unmounts (especially important in React).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;❌ Don't:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Don't use it for detecting &lt;em&gt;exact pixel positions&lt;/em&gt; in real time — that's still scroll events territory.&lt;/li&gt;
&lt;li&gt;Don't forget to call &lt;code&gt;observer.disconnect()&lt;/code&gt; when you're done. Leaving observers running indefinitely wastes memory.&lt;/li&gt;
&lt;li&gt;Don't set &lt;code&gt;threshold: 1&lt;/code&gt; for large elements that might never be 100% visible on small screens. Your callback will never fire.&lt;/li&gt;
&lt;li&gt;Don't create a new observer instance for each element. One observer can watch many elements at once.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Common Mistakes People Make
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Forgetting to unobserve or disconnect&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is the most common mistake. If you observe 50 elements on a page and never stop watching them, you're holding references and running callbacks unnecessarily. Always clean up.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Using threshold: 1 on tall elements&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If your element is taller than the viewport, it will never be 100% visible — so a threshold of &lt;code&gt;1&lt;/code&gt; means your callback never fires. Use &lt;code&gt;0.1&lt;/code&gt; or &lt;code&gt;0.2&lt;/code&gt; for tall sections.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Creating one observer per element&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// ❌ Wrong way&lt;/span&gt;
&lt;span class="nx"&gt;elements&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;forEach&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;el&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;obs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;IntersectionObserver&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;callback&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nx"&gt;obs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;observe&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;el&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="c1"&gt;// ✅ Right way&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;observer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;IntersectionObserver&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;callback&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;elements&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;forEach&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;el&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;observer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;observe&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;el&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;One observer, many targets. Cleaner and more efficient.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Not checking &lt;code&gt;isIntersecting&lt;/code&gt; inside the callback&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The callback fires both when elements &lt;em&gt;enter&lt;/em&gt; and &lt;em&gt;exit&lt;/em&gt; the viewport. If you don't check &lt;code&gt;entry.isIntersecting&lt;/code&gt;, your logic runs in both cases — which often causes bugs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Relying on it for critical layout logic without a fallback&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Modern browser support is excellent, but if you're building something that needs to work in very old environments, check &lt;a href="https://caniuse.com/intersectionobserver" rel="noopener noreferrer"&gt;caniuse.com&lt;/a&gt; and consider a polyfill.&lt;/p&gt;




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

&lt;p&gt;The Intersection Observer API is one of those browser features that once you learn, you start seeing use cases everywhere. Lazy loading, animations, infinite scroll, analytics — it handles them all cleanly and efficiently.&lt;/p&gt;

&lt;p&gt;It replaces a whole category of scroll-event spaghetti with just a few lines of readable code. Your users get a smoother experience, your codebase stays clean, and your browser stops crying. Everyone wins. 🚀&lt;/p&gt;

&lt;p&gt;The next time you need to detect element visibility on a page, reach for Intersection Observer first. It was literally built for this.&lt;/p&gt;




&lt;p&gt;Want more practical JavaScript and frontend tips like this? Head over to &lt;a href="https://hamidrazadev.com" rel="noopener noreferrer"&gt;hamidrazadev.com&lt;/a&gt; for more posts, tutorials, and guides. If this helped you, share it with a fellow developer — they'll thank you for it. 😊&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>frontend</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Google Stitch: The AI Design Tool Developers Need to Know About in 2026</title>
      <dc:creator>Muhammad Hamid Raza</dc:creator>
      <pubDate>Mon, 06 Apr 2026 12:22:39 +0000</pubDate>
      <link>https://dev.to/hamidrazadev/google-stitch-the-ai-design-tool-developers-need-to-know-about-in-2026-2j7m</link>
      <guid>https://dev.to/hamidrazadev/google-stitch-the-ai-design-tool-developers-need-to-know-about-in-2026-2j7m</guid>
      <description>&lt;p&gt;You have an app idea. You know what it should do. You even know roughly what it should look like.&lt;/p&gt;

&lt;p&gt;But then you open a blank Figma file and... &lt;strong&gt;nothing.&lt;/strong&gt; The blank canvas paralysis hits. You spend two hours pushing boxes around, and the result still looks like a college assignment from 2009.&lt;/p&gt;

&lt;p&gt;Sound familiar? 😅&lt;/p&gt;

&lt;p&gt;That is exactly the problem &lt;strong&gt;Google Stitch&lt;/strong&gt; was built to fix. It is a free AI-powered UI design tool from Google Labs that lets you describe your interface in plain English—and it generates a polished, production-ready design for you in seconds, complete with real frontend code.&lt;/p&gt;

&lt;p&gt;Whether you are a developer who struggles with design, a designer who wants to move faster, or a founder who needs to prototype an idea without hiring an agency—Stitch might just become your new favorite tool.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Is Google Stitch?
&lt;/h2&gt;

&lt;p&gt;Google Stitch is an AI-powered UI design tool developed by Google Labs that transforms text prompts or uploaded wireframes into mobile and web user interface designs. &lt;/p&gt;

&lt;p&gt;It leverages the multimodal power of &lt;strong&gt;Gemini 3 Flash&lt;/strong&gt; and &lt;strong&gt;Gemini 3 Pro&lt;/strong&gt; to create a fluid, integrated workflow between design and development.&lt;/p&gt;

&lt;h3&gt;
  
  
  Three Tools in One:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Design Generator:&lt;/strong&gt; Describe your UI and it creates it visually.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Code Exporter:&lt;/strong&gt; Get clean HTML, CSS, or React (TypeScript) code instantly.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Figma Bridge:&lt;/strong&gt; Paste your design directly into Figma for further polish.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The best part? It’s fully web-based. All you need is a Google account—no installations or environment setup required.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why Google Stitch Matters for Developers
&lt;/h2&gt;

&lt;p&gt;Most developers are not designers. And that is completely fine—except when you need to ship a product fast and there is no designer on the team. &lt;/p&gt;

&lt;p&gt;Stitch allows anyone to turn natural language into high-fidelity UI designs. For a solo dev, this means going from "I need a dashboard" to a functional layout in under five minutes.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Impact:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Zero to Hero:&lt;/strong&gt; No Figma expertise? No problem.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Instant Handoff:&lt;/strong&gt; The "design" is already code. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Massive Speed:&lt;/strong&gt; Cuts design time from days to minutes.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Key Features &amp;amp; Real-Life Examples
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Turn Plain English into Full UI
&lt;/h3&gt;

&lt;p&gt;Describe your application including details like color palettes or user experience.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Prompt:&lt;/strong&gt; &lt;em&gt;"A dark-themed mobile dashboard for a crypto tracking app with a navbar, portfolio card, and price chart using #0a0a0a and #22d3ee accents."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  2. Upload Sketches and Wireframes
&lt;/h3&gt;

&lt;p&gt;Have a whiteboard sketch or a rough screenshot? Upload it. Stitch processes the image to produce a corresponding digital UI, bridging the gap between a napkin sketch and a functional design.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Production-Ready Code
&lt;/h3&gt;

&lt;p&gt;Stitch doesn't just "draw" boxes; it writes them. You can export:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Tailwind CSS + React&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Standard HTML/CSS&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;TypeScript components&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4. The "Wildcard" Variant Engine
&lt;/h3&gt;

&lt;p&gt;Design is iterative. Use Stitch to generate multiple variants of a single screen instantly. Experiment with layouts, components, and styles without manual dragging and dropping.&lt;/p&gt;




&lt;h2&gt;
  
  
  Google Stitch vs. Traditional Workflow
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;Google Stitch (AI)&lt;/th&gt;
&lt;th&gt;Traditional Figma Workflow&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Design Speed&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Seconds (Prompt-based)&lt;/td&gt;
&lt;td&gt;Hours (Manual placement)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Skill Floor&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Low (English proficiency)&lt;/td&gt;
&lt;td&gt;High (Design principles/Figma)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Dev Handoff&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Built-in (Code ready)&lt;/td&gt;
&lt;td&gt;Manual (Inspection/Export)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Cost&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Free (Labs)&lt;/td&gt;
&lt;td&gt;Paid (Professional tiers)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Best For&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Prototyping, Solo Devs&lt;/td&gt;
&lt;td&gt;Full Design Systems, Large Teams&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  How to Use Google Stitch: Step-by-Step
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Sign In:&lt;/strong&gt; Visit &lt;a href="https://stitch.withgoogle.com" rel="noopener noreferrer"&gt;stitch.withgoogle.com&lt;/a&gt; and log in with your Google account.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Pick Your Mode:&lt;/strong&gt; * &lt;strong&gt;Standard (Gemini 3 Flash):&lt;/strong&gt; Fast, lightweight exploration.

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Experimental (Gemini 3 Pro):&lt;/strong&gt; High-fidelity, detailed complex designs.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Write a Clear Prompt:&lt;/strong&gt; Include platform (Web/Mobile), core components (Navbar/Cards), and visual style (Minimal/Dark Mode).&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Refine &amp;amp; Iterate:&lt;/strong&gt; Use follow-up prompts to change one or two things at a time.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Export:&lt;/strong&gt; Choose between "Paste to Figma" or "Download Code."&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Best Tips for Success 💡
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Be Specific:&lt;/strong&gt; Vague prompts give vague results. Use hex codes and component names.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The One-Change Rule:&lt;/strong&gt; Don't ask for a complete overhaul in one prompt. Change the navbar first, then the font, then the colors.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use DESIGN.md:&lt;/strong&gt; Export your design system as a &lt;code&gt;.md&lt;/code&gt; file to keep branding consistent across multiple projects.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Test Standalone:&lt;/strong&gt; Always run the exported code in a local browser before integrating it into a complex app.&lt;/li&gt;
&lt;/ul&gt;




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

&lt;p&gt;Google Stitch genuinely changes how fast you can go from idea to interface. It’s a game-changer for developers who want to design without becoming a full-time designer.&lt;/p&gt;

&lt;p&gt;It is free, browser-based, and integrates with the tools you already use. There is no reason not to give it a spin.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Try it today:&lt;/strong&gt; &lt;a href="https://stitch.withgoogle.com" rel="noopener noreferrer"&gt;stitch.withgoogle.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If this guide was helpful, share it with a dev friend! For more practical tools and frontend guides, head over to &lt;strong&gt;&lt;a href="https://hamidrazadev.com" rel="noopener noreferrer"&gt;hamidrazadev.com&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>ai</category>
      <category>productivity</category>
      <category>uidesign</category>
    </item>
    <item>
      <title>CSS Flexbox Explained: The Layout Superpower Every Developer Needs</title>
      <dc:creator>Muhammad Hamid Raza</dc:creator>
      <pubDate>Sun, 05 Apr 2026 11:48:13 +0000</pubDate>
      <link>https://dev.to/hamidrazadev/css-flexbox-explained-the-layout-superpower-every-developer-needs-10l</link>
      <guid>https://dev.to/hamidrazadev/css-flexbox-explained-the-layout-superpower-every-developer-needs-10l</guid>
      <description>&lt;p&gt;If you've ever tried to center a div and ended up Googling it for the fifth time this week — welcome, you're in the right place. 😄&lt;/p&gt;

&lt;p&gt;CSS layouts used to be a bit of a nightmare. Floats, clearfixes, &lt;code&gt;position: absolute&lt;/code&gt; hacks — developers had to jump through all sorts of hoops just to align a few boxes. Then Flexbox came along and changed everything.&lt;/p&gt;

&lt;p&gt;Flexbox, short for Flexible Box Layout, is one of the most useful tools in modern CSS. Once you actually &lt;em&gt;understand&lt;/em&gt; it — not just copy-paste it — layouts start feeling almost fun. So let's break it down from scratch and make it click.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Is Flexbox?
&lt;/h2&gt;

&lt;p&gt;Flexbox is a CSS layout model that helps you arrange elements inside a container — horizontally, vertically, or both — with much less effort than older methods.&lt;/p&gt;

&lt;p&gt;Think of it like a shelf organizer. You have a shelf (the &lt;strong&gt;flex container&lt;/strong&gt;), and you're placing books on it (the &lt;strong&gt;flex items&lt;/strong&gt;). Flexbox lets you decide how those books are spaced out, aligned, and sized — all with a few CSS properties.&lt;/p&gt;

&lt;p&gt;You activate Flexbox with one line:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.container&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;flex&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's it. The moment you write that, every direct child of &lt;code&gt;.container&lt;/code&gt; becomes a flex item, and Flexbox starts managing them.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why Flexbox Matters
&lt;/h2&gt;

&lt;p&gt;Before Flexbox, centering something vertically in CSS was genuinely painful. Developers used margins, transforms, and table-cell tricks just to get a div in the middle of the page.&lt;/p&gt;

&lt;p&gt;Flexbox solved that. It also solved:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Making equal-height columns without JavaScript&lt;/li&gt;
&lt;li&gt;Building responsive navigation bars&lt;/li&gt;
&lt;li&gt;Distributing space evenly between elements&lt;/li&gt;
&lt;li&gt;Reordering elements without touching the HTML&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Today, Flexbox is supported in all modern browsers. It's a core skill for frontend developers, and you'll use it in almost every project you build.&lt;/p&gt;




&lt;h2&gt;
  
  
  Benefits with Real-Life Examples
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Centering made easy ✅&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Centering a div — both horizontally and vertically — used to be a meme in the dev community. With Flexbox:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.container&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;flex&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;justify-content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;center&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;align-items&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;center&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's genuinely all you need. Three lines and you're done.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Responsive navbars without pain&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Building a navigation bar that spreads links across the full width? Flexbox handles it naturally with &lt;code&gt;justify-content: space-between&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Equal-height cards automatically&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In a blog or product listing, cards in the same row have equal height by default when using Flexbox — no extra CSS or JavaScript needed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Control direction easily&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Want items stacked vertically? Just change one property:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nt"&gt;flex-direction&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nt"&gt;column&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is incredibly useful for mobile layouts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Reorder items without changing HTML&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;order&lt;/code&gt; property lets you visually reorder flex items without touching the markup. Great for responsive design where you want a different layout on mobile vs desktop.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Core Flexbox Properties You Need to Know
&lt;/h2&gt;

&lt;h3&gt;
  
  
  On the Container (Parent)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;display: flex&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
Activates Flexbox on the container.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;flex-direction&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
Controls which direction items flow.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;row&lt;/code&gt; (default) — left to right&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;column&lt;/code&gt; — top to bottom&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;row-reverse&lt;/code&gt; and &lt;code&gt;column-reverse&lt;/code&gt; — reversed directions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;justify-content&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
Aligns items along the &lt;strong&gt;main axis&lt;/strong&gt; (horizontal by default).&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;flex-start&lt;/code&gt; — all items pushed to the start&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;flex-end&lt;/code&gt; — all items pushed to the end&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;center&lt;/code&gt; — items centered&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;space-between&lt;/code&gt; — equal space between items, none on edges&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;space-around&lt;/code&gt; — equal space around each item&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;space-evenly&lt;/code&gt; — truly equal space everywhere&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;align-items&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
Aligns items along the &lt;strong&gt;cross axis&lt;/strong&gt; (vertical by default).&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;flex-start&lt;/code&gt;, &lt;code&gt;flex-end&lt;/code&gt;, &lt;code&gt;center&lt;/code&gt; — same idea, but vertical&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;stretch&lt;/code&gt; (default) — items stretch to fill the container height&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;baseline&lt;/code&gt; — items align by their text baseline&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;flex-wrap&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
By default, flex items stay in one row even if they overflow. &lt;code&gt;flex-wrap: wrap&lt;/code&gt; allows them to jump to the next line.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;gap&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
Adds space between flex items. Much cleaner than using margins on each item.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.container&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;flex&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;gap&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;16px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  On the Items (Children)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;flex-grow&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
Defines how much a flex item should grow relative to others if there's extra space. A value of &lt;code&gt;1&lt;/code&gt; means it will grow to fill available space.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;flex-shrink&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
Controls how much an item shrinks when there's not enough space. Default is &lt;code&gt;1&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;flex-basis&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
Sets the initial size of a flex item before growing or shrinking. Think of it as the "starting width."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;flex&lt;/code&gt; (shorthand)&lt;/strong&gt;&lt;br&gt;
The shorthand for &lt;code&gt;flex-grow&lt;/code&gt;, &lt;code&gt;flex-shrink&lt;/code&gt;, and &lt;code&gt;flex-basis&lt;/code&gt; combined.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.item&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;flex&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c"&gt;/* grow: 1, shrink: 1, basis: 0% */&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Using &lt;code&gt;flex: 1&lt;/code&gt; on all items makes them equal width — super useful for grid-like layouts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;align-self&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
Overrides &lt;code&gt;align-items&lt;/code&gt; for a single item. Want one card to align differently from the rest? This is your property.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;order&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
Changes the visual order of a flex item. Default is &lt;code&gt;0&lt;/code&gt;. Lower values appear first.&lt;/p&gt;




&lt;h2&gt;
  
  
  Main Axis vs Cross Axis — The Key Concept
&lt;/h2&gt;

&lt;p&gt;This is where many people get confused, and it's worth taking a moment here.&lt;/p&gt;

&lt;p&gt;Flexbox has two axes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The &lt;strong&gt;main axis&lt;/strong&gt; runs in the direction of &lt;code&gt;flex-direction&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;cross axis&lt;/strong&gt; runs perpendicular to it&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If &lt;code&gt;flex-direction&lt;/code&gt; is &lt;code&gt;row&lt;/code&gt; (default), the main axis is &lt;strong&gt;horizontal&lt;/strong&gt; and the cross axis is &lt;strong&gt;vertical&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;justify-content&lt;/code&gt; always controls the &lt;strong&gt;main axis&lt;/strong&gt;.&lt;br&gt;
&lt;code&gt;align-items&lt;/code&gt; always controls the &lt;strong&gt;cross axis&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Once you internalize this, the whole system makes sense. It's not about "horizontal" or "vertical" in absolute terms — it's about &lt;strong&gt;main&lt;/strong&gt; and &lt;strong&gt;cross&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Flexbox vs CSS Grid — Which Should You Use?
&lt;/h2&gt;

&lt;p&gt;This is a common question and the answer is: &lt;strong&gt;they complement each other, not compete&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;Feature&lt;/th&gt;
&lt;th&gt;Flexbox&lt;/th&gt;
&lt;th&gt;CSS Grid&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Best for&lt;/td&gt;
&lt;td&gt;One-dimensional layouts (row OR column)&lt;/td&gt;
&lt;td&gt;Two-dimensional layouts (rows AND columns)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Use case&lt;/td&gt;
&lt;td&gt;Navbars, card rows, centering&lt;/td&gt;
&lt;td&gt;Full page layouts, complex grids&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Browser support&lt;/td&gt;
&lt;td&gt;Excellent&lt;/td&gt;
&lt;td&gt;Excellent&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Complexity&lt;/td&gt;
&lt;td&gt;Simpler to start with&lt;/td&gt;
&lt;td&gt;More powerful for complex layouts&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;A practical rule: use &lt;strong&gt;Flexbox&lt;/strong&gt; when you're working in one direction. Use &lt;strong&gt;CSS Grid&lt;/strong&gt; when you need rows and columns at the same time. Often you'll use both on the same page.&lt;/p&gt;




&lt;h2&gt;
  
  
  Best Tips for Using Flexbox
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;✅ Use &lt;code&gt;gap&lt;/code&gt; instead of margins between items&lt;/strong&gt;&lt;br&gt;
It's cleaner, easier to manage, and doesn't create edge-case spacing issues.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;✅ Remember that &lt;code&gt;justify-content&lt;/code&gt; and &lt;code&gt;align-items&lt;/code&gt; depend on &lt;code&gt;flex-direction&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
When you switch to &lt;code&gt;flex-direction: column&lt;/code&gt;, the axes flip. Many beginners forget this.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;✅ Use &lt;code&gt;flex: 1&lt;/code&gt; for equal-width items&lt;/strong&gt;&lt;br&gt;
Adding &lt;code&gt;flex: 1&lt;/code&gt; to all children in a flex container makes them share space equally — a quick way to create column layouts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;✅ Use &lt;code&gt;flex-wrap: wrap&lt;/code&gt; for responsive layouts&lt;/strong&gt;&lt;br&gt;
Without it, items will squish or overflow on small screens. Adding &lt;code&gt;wrap&lt;/code&gt; lets them flow naturally.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;✅ Use browser DevTools to debug&lt;/strong&gt;&lt;br&gt;
Chrome and Firefox both have Flexbox inspector tools. They visualize your layout in real time and save a lot of guessing.&lt;/p&gt;




&lt;h2&gt;
  
  
  Common Mistakes People Make
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;❌ Applying flex properties to the wrong element&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;justify-content&lt;/code&gt; and &lt;code&gt;align-items&lt;/code&gt; go on the &lt;strong&gt;container&lt;/strong&gt;, not the items. Beginners often add them to the wrong element and wonder why nothing changes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;❌ Forgetting that axes flip with &lt;code&gt;flex-direction: column&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When you switch to column direction, &lt;code&gt;justify-content&lt;/code&gt; controls vertical alignment and &lt;code&gt;align-items&lt;/code&gt; controls horizontal. This is the most common source of confusion.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;❌ Using &lt;code&gt;width: 100%&lt;/code&gt; on flex items unnecessarily&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When you set &lt;code&gt;flex: 1&lt;/code&gt; or use &lt;code&gt;flex-grow&lt;/code&gt;, adding &lt;code&gt;width: 100%&lt;/code&gt; can actually break the layout. Trust Flexbox to handle sizing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;❌ Overusing Flexbox for two-dimensional layouts&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you're fighting Flexbox to build a grid layout, CSS Grid is probably the better tool. Don't force a one-dimensional system to do two-dimensional work.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;❌ Not using &lt;code&gt;flex-wrap&lt;/code&gt; on responsive containers&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A common issue — items overflow on mobile because &lt;code&gt;flex-wrap&lt;/code&gt; wasn't set. Always consider wrapping when building for different screen sizes.&lt;/p&gt;




&lt;h2&gt;
  
  
  Quick Reference Cheat Sheet
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="c"&gt;/* Container */&lt;/span&gt;
&lt;span class="nc"&gt;.container&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;flex&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;flex-direction&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;row&lt;/span&gt; &lt;span class="err"&gt;|&lt;/span&gt; &lt;span class="n"&gt;column&lt;/span&gt; &lt;span class="err"&gt;|&lt;/span&gt; &lt;span class="n"&gt;row-reverse&lt;/span&gt; &lt;span class="err"&gt;|&lt;/span&gt; &lt;span class="n"&gt;column-reverse&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;justify-content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;flex-start&lt;/span&gt; &lt;span class="err"&gt;|&lt;/span&gt; &lt;span class="n"&gt;flex-end&lt;/span&gt; &lt;span class="err"&gt;|&lt;/span&gt; &lt;span class="nb"&gt;center&lt;/span&gt; &lt;span class="err"&gt;|&lt;/span&gt; &lt;span class="n"&gt;space-between&lt;/span&gt; &lt;span class="err"&gt;|&lt;/span&gt; &lt;span class="n"&gt;space-around&lt;/span&gt; &lt;span class="err"&gt;|&lt;/span&gt; &lt;span class="n"&gt;space-evenly&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;align-items&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;flex-start&lt;/span&gt; &lt;span class="err"&gt;|&lt;/span&gt; &lt;span class="n"&gt;flex-end&lt;/span&gt; &lt;span class="err"&gt;|&lt;/span&gt; &lt;span class="nb"&gt;center&lt;/span&gt; &lt;span class="err"&gt;|&lt;/span&gt; &lt;span class="n"&gt;stretch&lt;/span&gt; &lt;span class="err"&gt;|&lt;/span&gt; &lt;span class="nb"&gt;baseline&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;flex-wrap&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;nowrap&lt;/span&gt; &lt;span class="err"&gt;|&lt;/span&gt; &lt;span class="n"&gt;wrap&lt;/span&gt; &lt;span class="err"&gt;|&lt;/span&gt; &lt;span class="n"&gt;wrap-reverse&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;gap&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;16px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c"&gt;/* Items */&lt;/span&gt;
&lt;span class="nc"&gt;.item&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;flex&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;              &lt;span class="c"&gt;/* grow, shrink, basis shorthand */&lt;/span&gt;
  &lt;span class="nl"&gt;flex-grow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;flex-shrink&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;flex-basis&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;200px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;align-self&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;center&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;order&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






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

&lt;p&gt;Flexbox is one of those tools that feels tricky for the first hour and then becomes second nature forever. The moment it clicks — especially the main axis vs cross axis concept — you'll start seeing layouts differently.&lt;/p&gt;

&lt;p&gt;Once you understand that &lt;code&gt;display: flex&lt;/code&gt; on the parent, &lt;code&gt;justify-content&lt;/code&gt; for the main axis, and &lt;code&gt;align-items&lt;/code&gt; for the cross axis are the three core pillars, the rest falls into place naturally. Everything else is just extra control on top of that foundation.&lt;/p&gt;

&lt;p&gt;Start small. Build a centered card. Then try a navbar. Then a card row that wraps on mobile. Each one teaches you something new.&lt;/p&gt;

&lt;p&gt;And when you're ready to go deeper into CSS, React, Next.js, and modern frontend development, head over to &lt;strong&gt;&lt;a href="https://hamidrazadev.com" rel="noopener noreferrer"&gt;hamidrazadev.com&lt;/a&gt;&lt;/strong&gt; — there's a lot more waiting for you there. 🚀&lt;/p&gt;

&lt;p&gt;If this helped you finally understand Flexbox, share it with a dev friend who's still cursing at their layout. They'll thank you later. 😊&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>css</category>
      <category>frontend</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Kali Linux 2026.1 Is Here — And It Brought a Time Machine 🚀</title>
      <dc:creator>Muhammad Hamid Raza</dc:creator>
      <pubDate>Sat, 04 Apr 2026 12:27:34 +0000</pubDate>
      <link>https://dev.to/hamidrazadev/kali-linux-20261-is-here-and-it-brought-a-time-machine-4aen</link>
      <guid>https://dev.to/hamidrazadev/kali-linux-20261-is-here-and-it-brought-a-time-machine-4aen</guid>
      <description>&lt;p&gt;Have you ever wished your terminal could look cooler &lt;em&gt;and&lt;/em&gt; feel nostalgic at the same time? Kali Linux just made that happen.&lt;/p&gt;

&lt;p&gt;Kali Linux 2026.1 has officially dropped, and this release is more exciting than your average quarterly update. We are talking a full visual overhaul, a nostalgic surprise for longtime fans, brand new tools, kernel upgrades, and some serious NetHunter improvements.&lt;/p&gt;

&lt;p&gt;Whether you are a penetration tester, a cybersecurity student, or just someone who loves watching their Kali boot screen with a coffee in hand — this release has something for you. So let's break it all down. 👀&lt;/p&gt;




&lt;h2&gt;
  
  
  What Is Kali Linux 2026.1?
&lt;/h2&gt;

&lt;p&gt;If you are new here: Kali Linux is a Debian-based Linux distribution built specifically for penetration testing, ethical hacking, digital forensics, and security research. It is maintained by OffSec and is one of the most widely used platforms in the cybersecurity world.&lt;/p&gt;

&lt;p&gt;Every year, the Kali team drops a &lt;strong&gt;xx.1 release&lt;/strong&gt; with a fresh visual theme, new tools, and improvements across the board. The 2026.1 release follows that same tradition — but this time, it comes with a very special birthday gift.&lt;/p&gt;

&lt;p&gt;Kali Linux just turned 13. And BackTrack Linux, Kali's legendary predecessor, just turned 20.&lt;/p&gt;

&lt;p&gt;That is a lot of anniversaries to celebrate. And the team absolutely delivered.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why Kali Linux 2026.1 Matters
&lt;/h2&gt;

&lt;p&gt;You might be thinking: "It is just a theme update and a few new tools. Why should I care?"&lt;/p&gt;

&lt;p&gt;Fair question. But this release is more than cosmetic.&lt;/p&gt;

&lt;p&gt;Here is why it matters for developers and security professionals:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The &lt;strong&gt;kernel has been bumped to 6.18&lt;/strong&gt;, bringing better hardware support and performance improvements.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;8 new tools&lt;/strong&gt; have been added to the repositories — covering areas from XSS scanning to post-exploitation frameworks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;NetHunter improvements&lt;/strong&gt; mean mobile pentesting just got more capable on more devices.&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;BackTrack Mode&lt;/strong&gt; is not just nostalgia — it shows how far the ecosystem has come and gives veteran users a reason to smile.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;183 package updates&lt;/strong&gt; and 25 new packages keep the toolset sharp and current.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you are actively using Kali for security work, these are meaningful improvements worth upgrading for.&lt;/p&gt;




&lt;h2&gt;
  
  
  Key Features and What They Actually Do
&lt;/h2&gt;

&lt;h3&gt;
  
  
  🎨 2026 Theme Refresh
&lt;/h3&gt;

&lt;p&gt;Every &lt;code&gt;.1&lt;/code&gt; release comes with a theme refresh, and 2026 is no exception.&lt;/p&gt;

&lt;p&gt;The new theme touches everything: the boot animation, the GRUB menu, the graphical installer, the login screen, and the desktop wallpaper. Kali Purple also gets a matching refresh for those who prefer the purple variant.&lt;/p&gt;

&lt;p&gt;One small but appreciated fix? The boot animation used to get stuck at the tail on live images. That is now fixed, and it loops smoothly if the boot process takes longer than expected. Not a major thing — but anyone who has stared at a frozen boot animation knows the relief.&lt;/p&gt;

&lt;h3&gt;
  
  
  🕹️ BackTrack Mode for Kali-Undercover
&lt;/h3&gt;

&lt;p&gt;This is the most interesting addition in this release.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Kali-Undercover&lt;/strong&gt; is an existing feature that makes your Kali desktop look like a regular Windows setup — great for working in public without drawing attention.&lt;/p&gt;

&lt;p&gt;Now, Kali-Undercover has a new &lt;strong&gt;BackTrack Mode&lt;/strong&gt; that transforms the desktop to look like &lt;strong&gt;BackTrack 5&lt;/strong&gt; — complete with the original wallpaper, colors, and window theme.&lt;/p&gt;

&lt;p&gt;For those who do not know: BackTrack Linux was the go-to hacking distribution before Kali took over in 2013. It was legendary. Running BackTrack Mode in 2026 is like putting on a retro jersey — functional, stylish, and deeply nostalgic.&lt;/p&gt;

&lt;p&gt;To activate it, you run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kali-undercover &lt;span class="nt"&gt;--backtrack&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Run it again to switch back. Simple and clean.&lt;/p&gt;

&lt;h3&gt;
  
  
  🛠️ 8 New Tools Added
&lt;/h3&gt;

&lt;p&gt;Here is a quick look at what is new in the repositories:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;AdaptixC2&lt;/strong&gt; — An extensible post-exploitation and adversarial emulation framework&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Atomic-Operator&lt;/strong&gt; — Runs Atomic Red Team tests across multiple operating systems&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fluxion&lt;/strong&gt; — A security auditing and social-engineering research tool&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GEF&lt;/strong&gt; — A modern GDB experience with advanced debugging capabilities&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MetasploitMCP&lt;/strong&gt; — An MCP server for Metasploit&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SSTImap&lt;/strong&gt; — Automatic SSTI detection with an interactive interface&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;WPProbe&lt;/strong&gt; — Fast WordPress plugin enumeration&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;XSStrike&lt;/strong&gt; — An advanced XSS scanner&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Whether you are testing web apps, running red team exercises, or debugging exploits, these additions cover a wide range of real security scenarios.&lt;/p&gt;

&lt;h3&gt;
  
  
  📱 Kali NetHunter Updates
&lt;/h3&gt;

&lt;p&gt;Mobile pentesting is alive and well. This release brings:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Bug fixes including the WPS scan issue, HID permission check, and the back button problem&lt;/li&gt;
&lt;li&gt;A new kernel for &lt;strong&gt;Redmi Note 8 (Ginkgo)&lt;/strong&gt; supporting Android 16&lt;/li&gt;
&lt;li&gt;A libnexmon patch for &lt;strong&gt;Samsung S10 series&lt;/strong&gt; that finally gets reaver, bully, and kismet working properly&lt;/li&gt;
&lt;li&gt;The first working &lt;strong&gt;QCACLD v3.0 injection patch&lt;/strong&gt; — which could potentially unlock wireless injection on a huge number of Qualcomm-based phones&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That last one is significant. If you have ever tried to do wireless testing on a Qualcomm phone and hit a wall, this is the patch you have been waiting for.&lt;/p&gt;




&lt;h2&gt;
  
  
  Pros and Cons of Upgrading to Kali 2026.1
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;✅ Pros&lt;/th&gt;
&lt;th&gt;⚠️ Things to Know&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Fresh theme and UI across the board&lt;/td&gt;
&lt;td&gt;SDR tools (gr-air-modes, gqrx-sdr) are known to be broken in this release&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Kernel 6.18 for better hardware support&lt;/td&gt;
&lt;td&gt;The fix is expected in the next release&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8 new tools added&lt;/td&gt;
&lt;td&gt;Some packages removed (9 total)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;BackTrack Mode for nostalgia fans&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Significant NetHunter improvements&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;183 package updates&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The main known issue is with the &lt;strong&gt;kali-tools-sdr&lt;/strong&gt; metapackage. If you work with Software Defined Radio tools, it might be worth waiting for the next release or using workarounds in the meantime. The team has acknowledged it and expects a fix soon.&lt;/p&gt;




&lt;h2&gt;
  
  
  Best Tips for This Release
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;✅ Do's:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Update cleanly.&lt;/strong&gt; If you are on an existing install, use the full upgrade command:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;  &lt;span class="nb"&gt;sudo &lt;/span&gt;apt update &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nt"&gt;-y&lt;/span&gt; full-upgrade
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Copy the skel config&lt;/strong&gt; after upgrading:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;  &lt;span class="nb"&gt;cp&lt;/span&gt; &lt;span class="nt"&gt;-vrbi&lt;/span&gt; /etc/skel/. ~/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Check your kernel version&lt;/strong&gt; after upgrading to confirm you are on 6.18.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Try BackTrack Mode&lt;/strong&gt; — even if just for the experience. It is a fun piece of cybersecurity history.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Explore the new tools&lt;/strong&gt; — especially XSStrike and SSTImap if you do web security testing.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;❌ Don'ts:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Don't use the SDR metapackage&lt;/strong&gt; if you depend on gqrx-sdr or gr-air-modes right now. Wait for the fix.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Don't report bugs on social media.&lt;/strong&gt; The team specifically asks that bug reports go through the official bug tracker, not Twitter or Instagram.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Don't skip the skel copy step&lt;/strong&gt; — it updates your config files to match the new theme properly.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Common Mistakes People Make When Updating Kali
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Skipping the full-upgrade in favor of just upgrade&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;apt upgrade&lt;/code&gt; and &lt;code&gt;apt full-upgrade&lt;/code&gt; are different. On Kali, you almost always want &lt;code&gt;full-upgrade&lt;/code&gt; because it handles package replacements and removals. Skipping it can leave your system in a mixed state.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Not checking for broken packages after upgrading&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;After any major upgrade, running &lt;code&gt;apt --fix-broken install&lt;/code&gt; is a good habit. It catches issues before they turn into bigger problems.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Forgetting to copy the skel files&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This step updates your terminal profile, desktop config, and theme settings. Skipping it means your desktop might not reflect the new 2026 theme properly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Expecting SDR tools to work in this release&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The team was upfront about the GNU Radio ecosystem issue. If you depend on those tools, stay on 2025.4 for now or use a workaround. Patience here saves a lot of frustration.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Using weekly builds as if they are stable releases&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Weekly builds are automated. They are great for getting the latest packages fast, but they skip the QA process that standard releases go through. Use them knowing that.&lt;/p&gt;




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

&lt;p&gt;Kali Linux 2026.1 is a solid release that mixes polish with practicality. The 2026 theme refresh keeps the interface modern. The BackTrack Mode is a well-deserved nod to where it all started. The new tools expand the already impressive Kali arsenal. And the NetHunter updates push mobile pentesting forward in meaningful ways.&lt;/p&gt;

&lt;p&gt;Yes, there is a known SDR issue. But the team was honest about it, and a fix is already expected in the next release. That kind of transparency is worth appreciating.&lt;/p&gt;

&lt;p&gt;If you are a Kali user, update when you are ready. If you are new to the platform, this is a great time to start exploring.&lt;/p&gt;

&lt;p&gt;Happy hacking. Stay ethical. And as always — learn something new today. 💡&lt;/p&gt;




&lt;p&gt;👉 &lt;strong&gt;Want more content like this?&lt;/strong&gt; Check out my developer blog at &lt;a href="https://hamidrazadev.com" rel="noopener noreferrer"&gt;hamidrazadev.com&lt;/a&gt; for practical articles on tools, frameworks, and everything developers love to talk about. Share this post with a fellow security enthusiast if it helped you!&lt;/p&gt;

</description>
      <category>linux</category>
      <category>cybersecurity</category>
      <category>news</category>
      <category>security</category>
    </item>
    <item>
      <title>Why VS Code Is Still My Go-To IDE (After Trying Everything Else)</title>
      <dc:creator>Muhammad Hamid Raza</dc:creator>
      <pubDate>Sat, 04 Apr 2026 12:16:15 +0000</pubDate>
      <link>https://dev.to/hamidrazadev/why-vs-code-is-still-my-go-to-ide-after-trying-everything-else-1o7o</link>
      <guid>https://dev.to/hamidrazadev/why-vs-code-is-still-my-go-to-ide-after-trying-everything-else-1o7o</guid>
      <description>&lt;p&gt;I have tried a lot of editors. Sublime Text, Atom, WebStorm, Vim, Neovim, Zed, and even spent a week pretending I enjoyed writing code inside a terminal. Every few months someone tweets "VS Code is dead" or "I switched to X and my productivity tripled." And every time, I go check it out.&lt;/p&gt;

&lt;p&gt;Then I come back to VS Code. 😅&lt;/p&gt;

&lt;p&gt;If you have ever wondered why millions of developers keep choosing Visual Studio Code over every shiny new alternative, you are in the right place. Let me walk you through what makes it special — not with marketing fluff, but with honest, real reasons that actually matter when you are deep in a project at 11 PM.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Is VS Code?
&lt;/h2&gt;

&lt;p&gt;Visual Studio Code is a free, open-source code editor made by Microsoft. It was released in 2015 and has grown into one of the most popular development tools in the world.&lt;/p&gt;

&lt;p&gt;But here is what makes it different from a full IDE like WebStorm or IntelliJ: VS Code starts as a lightweight editor and lets &lt;em&gt;you&lt;/em&gt; decide how powerful to make it through extensions. Think of it like a plain room that you furnish however you like, versus a hotel room someone else already set up.&lt;/p&gt;

&lt;p&gt;It runs on Windows, macOS, and Linux. And it supports pretty much every programming language you can think of.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why VS Code Still Matters in 2025
&lt;/h2&gt;

&lt;p&gt;You might think: "It's been around for a decade, surely something better exists by now."&lt;/p&gt;

&lt;p&gt;Fair question. But the truth is VS Code has not been standing still. It gets updated every single month. The team ships real improvements regularly — not just bug fixes, but features developers actually asked for.&lt;/p&gt;

&lt;p&gt;More importantly, the developer ecosystem has been built around it. Extensions, tutorials, YouTube videos, team configurations, &lt;code&gt;.vscode&lt;/code&gt; folders in repos — everything assumes VS Code. Switching comes with a real cost.&lt;/p&gt;

&lt;p&gt;And for frontend developers especially, VS Code just fits. The TypeScript support is excellent (Microsoft built both). The React and Tailwind CSS tooling works beautifully. The Git integration is clean and visual.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why VS Code Keeps Winning 🚀
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. The Extension Marketplace Is Unmatched
&lt;/h3&gt;

&lt;p&gt;No other editor comes close to the sheer number and quality of extensions available for VS Code.&lt;/p&gt;

&lt;p&gt;Need Prettier for code formatting? One click. Want ESLint to catch your mistakes before you do? Done. Tailwind CSS IntelliSense that autocompletes class names as you type? It exists and it is genuinely great.&lt;/p&gt;

&lt;p&gt;The marketplace has over 50,000 extensions. The community has already solved whatever problem you are facing.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. It Starts Fast
&lt;/h3&gt;

&lt;p&gt;VS Code opens in seconds. You are not waiting for an IDE to index your entire project before you can type a single line.&lt;/p&gt;

&lt;p&gt;When you need to quickly open a config file, check a function, or write a small script, VS Code gets out of your way. That speed adds up over a whole workday.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. The Built-In Git Integration Is Genuinely Good
&lt;/h3&gt;

&lt;p&gt;The Source Control panel in VS Code is one of those features you do not appreciate until you have had to work without it.&lt;/p&gt;

&lt;p&gt;You can stage individual lines, write commit messages, resolve merge conflicts side by side, and even see inline blame annotations — all without leaving the editor. No terminal commands needed unless you want them.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. IntelliSense That Actually Helps
&lt;/h3&gt;

&lt;p&gt;The code completion in VS Code is not just autocomplete. It understands your code. It reads your types, your imports, your function signatures, and gives you suggestions that make sense in context.&lt;/p&gt;

&lt;p&gt;For JavaScript and TypeScript developers, this is huge. It catches typos, suggests the right method, and even shows you function documentation inline while you type.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. The Terminal Is Right There
&lt;/h3&gt;

&lt;p&gt;You do not need to switch windows to run your dev server or install a package. The integrated terminal lives at the bottom of your editor and supports multiple tabs and panels.&lt;/p&gt;

&lt;p&gt;This sounds small but saves a surprising amount of mental switching cost throughout the day.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Remote Development and SSH Support
&lt;/h3&gt;

&lt;p&gt;VS Code has an extension called Remote - SSH that lets you connect to a remote server and edit code as if the files were on your local machine. You get full IntelliSense, debugging, and terminal access over a remote connection.&lt;/p&gt;

&lt;p&gt;This is genuinely powerful for developers who work with servers, containers, or cloud environments.&lt;/p&gt;

&lt;h3&gt;
  
  
  7. It Is Free. Always.
&lt;/h3&gt;

&lt;p&gt;No subscription. No annual license. No "Pro plan required for this feature." VS Code is completely free and always has been.&lt;/p&gt;




&lt;h2&gt;
  
  
  VS Code vs. Other Editors: A Honest Look
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Editor&lt;/th&gt;
&lt;th&gt;Strengths&lt;/th&gt;
&lt;th&gt;Weaknesses&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;VS Code&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Speed, extensions, community, free&lt;/td&gt;
&lt;td&gt;Can get heavy with too many extensions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;WebStorm&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Deep JS/TS analysis, built-in tools&lt;/td&gt;
&lt;td&gt;Paid, heavier, slower startup&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Zed&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Very fast, modern design&lt;/td&gt;
&lt;td&gt;Smaller extension ecosystem&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Neovim&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Ultra-fast, keyboard-driven&lt;/td&gt;
&lt;td&gt;High learning curve&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Sublime Text&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Lightweight, snappy&lt;/td&gt;
&lt;td&gt;Less active development&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;VS Code sits in a sweet spot. It is fast enough for quick tasks and powerful enough for large projects. The learning curve is low, and the ceiling is very high.&lt;/p&gt;




&lt;h2&gt;
  
  
  Tips for Getting the Most Out of VS Code 💡
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Do these:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Install only the extensions you actually use. A bloated extension list slows things down.&lt;/li&gt;
&lt;li&gt;Learn a few keyboard shortcuts. &lt;code&gt;Ctrl+P&lt;/code&gt; for quick file switching and &lt;code&gt;Ctrl+Shift+P&lt;/code&gt; for the command palette are game-changers.&lt;/li&gt;
&lt;li&gt;Use workspaces when working on multiple related projects. It keeps things organized.&lt;/li&gt;
&lt;li&gt;Enable auto-save (&lt;code&gt;File &amp;gt; Auto Save&lt;/code&gt;). You will stop losing changes you forgot to commit.&lt;/li&gt;
&lt;li&gt;Use the &lt;code&gt;settings.json&lt;/code&gt; file for team-wide consistency. Commit your &lt;code&gt;.vscode/settings.json&lt;/code&gt; to the repo.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Avoid these:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Do not install every popular extension you see in a YouTube video. Install what you need.&lt;/li&gt;
&lt;li&gt;Do not ignore the Problems panel. It shows errors and warnings that can help you catch bugs early.&lt;/li&gt;
&lt;li&gt;Do not overlook multi-cursor editing. Once you learn it, you will use it constantly.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Common Mistakes VS Code Users Make
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Installing too many extensions and blaming VS Code for being slow&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;VS Code itself is not heavy. Thirty active extensions running in the background are. Audit your extensions occasionally and disable what you are not using.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Never changing the default font&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This sounds shallow but it genuinely matters for daily comfort. Try a coding font like Fira Code or JetBrains Mono with ligatures enabled. Your eyes will thank you after a long session.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Not using Emmet&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;VS Code ships with Emmet built in for HTML and CSS. Typing &lt;code&gt;div.container&amp;gt;ul&amp;gt;li*5&lt;/code&gt; and pressing Tab gives you the full markup instantly. Most developers who have not discovered this are writing HTML much slower than they need to.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ignoring the built-in debugger&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Many developers still &lt;code&gt;console.log&lt;/code&gt; everything instead of setting breakpoints and using the VS Code debugger. The built-in debugger supports Node.js, Chrome, and many other environments. It is worth learning.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Not syncing settings across machines&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;VS Code has a built-in Settings Sync feature that lets you sync your extensions, keybindings, and settings across devices using a GitHub or Microsoft account. Set it up once and you will never have to reconfigure VS Code on a new machine.&lt;/p&gt;




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

&lt;p&gt;VS Code has earned its place at the top — not through hype, but through consistency. It is fast, free, deeply extensible, and backed by one of the strongest developer communities in the world.&lt;/p&gt;

&lt;p&gt;Every year something new comes out promising to replace it, and every year VS Code users look up, nod, and go back to shipping their projects. That is not stubbornness. That is trust built through years of a tool doing its job exceptionally well. ✅&lt;/p&gt;

&lt;p&gt;If you are already using VS Code, I hope this gave you a few things to explore. If you switched away and are curious, maybe it is worth a second look.&lt;/p&gt;

&lt;p&gt;For more developer tips, practical guides, and honest opinions on tools and tech, check out my blog at &lt;strong&gt;&lt;a href="https://hamidrazadev.com" rel="noopener noreferrer"&gt;hamidrazadev.com&lt;/a&gt;&lt;/strong&gt;. New posts go up regularly and I keep them practical and to the point.&lt;/p&gt;

&lt;p&gt;If this post helped you or gave you something to think about, feel free to share it with a dev friend. It means a lot. 🙌&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>vscode</category>
      <category>productivity</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Top 5 Best Open Source AI Models With Low Resource Usage</title>
      <dc:creator>Muhammad Hamid Raza</dc:creator>
      <pubDate>Fri, 03 Apr 2026 05:05:41 +0000</pubDate>
      <link>https://dev.to/hamidrazadev/top-5-best-open-source-ai-models-with-low-resource-usage-59n3</link>
      <guid>https://dev.to/hamidrazadev/top-5-best-open-source-ai-models-with-low-resource-usage-59n3</guid>
      <description>&lt;p&gt;You finally want to run an AI model locally. You fire up your terminal, pull a model, and… your laptop fan starts screaming like it's about to launch into orbit. 😅&lt;/p&gt;

&lt;p&gt;Sound familiar?&lt;/p&gt;

&lt;p&gt;Most AI models are powerful but &lt;em&gt;hungry&lt;/em&gt; — they want your RAM, your GPU VRAM, your patience, and probably your electricity bill too. But what if you could run a capable, genuinely useful AI model on a basic laptop, an old PC, or even a Raspberry Pi?&lt;/p&gt;

&lt;p&gt;Good news: you can. And you don't have to sacrifice much quality to do it.&lt;/p&gt;

&lt;p&gt;Whether you're a developer building a local AI tool, a student experimenting with LLMs, or just someone curious about running AI without the cloud — this post is for you.&lt;/p&gt;

&lt;p&gt;Let's look at the &lt;strong&gt;top 5 best open source AI models with low resource usage&lt;/strong&gt; that actually work, actually perform, and won't melt your machine.&lt;/p&gt;




&lt;h2&gt;
  
  
  🤔 What Does "Low Resource Usage" Mean for AI Models?
&lt;/h2&gt;

&lt;p&gt;Before we jump into the list, let's make sure we're on the same page.&lt;/p&gt;

&lt;p&gt;An AI language model typically needs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;RAM&lt;/strong&gt; – system memory your CPU uses&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;VRAM&lt;/strong&gt; – memory on your GPU (if you have one)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Storage&lt;/strong&gt; – to hold the model files on disk&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CPU / GPU&lt;/strong&gt; – to actually run the computations&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A "low resource" model is one that can run well even when these are limited. That could mean it fits in 4–8 GB of RAM, runs smoothly without a dedicated GPU, or loads fast on a basic machine.&lt;/p&gt;

&lt;p&gt;Smaller doesn't always mean dumb. Modern AI research has gotten very good at squeezing high performance out of compact model sizes. Quantization, pruning, and efficient architectures have changed the game completely.&lt;/p&gt;




&lt;h2&gt;
  
  
  💡 Why This Matters
&lt;/h2&gt;

&lt;p&gt;Not everyone has a high-end gaming PC or a cloud server budget. A lot of real developers, learners, and builders are working on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A mid-range laptop&lt;/li&gt;
&lt;li&gt;An older workstation&lt;/li&gt;
&lt;li&gt;A home server with limited RAM&lt;/li&gt;
&lt;li&gt;An edge device or embedded system&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Running AI locally also means &lt;strong&gt;better privacy&lt;/strong&gt; — your prompts stay on your machine, not some company's server. It means &lt;strong&gt;no API costs&lt;/strong&gt;, &lt;strong&gt;no internet dependency&lt;/strong&gt;, and &lt;strong&gt;full control&lt;/strong&gt; over the model.&lt;/p&gt;

&lt;p&gt;If you've ever used a tool like Ollama to run models locally (we have a &lt;a href="https://hamidrazadev.com" rel="noopener noreferrer"&gt;full blog post on that at hamidrazadev.com&lt;/a&gt;), you already know how empowering this is. The only bottleneck is picking the right model.&lt;/p&gt;




&lt;h2&gt;
  
  
  ✅ Top 5 Open Source AI Models With Low Resource Usage
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. 🦙 Llama 3.2 (1B / 3B) — Meta
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Minimum RAM:&lt;/strong&gt; ~2–4 GB&lt;br&gt;
&lt;strong&gt;Model size on disk:&lt;/strong&gt; ~1–2 GB (quantized)&lt;/p&gt;

&lt;p&gt;Meta's Llama 3.2 series brought something genuinely exciting: capable small models at 1B and 3B parameter sizes. These are not toys. For tasks like summarization, Q&amp;amp;A, code explanation, and basic text generation, they perform surprisingly well.&lt;/p&gt;

&lt;p&gt;The 3B version especially punches above its weight. It's fast, lightweight, and easy to run locally with tools like Ollama.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; Developers who want a fast, practical general-purpose model with minimal setup.&lt;/p&gt;




&lt;h3&gt;
  
  
  2. 🔷 Phi-3 Mini — Microsoft
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Minimum RAM:&lt;/strong&gt; ~2–4 GB&lt;br&gt;
&lt;strong&gt;Model size on disk:&lt;/strong&gt; ~2.3 GB (quantized)&lt;/p&gt;

&lt;p&gt;Microsoft's Phi-3 Mini is a 3.8B parameter model trained with a strong focus on data quality over data quantity. The result? A model that feels smarter than its size suggests.&lt;/p&gt;

&lt;p&gt;It handles reasoning, math, and code tasks well — areas where many small models struggle. Microsoft specifically designed Phi-3 to run on devices with limited hardware, which makes it a natural fit for local AI use cases.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; Coding help, reasoning tasks, and educational use on modest hardware.&lt;/p&gt;




&lt;h3&gt;
  
  
  3. 💎 Gemma 2 (2B) — Google DeepMind
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Minimum RAM:&lt;/strong&gt; ~3–5 GB&lt;br&gt;
&lt;strong&gt;Model size on disk:&lt;/strong&gt; ~1.6 GB (quantized)&lt;/p&gt;

&lt;p&gt;Google DeepMind's Gemma 2 2B is clean, well-documented, and genuinely capable for its size. It's built on techniques from Gemini and brings solid general-purpose performance to the lightweight category.&lt;/p&gt;

&lt;p&gt;It handles chat, summarization, and instruction-following nicely. The 2B size means it loads fast and responds quickly even on CPU-only machines.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; Developers wanting a Google-backed model with solid community support and good documentation.&lt;/p&gt;




&lt;h3&gt;
  
  
  4. ⚡ Qwen 2.5 (0.5B / 1.5B) — Alibaba Cloud
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Minimum RAM:&lt;/strong&gt; ~1–3 GB&lt;br&gt;
&lt;strong&gt;Model size on disk:&lt;/strong&gt; ~400 MB – 1 GB (quantized)&lt;/p&gt;

&lt;p&gt;Qwen 2.5 is one of the most impressive low-resource options available today. The 0.5B and 1.5B versions are tiny in size but have been trained on an enormous, high-quality multilingual dataset — including strong support for English, Chinese, and code.&lt;/p&gt;

&lt;p&gt;The 1.5B version especially delivers results that feel well above what you'd expect from a model this small. If you need something truly minimal that still gives useful answers, Qwen 2.5 is worth testing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; Edge devices, Raspberry Pi use cases, multilingual tasks, and situations where storage and RAM are extremely tight.&lt;/p&gt;




&lt;h3&gt;
  
  
  5. 🧬 Mistral 7B (Quantized) — Mistral AI
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Minimum RAM:&lt;/strong&gt; ~4–6 GB (with Q4 quantization)&lt;br&gt;
&lt;strong&gt;Model size on disk:&lt;/strong&gt; ~4 GB (Q4_K_M quantized)&lt;/p&gt;

&lt;p&gt;Mistral 7B is technically a 7-billion parameter model, which sounds large — but with modern quantization (specifically Q4 or Q5 formats via llama.cpp or Ollama), it runs on machines with as little as 6 GB of RAM, and even on CPU-only setups with patience.&lt;/p&gt;

&lt;p&gt;It's widely considered one of the best models for its size in terms of raw output quality. The community support around it is massive, and it handles code, writing, and reasoning tasks extremely well.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; Developers who want the best quality-to-resource ratio and don't mind slightly higher RAM requirements.&lt;/p&gt;




&lt;h2&gt;
  
  
  📊 Quick Comparison Table
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Parameters&lt;/th&gt;
&lt;th&gt;Approx. RAM Needed&lt;/th&gt;
&lt;th&gt;Best Use Case&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Llama 3.2 3B&lt;/td&gt;
&lt;td&gt;3B&lt;/td&gt;
&lt;td&gt;~4 GB&lt;/td&gt;
&lt;td&gt;General purpose, fast&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Phi-3 Mini&lt;/td&gt;
&lt;td&gt;3.8B&lt;/td&gt;
&lt;td&gt;~4 GB&lt;/td&gt;
&lt;td&gt;Code, reasoning&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Gemma 2 2B&lt;/td&gt;
&lt;td&gt;2B&lt;/td&gt;
&lt;td&gt;~3 GB&lt;/td&gt;
&lt;td&gt;Chat, summarization&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Qwen 2.5 1.5B&lt;/td&gt;
&lt;td&gt;1.5B&lt;/td&gt;
&lt;td&gt;~2 GB&lt;/td&gt;
&lt;td&gt;Minimal hardware, multilingual&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mistral 7B (Q4)&lt;/td&gt;
&lt;td&gt;7B&lt;/td&gt;
&lt;td&gt;~5–6 GB&lt;/td&gt;
&lt;td&gt;Best quality, local use&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;blockquote&gt;
&lt;p&gt;⚠️ RAM requirements depend on quantization level and the tool you use to run the model. These are approximate values for Q4-level quantization using tools like Ollama or llama.cpp.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  🔧 Tips for Running These Models Efficiently
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Use quantized versions.&lt;/strong&gt; Q4_K_M or Q5_K_M formats offer the best balance of size, speed, and quality. Full-precision models use far more RAM for minimal real-world benefit in most tasks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use Ollama for easy local setup.&lt;/strong&gt; It handles model downloads, quantization, and serving through a simple CLI and REST API. No complex configuration needed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Don't run other heavy apps simultaneously.&lt;/strong&gt; When you're on 8 GB RAM total and running a local LLM, Chrome with 40 tabs is not your friend. 😄&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Try CPU-only mode first.&lt;/strong&gt; Even without a GPU, many of these models respond within 1–5 seconds per token on a modern CPU. That's usable for most tasks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Match the model to your task.&lt;/strong&gt; Don't reach for Mistral 7B if a Phi-3 Mini can do the job. Smaller models respond faster and free up resources.&lt;/p&gt;




&lt;h2&gt;
  
  
  ❌ Common Mistakes People Make
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Skipping quantization.&lt;/strong&gt; Downloading the full FP16 model when a Q4 quantized version would work just as well for most tasks. The full version might need 14+ GB of RAM instead of 4 GB — a painful difference.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Running on unsupported hardware without GPU offload settings.&lt;/strong&gt; Some tools let you specify how many layers to offload to GPU vs CPU. Ignoring this setting leads to very slow inference or crashes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Picking a model based on hype alone.&lt;/strong&gt; A model with millions of GitHub stars isn't always the right fit for your hardware or use case. Test before committing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Forgetting about context window limits.&lt;/strong&gt; Small models often have smaller context windows. Feeding them a 10,000-word document expecting a perfect summary may not work as expected.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Not updating models.&lt;/strong&gt; The open source AI space moves fast. A model that was the best option six months ago might have a significantly better updated version available now.&lt;/p&gt;




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

&lt;p&gt;You don't need a $3,000 GPU setup or a cloud API subscription to use AI in your projects. The open source AI ecosystem has matured to a point where genuinely capable models fit in your pocket — or at least on your laptop.&lt;/p&gt;

&lt;p&gt;To recap the top 5:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Llama 3.2 (3B)&lt;/strong&gt; — Fast, general-purpose, great starting point&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Phi-3 Mini&lt;/strong&gt; — Smart for its size, great for code and reasoning&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gemma 2 (2B)&lt;/strong&gt; — Clean and capable from Google DeepMind&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Qwen 2.5 (1.5B)&lt;/strong&gt; — Incredibly small, surprisingly strong&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mistral 7B (Q4)&lt;/strong&gt; — Best quality-to-resource ratio overall&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Start with Ollama, pick any model from this list, and see what you can build. 🚀&lt;/p&gt;

&lt;p&gt;If you want to go deeper, check out more practical guides at &lt;strong&gt;&lt;a href="https://hamidrazadev.com" rel="noopener noreferrer"&gt;hamidrazadev.com&lt;/a&gt;&lt;/strong&gt; — we cover local AI, frontend tools, and real developer topics regularly.&lt;/p&gt;

&lt;p&gt;If this post helped you, share it with a fellow developer who's been curious about running AI locally. It might save them a lot of RAM and frustration. 😊&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>productivity</category>
      <category>discuss</category>
    </item>
  </channel>
</rss>
