The Moment I Realized Windows Was Holding Me Back
It wasn't a dramatic crash or a ransomware attack. It was a Tuesday afternoon when Windows Update forced a reboot in the middle of a production deployment, wiping my carefully configured WSL2 environment and breaking three days of container orchestration work. I sat staring at the "Getting Windows ready — don't turn off your computer" spinner, realizing I had zero control over the machine I owned.
That week, I installed Ubuntu 22.04 LTS on a spare NVMe drive. Six months later, I wiped Windows entirely. This article is the guide I wish I'd had — covering not just the how, but the why that keeps you going when the learning curve bites.
Why Stop Using Windows: The Honest Case
You Are Not the Customer — You Are the Product
Windows 11 ships with telemetry you cannot fully disable, a Start menu that serves ads, Edge browser enforcement via protocol handlers, and a Copilot AI assistant that indexes your local files by default. Microsoft's revenue model has shifted from selling you an OS to monetizing your attention and data. Every "feature update" resets privacy settings, reinstalls bloatware (Candy Crush, Disney+, LinkedIn), and pushes Microsoft accounts over local ones.
Architectural Technical Debt You Pay For Daily
The Windows Registry, Win32 API backward compatibility shims, mandatory signed drivers, and the legacy filesystem (NTFS with its fragmentation issues and lack of copy-on-write) create a system that grows heavier, not lighter, over time. Compare this to Linux's unified package management, ext4/btrfs/ZFS filesystems with snapshots, and a kernel that runs the world's servers, supercomputers, and Android phones.
The Developer Experience Gap
On Ubuntu, apt install docker.io gives you a native Docker Engine. On Windows, you get Docker Desktop — a heavy VM wrapper with licensing complications. Need a specific library version? apt search libssl shows you exactly what's available. On Windows, you're hunting GitHub releases, managing PATH variables, and praying vcpkg or Chocolatey has what you need.
"True ownership of your computing environment means the OS serves your intent — not a quarterly earnings call."
— Hesham Kholef
Pre-Installation: Prepare Without Panic
Hardware Compatibility Check
Run Ubuntu Certified Hardware database search for your laptop/model. Most Dell XPS, Lenovo ThinkPad, Framework, and System76 machines work flawlessly. NVIDIA GPUs require the proprietary driver (handled automatically during install). Wi-Fi cards from Realtek/MediaTek occasionally need linux-firmware updates.
Backup Strategy: The 3-2-1 Rule
- 3 copies of critical data (Documents, SSH keys, GPG keys, browser profiles,
~/.config) - 2 different media (external SSD + cloud/NAS)
- 1 off-site (Backblaze B2, rsync.net, or a friend's server)
Clone your Windows drive with dd or Macrium Reflect before touching partitions — rollback takes 20 minutes if something goes sideways.
Create the Install Media
# On Linux/macOS (replace /dev/sdX with your USB device)
sudo dd if=ubuntu-24.04-desktop-amd64.iso of=/dev/sdX bs=4M status=progress oflag=sync
# On Windows: Use Rufus (rufus.ie) — select "GPT" partition scheme, "UEFI (non-CSM)" target
Verify the ISO SHA256 checksum from releases.ubuntu.com before writing.
Installation: Dual Boot or Clean Break?
Option A: Dual Boot (Recommended for First-Timers)
- Shrink Windows partition in Disk Management (Win+X → Disk Management) — leave 100 GB+ for Ubuntu.
- Boot USB → Install Ubuntu → Install alongside Windows Boot Manager.
- Ubuntu's installer handles GRUB bootloader configuration automatically.
- Disable Windows Fast Startup (
powercfg /h offin Admin PowerShell) and BitLocker on the Windows partition before resizing.
Option B: Clean Install (What I Did)
Wipe the drive. Select Erase disk and install Ubuntu → Advanced features → enable LVM + Encrypt the new Ubuntu installation. LVM lets you resize partitions later; full-disk encryption (LUKS2) protects data at rest with a passphrase you control — no TPM escrow, no Microsoft recovery keys.
If you choose encryption, store your LUKS passphrase in a password manager and test recovery from a live USB before relying on it. Forgotten passphrase = unrecoverable data.
First Boot: The "It Just Works" Moment
You'll land on a clean GNOME 46 desktop. No Cortana, no weather widget ads, no Candy Crush. Run Software Updater (or sudo apt update && sudo apt full-upgrade -y), reboot, then install the essentials:
# Enable Ubuntu Pro (free for personal use — 10 machines, extended security maintenance)
sudo pro attach
# Multimedia codecs, fonts, Microsoft fonts, archive tools
sudo apt install ubuntu-restricted-extras
# Modern CLI replacements
sudo apt install eza bat fd-find ripgrep fzf zoxide btop git-delta
# Development toolchain
sudo apt install build-essential git gh docker.io docker-compose-v2 podman
# Flatpak + Flathub for sandboxed GUI apps
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
Post-Install: Crafting Your Environment
Terminal & Shell: The Power User's Home
Install Kitty or WezTerm (GPU-accelerated, ligature support, image protocol). Switch to Zsh with Oh My Zsh + autosuggestions + syntax highlighting. Starship prompt gives you git status, runtime versions, and exit codes in 2ms.
Dotfiles Management: Version Control Your Config
# Bare repo method — no symlink farm needed
git init --bare $HOME/.dotfiles
alias dotfiles='/usr/bin/git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME'
dotfiles config status.showUntrackedFiles no
dotfiles remote add origin git@github.com:yourname/dotfiles.git
Now dotfiles add .bashrc .config/nvim/init.lua tracks configs directly in $HOME. New machine? dotfiles clone --bare ... && dotfiles checkout.
Development Containers: The "Works on My Machine" Solution
VS Code's Dev Containers + Docker/Podman give you reproducible, isolated environments per project. No more global npm install -g pollution, no Python version hell. Each repo carries its .devcontainer/devcontainer.json — clone, reopen in container, code.
The Ecosystem Shift: What Replaces What
| Windows | Ubuntu Native | Flatpak/Alternative |
|---|---|---|
| Office 365 | LibreOffice | OnlyOffice, Google Docs (PWA) |
| Adobe Creative Cloud | — | Figma (browser), DaVinci Resolve (native), Krita, Photopea |
| PowerToys | GNOME Extensions | — |
| Everything (voidtools) | Plasma Search / Ulauncher | — |
| Notepad++ | GNOME Text Editor | VS Code, Zed, Lapce, Neovim |
| Windows Terminal | Kitty, WezTerm, Ghostty | — |
| WSL2 | Native Linux | — |
Gaming? Steam Deck proved Proton works. Enable Steam → Settings → Compatibility → Enable Proton for all titles. Lutris + Heroic Games Launcher cover Epic/GOG/EA. Anti-cheat kernels (Valorant, League) remain the only hard blockers — dual-boot for those if needed.
Maintenance: The Linux Advantage
No Patch Tuesday surprises. apt updates are atomic, transactional, and rollback-able with apt history or rpm-ostree on Fedora Silverblue/NixOS. Snap/Flatpak apps update in background. Firmware updates via fwupdmgr (LVFS) — same pipeline Dell/Lenovo/Framework use.
# Weekly maintenance alias
alias sysup='sudo apt update && sudo apt full-upgrade -y && sudo apt autoremove -y && flatpak update -y && fwupdmgr refresh && fwupdmgr update -y'
When Things Break: The Community Difference
Windows errors give you 0x80070005 and a "Contact Support" link. Linux errors give you stack traces, log files (journalctl -xe), and a global community that has already solved your exact problem on Ask Ubuntu, Arch Wiki, or a GitHub issue. You learn how your computer works — not how to work around a vendor's decisions.
Conclusion: The Freedom to Build
Switching to Ubuntu isn't about saving money — it's about reclaiming agency. Your hardware runs code you can audit, modify, and share. Your workflow isn't interrupted by forced updates or telemetry uploads. Your skills transfer to servers, embedded devices, and the cloud because it's all the same kernel.
The first month is uncomfortable. Muscle memory fights you. You'll break things. But every fix teaches you something permanent. A year from now, you'll look at a Windows machine and wonder how anyone tolerates being a guest on their own hardware.
Your computer. Your rules. Welcome to Linux.
Comments (0)