Of late I read an article from users who have finally made the switch to Linux. I am amused as well as found it fun to read through their experiences as well as remember what it was like when I had made the switch from Windows to Linux. I will have to agree that even now, for gaming purposes, I still use Windows and do miss out some of the software like MS Office, but there were a few things which made me to finally switch. I will lay out all the things that had made me to stick with this operating system.
By the way, the cover picture is something that I found on a Google search and added it here. If notified, I shall remove it as soon as possible
This was the year I was in College and that's when we had to take the mandatory C language exercises. I was not that much in to C as I was more interested in core code - like assembly. I was interested and I would like to point out here that I liked reading code in assembly, but was not aware as to the complexity of building bigger software in assembly. I have been coding a bit here and there in Windows 2 years prior with nothing to boast about. I was, in the strictest terms, still learning and a complete beginner.
It was at this time that I was made acquainted with Linux. We were asked to use RHEL 4.2 which came out in 2005(I am guessing this was the one as per this link. We were asked to delete a few logical drives and then we were shown how to install Linux while dual booting with Windows XP(Service Pack 2, Build 2600).
The only thing that we knew at that point of time was to open up the terminal as well as a text editor and then type in our code and then run it using
gcc <filename>.c. That was the whole extent of our brush with Linux. It would have stayed so for me as well. However, I was curious, rather a very good friend of mine was very curious. You see, me and this friend of mine(who doesn't want to be named so I will be using his programming name) - nb0dy were inclined towards the technical things. So, nb0dy figures out how to mount the drives from Windows and explore the files from inside RHEL. Given this, we, not having made the final switch to Linux, used to practice C code in Windows and then during class we would be mounting the drives to use the practice code and figure out how we solved a particular problem.
This was fine and would have remained till this point had it not gotten the interest of others. I will agree that mounting a drive or a partition in Linux is not something dazzling, but for us it was. A little attention from others acts as a catalyst. We got that, so we created a launcher script(again, nothing great, but for the guys who just started working with Linux, it was huge) and gave it out to the rest of the class. Life became easy for everyone.
But, RHEL was not user friendly. We tried to see if we can keep the operating system after our course of programming was over, but to no avail. It was, for some reason, not clicking. There was something that was stopping us, especially for the 2 guys who are figuring out ways in Linux having used Windows from the very start of using computers.
So, what could we do? Give up? Many did give up, they picked up Windows XP as their final OS and formatted the system after taking a backup(in DVDs!!!).
The struggle for a good Linux distribution continued for us. We had understood that this OS had good opportunities, but for some reason it was not working as it was supposed to. Why? Well, for starters, no video player - especially VLC Media Player was something which we used a lot. Apart from that a good media player for listening to music while programming. This was something that was very much required for us, we were getting into programming and listening to music helped a lot. Apart from that, there was also the case of reading documents(*.doc and *.pdf files). We did not find a suitable way to read these documents, the Web browsers during that time did not have the capacity to show documents right on the web as it does now. We had also started using Firefox and Chrome and liked the browsers. We were not able to install them on Linux because we were not able to access the internet.
So, the first thing that we did was to install the right drivers for BCM43xx series network card that was present on our system. Somehow we got the drivers and then installing them became a huge issue. Some may argue that we could have built them from scratch and then installed them and set them up according to our own requirements, but here is my counter-argument, we did not even know what a package manager was let alone install packages using that. We were just looking up web pages and started to installing however we could install the packages we downloaded. Remember, our mindset was still from the Windows user. So everything that we wanted to use had to be downloadable and then double clicked to be run. Pretty inane as it sounds to me, the one who is writing this post now.
So, we started looking for other options and then found one solution - Ubuntu. Apparently the community suggested it to people who were starting since the solutions provided sometimes suggested them. StackOverflow had not yet come up and hence we were reading all forum posts and performing the steps mentioned there. Ubuntu 7.10(Gutsy Gibbon) was something we could get our hands on - because we were avid readers of Chip, the tech magazine. We installed 7.10, but soon found the same issue with our BCM43xx card, no in built support at that time. But luckily we got a few things working, we could get a PDF viewer installed with a simple command. This is where we came to understand that there is a package manager now and that the one that Ubuntu had built in was aptitude. This was awesome!! This was amazing!!! So, we should be able to install every software that is there using apt! Elated we were, but then the problem hit, how do we play videos and music?
The solution was to use Totem video player, something that was present and we could play music, but not mp3 files. Eh? What do we do now? We had a collection of music in mp3 format which we wanted to play, but we could not. What was the solution? Convert from mp3 to the open source format? For some reason we did not like that as well. But, we did not give up on the Gibbon as well. We installed the next version since it was 2008, we used Ubuntu 8.04(Hardy Heron).
This version was awesome, but the same problems with WiFi, Bluetooth and players(along with mp3) remained. We found out the non-opensource plugins available(we called them bad plugins because they had the word 'bad' present in them). These were required for mp3 files. We got them for free despite it being told that they are not free. No idea at that point of time, we just installed them and we had mp3 support now. We got a player and started using Linux, but viewing as well as editing documents were a problem even at that time. The documents looked very peculiar and somehow even this one was not up to the mark. Especially setting up libraries was a problem for us since we were into embedded programming and Robotics and we were not able to install the libraries as well as link with them properly. Too bad, we still used Windows and sometimes Linux.
It was in this period that we understood that we were always using an older version of Ubuntu and we ought to go for LTS versions. In the interim, we had also tried out Fedora, Mandriva and Slackware(Kali) just for fun. So, we again searched for Ubuntu LTS version and found out Lucid Lynx(10.04). We installed it, and it had EVERYTHING!!! Document viewer had the capacity to read PDF(s) as well as CBR files(for manga and comics).
Point at the music file and it plays, we had rhythmbox in there. VLC media player was now available from the repositories. Enable Universe and Multiverse and you have a lot of more repositories present from which software can be installed.
No need to use Text Editor now, Code Blocks was there. GCC was always present, but we did not know which IDE to use - we were using Borland Compiler and then Bloodshed compiler with DevCPP. Now we could use GCC itself. This was amazing for us. Also there was the wobbly windows which we liked a lot. We configured Compiz and added more visualization to our OS. Basically, this was the point when we started ricing our system. We understood that it was time for us to make the switch and we did switch to Lucid Lynx.
We continued using UI based tools for some time before nb0dy left for MS and that's when the next shift in usage came up.
So, during this period I got into a job and nb0dy went abroad to pursue MS. It was during this period that I had started to get the hang of installing software from packages as well as understanding the various problems caused by broken packages as well as the solutions for the same.
During our calls, one day I was told by nb0dy to start using Vim/Emacs. He was using Vim and asked me to give both of them a try. This was the period when we got into more core things of Linux, moving more and more towards the terminal based applications as opposed to GUI applications. I found Vim easy to use as compared to Emacs(Again, this is a personal choice, people are free to choose whichever text editor they feel at ease using). I was more close to the keyboard, typing my code more and more as opposed to copying and pasting code. As a result, Vim appealed to me.
Vim took some time to master, the basics that is - quitting, opening up files, buffers and basic navigation using hjkl keys. That led us to the next thing, how do we compile after we have written the code as well as test it. We were never told about gdb, we were always content with debugging using print statements. While we were doing this, we also got into using plugins and tried out quite some number of them. Having riced up, we finally found out that more plugins means more amount of time taken for Vim to start, so I started to create a version for my servers, one for the raspberry pi as well as one full blown with all bells and whistles for the systems that I have.
This was also the period when we discovered more and more tools, autotools for building and testing, valgrind, ASAN and the like. Make and CMake was something that started to fascinate me a lot and I was amazed that Vim allowed me to work so seamlessly without causing a hindrance to my thought process.
While ricing, I learnt one more thing, using software built from source code, as well as building software from source code, updating them with the latest code directly from GitHub or other respositories on the web.
It was in this phase, that I understood that more than distro hopping, I was more interested in getting an LTS release preferably and then having just a terminal with 256 color support and UTF-8 for the glyphs that I use for beautification.
Now, I mostly look for the terminal and install the following applications:
- Cmus (terminal based music player)
- irssi (IRC client)
- alpine (mail)
- htop (alternate version of top, has colors)
- GDB (debugger)
- TeX (for creating beautiful documents with markup language)
- Midnight Commander (file manager)
- tmux and/or screen (terminal multiplexer)
- valgrind (for C and C++ program debugging)
- and a few custom scripts which I have written to help myself get various tasks done.
With all those at my fingertips, it is enough for me as of now to work on the projects that I like. Things have become more and more easier for me as I have kept on using Linux.
The only suggestion that I can give others who are about to start their journey on Linux is to stick to a user-friendly distribution or keep changing until it hits the right spot for you.
Also, one more thing, keep learning from the web, use a VM if unsure as to what might happen if you find a command and you are not supposed to run it on normal user perspective.