The Seven-Year Switch: Why I Returned to Windows

man in gray long sleeve shirt using Windows 11 computer

After seven years as a dedicated Ubuntu user, I switched back to Windows last week. Windows 11, to be precise. This is my story of the seven-year itch that made me turn to the dark side.
It started when I purchased a laptop. It also came with a licensed copy of Windows 11. The fact that I needed software that works only on Windows, with the Linux-based replacements not being up to par, is another story.
If you’re wondering why I experimented with Linux distros without the essential nerd skills, I’d say that is a legitimate question. Seven years ago, I needed to do some development work that required Docker, which, as you know, works seamlessly on Ubuntu. That, plus the need to send PGP-encrypted emails regularly, kept me on the open-source side of the world.
Navigating Windows’ screens, I had an epiphany. It struck me that in seven years of using Ubuntu, I never did anything truly “open-sourcey.” For example, I didn’t tweak the kernel or contribute a single line of code to their Git repositories. My only contribution was raising a bug, which I later closed, unsure if it was a bug, a feature, or just my old eyes playing tricks. All I did was, when in trouble, search online, zero in on a command, copy-paste it, and move on.
What struck me on my return to Windows was the sleek UI and charming fonts. Every piece of software I downloaded worked, and installation was just a matter of clicking a button. My one concern was whether my humble development work and the PGP emails would still work. Docker, Inc Desktop and Kleopatra (the software not the lady) helped resolve these issues.
This didn’t mean I had said goodbye to Linux altogether. Hidden in the shadows of WSL2 it helps me run Docker. I still have traces of my open-source infection. I find Thunderbird a better option compared to Outlook. Audacity is my first choice for an audio editor.
On the privacy front, I got a stark reminder of the world I was back in. Clicking “Solitaire and Casual Games” on the Start menu, I was greeted by a screen that asked if I wanted to resume the FreeCell game I last played on April 13, 2017!
That made me wonder what other dark secrets from my shady past lurked in Windows closed-source corridors. Inexplicably, my local ISP seems to block Microsoft-related sites! Privacy ISP style!
My take on this shift in OS is simple: use tools that suit your use case. Don’t overestimate your techy abilities or underestimate the time you have to complete tasks. Use a combination of tools that suits you and be more productive. Also, just because you have access to a plethora of tools and games do not lower your guard. Be careful what bits and pieces of information you share with the world. Your online safety is your responsibility and should be your first priority. Be safe and enjoy the ride on the technology express.

How to Set Up PGP Encryption on Outlook in Windows 11

A wooden block spelling the word encryption on a table

This guide will walk you through setting up PGP (Pretty Good Privacy) encryption for your Outlook email client on Windows 11. Whether you’re starting fresh or migrating from another email client like Thunderbird, this tutorial has you covered.

What You’ll Need

  • Outlook 2016, 2019, or Microsoft 365
  • Windows 11
  • Administrator access to install software
  • Your existing PGP keys (if migrating from another client)

Step 1: Install Gpg4win

Gpg4win is a free, open-source encryption suite that integrates PGP functionality into Outlook.

  1. Download Gpg4win from the official website: https://www.gpg4win.org/
  2. Run the installer (right-click and select “Run as administrator” if needed)
  3. During the installation, you’ll see a component selection screen
  4. Important: Make sure these components are checked:
    • GpgOL – This is the Outlook plugin (critical!)
    • Kleopatra – Certificate and key manager
    • GpgEX – Windows Explorer extension (optional but useful)
  5. Click Next and complete the installation
  6. Restart your computer to ensure all components load properly

Step 2: Set Up Your PGP Keys

If You’re Starting Fresh

  1. Open Kleopatra (search for it in the Start menu)
  2. Click File ? New OpenPGP Key Pair
  3. Enter your name and email address
  4. Click Create
  5. Set a strong passphrase when prompted (you’ll need this to decrypt messages)
  6. Click Finish

If You Have Existing Keys (e.g., from Thunderbird)

Export Keys from Thunderbird

  1. Open Thunderbird
  2. Go to Tools ? OpenPGP Key Manager
  3. Find your key in the list
  4. Right-click your key ? Export Keys to File
  5. Choose to export both public and secret keys
  6. Save the file (e.g., my-pgp-key.asc) to a location you’ll remember

Import Keys into Kleopatra

  1. Open Kleopatra
  2. Click File ? Import Certificates
  3. Navigate to your exported key file (.asc or .gpg file)
  4. Select the file and click Open
  5. Enter your passphrase if prompted
  6. You should see a confirmation that the keys were imported successfully

Step 3: Verify GpgOL is Installed in Outlook

  1. Open Outlook
  2. Look for a GpgOL tab in the ribbon at the top of the window
  3. If you see it, skip to Step 5

If You Don’t See the GpgOL Tab

Don’t worry – you might not have selected it during installation. Here’s how to add it:

  1. Go to Windows Settings ? Apps ? Installed apps
  2. Find Gpg4win in the list
  3. Click the three dots (?) next to it
  4. Select Modify
  5. The installer will open showing current components
  6. Make sure GpgOL is checked
  7. Click Next to install the component
  8. Restart Outlook

Alternative Check: Outlook Add-ins

  1. In Outlook, go to File ? Options ? Add-ins
  2. Look for “GpgOL” in the active add-ins list
  3. If it’s in “Disabled Items”, you’ll need to enable it:
    • At the bottom, change “Manage” dropdown to Disabled Items
    • Click Go
    • Select GpgOL and click Enable

Step 4: Configure GpgOL in Outlook

  1. Open Outlook and click the GpgOL tab
  2. Click Settings (or Options)
  3. In the settings window:
    • Select your default key for signing and encrypting emails
    • Choose whether to sign/encrypt by default (recommended to leave off and choose per email)
    • Configure any other preferences

Step 5: Send Your First Encrypted Email

Sending an Encrypted Message

  1. Click New Email in Outlook
  2. Compose your message as normal
  3. In the GpgOL tab at the top, you’ll see encryption options:
    • Click Encrypt to encrypt the message
    • Click Sign to digitally sign it (proves it’s from you)
    • You can do both for maximum security
  4. Add the recipient’s email address
  5. Important: You must have the recipient’s public key to encrypt to them
  6. Click Send

Receiving an Encrypted Message

  1. When you receive an encrypted email, GpgOL will automatically detect it
  2. You’ll be prompted to enter your passphrase
  3. After entering it, the message will decrypt and display normally

Step 6: Exchange Public Keys with Contacts

For someone to send you encrypted emails, they need your public key. For you to send to them, you need theirs.

Export Your Public Key

  1. Open Kleopatra
  2. Right-click your key
  3. Select Export Certificates
  4. Save the .asc file
  5. Send this file to your contacts (via email, chat, etc.)

Import a Contact’s Public Key

  1. Receive their public key file from them
  2. Open Kleopatra
  3. Click File ? Import Certificates
  4. Select their key file
  5. Verify the key fingerprint with them (optional but recommended for security)
  6. You can now send them encrypted emails

Troubleshooting Common Issues

GpgOL Tab Not Appearing

  • Ensure GpgOL is installed (see Step 3)
  • Check that the add-in isn’t disabled in Outlook
  • Try running Outlook as administrator once
  • Reinstall Gpg4win if necessary

“No Valid Key Found” Error

  • Make sure you’ve imported the recipient’s public key
  • Verify the email address matches exactly
  • Check that your key hasn’t expired in Kleopatra

Can’t Decrypt Received Messages

  • Verify you’re using the correct passphrase
  • Ensure the message was encrypted to your public key
  • Check that your private key is properly imported

Messages Showing as Plain Text

  • Some email servers strip encryption from messages
  • Make sure both you and the recipient are using compatible PGP implementations
  • Try sending a test message to yourself first

Security Best Practices

  1. Protect Your Passphrase: Never share it with anyone
  2. Backup Your Private Key: Store it securely offline
  3. Verify Key Fingerprints: When exchanging keys, verify fingerprints through a separate channel
  4. Set Key Expiration: Consider setting expiration dates on keys for better security
  5. Revoke Compromised Keys: If your key is compromised, generate and distribute a revocation certificate

Additional Resources

  • Gpg4win Documentation: https://www.gpg4win.org/documentation.html
  • GnuPG Manual: https://gnupg.org/documentation/
  • Email Security Best Practices: Search for “PGP email security guide”

Note: This guide uses Gpg4win, which implements the OpenPGP standard. Your encrypted emails will be compatible with other OpenPGP-compliant tools like Thunderbird, GPG Suite (Mac), and various mobile apps.

How to Install and Use Docker on Windows 11

a white and blue square object on a white background

This comprehensive guide walks you through installing Docker Desktop on Windows 11, setting up WSL 2, and managing your projects effectively.

Prerequisites

  • Windows 11 64-bit (Home or Pro edition)
  • Administrator access to your computer
  • Virtualization enabled in BIOS (we’ll verify this)

Step 1: Verify Virtualization is Enabled

Before installing Docker, check if virtualization is enabled on your system.

Quick Method – Task Manager

  1. Right-click on the taskbar and select Task Manager (or press Ctrl + Shift + Esc)
  2. Click on the Performance tab
  3. Click on CPU in the left panel
  4. Look at the bottom right for “Virtualization: Enabled”

If it shows “Disabled”, you’ll need to enable it in BIOS:

  1. Restart your computer
  2. Enter BIOS (usually by pressing F2, F10, Del, or Esc during startup)
  3. Find virtualization settings under Advanced, CPU Configuration, or Security:
    • Intel processors: Look for “Intel VT-x” or “Intel Virtualization Technology”
    • AMD processors: Look for “AMD-V” or “SVM Mode”
  4. Enable it and save changes
  5. Restart your computer

Step 2: Install WSL 2 and Ubuntu

Docker Desktop on Windows requires WSL 2 (Windows Subsystem for Linux).

Install WSL and Ubuntu

  1. Open PowerShell as Administrator:
    • Right-click Start menu ? Terminal (Admin) or Windows PowerShell (Admin)
  2. Run the installation command: wsl --install This installs WSL 2 and Ubuntu by default.
  3. Restart your computer when prompted
  4. After restart, Ubuntu will automatically open:
    • Create a username (can be different from your Windows username)
    • Create a password (characters won’t appear as you type – this is normal)
    • Remember this password – you’ll need it for admin tasks

Verify WSL Installation

Open PowerShell and run:

wsl --list --verbose

You should see Ubuntu listed with VERSION 2.

Step 3: Install Docker Desktop

Download and Install

  1. Go to https://www.docker.com/products/docker-desktop
  2. Download Docker Desktop for Windows
  3. Run the installer
  4. When prompted, choose “Use WSL 2 instead of Hyper-V” (recommended)
  5. Complete the installation
  6. Restart your computer

Start Docker Desktop

  1. Launch Docker Desktop from the Start menu
  2. Wait for it to start (you’ll see a whale icon in the system tray)
  3. Accept the terms and conditions if prompted

Verify Docker Installation

Open PowerShell or Command Prompt and run:

docker --version
docker run hello-world

If you see a “Hello from Docker!” message, Docker is working correctly!

Step 4: Configure Docker with WSL

Enable WSL Integration

  1. Open Docker Desktop
  2. Click the gear icon (Settings)
  3. Go to Resources ? WSL Integration
  4. Enable “Enable integration with my default WSL distro”
  5. Toggle on your Ubuntu distribution
  6. Click Apply & Restart

Now Docker will work from both Windows and Ubuntu terminals!

Step 5: Choose Where to Store Your Projects

You have two options for project location:

Option A: Keep Projects in Windows (Recommended for Cursor AI Users)

Location: C:\Users\YourUsername\Projects\your-project

Pros:

  • Easy access with Windows tools and IDEs like Cursor AI
  • Familiar file structure
  • Simple drag-and-drop

Access from Docker:

cd C:\Users\YourUsername\Projects\your-project
docker run --rm -v ${PWD}:/app your-image

Option B: Store Projects in WSL Ubuntu

Location: /home/yourusername/projects/your-project (inside Ubuntu)

Pros:

  • Faster Docker performance
  • Native Linux development environment

Access from Windows:

  • In File Explorer, type: \\wsl$\Ubuntu\home\yourusername\projects
  • Bookmark this location for easy access
  • Cursor AI can open projects from this path

Access from Ubuntu Terminal:

cd ~/projects/your-project
docker run --rm -v $(pwd):/app your-image

Working with Git in WSL

If your project is stored in WSL, follow these best practices:

Initial Setup

When you first access a Git repository in WSL from Windows PowerShell, you might see:

fatal: detected dubious ownership in repository

Solution: Always run Git commands from the Ubuntu terminal, not PowerShell.

Set Up SSH for Git

If you’re using SSH for Git (like GitLab or GitHub):

  1. Open Ubuntu terminal
  2. Generate SSH key: ssh-keygen -t ed25519 -C "your_email@example.com" Press Enter to accept defaults
  3. Copy your public key: cat ~/.ssh/id_ed25519.pub
  4. Add the key to your Git hosting service:
    • GitHub: Settings ? SSH and GPG keys ? New SSH key
    • GitLab: User Settings ? SSH Keys
    • Paste your public key and save
  5. Test the connection: # For GitHub ssh -T git@github.com # For GitLab ssh -T git@gitlab.com

Use SSH Agent (If Your Key Has a Passphrase)

To avoid entering your passphrase repeatedly:

# Start SSH agent
eval "$(ssh-agent -s)"

# Add your key
ssh-add ~/.ssh/id_ed25519

Enter your passphrase once – it will be cached for the session.

Make SSH Agent Start Automatically

Edit your bash profile:

nano ~/.bashrc

Add these lines at the end:

# Start SSH agent and add key
if [ -z "$SSH_AUTH_SOCK" ] ; then
  eval "$(ssh-agent -s)" > /dev/null
  ssh-add ~/.ssh/id_rsa 2>/dev/null
fi

Save (Ctrl+X, Y, Enter), then reload:

source ~/.bashrc

Fixing Git Line Ending Issues

If Git shows all files as modified after cloning, it’s likely a line ending issue (Windows uses CRLF, Linux uses LF).

Fix in Ubuntu Terminal

cd ~/your-project

# Configure Git to use Linux line endings
git config core.autocrlf input
git config core.filemode false

# Reset all files with correct line endings
git rm --cached -r .
git reset --hard HEAD

# Verify
git status

Prevent Future Issues

Create a .gitattributes file in your project root:

cat > .gitattributes << 'EOF'
* text=auto eol=lf
*.sh text eol=lf
EOF

git add .gitattributes
git commit -m "Add gitattributes to enforce LF line endings"

Recommended Workflow

For the best experience when using Cursor AI with WSL:

  1. Store projects in Windows (C:\Users\YourUsername\Projects\)
  2. Edit code in Cursor AI (Windows application)
  3. Run Docker commands from either PowerShell or Ubuntu terminal
  4. Run Git commands from Ubuntu terminal
  5. Keep both Cursor AI and Ubuntu terminal open side-by-side

This workflow gives you the best of both worlds: easy editing with Windows tools and proper Linux environment for Docker and Git.

Common Docker Commands

Running Containers

# Run a container
docker run image-name

# Run with port mapping
docker run -p 4000:4000 image-name

# Run with volume mounting
docker run -v ${PWD}:/app image-name

# Run in detached mode
docker run -d image-name

Managing Containers

# List running containers
docker ps

# List all containers
docker ps -a

# Stop a container
docker stop container-id

# Remove a container
docker rm container-id

Managing Images

# List images
docker images

# Remove an image
docker rmi image-name

# Build an image
docker build -t my-image .

Docker Compose

# Start services
docker-compose up

# Start in detached mode
docker-compose up -d

# Stop services
docker-compose down

# View logs
docker-compose logs

Troubleshooting

Docker Desktop Won’t Start

  • Ensure virtualization is enabled in BIOS
  • Check that WSL 2 is properly installed: wsl --list --verbose
  • Restart Docker Desktop
  • Restart your computer

“Cannot connect to Docker daemon”

  • Make sure Docker Desktop is running (check system tray)
  • In Docker Desktop settings, verify WSL integration is enabled

Slow Performance

  • Store projects in WSL filesystem instead of Windows for better performance
  • Allocate more resources to Docker in Settings ? Resources

Git Shows All Files Modified

  • Follow the line ending fix in the “Fixing Git Line Ending Issues” section above

Conclusion

You now have a fully functional Docker development environment on Windows 11! This setup allows you to:

  • Run Docker containers efficiently using WSL 2
  • Use your favorite Windows tools like Cursor AI for development
  • Leverage Linux commands and tools through Ubuntu
  • Manage Git repositories properly with SSH authentication

Happy coding!