Why I Switched to Linux
My Journey from Windows to Ubuntu
It’s been almost two months now since switching my personal desktop to Ubuntu 18.04 from Windows 10. So far, this has been a great decision and improved my productivity significantly, but if I’m 100% honest with myself, there are a few pieces of software I still miss. In this post, I’ll outline some of the decisions and assumptions I’ve made along the way.
Why not just use VirtualBox?
It just isn’t the same…
I did. For a very long time. Virtualbox is still a great tool that I use often at work for testing out workflows that require a linux environment. I felt like I was missing out on a few aspects of the Linux experience by not installing the OS natively, such as networking.
Using a GPU with VirtualBox was a nightmare
In fact, I don’t think I ever actually figured out how to access my GPU from within VirtualBox. I’m sure others out there have had success with utilizing their GPU from VirtualBox, but I wanted to learn how it worked the Linux way, not necessarily the VirtualBox way.
Avoid Distraction
There are some distractions (mentioned later in this post) that are directly tied to Windows that I wanted to avoid entirely. Also, I didn’t feel like going through the partitioning steps again. I haven’t tried setting up a shared disk drive between Windows and Ubuntu and I didn’t want to split my storage 50⁄50 between either environment.
Reduce the Barrier from Dev to Production
Prior Workflow (pre-Linux):
- Build the development enviroment I need locally on Windows
- Develop the actual code for the project (after solving the problem first, of course)
- Spin up a VM server on the cloud
- SCP the code to the server (we’re talking small projects here, no need for dev-ops)
- Troubleshoot the dependencies mismatch from Windows to Linux
Containers (Docker containers, more specifically) go a long way to fix this issue, and I understand that. I think there is something to be said for knowing, for example, that I will need libblas-dev
and libcurl4-openssl-dev
for this project, because I had to install those locally as well.
Same Terminal, File Structure, Env Variables
I also benefit from using the same terminal in both dev and “production.” Gitbash is a useful tool, but not as full-featured as a real Linux terminal. The options you’re left with from there are PowerShell (still on my list of things to learn one day) and the good ol’ command prompt. I don’t want any space in my brain reserved for remembering clear
vs cls
or ls
vs dir
.
Less Distractions
Side Projects vs Gaming
The immediate gratification of gaming (Overwatch, mostly) overcame the long-term fulfillment I knew I would experience if I could stick with a side project and power through the difficult parts. Eliminating (or greatly inhibiting) the ability to game on my PC has made me significantly more productive. Also, it is much easier to make that decision once (install Linux) rather than have to make the decisions (play games or be productive) every time I turn on my PC.
Oh, and I still get my FPS gaming fix every once in a while with Insurgency - in moderation, of course.
What I Miss…
It would be misleading to only talk about the benefits and not mention any of the costs of this decision.
PowerPoint (and Visio)
PowerPoint is a great tool for quickly mapping out simple architecture or data-flow diagrams. The ability to save animations as gifs is a great tool for educational visualizations as well. I have yet to explore exactly what is possible with the Libre-Office suite, but my expectations are low.