My Journey from Windows to Linux
My transition from using Windows to Linux was anything but a head-first approach. To summarize, here is a linked list crudely representing my “journey”:
[ Windows 10 ] -> [ Ubuntu VM ] -> [ Ubuntu ] -> [ Manjaro ] -> [ Arch Linux ]
My development workflow on Windows primarily consisted of Visual Studio Code and the Windows Terminal. Honestly, it was great. Visual Studio Code is a great editor with a huge library of extensions and the Windows Terminal is just as customizable. These programs sufficed for quite a while until I started using more external libraries and my projects, naturally, increased in scale. This was problematic because I found it difficult to natively install C++ libraries on Windows (probably because I wasn’t using an actual IDE). So, I jumped ship and used MinGW and Cygwin soon after for a while. I spent quite a while using Cygwin: it supplied a POSIX environment to develop with and made installing libraries much easier. This was also the time when I started getting familiar with the Unix filesystem and some general Unix utilities. Cygwin allowed me to use libraries not readily available on Windows such as ncurses. I was able to compile programs that worked in both a POSIX and Windows environment, which was awesome!
My main frustration with Windows was the slow compilation times.
So I moved.
The next node of the linked list is an Ubuntu Virtual Machine. With VirtualBox and an Ubuntu ISO, I booted it up hoping to find a sanctuary of fast compilation times. This was true for the most part. The transition from Windows to Ubuntu was quite smooth because I was already familiar with the command line from my experience with Cygwin. Using the VM exposed me to the Advanced Package Tool (APT), a package manager I still actively use on other machines to this day. It is straightforward and features simple subcommands. At this point, my workflow was mainly terminal-based and I was using Vim full-time.
This was also around the time I discovered window managers, in particular, I started using bspwm. I am unsure as to why I chose bspwm out of the countless other alternatives, but I really enjoyed using it nonetheless.
Of course, even before starting up the VM, I knew that it would be temporary. It felt as though limiting the VM to 3 CPU cores and 8 GB of RAM did not do justice…
Back to 4 cores and 16 GB of RAM!
Seeing as I already had experience with an Ubuntu VM, I decided to dual-boot (for the first time) Ubuntu. As expected, the transition to a dual-booted system was very easy and I basically had the same programs configured the same way. However, unlike the VM, I was able to comfortably use a browser with the new Ubuntu install. Not experiencing lagging every few seconds was a glorious experience.
I was entranced by Ubuntu, but my interest soon shifted towards another pearl in the ocean of Linux distributions: the Arch User Repository (AUR)…
I didn’t leave Ubuntu with a bad taste, but the AUR just seemed too good to pass up.
As a distribution, Manjaro strikes a balance, featuring both an easy installation and an awesome package manager.
I initially installed the XFCE version of Manjaro to leverage the GUI installer, but I quickly ditched it afterward.
With a huge number of packages that are just a
sudo pacman -S away, I was able to try out a bunch of programs unavailable on Ubuntu.
However, I did come across some issues. Namely, I wasn’t able to get the latest releases of some packages which sometimes spiraled and caused other problems. Also, I didn’t really like how a lot of my system was preconfigured for me with a bunch of random packages I never installed.
Arch Linux. The tail node of the linked list (for now).
After spending quite a lot of time using Manjaro and Ubuntu, I felt ready to make the jump to Arch Linux. I was apprehensive at first but I was assured by the comprehensive and clear-cut ArchWiki and followed its installation guide. After making some backups and following the guide, to my surprise, I successfully booted into Arch Linux in around 3 hours.
Here is a summary of the steps I took to install the distribution:
1. Backup Manjaro system [43 minutes] 1.1 Transfer backup through SSH 2. Decrease partition size of Ubuntu [33 minutes] 3. Boot into Ubuntu and decrease the size of Manjaro partition [35 minutes] 4. Boot from ISO [5 minutes] 5. Pre-installation [5 minutes] 6. Installation [15 minutes] 6.1 fdisk 6.2 Partition formatting 6.3 pacstrap 7. Configuration [34 minutes] 7.1 fstab 7.2 chroot 7.3 Time zone 7.4 Localization 7.5 Network configuration 7.6 Root password 7.7 Boot loader 8. Reboot [2 minutes] 9. Post-installation
Here are the sizes of my 3 partitions:
Thus far, maintaining my Arch system has been a breeze. I thoroughly enjoy being able to access the latest (and greatest) packages, maintaining a low package count, and having a lot of control over my system. However, I still have my eyes peeled for any worthy opportunity to jump ship and extend the linked list.