My Journey from Windows to Linux

Edward Wibowo,

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 ]


Windows Workflow

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.

Ubuntu Virtual Machine

Ubuntu VM Workflow

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…


Ubuntu Workflow

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)…


Manjaro Workflow

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

Arch Linux Workflow

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:

/mnt/boot500 MB
/~200 GB

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.