<?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: Phillip A. Wessels</title>
    <description>The latest articles on DEV Community by Phillip A. Wessels (@pawper).</description>
    <link>https://dev.to/pawper</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%2F742648%2F9b26128e-5643-495a-a4e5-ffc67b18ca8c.jpeg</url>
      <title>DEV Community: Phillip A. Wessels</title>
      <link>https://dev.to/pawper</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/pawper"/>
    <language>en</language>
    <item>
      <title>Installing Terminal &amp; WSL (Windows Subsystem for Linux)</title>
      <dc:creator>Phillip A. Wessels</dc:creator>
      <pubDate>Sat, 23 May 2026 19:16:41 +0000</pubDate>
      <link>https://dev.to/pawper/installing-terminal-wsl-windows-subsystem-for-linux-1e0k</link>
      <guid>https://dev.to/pawper/installing-terminal-wsl-windows-subsystem-for-linux-1e0k</guid>
      <description>&lt;p&gt;If you're a web developer on Windows, Windows Subsystem for Linux (WSL) is essential. This tutorial walks you through understanding what WSL is, why you should use it, and how to install and configure it for development.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note: This guide is for Windows only.&lt;/strong&gt; If you're on macOS, you already have a Unix-based terminal, so you can skip this tutorial and move on to the next one in the series.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Do I really need WSL?
&lt;/h2&gt;

&lt;p&gt;Short answer: &lt;strong&gt;Yes, if you're doing web development on Windows.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Most web development tools, packages, and tutorials assume a Unix-based environment (Linux or macOS). While you &lt;em&gt;can&lt;/em&gt; develop on Windows using PowerShell or cmd.exe, you'll constantly run into compatibility issues with package managers, build tools, and open-source projects that assume a Unix shell. WSL lets you run Linux directly on Windows without the overhead of a virtual machine.&lt;/p&gt;

&lt;h2&gt;
  
  
  What exactly is WSL?
&lt;/h2&gt;

&lt;p&gt;Windows Subsystem for Linux (WSL) is a compatibility layer that allows you to run a genuine Linux environment directly on Windows. It runs a real Linux kernel in a lightweight virtual machine while remaining tightly integrated with Windows—you get the speed and compatibility of Linux with the convenience of Windows.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flxdenm9aptleokxaplot.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flxdenm9aptleokxaplot.png" alt="WSL is a layer between Windows &amp;amp; Linux (Generated with ChatGPT)" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What's a Linux distribution (distro)?
&lt;/h2&gt;

&lt;p&gt;A Linux distribution is a packaged version of the Linux kernel bundled with specific tools, package managers, and system utilities. Common distributions include Ubuntu, Debian, Fedora, and Alpine. For development, &lt;strong&gt;Ubuntu&lt;/strong&gt; is the most beginner-friendly and widely supported choice.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why WSL instead of dual-booting Linux?
&lt;/h2&gt;

&lt;p&gt;Dual-booting lets you choose your OS at startup, but you can't use Windows and Linux simultaneously without rebooting. WSL gives you both environments running at the same time with seamless file access between them. You get the best of both worlds.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why WSL instead of a virtual machine (VM)?
&lt;/h2&gt;

&lt;p&gt;VMs use more system resources (CPU, RAM, storage) than WSL. WSL is lightweight, boots faster, and integrates better with Windows. If you're resource-constrained or want a quick development environment, WSL is superior.&lt;/p&gt;

&lt;h2&gt;
  
  
  Do I lose anything by using WSL?
&lt;/h2&gt;

&lt;p&gt;WSL gives you a Linux shell and command-line tools, but it doesn't run a full graphical Linux desktop by default. You'll still use Windows for your GUI applications (VS Code, browsers, etc.) and access Linux through the terminal. This is exactly what most developers want.&lt;/p&gt;




&lt;h2&gt;
  
  
  💻 Install Windows Terminal (Recommended)
&lt;/h2&gt;

&lt;p&gt;Windows Terminal is Microsoft's modern terminal application. Instead of using the default Windows PowerShell or cmd.exe, Windows Terminal provides a cleaner, more customizable experience with multiple tabs, themes, and seamless WSL integration.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What's a Terminal?&lt;/strong&gt; As explained in &lt;a href="https://pawper.dev/?v=entry&amp;amp;cat=logs&amp;amp;entry=latest&amp;amp;modal=log&amp;amp;id=intro-to-operating-systems-terminals-shells-faq-4agm" rel="noopener noreferrer"&gt;FAQ: Operating Systems, Terminals &amp;amp; Shells&lt;/a&gt;, a terminal is the application that runs a shell (the command-line interpreter). Windows Terminal is the container app, while Bash/Zsh/PowerShell are the shells inside it. See that FAQ for deeper explanation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Install from Microsoft Store:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open the Microsoft Store (search "Microsoft Store" in the Windows Start menu)&lt;/li&gt;
&lt;li&gt;Search for "Windows Terminal"&lt;/li&gt;
&lt;li&gt;Click "Install"&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That's it! Once installed, Windows Terminal is ready to use. You'll use it to run the WSL installation command in the next section. After WSL is installed, Windows Terminal will automatically recognize Ubuntu as an available shell profile.&lt;/p&gt;




&lt;h2&gt;
  
  
  💻 Install WSL
&lt;/h2&gt;

&lt;p&gt;These instructions are for &lt;strong&gt;Windows 10 (Build 19041+) or Windows 11&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Check Your Windows Version
&lt;/h3&gt;

&lt;p&gt;Press &lt;code&gt;Win + R&lt;/code&gt;, type &lt;code&gt;winver&lt;/code&gt;, and press Enter. You need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Windows 10&lt;/strong&gt;: Version 21H2 or later (Build 19041 or higher)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Windows 11&lt;/strong&gt;: Any version&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you need to update, go to Settings → System → About → Windows Update.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2: Enable WSL
&lt;/h3&gt;

&lt;p&gt;Open &lt;strong&gt;Windows Terminal as Administrator&lt;/strong&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Right-click the Windows Terminal icon (in Start menu or taskbar)&lt;/li&gt;
&lt;li&gt;Select "Run as Administrator"&lt;/li&gt;
&lt;li&gt;You may see a prompt asking "Do you want to allow this app to make changes?" — click "Yes"&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Once Windows Terminal opens with admin privileges, you'll see a command prompt. Regardless of which shell it displays (PowerShell, cmd.exe, or another), the &lt;code&gt;wsl --install&lt;/code&gt; command works in any of them. Simply paste or type:&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;--install&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This single command will:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Enable WSL and the Virtual Machine Platform feature&lt;/li&gt;
&lt;li&gt;Download and install Ubuntu (the default distro)&lt;/li&gt;
&lt;li&gt;Automatically configure the latest version for you&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: If you see an error about virtualization, you may need to enable it in your BIOS. Restart your computer, enter BIOS (usually by pressing F2, F10, DEL, or ESC during startup — varies by manufacturer), and look for "Virtualization" or "Intel VT-x" / "AMD-V" and enable it.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Step 3: Restart Your Computer
&lt;/h3&gt;

&lt;p&gt;WSL requires a system restart. Do this now.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 4: Complete Ubuntu Setup
&lt;/h3&gt;

&lt;p&gt;After restarting, Ubuntu may launch automatically, or you may need to launch it manually:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If Ubuntu launches automatically:&lt;/strong&gt; You'll see a terminal window prompt you to create a username and password. Skip to the next section.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If Ubuntu doesn't launch automatically:&lt;/strong&gt; Open Windows Terminal, click the dropdown arrow in the toolbar, and select "Ubuntu" to launch the setup.&lt;/p&gt;

&lt;p&gt;Either way, you'll see a setup prompt:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Installing, this may take a few minutes...
Please create a default UNIX user account. The username does not need to match your Windows user name.
For more information visit: https://aka.ms/wsluserstore
Enter new UNIX username: [type your username]
New password: [type a password]
Retype new password: [confirm password]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Choose a simple username (e.g., &lt;code&gt;dev&lt;/code&gt; or your first name). &lt;strong&gt;Remember this password&lt;/strong&gt; — you'll need it for administrative tasks in WSL.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://pawper.dev/?v=entry&amp;amp;cat=logs&amp;amp;entry=latest&amp;amp;modal=log&amp;amp;id=guide-password-management-cybersecurity-beginners" rel="noopener noreferrer"&gt;https://pawper.dev/?v=entry&amp;amp;cat=logs&amp;amp;entry=latest&amp;amp;modal=log&amp;amp;id=guide-password-management-cybersecurity-beginners&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 5: Verify Installation
&lt;/h3&gt;

&lt;p&gt;In the Ubuntu terminal that's now open, verify everything works:&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;--version&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You should see output showing WSL version 2.x.&lt;/p&gt;

&lt;p&gt;Also verify your Linux distribution:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;lsb_release &lt;span class="nt"&gt;-a&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You should see Ubuntu information.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Sources / additional material:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.microsoft.com/en-us/windows/wsl/install" rel="noopener noreferrer"&gt;https://docs.microsoft.com/en-us/windows/wsl/install&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.microsoft.com/en-us/windows/wsl/about" rel="noopener noreferrer"&gt;https://docs.microsoft.com/en-us/windows/wsl/about&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.microsoft.com/en-us/windows/wsl/setup/environment" rel="noopener noreferrer"&gt;https://docs.microsoft.com/en-us/windows/wsl/setup/environment&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Step 6: Configure Windows Terminal for Ubuntu
&lt;/h3&gt;

&lt;p&gt;Now that WSL and Ubuntu are installed, you can use Windows Terminal to access your Linux environment. Open Windows Terminal and you'll see a dropdown arrow in the top toolbar — click it and select "Ubuntu" to launch your WSL bash shell.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Set Ubuntu as Default (Optional):&lt;/strong&gt; If you want Ubuntu to open automatically when you launch Windows Terminal, go to Settings (Ctrl+,), find "Startup" in the left sidebar, and set "Default profile" to "Ubuntu".&lt;/p&gt;




&lt;h2&gt;
  
  
  Configure WSL for Development
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Update Your Linux Packages
&lt;/h3&gt;

&lt;p&gt;WSL comes with Ubuntu, but the package lists may be outdated. Run:&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;sudo &lt;/span&gt;apt update
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt upgrade &lt;span class="nt"&gt;-y&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;sudo&lt;/code&gt; command runs commands with administrator privileges. You'll be prompted for your password (the one you created in Step 4).&lt;/p&gt;

&lt;h3&gt;
  
  
  Install Essential Build Tools
&lt;/h3&gt;

&lt;p&gt;Most web development depends on a C/C++ compiler. Install 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;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install &lt;/span&gt;build-essential &lt;span class="nt"&gt;-y&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This installs &lt;code&gt;gcc&lt;/code&gt;, &lt;code&gt;g++&lt;/code&gt;, &lt;code&gt;make&lt;/code&gt;, and other tools needed to compile native packages.&lt;/p&gt;

&lt;h3&gt;
  
  
  (Optional) Install Git
&lt;/h3&gt;

&lt;p&gt;If you don't have Git installed on your Windows machine, install it in WSL:&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;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install &lt;/span&gt;git &lt;span class="nt"&gt;-y&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: You can use either the Windows version or WSL version of Git. I recommend installing it in both places so you have flexibility.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  (Optional) Install Node.js (via nvm)
&lt;/h3&gt;

&lt;p&gt;Many web tutorials use Node.js. The easiest way to manage Node versions is with nvm (Node Version Manager):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-o-&lt;/span&gt; https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then reload your shell:&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;source&lt;/span&gt; ~/.bashrc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

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

&lt;/div&gt;



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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;node &lt;span class="nt"&gt;--version&lt;/span&gt;
npm &lt;span class="nt"&gt;--version&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Access Your Files
&lt;/h2&gt;

&lt;p&gt;WSL and Windows share a file system, but you need to know the paths:&lt;/p&gt;

&lt;h3&gt;
  
  
  From WSL, Access Windows Files
&lt;/h3&gt;

&lt;p&gt;Your Windows &lt;code&gt;C:&lt;/code&gt; drive is mounted at &lt;code&gt;/mnt/c/&lt;/code&gt; in WSL:&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; /mnt/c/Users/YourUsername/Documents
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  From Windows, Access WSL Files
&lt;/h3&gt;

&lt;p&gt;Your WSL home directory is located at:&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="se"&gt;\\&lt;/span&gt;wsl&lt;span class="nv"&gt;$\&lt;/span&gt;Ubuntu&lt;span class="se"&gt;\h&lt;/span&gt;ome&lt;span class="se"&gt;\u&lt;/span&gt;sername&lt;span class="se"&gt;\&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Open File Explorer and type this path in the address bar. You can also open it with &lt;code&gt;explorer.exe ~&lt;/code&gt; from the WSL terminal.&lt;/p&gt;

&lt;h3&gt;
  
  
  Best Practice
&lt;/h3&gt;

&lt;p&gt;Keep your development projects in &lt;strong&gt;WSL's home directory&lt;/strong&gt; (&lt;code&gt;~/projects/&lt;/code&gt; or similar), not in Windows. This avoids file permission issues and improves performance.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzdwz15e4sctgr3v9uq6z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzdwz15e4sctgr3v9uq6z.png" alt="Shared file system (Generated with ChatGPT)" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Troubleshooting
&lt;/h2&gt;

&lt;h3&gt;
  
  
  WSL Doesn't Start / "Command Not Found"
&lt;/h3&gt;

&lt;p&gt;Make sure you ran &lt;code&gt;wsl --install&lt;/code&gt; in &lt;strong&gt;PowerShell as Administrator&lt;/strong&gt;, not cmd.exe or a regular PowerShell window.&lt;/p&gt;

&lt;h3&gt;
  
  
  "Virtualization is not enabled"
&lt;/h3&gt;

&lt;p&gt;You need to enable virtualization in your BIOS. Restart your computer, enter BIOS (varies by manufacturer), and look for "Virtualization" or "VT-x" / "AMD-V".&lt;/p&gt;

&lt;h3&gt;
  
  
  WSL Is Slow
&lt;/h3&gt;

&lt;p&gt;This might mean you're accessing files across the Windows/WSL boundary. Keep your projects in WSL's home directory, not &lt;code&gt;/mnt/c/&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Forgot Your WSL Password
&lt;/h3&gt;

&lt;p&gt;In PowerShell, reset it with:&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;wsl&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;--user&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;root&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;passwd&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;username&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then exit and log back in as your regular user.&lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Sources / additional material:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.microsoft.com/en-us/windows/wsl/install" rel="noopener noreferrer"&gt;https://docs.microsoft.com/en-us/windows/wsl/install&lt;/a&gt;&lt;br&gt;
&lt;a href="https://docs.microsoft.com/en-us/windows/wsl/about" rel="noopener noreferrer"&gt;https://docs.microsoft.com/en-us/windows/wsl/about&lt;/a&gt;&lt;br&gt;
&lt;a href="https://docs.microsoft.com/en-us/windows/wsl/setup/environment" rel="noopener noreferrer"&gt;https://docs.microsoft.com/en-us/windows/wsl/setup/environment&lt;/a&gt;&lt;br&gt;
&lt;a href="https://docs.microsoft.com/en-us/windows/wsl/troubleshoot/common-issues" rel="noopener noreferrer"&gt;https://docs.microsoft.com/en-us/windows/wsl/troubleshoot/common-issues&lt;/a&gt;&lt;br&gt;
&lt;a href="https://docs.microsoft.com/en-us/windows/wsl/setup/windows-terminal" rel="noopener noreferrer"&gt;https://docs.microsoft.com/en-us/windows/wsl/setup/windows-terminal&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;This article was generated with AI for the purpose of providing practical information. I have reviewed it for accuracy and edited it appropriately.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>wsl</category>
      <category>bash</category>
    </item>
    <item>
      <title>Password Management &amp; Cybersecurity for Beginners</title>
      <dc:creator>Phillip A. Wessels</dc:creator>
      <pubDate>Sat, 23 May 2026 09:30:03 +0000</pubDate>
      <link>https://dev.to/pawper/password-management-cybersecurity-for-beginners-1mai</link>
      <guid>https://dev.to/pawper/password-management-cybersecurity-for-beginners-1mai</guid>
      <description>&lt;p&gt;You don't need to be a security expert to protect yourself online. This guide covers the essential practices that will keep your accounts, code, and data safe.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Reality of Online Security
&lt;/h2&gt;

&lt;p&gt;Every day, millions of passwords are stolen, accounts are hacked, and sensitive data is exposed. The good news: most attacks aren't sophisticated. They succeed because people use weak passwords, reuse passwords across sites, or fall for social engineering. You can protect yourself with simple, consistent habits.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's a Strong Password?
&lt;/h2&gt;

&lt;p&gt;A strong password is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Long&lt;/strong&gt; (16+ characters is ideal, minimum 12)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Unique&lt;/strong&gt; (never reuse the same password across sites)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Complex&lt;/strong&gt; (mix of uppercase, lowercase, numbers, symbols: &lt;code&gt;P@ssw0rd!Secure2024&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Unpredictable&lt;/strong&gt; (not based on personal info like birthdays or pet names)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A weak password is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Short (&lt;code&gt;password&lt;/code&gt;, &lt;code&gt;123456&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Dictionary words (&lt;code&gt;dragon&lt;/code&gt;, &lt;code&gt;football&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Personal information (&lt;code&gt;birthdate&lt;/code&gt;, &lt;code&gt;spouse's name&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Patterns (&lt;code&gt;qwerty&lt;/code&gt;, &lt;code&gt;aaa111&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The problem&lt;/strong&gt;: Remembering 50+ unique, complex passwords is impossible. This is where password managers come in.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's a Password Manager?
&lt;/h2&gt;

&lt;p&gt;A password manager is an application that securely stores all your passwords in an encrypted vault. You remember &lt;em&gt;one&lt;/em&gt; master password, and the manager remembers the rest.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How it works:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;You create one strong master password&lt;/li&gt;
&lt;li&gt;The manager generates unique, complex passwords for each account&lt;/li&gt;
&lt;li&gt;You log into the manager with your master password&lt;/li&gt;
&lt;li&gt;The manager auto-fills passwords when you visit websites&lt;/li&gt;
&lt;li&gt;Everything is encrypted — even the password manager company can't see your passwords&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Popular options:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Bitwarden&lt;/strong&gt; (open-source, free tier available, excellent for beginners)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;1Password&lt;/strong&gt; (premium, very user-friendly)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;LastPass&lt;/strong&gt; (free tier, widely used)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;KeePass&lt;/strong&gt; (free, offline, more technical)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I recommend &lt;strong&gt;Bitwarden&lt;/strong&gt; for most people: it's free, open-source, and works across all devices.&lt;/p&gt;

&lt;h2&gt;
  
  
  Two-Factor Authentication (2FA)
&lt;/h2&gt;

&lt;p&gt;Two-factor authentication means you need two things to log in:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Something you &lt;strong&gt;know&lt;/strong&gt; (password)&lt;/li&gt;
&lt;li&gt;Something you &lt;strong&gt;have&lt;/strong&gt; (phone, security key, or authenticator app)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Even if someone steals your password, they can't access your account without the second factor.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Types of 2FA:&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  SMS / Text Message
&lt;/h3&gt;

&lt;p&gt;A code is texted to your phone. Simple, but vulnerable to SIM swapping (hackers convince your phone company to transfer your number to their phone).&lt;/p&gt;

&lt;h3&gt;
  
  
  Authenticator Apps
&lt;/h3&gt;

&lt;p&gt;Apps like Google Authenticator, Microsoft Authenticator, or Authy generate time-based codes on your phone. More secure than SMS.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Example code from authenticator: 482953 (changes every 30 seconds)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Security Keys
&lt;/h3&gt;

&lt;p&gt;Physical devices (USB or wireless) that confirm login attempts. The most secure option.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Recommendation&lt;/strong&gt;: Use authenticator apps for important accounts (email, GitHub, Stripe, AWS). Use SMS as a backup if authenticator isn't available.&lt;/p&gt;




&lt;h2&gt;
  
  
  Social Engineering Attacks
&lt;/h2&gt;

&lt;p&gt;Social engineering is tricking people into revealing secrets or bypassing security. It's often easier than hacking.&lt;/p&gt;

&lt;h3&gt;
  
  
  Phishing
&lt;/h3&gt;

&lt;p&gt;Attackers send emails that appear to be from trusted companies (your bank, GitHub, PayPal) asking you to "verify your account" or "confirm your identity."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example phishing email:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight email"&gt;&lt;code&gt;&lt;span class="nt"&gt;From&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="na"&gt; security@paypal.com&lt;/span&gt;
&lt;span class="nt"&gt;Subject&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="na"&gt; Urgent: Confirm Your Identity&lt;/span&gt;

Your account has suspicious activity. Click here to verify:
paypal-security-verify.com/login

[FAKE LINK]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;How to spot phishing:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Check the sender's email address carefully (paypal.com is real; paypal.security.com is fake)&lt;/li&gt;
&lt;li&gt;Hover over links before clicking — see the actual URL&lt;/li&gt;
&lt;li&gt;Legitimate companies never ask you to verify passwords via email&lt;/li&gt;
&lt;li&gt;Look for poor grammar or urgent language ("Act now!" "Verify immediately!")&lt;/li&gt;
&lt;li&gt;If in doubt, close the email and visit the company's website directly&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Spoofs
&lt;/h3&gt;

&lt;p&gt;A spoof is when someone pretends to be someone else (via email, phone, text). They might:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Send an email that appears to be from your boss asking to wire money&lt;/li&gt;
&lt;li&gt;Call pretending to be from IT support asking for your password&lt;/li&gt;
&lt;li&gt;Text as your bank asking you to confirm your account number&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Golden rule: Never trust communication you didn't initiate.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If someone claims to be from your bank, GitHub, or any company:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Don't click links or call numbers in the message&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Go to the official website directly&lt;/strong&gt; (type the URL yourself or use a bookmark)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Log in and check for alerts&lt;/strong&gt; in your account&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Call the official phone number&lt;/strong&gt; from the company's website (not from the email/text)&lt;/li&gt;
&lt;/ol&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;❌ You receive: Email from "GitHub" with link asking to verify your account
✅ What to do: Go to github.com directly, log in, check your security settings
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Malware
&lt;/h3&gt;

&lt;p&gt;Malware is malicious software that infects your computer. It can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Steal passwords (keyloggers record everything you type)&lt;/li&gt;
&lt;li&gt;Steal files and data&lt;/li&gt;
&lt;li&gt;Hijack your browser&lt;/li&gt;
&lt;li&gt;Lock your files for ransom (ransomware)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;How to avoid malware:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Download software only from official sources (GitHub, npm, official websites)&lt;/li&gt;
&lt;li&gt;Be cautious of email attachments (especially .exe, .zip, .bat files)&lt;/li&gt;
&lt;li&gt;Keep your operating system and software updated&lt;/li&gt;
&lt;li&gt;Use antivirus software (Windows Defender is built into Windows)&lt;/li&gt;
&lt;li&gt;Don't run scripts or commands from untrusted sources&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Developer-Specific Security
&lt;/h2&gt;

&lt;h3&gt;
  
  
  The Problem: Secrets in Code
&lt;/h3&gt;

&lt;p&gt;Developers often need to store secrets like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Database passwords&lt;/li&gt;
&lt;li&gt;API keys (Stripe, OpenAI, AWS)&lt;/li&gt;
&lt;li&gt;OAuth tokens&lt;/li&gt;
&lt;li&gt;Authentication credentials&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Never commit secrets to version control.&lt;/strong&gt; If you push secrets to GitHub, they're exposed to the world — and attackers scan GitHub for exposed keys.&lt;/p&gt;

&lt;p&gt;Example of what NOT to do:&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;// ❌ NEVER DO THIS&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;apiKey&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;sk-1234567890abcdefgh&lt;/span&gt;&lt;span class="dl"&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;dbPassword&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;myPassword123&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  The Solution: Environment Variables &amp;amp; .env Files
&lt;/h3&gt;

&lt;p&gt;Store secrets in a &lt;code&gt;.env&lt;/code&gt; file (local only, never committed):&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Your &lt;code&gt;.env&lt;/code&gt; file (local, never uploaded):&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight properties"&gt;&lt;code&gt;&lt;span class="py"&gt;OPENAI_API_KEY&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;sk-1234567890abcdefgh&lt;/span&gt;
&lt;span class="py"&gt;DATABASE_PASSWORD&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;mySecurePassword123&lt;/span&gt;
&lt;span class="py"&gt;STRIPE_SECRET_KEY&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;sk_live_...&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Your &lt;code&gt;.gitignore&lt;/code&gt; file (tells Git to ignore the .env file):&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.env
.env.local
.env.*.local
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Your code (reads from environment variables):&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;apiKey&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;OPENAI_API_KEY&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;dbPassword&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;DATABASE_PASSWORD&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  How to Use .env Files
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Create a &lt;code&gt;.env&lt;/code&gt; file in your project root&lt;/li&gt;
&lt;li&gt;Add your secrets: &lt;code&gt;KEY=value&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Add &lt;code&gt;.env&lt;/code&gt; to &lt;code&gt;.gitignore&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;In your code, read from &lt;code&gt;process.env.KEY&lt;/code&gt; (Node.js) or &lt;code&gt;process.env&lt;/code&gt; (most languages)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Never commit &lt;code&gt;.env&lt;/code&gt;&lt;/strong&gt; — only commit &lt;code&gt;.env.example&lt;/code&gt; with placeholder values&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Example &lt;code&gt;.env.example&lt;/code&gt; (for documentation):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight properties"&gt;&lt;code&gt;&lt;span class="py"&gt;OPENAI_API_KEY&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;your-api-key-here&lt;/span&gt;
&lt;span class="py"&gt;DATABASE_PASSWORD&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;your-password-here&lt;/span&gt;
&lt;span class="py"&gt;STRIPE_SECRET_KEY&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;your-stripe-key-here&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Tools for Managing Secrets
&lt;/h3&gt;

&lt;p&gt;For production environments, use dedicated secret management tools:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;AWS Secrets Manager&lt;/strong&gt; — cloud-hosted secret storage&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;HashiCorp Vault&lt;/strong&gt; — open-source secret management&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Secrets&lt;/strong&gt; — for CI/CD pipelines (Actions, etc.)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vercel/Netlify Environment Variables&lt;/strong&gt; — for serverless deployments&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These are more secure than .env files for production.&lt;/p&gt;




&lt;h2&gt;
  
  
  Practical Security Checklist
&lt;/h2&gt;

&lt;h3&gt;
  
  
  For Your Personal Accounts
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;[ ] Use a password manager (Bitwarden, 1Password, or LastPass)&lt;/li&gt;
&lt;li&gt;[ ] Create one strong master password and memorize it&lt;/li&gt;
&lt;li&gt;[ ] Enable 2FA on critical accounts (email, GitHub, banking, social media)&lt;/li&gt;
&lt;li&gt;[ ] Use authenticator apps instead of SMS when possible&lt;/li&gt;
&lt;li&gt;[ ] Never click links in suspicious emails — visit websites directly&lt;/li&gt;
&lt;li&gt;[ ] Never give passwords or 2FA codes to anyone, even "IT support"&lt;/li&gt;
&lt;li&gt;[ ] Keep your OS and software updated&lt;/li&gt;
&lt;li&gt;[ ] Use a VPN on public WiFi if handling sensitive work&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  For Your Development Projects
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;[ ] Create a &lt;code&gt;.env&lt;/code&gt; file for local secrets&lt;/li&gt;
&lt;li&gt;[ ] Add &lt;code&gt;.env&lt;/code&gt; to &lt;code&gt;.gitignore&lt;/code&gt; before your first commit&lt;/li&gt;
&lt;li&gt;[ ] Create a &lt;code&gt;.env.example&lt;/code&gt; with placeholder values&lt;/li&gt;
&lt;li&gt;[ ] Never commit real API keys, passwords, or tokens&lt;/li&gt;
&lt;li&gt;[ ] Review your &lt;code&gt;.git&lt;/code&gt; history — if you accidentally committed secrets, revoke them immediately&lt;/li&gt;
&lt;li&gt;[ ] Use environment variables in production (deployment platforms handle this)&lt;/li&gt;
&lt;li&gt;[ ] Keep dependencies updated (&lt;code&gt;npm update&lt;/code&gt;, &lt;code&gt;pip install --upgrade&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;[ ] Be cautious installing packages from npm, pip, etc. — check the source and download counts&lt;/li&gt;
&lt;li&gt;[ ] Ask friends and trusted sources for recommendations before risking stranger danger.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  If You've Been Hacked
&lt;/h2&gt;

&lt;p&gt;If you think your password has been compromised:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Immediately change your password&lt;/strong&gt; at that site&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Check if your email was in a breach&lt;/strong&gt; at &lt;a href="https://haveibeenpwned.com" rel="noopener noreferrer"&gt;https://haveibeenpwned.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Change your email password&lt;/strong&gt; (your email is the key to all other accounts)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Enable 2FA&lt;/strong&gt; on that account&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Review account activity&lt;/strong&gt; for unauthorized actions&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Monitor your credit&lt;/strong&gt; (if financial info was exposed)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If your code repository was compromised:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Revoke immediately&lt;/strong&gt; any exposed API keys, tokens, or credentials&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Search your git history&lt;/strong&gt; for secrets: &lt;code&gt;git log -p | grep -i "password\|secret\|key"&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Consider re-pushing&lt;/strong&gt; a clean history (or just moving forward)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rotate all credentials&lt;/strong&gt; that were exposed&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Remember: Security is Habit
&lt;/h2&gt;

&lt;p&gt;You don't need to be paranoid, just consistent:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use a password manager (one action, lifelong benefit)&lt;/li&gt;
&lt;li&gt;Enable 2FA on important accounts (one-time setup)&lt;/li&gt;
&lt;li&gt;Verify the source before clicking (takes 5 seconds)&lt;/li&gt;
&lt;li&gt;Don't reuse passwords (password manager handles this)&lt;/li&gt;
&lt;li&gt;Never put secrets in code (use .env)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These habits will protect you from 99% of common attacks.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Sources / additional material:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://haveibeenpwned.com" rel="noopener noreferrer"&gt;https://haveibeenpwned.com&lt;/a&gt; — Check if your email was in a data breach&lt;/p&gt;

&lt;p&gt;&lt;a href="https://bitwarden.com" rel="noopener noreferrer"&gt;https://bitwarden.com&lt;/a&gt; — Open-source password manager&lt;/p&gt;

&lt;p&gt;&lt;a href="https://owasp.org/www-community/attacks/Social_Engineering" rel="noopener noreferrer"&gt;https://owasp.org/www-community/attacks/Social_Engineering&lt;/a&gt; — OWASP social engineering guide&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.cisa.gov/tips" rel="noopener noreferrer"&gt;https://www.cisa.gov/tips&lt;/a&gt; — U.S. Cybersecurity &amp;amp; Infrastructure Security Agency tips&lt;/p&gt;

&lt;p&gt;&lt;a href="https://cheatsheetseries.owasp.org/" rel="noopener noreferrer"&gt;https://cheatsheetseries.owasp.org/&lt;/a&gt; — OWASP cheat sheets on security topics&lt;/p&gt;

&lt;p&gt;&lt;a href="https://12factor.net/config" rel="noopener noreferrer"&gt;https://12factor.net/config&lt;/a&gt; — 12-Factor App configuration best practices&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;This article was generated with AI for the purpose of providing practical information. I have reviewed it for accuracy and edited it appropriately.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>security</category>
    </item>
    <item>
      <title>FAQ: Editors, IDEs &amp; VS Code</title>
      <dc:creator>Phillip A. Wessels</dc:creator>
      <pubDate>Fri, 04 Feb 2022 04:39:25 +0000</pubDate>
      <link>https://dev.to/pawper/faq-editors-ides-vs-code-3fp0</link>
      <guid>https://dev.to/pawper/faq-editors-ides-vs-code-3fp0</guid>
      <description>&lt;p&gt;Everything you need to know to get started with VS Code: useful context to the world's most popular code editor, a simple install guide, and some useful keyboard shortcuts.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's a code editor?
&lt;/h2&gt;

&lt;p&gt;At its most basic level, a code editor could be a text editor such as Notepad. While it is possible to use such an application, there are dedicated applications for writing code with features such as syntax highlighting. Visual Studio Code (VS Code) is one of them, but you may also encounter others such as Notepad++, Sublime, and Zed. Many editors are extensible.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's an Integrated Development Environment (IDE)?
&lt;/h2&gt;

&lt;p&gt;An IDE is an application that comes with a comprehensive set of features for software development, including a code editor. Standalone editors are distinct from full IDEs, but the distinction is blurred once an editor is sufficiently extended.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's the difference between Visual Studio Code and Visual Studio IDE?
&lt;/h2&gt;

&lt;p&gt;Visual Studio Code is a code editor for a quick code-build-debug cycle with debugging, task running, and version control. Visual Studio IDE is for more complex workflows. While VS Code is free, Visual Studio IDE is premium software.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why use VS Code?
&lt;/h2&gt;

&lt;p&gt;VS Code is the most popular editor and has many features, including syntax highlighting, IntelliSense code completion, snippets, an integrated terminal, git support out of the box, and the ability to install extensions.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Sources / additional material:&lt;br&gt;
The official VS Code documentation: &lt;br&gt;
&lt;a href="https://code.visualstudio.com/docs" rel="noopener noreferrer"&gt;https://code.visualstudio.com/docs&lt;/a&gt; &lt;br&gt;
&lt;a href="https://code.visualstudio.com/docs/editor/whyvscode" rel="noopener noreferrer"&gt;https://code.visualstudio.com/docs/editor/whyvscode&lt;/a&gt;&lt;br&gt;
&lt;a href="https://code.visualstudio.com/docs/getstarted/userinterface" rel="noopener noreferrer"&gt;https://code.visualstudio.com/docs/getstarted/userinterface&lt;/a&gt; &lt;br&gt;
&lt;a href="https://code.visualstudio.com/docs/editor/codebasics" rel="noopener noreferrer"&gt;https://code.visualstudio.com/docs/editor/codebasics&lt;/a&gt; &lt;br&gt;
&lt;a href="https://code.visualstudio.com/docs/editor/extension-marketplace" rel="noopener noreferrer"&gt;https://code.visualstudio.com/docs/editor/extension-marketplace&lt;/a&gt; &lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  💻 Set Up VS Code
&lt;/h2&gt;

&lt;p&gt;These instructions are for Windows.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Download the Visual Studio Code installer for Windows. &lt;a href="https://code.visualstudio.com/download" rel="noopener noreferrer"&gt;https://code.visualstudio.com/download&lt;/a&gt;

&lt;ul&gt;
&lt;li&gt;The Insiders edition is a nightly build with the latest features, but it is not a stable release and you may encounter issues. That said, you can have both versions installed. &lt;a href="https://code.visualstudio.com/insiders/" rel="noopener noreferrer"&gt;https://code.visualstudio.com/insiders/&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Once it is downloaded, run the installer (VSCodeUserSetup-{version}.exe). This will only take a minute.&lt;/li&gt;
&lt;li&gt;By default, VS Code is installed under &lt;code&gt;C:\users\{username}\AppData\Local\Programs\Microsoft VS Code&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;If you want to use Windows Subsystem for Linux (WSL) - which I highly recommend - install the &lt;a href="https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-wsl" rel="noopener noreferrer"&gt;WSL extension&lt;/a&gt;.

&lt;ul&gt;
&lt;li&gt;Restart VS Code.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;Sources / additional material:&lt;br&gt;
&lt;a href="https://code.visualstudio.com/docs/setup/windows" rel="noopener noreferrer"&gt;https://code.visualstudio.com/docs/setup/windows&lt;/a&gt; &lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Let's talk extensions
&lt;/h2&gt;

&lt;p&gt;Extensions are key to the VS Code developer experience. You absolutely should explore extensions; often times you will do so to find the best &amp;amp; laziest way to do things. Extensions help make development more accessible.&lt;/p&gt;

&lt;p&gt;Here are some of my personal recommendations for beginners:&lt;/p&gt;

&lt;h3&gt;
  
  
  vscode-icons
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=vscode-icons-team.vscode-icons" rel="noopener noreferrer"&gt;https://marketplace.visualstudio.com/items?itemName=vscode-icons-team.vscode-icons&lt;/a&gt;&lt;br&gt;
I find this extension just makes it easier to identify my files at a glance.&lt;/p&gt;

&lt;h3&gt;
  
  
  Path IntelliSense
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=christian-kohler.path-intellisense" rel="noopener noreferrer"&gt;https://marketplace.visualstudio.com/items?itemName=christian-kohler.path-intellisense&lt;/a&gt;&lt;br&gt;
When you're typing in a relative file path, this extension helps by displaying IntelliSense suggestions for directories and files. It will save you from typos.&lt;/p&gt;

&lt;h3&gt;
  
  
  Live Server
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=ritwickdey.LiveServer" rel="noopener noreferrer"&gt;https://marketplace.visualstudio.com/items?itemName=ritwickdey.LiveServer&lt;/a&gt;&lt;br&gt;
Launch a live preview of your current HTML project in your web browser. It updates as you save changes to your work.&lt;/p&gt;

&lt;h3&gt;
  
  
  Prettier - Code Formatter
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode" rel="noopener noreferrer"&gt;https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode&lt;/a&gt;&lt;br&gt;
Prettier cleans up your code's formatting on save. Formatting your code doesn't make it &lt;em&gt;fully&lt;/em&gt; clean code, but it gets you one step closer. Formatted code is important for readability. You will have to read your code, and others you share it won't want to if it's a mess.&lt;/p&gt;

&lt;h3&gt;
  
  
  GitHub Copilot
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=GitHub.copilot" rel="noopener noreferrer"&gt;https://marketplace.visualstudio.com/items?itemName=GitHub.copilot&lt;/a&gt;&lt;br&gt;
GitHub Copilot is an AI coding assistant that suggests code completions as you type, and can generate entire functions or files from a prompt. It requires a paid subscription (there is a free tier with limited usage). As of 2024 it is built into VS Code and can be accessed from the Copilot icon in the title bar. AI-assisted coding has become a standard part of the modern developer workflow — even as a beginner it is worth knowing it exists.&lt;/p&gt;




&lt;h2&gt;
  
  
  Settings
&lt;/h2&gt;

&lt;p&gt;VS Code's settings are stored in &lt;code&gt;settings.json&lt;/code&gt;. You can access this by opening the command palette and entering "Preferences: Open Settings (JSON)". &lt;code&gt;.json&lt;/code&gt; files are in JSON - JavaScript Object Notation. This means settings have to be entered in a specific way.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The entire settings object is in a single pair of curly brackets (&lt;code&gt;{}&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Keys - the names of different settings - need to be in quotation marks. E.g., &lt;code&gt;"editor.tabSize"&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Values can be strings (in quotation marks), numbers (without quotation marks), boolean (&lt;code&gt;true&lt;/code&gt;/&lt;code&gt;false&lt;/code&gt;), arrays (comma-separated elements in square brackets &lt;code&gt;[]&lt;/code&gt;), or objects (comma-separated key: value pairs in curly brackets &lt;code&gt;{}&lt;/code&gt;). It's out of our scope here to cover data types, but you can be mindful of the indicated syntax.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Here are some settings that I recommend:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Set the editor to update closing tags when opening tags are updated. Useful for HTML.&lt;/li&gt;
&lt;li&gt;Set the default tab size to 2 spaces. I find that a minimal tab size makes it easier to share blocks of code.&lt;/li&gt;
&lt;li&gt;Set the word wrap as on by default. I don't like scrolling left &amp;amp; right to read a long line of code.&lt;/li&gt;
&lt;li&gt;Set the editor to format the document on save, and to use Prettier as the formatter.&lt;/li&gt;
&lt;li&gt;Set Prettier to not create line breaks after a certain number of characters by giving it a large print width.
&lt;/li&gt;
&lt;/ol&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;"editor.linkedEditing"&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="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"editor.tabSize"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"editor.wordWrap"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"on"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"editor.formatOnSave"&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="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"editor.defaultFormatter"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"esbenp.prettier-vscode"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"prettier.printWidth"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;9999&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;You can create settings specific to a certain project as well. Just create a &lt;code&gt;.vscode&lt;/code&gt; directory at the top level, and inside it create a &lt;code&gt;settings.json&lt;/code&gt; file. Any specific settings here will override those settings within VS Code's main settings.json.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frjor2xf2ui82ffch7m98.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frjor2xf2ui82ffch7m98.png" alt=" " width="716" height="585"&gt;&lt;/a&gt;&lt;br&gt;
Here you can see that since this is a React project, I am setting all JavaScript files (&lt;code&gt;.js&lt;/code&gt;) to be associated with the JavaScript React language mode (&lt;code&gt;"javascriptreact"&lt;/code&gt;). The icons update as well to the React icon.&lt;/p&gt;




&lt;h2&gt;
  
  
  📜Key Bindings: VS Code
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
Ctrl+Shift+P Show Command Palette&lt;/li&gt;
&lt;li&gt;
Ctrl+P Quick Open, Go to File...&lt;/li&gt;
&lt;li&gt;
Ctrl+Shift+X Open Extensions panel&lt;/li&gt;
&lt;li&gt;
Ctrl+` Show Integrated Terminal&lt;/li&gt;
&lt;li&gt;
Alt+Click Insert additional cursors.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;Sources / additional material:  &lt;a href="https://code.visualstudio.com/shortcuts/keyboard-shortcuts-windows.pdf" rel="noopener noreferrer"&gt;https://code.visualstudio.com/shortcuts/keyboard-shortcuts-windows.pdf&lt;/a&gt; &lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  📜Key Bindings: Navigating &amp;amp; Selecting Text
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
Ctrl+→ Move the cursor one word to the right&lt;/li&gt;
&lt;li&gt;
Ctrl+← Move the cursor one word to the left&lt;/li&gt;
&lt;li&gt;
Shift+→ Select text to the right&lt;/li&gt;
&lt;li&gt;
Shift+← Select text to the left&lt;/li&gt;
&lt;li&gt;
Ctrl+Shift+← Select the word to the left.&lt;/li&gt;
&lt;li&gt;
Ctrl+Shift+→ Select the word to the right.&lt;/li&gt;
&lt;li&gt;
Shift+Home Select from the current position to the beginning of the current line.&lt;/li&gt;
&lt;li&gt;
Shift+End Select from the current position to the end of the current line.&lt;/li&gt;
&lt;li&gt;
Ctrl+Shift+Home Select from the current position to the beginning of the document.&lt;/li&gt;
&lt;li&gt;
Ctrl+Shift+End Select from the current position to the end of the document.&lt;/li&gt;
&lt;li&gt;
Ctrl+A Select all document content.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;More here specific to VS Code: &lt;a href="https://code.visualstudio.com/shortcuts/keyboard-shortcuts-windows.pdf" rel="noopener noreferrer"&gt;https://code.visualstudio.com/shortcuts/keyboard-shortcuts-windows.pdf&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>git</category>
      <category>javascript</category>
      <category>dx</category>
      <category>mentoring</category>
    </item>
    <item>
      <title>FAQ: Operating Systems, Terminals &amp; Shells</title>
      <dc:creator>Phillip A. Wessels</dc:creator>
      <pubDate>Wed, 02 Feb 2022 02:02:36 +0000</pubDate>
      <link>https://dev.to/pawper/intro-to-operating-systems-terminals-shells-faq-4agm</link>
      <guid>https://dev.to/pawper/intro-to-operating-systems-terminals-shells-faq-4agm</guid>
      <description>&lt;p&gt;Hello! This is the first in a series of FAQ posts for beginner web developers. I hope this format is helpful!&lt;/p&gt;

&lt;h2&gt;
  
  
  What is UNIX?
&lt;/h2&gt;

&lt;p&gt;UNIX is the ancestor of many modern operating systems (OSs). In 1969 at Bell Laboraties, Ken Thompson starting developing UNIX OS in PDP-7 computer assembly language. Dennis Ritchie joined Thompson and invented the C programming language. Then they rewrote UNIX in C, allowing different computers to run the code. UNIX also included user management and hierarchical file systems. Bell Labs released the first version of UNIX, Version 6 (V6), in 1976. Its design philosophy emphasizes small modular programs that can be used in combination for complex tasks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Write programs that do one thing and do it well.&lt;/li&gt;
&lt;li&gt;Write programs to work together.&lt;/li&gt;
&lt;li&gt;Write programs to handle text streams, because that is a universal interface.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What is Linux?
&lt;/h2&gt;

&lt;p&gt;The open-source GNU/Linux (commonly referred to as Linux) is the most famous Unix-like operating system (OS). Released in 1993, it spawned from the Free Software movement of the 1980s. Richard Stallman started the GNU Project of free software which needed a kernel. Fortunately, Linus Torvalds released the Linux kernel in 1991, which the GNU Project was able to combine with for a full OS that was released in 1993. Countless distributions have derived from GNU/Linux.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why aren't all Unix-like operating systems called UNIX? Why do macOS and Linux use the same commands?
&lt;/h2&gt;

&lt;p&gt;The UNIX brand is trademarked and "True UNIX" operating systems like macOS paid to be certified by The Open Group. While not officially UNIX, Unix-like OSs like Linux do fully or mostly meet the UNIX specification but are not certified; therefore, they do not use the UNIX name. The command line works the same, whether True UNIX or Unix-like. While not officially licensed, Unix-like OSs like Linux are designed to meet the UNIX specification.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is the history of the modern Windows OS?
&lt;/h2&gt;

&lt;p&gt;Windows NT, upon which the modern Windows and Xbox OSs derive from, started in 1977 with Digital Equipment's release of VMS 1.0 (one year after the release of the first version of UNIX). Many of the developers left Digital in 1988 to join Microsoft, which released Windows NT 3.1 in 1993 (the same year as the release of GNU/Linux).&lt;/p&gt;

&lt;h2&gt;
  
  
  How do Windows and UNIX-based OSs differ?
&lt;/h2&gt;

&lt;p&gt;Both Windows NT and UNIX have roots in the mid-1970s and both were influenced by many identical theoretical OS concepts and principles. However, Windows and UNIX-based systems have different kernels engaging the hardware with different software built on top of those kernels, all based on different specifications. The software differs in many ways.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Windows Subsystem for Linux (WSL)?
&lt;/h2&gt;

&lt;p&gt;Windows Subsystem for Linux lets developers run a GNU/Linux environment—including most command-line tools, utilities, and applications—directly on Windows, unmodified, without the overhead of a traditional virtual machine or dualboot setup. WSL 2 introduced an entirely new architecture that benefits from running a real Linux kernel. It runs in a lightweight virtual machine environment through a subset of Microsoft's Hyper-V features.&lt;/p&gt;

&lt;h2&gt;
  
  
  On Windows, why not use a virtual machine (VM) for Linux?
&lt;/h2&gt;

&lt;p&gt;You can, but WSL requires fewer resources (CPU, memory, and storage) than a full VM. You can't easily work between the VM and Windows software.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is a terminal?
&lt;/h2&gt;

&lt;p&gt;A terminal is a program that runs a shell. There are many terminal applications, one being the Windows Terminal, another the integrated terminal in VS Code.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is a shell?
&lt;/h2&gt;

&lt;p&gt;A shell is an interpreter for command line language. Common shells include Bash and Zsh for UNIX-based operating systems, and PowerShell for Windows. Note: You cannot run UNIX-based commands through PowerShell, but there are many aliases matching UNIX-based commands which map to PowerShell cmdlets.&lt;/p&gt;

&lt;h2&gt;
  
  
  Are Bash and PowerShell just shells?
&lt;/h2&gt;

&lt;p&gt;The same names are used to refer to the shells' scripting languages as well.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why are Bash and PowerShell both useful?
&lt;/h2&gt;

&lt;p&gt;Bash is the scripting language of the Bash shell and its various packages, while PowerShell adds advanced efficiency as an object-oriented scripting language.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Zsh?
&lt;/h2&gt;

&lt;p&gt;Zsh (Z shell) is a Unix shell that is largely compatible with Bash but adds many improvements such as better tab completion, spelling correction, and a richer plugin ecosystem. Since macOS Catalina (2019), Zsh has been the default shell on macOS, replacing Bash. On macOS you may see the prompt message "The default interactive shell is now zsh" — this is expected. Most Bash scripts and commands work in Zsh without modification.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is PowerShell 7?
&lt;/h2&gt;

&lt;p&gt;PowerShell 7 is the current cross-platform (Windows, Linux, and macOS), open-source version of PowerShell. It is the successor to both Windows PowerShell (which remains at version 5.1 and is built into Windows) and PowerShell Core (versions 6.x, a transitional release). PowerShell 7 is what you should install if you want to use PowerShell on macOS or Linux, or want the latest features on Windows.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Sources / additional material:&lt;br&gt;
&lt;a href="https://www.itprotoday.com/windows-78/nt-vsunix-one-substantially-better" rel="noopener noreferrer"&gt;https://www.itprotoday.com/windows-78/nt-vsunix-one-substantially-better&lt;/a&gt; &lt;br&gt;
&lt;a href="https://docs.microsoft.com/en-us/windows/wsl/about" rel="noopener noreferrer"&gt;https://docs.microsoft.com/en-us/windows/wsl/about&lt;/a&gt; &lt;br&gt;
&lt;a href="https://www.udemy.com/course/the-linux-command-line-bootcamp/" rel="noopener noreferrer"&gt;https://www.udemy.com/course/the-linux-command-line-bootcamp/&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>git</category>
      <category>powershell</category>
      <category>bash</category>
      <category>mentoring</category>
    </item>
  </channel>
</rss>
