On Windows & Linux: My two cents

Umar Khan
6 min readMar 3, 2021

Technology, and for that matter life, is rife with duality.

It is in fact built on top of it; at the end of the day all your code and cat videos are read and represented as 1’s and 0’s, on and off, being and nothingness.

Nerd culture has no shortage of dualities. Star wars or star trek? Vim or eMacs? Having a strong position on these subjects is seen as a mark of high rank and recognition among such circles.

Being a vscode newb, I dont usually have the requisite familiarity to take a side on some of these eternal dialectics. But I think I know enough to allow myself to express an opinion on another contentious debate in tech: the war of the operating systems.

Windows? Mac? Linux? They seem to simultaneously capture and create archetypes of social roles. It can evoke passionate debate, with the proponents of one or the other having heavily invested thought and emotion into their particular favorite.

I’ve been a windows man my whole life. Mainly out of necessity: its what occurred most often in my environment. Windows has a reputation as being “the workhorse”. The preferred platform of corporations and organizations. Widely available the world over, usually standard on consumer computer hardware. Huge software library, runs all the games they make.

Then of course there's Mac. Mac’s, and for that matter Apple as a whole, have been foreign to me. Not least due to certain…contrarian tendencies that found their fullest expression in the angsty, non-conformist days of my heady and troubled youth. A series of historical events full of their own ironies. But they have a loyal and abiding following so they must be doing something right.

And lastly, there are the borderlands of Linux; that obscure place that marks the beginning of deep nerd territory.

I first discovered Linux in my senior year of undergraduate. Numb from writing endless papers on the humanities, I sought distraction in tinkering around with old electronics I had ferreted about. In trying to factory reset an old laptop I realized I did not have the product key for Windows anymore. Searching for a possible answer on google, I started hearing tell of “Linux distros” like “Ubuntu” that were free to use and could be adequate substitutes for most commercial operating systems.

And so I fell down the rabbit hole of the command line for the first time. It was an exciting discovery. I was able to get that laptop up and running. Suddenly, an unused throwaway about to get chucked in recycling was a useable machine once more. It could run a web browser…and that by itself opens it up to a wide range of uses.

The very first Linux distro I ever installed and operated was called “Puppy Linux”. Puppy Linux is an ultra lightweight version of Linux that could be booted straight from a usb drive. I began to carry around a Puppy Linux USB on my keyring in case I ran into a computer in need of an OS. Sure enough a few weeks later, deep in the swamps of my ancestral homeland of Florida, I can across a derelict old desktop in my Aunt’s house. Getting it up and running with Linux and giving my uncle a way to check his e-mails and watch YouTube videos bought me a lot of cache in that particular household.

However, for the most part Linux remained just a nifty sideshow for me. I never truly began to engage with it until I went through the Flatiron Data Science bootcamp. Bootcamp curricula focus on command line skills for a very good reason: UNIX- based machines are ubiquitous in the software & data engineering world. Linux seems to be the preferred OS of servers everywhere.. AWS EC2 instances, Digital Ocean Droplets, Linode … all seem to be running on some Linux distro or the other.

My final project involved deploying a hosted web app built on a flask-based analytics framework (Dash). In installing servers, modifying config files and using sockets, I started getting more comfortable with the Linux terminal environment. and even began to appreciate its power and flexibility what with the bash scripts and the piping.

But I was only really using Linux remotely. Natively I was still working off a Windows machine. I personally felt that working with a windows machine was somewhat cumbersome when it came to data engineering. Tutorials for windows machines seemed to usually involve work arounds, added steps and lack of complete compatibility.

SSH is the biggest example. With windows, most standard guides will refer you to puTTY. Linxu and Mac machines however, have native SSH capability. It just makes for a more seamless experience.

Lets take a detour through the scenic route of history. Linux is built along the lines of the UNIX system. UNIX is an operating system that came out of Bell Labs in the 1970s. It’s a classic tail of a couple of scrappy techies building the future in their garage.

Ken Thompson & Dennis Ritchie were the last people left on the Multics project, Bell’s first attempt at building an OS. Thomson and Ritchie kept working on the project even when it was stripped of corporate backing and even, of a name. They scaled the project down and retooled it. Their efforts bore fruit in the form of UNIX. Initially written in assembly language, it was quickly ported to C which made the OS highly portable and thus, highly popular. By the 1990’s they were the OS of choice for 90% of the worlds top 500 fastest supercomputers.

Why?

According to Wikipedia:

“Due to an earlier antitrust case forbidding it from entering the computer business, AT&T was required to license the operating system’s source code to anyone who asked. As a result, Unix grew quickly and became widely adopted by academic institutions and businesses. In 1984, AT&T divested itself of Bell Labs; freed of the legal obligation requiring free licensing, Bell Labs began selling Unix as a proprietary product, where users were not legally allowed to modify Unix.”

It seems people got a taste of free OS and wanted more. The GNU project, started by Richard Stallman in 1983 tried to create a “complete Unix compatible system” composed entirely of free software. They set about trying to make such a system, but would not release on until the early 1990’s.

But that was not fast enough for an enterprising University of Helsinki student by the name of Linus Torvalds. Frustrated with the licensing terms of MINIX, the commercially available UNIX os of the time, he began to build his own os kernel. This would become Linux.

Another excerpt from that great repository of humanity’s collective memory, Wikipedia:

Adoption of Linux in production environments, rather than being used only by hobbyists, started to take off first in the mid-1990s in the supercomputing community, where organizations such as NASA started to replace their increasingly expensive machines with clusters of inexpensive commodity computers running Linux. Commercial use began when Dell and IBM, followed by Hewlett-Packard, started offering Linux support to escape Microsoft’s monopoly in the desktop operating system market

And so Linux spread among the ranks of servers & desktops. And thanks to Android, which is based on linux, it has come to dominate the smartphone platform too. The power of UNIX based operating systems is further attested to by the fact that Mac OS is also built on top of a UNIX-based kernel (of the BSD variant). Hence the native terminal facility in Mac.

Now I love windows, even if ultimately for no other reason than sentimentality. May seem odd to feel that way about what's considered a “boring office machine”, but to me it was…home. But one cannot live forever in one’s childhood. Sooner or later the time comes to grow, to let go of the past and to venture out into new horizons, in search of the endless bounties of the universe.

And so I decided to once again install a Linux OS, and this time learn to use it as my primary OS. So far the experiment has been a great success. Admittedly, Linux can be intimidating to use at first. But I think in the long run, it’s well worth the investment in time to learn it.

And one need not cut the cord all at once. I installed Linux alongside Windows on my current laptop. When I turn it on, a boot menu allows me to chose which OS to load up.

I chose Ubuntu as the distro to install. It seems to be the most widely used distribution. It has a decent enough graphical interface which helps ease the learning curve.

Native terminal support has been great so far. I know the terminal workarounds for windows are becoming increasingly sophisticated, especially with Windows Subsystem for Linux. A great utility, but still with drawbacks. The parallel file structure created by the WSL can be confusing to navigate and translate back and forth between the regular windows file structure. PATH variables can be difficult to set properly. In a pinch, WSL will do fine for alot of tasks.

But why delay the inevitable. Challenge yourself. Throw yourself into a completely unfamiliar environment head first and completely. It’ll be a bit of struggle at first, but once you understand the rhythm of the ocean who knows where the tides may take you.

--

--

Umar Khan

Just an attorney who wandered into data science and never wanted to leave.