My journey into GNU/Linux
a developer's story
Intro – Hello Computer
I have not always been a GNU/Linux user and enthusiast. Growing up, we never had a computer in our home, and I must have been between 13 and 16 years old when I first got to use a computer, some time in the late 1990s / early 2000s. In those days, Windows 98 was the OS of the day (Although I do remember using a PC that ran Windows 95!), and Apple had their fancy iMac G3s!
Why do I say GNU/Linux, instead of just Linux? Well, ask Richard Stallman! TLDR; We know that "Linux" is the term used more often, but the accurate name is actually "GNU/Linux". You can also read more about this on linuxjournal.com and on wikipedia
It was only some time 2005 that my parents bought a family PC, and it came with Windows XP. Nobody used the computer at home, so I got it and went with it to University, where it would be more useful. I cannot remember the detailed specs of the PC, but I think it had 256Mb of RAM, a 40Gb Hard Disk and an Intel Celeron CPU. Well, it turns out this was more than enough for me to experiment with computers and learn a whole lot of stuff, including hardware upgrades, and even building PCs. Breaking the OS was not uncommon, I learnt how to install Windows, to partition hard disks and keep your important data on a non-system partition, to deal with things such as BSOD ... so may things – it was so much fun! Okay, enough with Windows, time for something GNU ...
Now, when people who share a common interest meet, their dialogue will most certainly not be complete without touching on that common interest. Between 2004 and 2010, I was studying at the Copperbelt University in Kitwe, Zambia, and would often travel to Lusaka, our capital city, 360 km away. While in Lusaka, I would often stay at Nchimunya's place. Most of what I know concerning computer technology, I know it because of this dude! He is the one who introduced me to GNU/Linux, Android and a whole lot of other technologies. He is one of the people that has had a tremendous influence on my technological choices. Whenever I'd go to his place, I'd be fascinated by his cool gadgets and cool stuff on his computer! I decided to try out GNU/Linux for myself, and the rest is history!
The first distro I tried out was Mandrake Linux, which I copied on CDs from Nchimunya. It must have consisted of 3 CDs, and I remember having a hard time installing it, and understanding this "strange" new technology; different file systems, SWAP, the GRUB bootloader, BASH, ... I must say it was a nightmare at first, and I didn't keep Mandrake Linux for long on my computer. In those days, internet access was scarce. We had no internet access within the student residence, and I had no smartphone! If I needed internet access, I'd have to go to the Computer lab (where the internet connection was not always good, to say the least) or to an Internet cafe. I had the desire to learn GNU/Linux, but I found it hard, and there was nobody in close proximity to help. I temporarily forgot about GNU/Linux, and continued using Windows.
By the time I was leaving University in 2010, I had a very limited knowledge of GNU/Linux, but I had not lost interest. Because of my growing interest for computer programming and open source software, I was naturally drawn to the world of GNU/Linux. Somewhere around 2012, I started learning how to build websites using Drupal and Wordpress. I had to get the website files from my computer to the hosting provider's server – and GNU/Linux knowledge would come in very handy in such situations! I therefore saw it necessary to have GNU/Linux installed on my computer. I had to maintain a dual-boot setup, because I was already using a number of software that wasn't available for GNU/Linux, and thus couldn't afford to not have a Windows OS! Whenever I came across a new distro, I would try it out and play around with it. My distro choice was usually influenced by either Distrowatch or Nchimunya's recommendations (I don't know many people who use GNU/Linux in my world!). Some of the distros I have tried out include the following:
- Mandriva Linux (natural option for someone coming from Mandrake Linux!)
- OpenSUSE (didn't like it, so I didn't use it for long!)
- Ubuntu (I didn't like the Unity desktop, so I explored the other "flavours" such as Ubuntu GNOME Edition, which I actually liked)
- Debian (I didn't find it suitable for use as a daily driver because it had older versions of software, that were considered "stable")
- CentOS (didn't like it as a daily driver on my laptop, but used it on a VPS for a while)
- Linux Mint (I actually liked it, and used it for some time (2012 - 2014)
- Arch Linux (I liked it very much, until one day I upgraded a couple of packages and broke the system!)
Between 2011 and 2016, I hopped from one distro to another. During this time, Linux Mint is the distro I actually used for the longest period. While Ubuntu has usually been in the limelight, and often recommended to new GNU/Linux users, I didn't like the Unity desktop, and thus explored other alternatives. Nchimunya recommended I give Linux Mint a try, and I fell in love with the Cinnamon desktop! However, along the way, I got bored using Linux Mint, and started looking for something else. In settling for a distro, I looked at, among other things,
- support for a wide variety of packages. Most GNU/Linux software packages tend to support Ubuntu or Debian-based distros, so my inclination was towards such distros
- security / stability. Gotta use a distro that is stable and mature, has a good track record and is actively developed
- the UI. I always like my Desktop to look pretty
- community. If I encounter problems, it should be easy to find help
- customization. It should be easy to tame and personalize the system
I got to learn of the other Ubuntu "flavours", and after experimenting, decided to stick with Ubuntu GNOME Edition (16.04 LTS). I was very happy when GNOME became the default DE for Ubuntu, beginning with the 17.10 release! I think the other reason I settled for Ubuntu was because I had transitioned from using "shared hosting" for websites, having shifted to setting up and configuring my own VPS. At the time, I considered it to be counter-productive and confusing to be dealing with different versions of GNU/Linux, so I thought it would be easier for me to settle for "one distro to rule them all" – whether on my laptop or on a VPS. And so, from about 2016 or so, I settled on using LTS versions of Ubuntu everywhere. Once again, I still maintained a dual-boot setup on my workstation, primarily because of my day job, which has a heavy dependence on several Windows software and services.
Addicted to GNU/Linux
Because of using GNU/Linux, I became accustomed to the CLI, in particular, BASH. On a GNU/Linux system, it's easy to batch process a bunch of files. For example, if I want to resize a lot of images, say, from a digital camera, I would do the following:
for img in *.jpg; do convert -resize 1280x $img ../resized/$img; done
I wanted to be able to do the same thing on a Windows OS. In my search for a solution to this problem, I came across Cygwin, and have been using it for about a decade now! I find it very unpleasant to use Windows without Cygwin installed. While Cygwin has its limitations, I find it good enough for my frequent use cases, which include, SSHing into remote servers, using standard GNU/Linux tools like
cp, etc., running BASH functions, loops, and so on, as well as some CLI tools such as ImageMagick, pdftk, pngquant, etc. I've heard a lot of talk about WSL, but I've never really explored it. Maybe one day I'll look into it.
To upgrade, or to switch; which is which?
Anyway, fast-forward to 2020 ... I have a dual-boot Windows 10 & Ubuntu 18.04 setup on a Lenovo ThinkPad X240, and I also have custom built PC with only Windows 10 installed (I didn't have the time to do a dual-boot, but had started experimenting with setting up Ubuntu 18.04 in a virtual environment using Hyper-V). Ubuntu 20.04 is released, and I'm wondering whether I should upgrade or not. I've been comfortably using Ubuntu for 4 years straight, and suddenly, I am feeling adventurous, I feel the need to explore yet another distro! Because I hope to build cross-platform tools some day, I thought it would be good to appreciate other distros besides Ubuntu & Debian based distros in general. The List of Linux distributions on Wikipedia categorizes the distros based on the major distribution they are based on, or the package management system they are based around. These categories are
- Source based
I decided to go back to my GNU/Linux roots and choose an RPM-based distro. Fedora seemed like a nice choice; Fedora 32 had just been released, I knew a couple of people in my city who were using Fedora, and even Linus Torvalds himself was using it! So, I backed up all my stuff, downloaded the Fedora 32 Workstation ISO, and installed it on my ThinkPad X240.
Well, here we are
I've been using Fedora 32 for about half a year now, and I'm loving it! This time, no dual-boot – it's just GNU/Linux and that's it. Of course, the custom built PC still runs Windows 10, but I primarily use it to run Windows-specific software (AEC software, games, etc.) or test some development tools, among other things. On the VPS side of things, I'll still stick with Ubuntu, and have already started shifting from Ubuntu 18.04 to 20.04.
So, for now, it's Fedora for my workstation and Ubuntu for servers! However, GNU/Linux is about adventure, so, maybe I'll make changes in the future, God willing. If I do, I'll probably write about it!