This article is not meant to incite a comparative discussion of
various operating systems. These are solely my thoughts and
experiences.
I feel Linux helps my productivity, and that I'm
not equally productive on other operating systems.
If you feel otherwise is true for you, then that's great.
I started using Linux three years ago. As newbie as they get,
and totally clueless. Now, that hasn't changed much, but since then,
I have written some scripts and use trivial
everyday one-liners that ease a lot of tedious manual labor.
This article
lists some of these scripts and one-liners, which in themselves, hopefully
illustrate why I have become dependent on Linux.
No attempt is made to explain the examples. For that, I refer you to a
book by William Shotts:
This free and awesome book is
what I wish I had read early on, instead of going by my cursory hack-it-together
approach. It covers most of what is used in the examples, but also much
more.
Example 1: Downloading Embedded YouTube Videos
What it does:
Downloads the HTML source of a URL, extracts
embedded youtube videos, and downloads them one by one at highest
resolution using youtube-dl.
Script: getyt
Demo:
Click to play
Example 2: Monitor files & scripts
What it does:
Monitor a list of files (or command output), and execute a command on change.
There are several utilities that cover similar functionality. In particular
iwatch and
inotifywatch.
I might have suffered from a small case of NIH,
though I still prefer straight forwardness of watchfile.
What it does:
Fills username and password fields, in any browser or application.
Uses process information to determine best matching username/password pair.
Triggered by a global hotkey that asks for sudo rights to read the password list.
What it does:
Automatically downloads a video url (youtube, vimeo, etc), at highest resolution, and opens the video file with VLC, as quickly as it can.
By assigning the script to a global hotkey, it lets you copy a youtube link, hit the global hotkey, wait 3-5 seconds and have the video start in VLC.
Full resolution, no ads, low cpu usage, no buffering issues (it just downloads the whole video as fast as possible), easy scrubbing.
VLC is better in every regard, and I no longer use the web-browser.
All the animated gifs you'll find in this article.
My Background (Before Linux)
I grew up playing computer games in the mid-90s and on. The operating system
of choice at that time for games was Windows, hands down. Naturally, it also
became my system of choice for everything else.
Later, when attending university, some courses required Linux interaction.
This was often simple enough that one could get by with a few terminal commands,
editing files with gedit or nano (emacs
and vi seeming completely unusable), compiling with gcc,
modifying a simple (and at the time, cryptic) Makefile, etc.
I still stuck to Windows all the way until I studied a year in the US,
and took a computer security course that relied heavily on everyone being familiar
with Linux.
I went for Fedora and spent countless
frustrating hours fighting with basic things like getting wifi and graphics drivers to
work properly.
After the course ended, I happily switched back to Windows,
and relished in the sweet comfort of Visual Studio for C/C++
programming, and notepad++ for everything else.
Fast forward a few years, I decided to give Linux another
go in preparation for a software development position that primarily used
CentOS machines. This time going for Ubuntu,
and, possibly due to the matured Linux driver support in the three years passed
since my previous struggles, it was much smoother sailing.
Bereft of Visual Studio, I set out to learn emacs for
writing C++ code. SCons for compiling
C/C++ projects.
I found the bash scripting language repulsive, ugly and unintuitive,
but still used it occasionally for small scripts to simplify command
line tasks. As time passed, slowly learning new Unix/Linux tools here
and there, and gained a better understanding of how Linux works.
The transition was a long journey, riddled with frustration. A few sessions
with grub or twiddling with xorg.conf will
tempt any sane person to throw in the towel.
In not doing so, every small thing I learned became a piece of an incredibly powerful and versatile
toolbox, as most of the Unix tools follow the unix philosophy.
As the quote goes:
This is the Unix philosophy: Write programs that do one thing
and do it well. Write programs to work together. Write programs to handle
text streams, because that is a universal interface.
This is in stark contrast to how it was for me in Windows. Here,
almost any task I wanted to solve had to be accomplished by finding a
finished software. Monolithic, and specific for solving the task at
hand. For example, I recall needing a program for batch renaming files. I
searched for such a utility, and found one (magic file renamer).
Some other time, I needed to batch edit images. I searched again, and found a
another tool (XnView).
To some extent, Windows might have caught up to this with
PowerShell. If you are an experienced PowerShell user,
and find obvious solutions to all my examples, I'd be happy to hear from
you. In fairness, I'd be happy to hear from you anyways.