Choosing Linux

This year I’m taking part in “Bloganuary” – a series of writing prompts published throughout the month by Mindy Postoff. Today’s writing prompt is “What is a cause you are passionate about, and why?”


I read a book several years ago called “Just for Fun”, by Linus Torvalds – the creator of the Linux kernel. It charts the history of the project, from it’s earliest beginnings in a back bedroom, through to it’s accidental entry onto the world stage. I thought it might be interesting to relate my own interactions with Linux, and to perhaps reflect a little on the other operating systems I have used too.

My relationship with Linux begins with the first laptop I owned – a Toshiba, in about 2000. After playing around with the pre-installed copy of Windows 98 it came with for a few weeks, I read a magazine article about the latest release of “Redhat Linux”, and ordered a shrink-wrapped copy that was delivered by the postman a few days later.

My laptop was never the same again.

A year or so later I became interested in web development, and decided to turn my long-suffering home computer into a web server – running Linux rather than Windows. I can’t imagine my other half can have been too pleased with me.

I read the now famous O’Reilly books from cover to cover, and proceeded to build one of the first blogging platforms. I released it as open source because one of my co-workers thought it would be a good idea, and quickly moved on to building what I had really intended to build all along – a content management system. In the meantime, the blogging script got downloaded somewhere in the region of a quarter of a million times.

Thankfully Matt Mullenweg and Mike Little then forked a much better blogging script, and renamed it “WordPress”. I wasn’t bitter – I never set out to manage a project after all – and I switched to WordPress almost overnight.

I suppose it’s important to note that I never used Linux “because it was Linux”. Linux wasn’t “the thing”. Linux was “the thing that got me to the thing” – a phrase that I believe lots of people have used over the years, and that fits my story well.

While it’s true that the various things I have done outside of work could have been done on any operating system, I chose to do them in Linux mostly because it was free, and it almost worked as a turn-key solution – providing a platform on which I could tinker with the things I was interested in. Linux came with a great webserver (Apache), a great database (MySQL), and a simple web scripting language (PHP).

That I have ended up using Linux as a desktop operating system at home has happened mostly by accident. I will happily use anything that “just works” – and by-and-large the more well known Linux distributions do just that – they “just work” – without endless updates, drivers, security patches, reboots, and so on.

Anyway.

Having messed around with Windows, OSX, and Linux over the last twenty five years, you would think I have formed some opinions about them. A few come to mind.

Windows is ubiquitous – there is almost no learning curve, because everybody is familiar with how the user interface works. Because of it’s ubiquity, Windows won the battle for hearts and minds of businesses decades ago. There are signs this might change soon, but don’t hold your breath. Because of its ubiquity, hardware device drivers are widely available for most recent versions of Windows. You can almost always get any piece of hardware to work with Windows.

Unfortunately the core security of Windows is, and has always been pretty awful – with the continual need to run firewalls and virus killers to protect every single Windows machine from outside influence. Perhaps more worryingly, due to poor design the performance of all computers running Windows reduces over time – registry bloat, DLL hell, and wreckage from past updates are a continual source of frustration for home users and system administrators.

MacOS benefits from Apple both creating hardware and software – meaning the performance of the user interface in relation to the hardware is very good. You might also claim however that Apple are more concerned with how things look, than how well they work. Unfortunately MacOS only runs (reliably) on Apple hardware – while you can build a “Hackintosh”, you will face numerous problems with device drivers and core operating system stability. The software is driven – by design – by the Apple hardware renewal cycle. It’s easy to forget that Apple are a hardware company – it’s in their interest to obsolete existing hardware over time in order to sell it to you again, and again – and to discourage you from trying to run their software on anybody else’s hardware.

At a lower level, it’s perhaps worth noting that MacOS/OSX was originally based on Mach – a micro-kernel – the polar opposite of Linux. Micro kernel operating systems work by reducing core operating system functionality to control of messaging between services that do all the real work – which makes each service simple, but makes management of messaging enormously complicated, and causes all manner of design, functionality, and stability trade-offs.

Linux differs from both Windows and MacOS in that it’s a constellation of software development projects built by a vast community, rather than a commercial product developed by one entity. Books have been written about this arrangement – perhaps the most famous being “The Cathedral and the Bazaar”. If Tim Berners Lee’s “World Wide Web” was “for everybody”, then the same is probably true of Linux. The source code of every part of the core operating system and it’s supporting applications is freely available to copy, re-use, extend, enhance, and adapt – leading to ports for just about every hardware platform imaginable.

Linux originally borrowed the design of Unix, which set out some simple but powerful underlying concepts around the treatment of all applications as processes – with standard input and output streams. It’s a game changing design that’s beyond the scope of this post, and not followed by either Windows or MacOS.

Linux famously has no central control over future direction – it has been, and always will be designed and developed by a disparate community. This can be seen as both a good, and a bad thing – good because the system is not forced in a direction by external actors, and bad because it causes fragmentation. The fragmentation also causes duplication of effort – with different teams building alternative versions of the same core functionality – everything from window managers, to text editors. This of course means more choice though, and a properly functioning ecosystem of sorts – with evolution, and natural selection in play.

I need to draw this to a close somehow.

I titled this post “Choosing Linux”, and have sat on the fence throughout the entire monologue so far – being annoyingly even handed. I suppose when it comes down to it, the main reason I choose to use Linux outside of work is because I have to use Windows at work. The anarchic voice that occasionally whispers in my ear and causes me to walk to my own beat tells me that Linux is a good idea. It’s really that simple, and that illogical.

Not only do I get to “choose Linux”, I get to choose the distribution of Linux I use – and that has changed over time. Last week I ran “Manjaro”, the week before that “Elementary OS”, and before that “Ubuntu”. I’m back using Ubuntu this week. I may change again next week – it’s a little like re-building your house again and again, with no appreciable loss or gain in core functionality. Of course, you get nothing done, but that’s not the point.

Advertisement

Leaving My Comfort Zone

This year I’m taking part in “Bloganuary” – a series of writing prompts published throughout the month by Mindy Postoff. Today’s theme is “Write about the last time you left your comfort zone”.


In the daytime I work as a software and web developer. Since the pandemic ravaged the world, for the most part that means sitting alone at home in front of a computer trying to make sense of requirements documents, and constructing solutions for staff I will never meet.

While I may not be able to speak multiple languages – a feat I’m always captivated by when others perform it – I can write software in multiple languages. Multiple machine languages come with the territory, because the development of computers doesn’t stand still. Just as real-world languages evolve, so do the means by which we instruct computers to get the job done.

Which leads me to the departure from my comfort zone. It’s happening right now.

For the last several years I’ve been in a comfortable little bubble – partially of my own making – using the same technology stack to build solution after solution. Well that has all come crashing down in recent months – with opportunities in the marketplace pivoting towards something different. It’s a little like turning up to a school to teach French as you have for the last decade, only to discover one morning the label on the door has been replaced with “German for beginners”.

The problem with computer languages isn’t so much the language itself – it’s what you’re doing with it. It’s never as simple as learning the wording, and the sentence structure. Invariably you need to also learn how it has been used for an entire library of pre-existing stuff. Perhaps an analogy might help. Instead of just learning about the fuel, springs, and the nuts and bolts your car is made from, you have to learn about suspension geometry, the theoretical workings of the combustion engine, the GPS system, the locking system, and so on.

For most software development projects you find yourself standing upon the shoulders of countless generations of giants that came before you – and that can make the learning curve incredibly steep.

I’m on that steep slope at the moment. Thankfully the hard climbing is already done, and the gradient is beginning to level off. Of course the problem now is looking back down, and realising how high you are – and how far you might fall if you make a mistake.

So yes. I’m out of my comfort zone at the moment. I have to remind myself that I’m surrounded by wonderful co-workers, and that the internet is but a few keystrokes away – where an army of fellow developers often share their knowledge and enthusiasm.

Fingers crossed for the months ahead.