The Slow Winding Road to Switching to Linux Full-Time (for Personal Use)

Stepping into my first computer science class in 2012, I was surprised to see a desktop computer and monitor at each seat in the classroom. It was a far cry from classrooms I was used to, and the computers weren't running Windows 7 or OS X Lion. Instead, they were running images of Ubuntu.

The Slow Winding Road to Switching to Linux Full-Time (for Personal Use)
Framework Laptop with Open Terminal and Text Editor running Fedora 37

Stepping into my first computer science class in 2012, I was surprised to see a desktop computer and monitor at each seat in the classroom. It was a far cry from classrooms I was used to, but on top of everything else, the computers weren't running Windows 7 or OS X Lion. Instead, they were running images of Ubuntu with everything the computer science students might need that semester.

Up until this class, the most I'd really heard about linux was from dipping my toes into the modding scene with my first android phone a couple years beforehand (the TMobile myTouch 3G running Android 1.6!!).

On a brief side note, that computer science class (thanks Jeff!) turned out to be incredibly formative for my tech/ professional life, as I learned:

  • Computer Science Basics
  • Python
  • VIM
  • How to use a UNIX shell

Given I work building data pipelines in Python and SQL, analyzing data in Python and R, and use VIM keybindings in every piece of software that will let me, I'd say this worked out pretty well.

The Journey

10 Years of On and Off Linux Usage

Year 0: Installing Linux for the First Time

After getting home from college after that semester, I was eager to tinker with computers some more. I had my own personal laptop at the time, but by my sophomore year of college I'd realized that I couldn't risk messing up my computer if the switch to Linux went badly.

Don't try to switch to Linux without a backup option for getting work done!

Back at home however, we had a shared family desktop that my mom no longer used anymore. After getting back for winter break, eager to do some tinkering while many of my friends were doing "externships", I sat down and did some Googling. The first thing I found was Wubi.

Wubi (software) - Wikipedia
Wubi - The Windows Based Ubuntu Installer

At first glance, Wubi seemed like the perfect option. I could install Ubuntu on the same part of my hard drive as Windows, without having to mess with manually partitioning the drive and actually reinstalling Windows. These types of things are still messy nowadays, but graphical tools have gotten a lot friendlier, and reinstalling an operating system is no longer the multi-hour affair it used to be before SSDs were common.

Unfortunately, while Wubi provided a great low-stakes introduction to Linux, I didn't use Ubuntu for long enough this time around to get to the point I might want to install it for real. Instead I eventually just ran into enough bugs and crashes that I gave up before even trying to use Wubi on my laptop.

This also marks the first mention of what will become a recurring theme throughout this post: I needed to boot into Windows to play video games, which meant I could either be lazy and stay on Windows, or I could wait 3-4 minutes to boot into Linux. You, dear reader, can guess how that goes.

Years 1-2: Experiments in Dual-Booting

Mid-2013, I picked up the original Surface Pro. Following the advice of many articles online, I now had an old laptop which I kept trying over and over to find a reason to turn into a "server". I set up the laptop to dual-boot Ubuntu and tinkered around a bit, but never did quite find a good use for it.

Media decoding didn't work well, so it didn't make sense as a Home Theater PC running Linux. I also couldn't easily use Network Attached Storage on my college's network, so that was out. Sadly trying to emulate retro games was also much buggier than on Windows. Eventually I gave up and left the laptop in the corner of my dorm room.

Fast forwarding a couple years, I had moved to Cape Town for 6 months as part of a study abroad/research program (the entire reason I started this blog!). I used some extra cash to purchase all the parts to build a new desktop PC whenever something went on sale over the course of the 6 months I was there. When I got home and built it, I finally had that extra backup PC.

At the encouragement of a few of the other engineering students, I followed a guide from the Surface Linux community and set up a linux dual-boot on my Surface Pro. Thanks to both the new SSD in the Surface Pro (which made rebooting fast) and my new desktop gaming PC (meaning I didn't need to boot into Windows for games), this became the first time I regularly used Linux on a day to day basis, mostly for homework that required programming.

Boot Menu on Surface Pro Showing 4 Boot Options: Ubuntu, Repair--Class, Windows Boot Manager, and Secure Boot--Class

Even having a separate gaming desktop though, a few things were lacking:

  • Media playback still didn't work very well, and playing something on Netflix was out of the question
  • The webcam didn't work, which meant I needed to jump back on Windows for video calls
  • Sleep and hibernate didn't work consistently, meaning I usually needed to fully power off the computer whenever I was done with it
  • Very rarely, I needed Microsoft Office

In the end, this era lasted until I purchased the original Surface Book while I was in graduate school. That Surface Book model took a long time to gain what I would call feasible Linux support (it barely even supported Windows), so I instead focused on setting up all my coding environments on Windows instead.

This time around, I tried to setup my Surface Pro as an HTPC, and despite improvements to desktop Linux, poor performance combined with poor media codec support doomed those attempts. Once again, I went back to using Windows full time.

Years 3-7: Linux for Work

Moving to NYC for a full-time job, I mostly gave up on tinkering with Desktop Linux. Admittedly, I built out a full FreeNAS server (now TrueNAS) and still managed the VM for my blog, which was scratching most of my tinkering itch.

My next foray into using Desktop Linux would actually be at work. After a couple years at NYCT, we needed a way to easily develop on Linux (to make sure our code and applications would run on our production Linux VMs). Since we didn't have many spare VMs for development, we also needed to be able to easily set up temporary servers to demo new tools/dashboards.

In 2018, Microsoft set up an easy to install Hyper-V image of Ubuntu. I figured out how to get this up and running on my work desktop, which gave us a way to easily work with docker images and give users access to draft dashboards/tools for them to provide feedback on their own time. The windows PCs were locked down, but the separate IP Address for the Linux VM meant it was possible to connect to it directly as a web server. We did some data pipeline development, but from 2019 onward mostly used it as a way to show off Streamlit dashboards before we had gotten all the performance issues ironed out.

While a little slow at times, this worked perfectly for development until a Windows update borked network connectivity on about half of our team's desktops if Hyper-V was enabled. I was sadly one of those users, so once again my time with desktop linux came to an end.

Years 8-10: COVID Boredom and Proton

Relatively early on during the COVID pandemic lockdowns, I saw a video from Linus Tech Tips with the clikbaity title of "Linux gaming is BETTER than windows?"

While you can imagine this isn't really true, I was intrigued. I used the excuse of sitting around all day to justify building a new gaming desktop. I still needed to install Windows since I also used this computer to connect to my remote desktop at work, but I decided I would make a good-faith effort to use desktop linux by default.

I went ahead and installed Pop OS, one of the two operating systems that LTT's Anthony recommended in the LTT video for gaming. Unlike previous attempts, I actually did find that gaming mostly worked out of the box! A few games like League of Legends or Herores of the Storm were more complicated to set up, but performance was great!

Pop!_OS by System76
Imagine an OS for the software developer, maker and computer science professional who uses their computer as a tool to discover and create. Welcome to Pop!_OS.

Overall, gaming on Linux compared to my last attempt was night and day. The Steam Workshop in Cities Skylines worked without issue. I could play Civilization IV online with friends. I could even stream games from my desktop to my laptop if I was hanging out on the sofa!

On the productivity front, the unofficial Onedrive client for Linux had also gotten a lot better over the years—important since I have a lot of extra free storage on Onedrive leftover from old promotions in the early cloud storage days.

Media playback for many more popular codecs also worked! HDR was (and is still) broken, but otherwise I didn't need reboot into Windows to playback YouTube or Netflix anymore.

With the right hardware, fresh installations of Linux can now do most of what you want out of the box

For the next two years, I defaulted to Linux for most of my daily work on my desktop. I eventually switched the Linux partion from Pop OS to Manjaro, and even set up a dual-boot of Manjaro on my Surface Book in late 2021. On the 6 year old machine, Linux actually ran far more smoothly and with fewer bugs than Windows did (minus the webcam, which didn't work).

Years 10+: All Linux All the Time (at home)

By mid-2022, my gaming desktop's 4 year old graphics card (an AMD RX 580) and my 6 year old laptop were both starting to struggle. I picked up a new case for my computer (a Formd T1), along with a new graphics card now that prices had finally started to go down (an AMD RX 6800). The second generation of the Framework Laptop came out around the same time, which promised pretty good Linux support out of the box, so I decided it was time to replace my 6 year old laptop as well.

I briefly considered dual-booting Windows again, but other than for the webcam on my laptop, I had been daily-driving Linux without too many issues for over a year now. In the end, the poor reviews of Windows 11 and the addition of even more telemetry into Windows sealed the deal, and I decided to make the plunge.

I ended up landing on Fedora 36 this time, since Framework promised most things would work out of the box. Other reviews online had favorable things to say about Fedora's trade-off between new features and stability too, and after a year using an Arch based distro (which leaned towards new features at the cost of stability), more stability sounded great to me.

The Verdict

Do you really need Windows?

Shortly before leaving the MTA, I got a call from my then-boss. He was looping me into a meeting with several other executives at NYCT. I didn't have time to get my Windows laptop set up, and I needed to be able to see someone screen sharing so I couldn't use my phone.

Many folks who've dabbled with Linux over the years know it's a bit of a nightmare scenario. Video calling requires a webcam, microphone, video encoding, and video decoding all to work with minimal fuss.

But you know what? It worked!

I plugged in my webcam, flipped on my microphone, answered the call, and was able to contribute without any issues. To me, this (combined with gaming performance) was good enough reason to make the switch permanent.

Lessons Learned and Recommendations

If you are considering whether you can make the switch to Linux, here are my thoughts based on the last 10 years:

  • Make sure you have a backup computing device before you make the switch. New Linux and Windows installers are much easier to use, but you don't want to have something urgent come up and still not have a working computer.
  • Even in 2023, being comfortable with the command line and knowing a bit of coding is still really helpful. You don't need to be an expert programmer or sys admin, but when your desktop operating system throws an error while upgrading to Fedora 37, you'll want to be able to run the commands manually instead
  • Pick your hardware accordingly, and be realistic with your expectations.
  • Start with Pop OS/Ubuntu, or maybe Fedora. It's very easy to google problems, and more things will work with fewer bugs.
  • With the correct hardware, media playback is mostly okay these days, other than HDR
  • Battery life remains significantly worse (often 20%+ less battery life) under Linux, at least on the Framework (which didn't have great battery life to start with)
  • Don't worry too much about basic productivity work. Inkscape is a real alternative for work with vector diagrams, and GIMP/Krita are good enough for very light image edits. That said, if you really need the creative suite, just buy an M1 Macbook. If you don't like LibreOffice or ONLYOFFICE, Google Docs is still perfectly fine.
  • With an AMD GPU, offlne games "just work" 99% of the time with almost no performance drop compared to Windows. Online games are much more hit or miss though.