How looking beyond defaults helped me learn about cool stuff
Tags: watercooler
Published: 2019-07-22 20:14:31

*[This story was originally posted on [my personal blog](http://ismail.teamfluxion.com/diary/20190712/How_looking_beyond_defaults_helped_me_learn_about_cool_stuff)]*

In this current age of technology saturation, almost every task can be performed with close to an infinite number of ways with hundreds of tools to select from. In the last few years, I've developed a new hobby, which is comparing tools, learning about them and trying to introduce them into my toolset to replace the already existing ones. Granted that many people I know would rather spend that precious time debating about political affairs on social media, sharing random videos over social messaging groups or binge-watching a useless television series, but hey, everyone is free to spend their time on what they want and so am I!

Defaults are there for a reason. Sometimes they are there to promote a particular product, like the [Internet Explorer](https://en.wikipedia.org/wiki/Internet_Explorer) as the default web browser in [Microsoft Windows](https://en.wikipedia.org/wiki/Microsoft_Windows), or due to a sponsor, or it's really a better alternative like [Ubuntu](https://ubuntu.com) switching from [bash](https://en.wikipedia.org/wiki/Bash_(Unix_shell)) to [dash](https://en.wikipedia.org/wiki/Almquist_shell#dash:_Ubuntu,_Debian_and_POSIX_compliance_of_Linux_distributions) as the default shell. Defaults can also be for if you're the kind of person who would rather use something that simply works, than to spend hours (days, weeks or even months) of your valuable time just to choose one from a growing set of options, specifically if you believe that at the end of the day which one you choose won't matter all that much.

This post mentions a few of those defaults that I replaced with opinionatedly better alternatives and learned so much in the process, and lists them in an almost a chronological order.

## Windows Mobile Pocket PCs over Nokia smartphones

I come from a time when mobile phones were way more than just platforms to host [WhatsApp](https://www.whatsapp.com), [TikTok](https://www.tiktok.com), and [PUBG](https://www.pubgmobile.com). They used to be gadgets using which one could make a phone call or send text messages, and during the early 2000s, one could run [terminals](https://en.wikipedia.org/wiki/Computer_terminal), write code and run web servers from.

[Nokia](https://www.nokia.com) used to be 'the phone brand' even after being a little expensive in its product line as compared to the other rival brands in the cellphone market at that time. From Nokia's Series 50, [Series 30](https://en.wikipedia.org/wiki/Series_30) and [Series 40](https://en.wikipedia.org/wiki/Series_40) to [Series 60](https://en.wikipedia.org/wiki/S60_(software_platform)), [Series 90](https://en.wikipedia.org/wiki/Series_90_(software_platform)) and [Series 70](https://en.wikipedia.org/wiki/Series_70_(software_platform)), to [Windows Mobile 5](https://en.wikipedia.org/wiki/Windows_Mobile_5.0), it was a 'journey' full of learning for us. [Windows Mobile](https://en.wikipedia.org/wiki/Windows_Mobile) (not [Windows Phone](https://en.wikipedia.org/wiki/Windows_Phone)) was not for the mainstream crowd, except for a few models from [HTC](https://www.htc.com) that made it to the general audience. Imagine needing to go to 'Control panel' to change the ringtone, as opposed to switching profiles like 'General', 'Vibrate' and 'Silent' on your smartphone from an easy access menu.

Having a super-powerful (and yet half-baked) mobile platform as the daily-driver was not only fun but also empowering in a sense. The hardware will sound too weak compared to today's trend with processors running at a couple of hundred MHz, with about 32 to 64 MBs of RAM and similar internal storage capacity using a [QVGA](https://en.wikipedia.org/wiki/Graphics_display_resolution#320_%C3%97_240_(QVGA)) to [VGA](https://en.wikipedia.org/wiki/Graphics_display_resolution#640_%C3%97_480_(VGA)) resolution [resistive touch-screen](https://en.wikipedia.org/wiki/Resistive_touchscreen) display. Being able to sync email messages on Outlook Mobile before mobile internet (and WiFi) was popular, transferring data between computers and [Pocket PCs](https://en.wikipedia.org/wiki/Pocket_PC) using [Microsoft ActiveSync](https://en.wikipedia.org/wiki/ActiveSync), installing newer versions of Windows Mobile (including custom ROMs downloaded from developer forums like [XDA Developers](https://www.xda-developers.com)), creating and joining WiFi networks for FTP and HTTP transfer between our devices, all that was just awesome.

## Google Chrome over Internet Explorer

Back in early 2012, I found it hard to understand why one would install a third-party web browser on their computer when almost every personal computer (assuming to run Windows) on this planet had Microsoft Internet Explorer pre-installed. Sure that was a cool thing and provided tabbed browsing way before IE, but why even bother?

Halfway through the year after getting my first front-end centric software project assignment (and being made fun of at my team for using IE), I had to switch to [Google Chrome](https://www.google.com/chrome) after quick realization of the difference it made for the user as well as for a developer. The Developer Tools in Chrome were so much better (something I didn't even know existed in a web-browser and just hitting F12 summons it up on screen) and Chrome 27 (if I remember correctly) was light-years ahead of IE9 at that time. I also tried Chromium for a while on Linux, due to its better availability on package repositories.

Today, Chrome (version 75 as of the time of this writing) is not just a web-browser but serves so many different purposes like being an instant JavaScript [REPL](https://en.wikipedia.org/wiki/Read–eval–print_loop), a network audit tool, a screen capture application, and even a text-editor rival to a certain extent.

## Linux (and Mac) over Windows

Coming from a [Windows](https://en.wikipedia.org/wiki/Microsoft_Windows) background where almost all computers I came across ran Windows, switching to [Linux](https://en.wikipedia.org/wiki/Linux) was very scary, considering the number of applications we depended on for our daily workflow. The biggest hurdles included [Visual Studio](https://en.wikipedia.org/wiki/Microsoft_Visual_Studio), [GoldWave](https://en.wikipedia.org/wiki/GoldWave), [Nero](https://www.nero.com), and a bunch of games that could only be run on Windows.

Beyond the initial hesitation for the switch I finally made in early 2013, Linux soon became my new fascination and also an important part of computing for me. I got to explore a variety of distros like Ubuntu, [Kubuntu](https://kubuntu.org), [Xubuntu](https://xubuntu.org), [Lubuntu](https://lubuntu.net), [Linux Mint](https://linuxmint.com), [Debian](https://www.debian.org), [NetRunner](https://www.netrunner.com), [Elementary OS](http://www.elementarynow.com), [Korora](https://kororaproject.org), [Zorin OS](https://zorinos.com), [openSUSE](https://www.opensuse.org), some more that I do not remember and finally [Fedora](https://getfedora.org), running [desktop environments](https://en.wikipedia.org/wiki/Desktop_environment) like [Unity](https://en.wikipedia.org/wiki/Unity_(user_interface)), [KDE](https://kde.org), [XFCE](https://www.xfce.org), [LXDE](https://lxde.org), [LXQT](https://lxqt.org), [Gnome 2](https://en.wikipedia.org/wiki/GNOME#GNOME_2), [Gnome Shell](https://www.gnome.org/gnome-3), [Pantheon](https://wiki.archlinux.org/index.php/Pantheon), [Cinnamon](https://en.wikipedia.org/wiki/Cinnamon_(Desktop_Environment)), [Mate](https://mate-desktop.org), and more, on [window managers](https://en.wikipedia.org/wiki/Window_manager) like [Open Box](http://openbox.org/wiki/Main_Page), [Enlightenment](https://www.enlightenment.org), [i3](https://i3wm.org), etc. Compare that to working in [Windows 3.1](https://en.wikipedia.org/wiki/Windows_3.1x) [Windows 95](https://en.wikipedia.org/wiki/Windows_95), [Windows 98](https://en.wikipedia.org/wiki/Windows_98), [Windows XP](https://en.wikipedia.org/wiki/Windows_XP) or [Windows 7](https://en.wikipedia.org/wiki/Windows_7) where there is apparently no transparent concept (or flexibility) of a desktop environment or a window manager at all. Not to forget, trying out different Linux distros every couple of weeks without losing all your data was just another perk of being in the Linux world.

My current favorite workstation configuration is [Fedora LXQT](https://spins.fedoraproject.org/en/lxqt) running i3, that mostly involves switching between [Terminology](https://www.enlightenment.org/about-terminology.md), [Emacs](https://www.gnu.org/s/emacs), [PCManFM](https://wiki.lxde.org/en/PCManFM) and Google Chrome, sandboxed inside a [VM](https://en.wikipedia.org/wiki/Virtual_machine) on my [MacBook Pro](https://en.wikipedia.org/wiki/MacBook_Pro) running [Mac OS Majove](https://www.apple.com/macos/mojave).

## Emacs over Visual Studio

[Visual Studio](https://visualstudio.microsoft.com) was at one time the most used application on my computer during my days as a [DotNet](https://dotnet.microsoft.com) developer and was one strong reason to stay on Windows. Even after I switched from Windows to Linux, I could not give away Visual Studio and used to work with a VM running Windows 7 Professional just for my development stuff. That is before I got introduced to Emacs out of a random conversation at work that changed a significant part of my development (and non-development) workflow.

Emacs took over my workstation at work and my personal computer at home and it still remains one of the most used software across my computers, apart from Google Chrome and a terminal. I ended up creating [several](https://stable.melpa.org/#/?q=myterminal) [packages/plugins](https://marmalade-repo.org/profile/myTerminal) for Emacs, creating a [few](https://github.com/myTerminal/super-emacs) [starter packs](https://github.com/myTerminal/ample-emacs), writing a few blog posts, creating [a learning repo on GitHub](https://github.com/myTerminal/world-of-emacs), creating [a few videos on YouTube](https://www.youtube.com/user/tfIsmail), presenting [a few talks](https://github.com/myTerminal/presentations/tree/master/why-use-emacs-in-2017) at almost all of my workplaces and I do not have a count for how many co-workers I have bored with it.

## ConEmu/Hyper over Command Prompt

It is an established fact all over the web that [Windows Command Prompt](https://en.wikipedia.org/wiki/Cmd.exe) is probably the most boring featureless terminal out there. It did improve by a great amount in [Windows 10](https://en.wikipedia.org/wiki/Windows_10), but things as simple as copy and paste were not available directly until recently, let alone features like better command history, auto-completion, etc.

Having worked with a variety of Linux terminals, I do not find Command Prompt at all usable, not even to run a single command. Starting with a search to replace [Guake](guake-project.org), a cool dropdown terminal I used on some Linux setup a few years back, [ConEmu](https://conemu.github.io) was a pretty decent alternative with not only the drop-down terminal but also features like multiple tabs to work with. I remember someone at work having a tiled layout with terminals on ConEmu but I never explored that feature.

[Hyper](http://hyper.is), a fairly new terminal built entirely on web stack feels fresh, responsive and is very customizable with a configuration file and many plugins that sort of work like [NPM](https://npmjs.com) packages. Hyper is the primary terminal on my Mac but I've not been able to make it work as good on my Windows workstations at work, and fall back to ConEmu. I use Terminology on Fedora though which is another awesome terminal for Linux, with blazing fast response, cool customization, etc.

## i3wm over mainstream desktop environments

Out of all the desktop environments that the Linux distros on my computers used to come with, KDE was the one I used the most. Being probably the most feature-rich among other options, it has always been called the slowest environments out there until recently, when they made significant improvements in its speed and efficiency with [version 5](https://kde.org/announcements/plasma5.0). My quest for a fast desktop environment made me travel through a variety of options like XFCE which was fast but not so pretty, LXDE which was just too basic to be used as my primary environment, Pantheon that came with Elementary OS but had issues with my system specifically around being stable enough to be used, Enlightenment that was cool and fast but not so bug-free.

After trying all [stacking window managers](https://en.wikipedia.org/wiki/Stacking_window_manager) I could, I learned that a [tiling window manager](https://en.wikipedia.org/wiki/Tiling_window_manager) was what I was looking for and after some research and experimenting, I settled for i3. After the usual initial friction, i3 felt so natural to me, it almost acted like an Emacs outside of Emacs. It not only helped me achieve a fast setup but also enabled me to operate my computer exclusively with keyboard shortcuts, just as I would do within Emacs. This also helped me with my [carpal tunnel syndrome](https://en.wikipedia.org/wiki/Carpal_tunnel_syndrome) in my right hand which (at the time of this writing) has been running since over seven years now.

## Telegram/IRC over WhatsApp

WhatsApp has been haunting me since the time it became popular and replaced all methods of communication including usual voice calls and text messages and to a certain extent, emails. The idea around the app is great but its users treat it as a religion and it has managed to get a very wide range of audience addicted to it, wider than any other digital platform/service I've seen. At my home town in [Mumbai](https://en.wikipedia.org/wiki/Mumbai), WhatsApp is the platform responsible to make people get internet services on their phone, where the internet was considered a luxury and not everyone had access to it, at least on their phone. People lost their mind and I've heard arguments like "one who doesn't use WhatsApp doesn't need a smartphone in the first place". Someone even told me that I do not need a phone because I don't use WhatsApp, which I wish they would have asked me what I use my phone for and I would have responded with a truthful answer: "to manage my tasks using a [To-Do app](https://www.rememberthemilk.com) and to be more productive".

Hatred about WhatsApp aside, I do have a messaging platform in my daily workflow, which is [Telegram](https://telegram.org) and I use it for some light communication and updates but gladly, I am not addicted to it. I am a part of a very small number of groups created for very specific topics and are not spammed with unrelated messages. I did try [IRC](https://en.wikipedia.org/wiki/Internet_Relay_Chat) and a few flavors of it like [Riot.im](http://riot.im) for a while but that didn't work out well though I'll keep trying.

## Fish over Bash

Starting with a workflow involving nothing but mouse-clicks and ending up with one that mostly involves keyboard shortcuts, the [shell](https://en.wikipedia.org/wiki/Shell_(computing)) is definitely a significant part of my setup. Previously, I spent so much of my time to find and compare interfaces and features around the ability to quickly switch to a terminal, move between tabs, hide them, etc. I recently re-read about a few different shells out there and with little reading, it's very easy to find articles by people switching to a different shell.

Learning that there are at least two major options along with bash: [zsh](https://en.wikipedia.org/wiki/Z_shell) and [fish](https://fishshell.com), it spun up another intensive research around the differences between the two and which one I can introduce into my workflow. Considering the balance between features and customizability, I decided to switch to fish-shell, at least for the moment, only to quickly learn that my bash configs won't work with fish directly. That started another long-running learning/development exercise in my [dotfiles](http://github.com/myTerminal/dotfiles), a part of which involved of separating my reusable shell configs from bash configs so that I can at least use my already available shell aliases with fish. The massive update is still in progress as of this writing. Soon, I'll switch to fish completely on all my workstations and to be able to customize it, I may end up learning a decent amount of bash!

At this point, I won't mind if I never switch to fish (or even use it) as I have already learned so much about bash, other shells and their existence.

## AOL/Yahoo over Gmail - Failed!

I tried replacing Gmail with different alternatives for my personal email and failed multiple times. The good thing about that is, I got to learn and realize the features provided by different email services and finally have a justification for myself to stay with Gmail, something that I have documented as a part of [my recent post around unifying my email accounts](https://www.linkedin.com/pulse/how-i-unified-my-email-accounts-2019-mohammed-ismail-ansari).