1. Operating Systems

+

UNIX

UNIX is the grandfather of all modern operating systems, and today it still remains the most powerful and least known. But if you use an Apple computer running macOS, or an iPhone or iPad running iOS, you are using a UNIX operating system. And if you do online banking, somewhere tucked away in the bank is likely a series of UNIX systems running Oracle Solaris UNIX, HP-UX UNIX, or AIX UNIX. Your Internet Service Provider (ISP) likely runs BSD UNIX networking equipment and servers, and you’ll even find QNX UNIX in most cars today as well as running the street lights in your city.

In the movie Jurassic Park (1993) when the girl (Lex) sat down at the computer near the end to activate the locks and said “This is UNIX, I know this…”, she was actually using the File System Navigator (fsn) in SGI IRIX UNIX to navigate the /usr directory as shown to the right. In fact, many of your favourite movies of the 1990s were likely also created on an SGI IRIX UNIX machine! Even the Linux operating system (also used by Android phones and tablets) is actually derived from and 95% compatible with UNIX. UNIX has traditionally been my favourite OS, and I even have a UNIX tattoo on my arm!

So where did it all start?

In the early days of computing (1950s), corporations were becoming larger than they have ever been in history due to the post World War II boom. Some companies had more people in their accounting department on adding machines calculating totals than on the factory floor!

Ken Thompson & Dennis Ritchie

In short, business needed computers to solve their accounting problems. It was the day of the mainframe. But mainframe computers were slow and tedious. So when the MULTICS project (which attempted to create a multitasking, multiuser operating system to solve these problems) failed, the fine folks at AT&T Bell Labs (Ken Thompson and Dennis Ritchie, shown in the picture to the right) invented UNICS (later UNIX) in 1969.

When UNIX was first created, AT&T was under a federal court order preventing them from marketing UNIX. But this didn’t stop AT&T whatsoever.

Instead, AT&T sold the UNIX source code off to several companies which developed their own flavours of UNIX and gave free copies out to several universities including the University of California at Berkeley from which we have BSD UNIX. These vendors and universities maintained the development of UNIX since the early 1970s. This led to several other developments: the C programming language, Microsoft DOS, and the Internet to name a few.

In the 1980s, UNIX found its place in large corporations, which had enough money to purchase the expensive computing equipment, needed to run UNIX. A typical UNIX system in 1985 cost around $600,000US yet performed thousands of tasks for client computers or “dumb terminals.” Due to the Internet revolution (which was started on and perpetuated by UNIX) and the massive rise of Linux, UNIX has only recently become a common word used in most computer-related discussions. Most people don’t realize that UNIX ran the world behind the scenes in the 1970’s, 1980’s, 1990’s (and even today). But these systems weren’t your average Intel-based PC - they often ran on very expensive RISC platforms (with the exception of SCO UNIX):

  • SUN Microsystems Solaris UNIX (now owned by Oracle) ran primarily on the SPARC/UltraSPARC CPU (Oracle has since stopped Solaris development, but the Open Source community still actively develops it as OpenIndiana UNIX)
  • SGI IRIX UNIX ran on the MIPS CPU (IRIX is no longer developed)
  • BSD UNIX ran on pretty much any CPU (and still does today)
  • NeXTSTEP/OPENSTEP UNIX ran on the Motorola 68000, Intel x86, SPARC and PA-RISC CPUs (this later evolved into the widely-used Apple macOS and iOS operating systems used today)
  • SCO UNIX/OpenServer/UnixWare*** ran on the Intel x86 CPU (SCO products are no longer developed today)
  • Tru64 UNIX ran on the DEC Alpha CPU (Tru64 is no longer developed)
  • AIX UNIX ran on the PowerPC and POWER CPUs (and still does today)
  • QNX UNIX ran on a wide variety of different platforms (and still does today)
  • HP-UX UNIX ran on the PA-RISC CPU (today it runs on the Intel Itanium CPU)

To illustrate what a typical 1990s UNIX desktop looked like, here’s a screenshot of the desktop my SGI Fuel (64-bit MIPS R14000 CPU) running IRIX 6.5 UNIX:

IRIX on SGI Fuel

UNIX was developed and continues to be developed by people worldwide. Most of the UNIX flavours developed in the 1980s are gone, but many are still extremely popular and continue to be developed. Today, UNIX and Linux development are indistinguishable from one another and most UNIX utilities are Open Source Software (in fine Linux tradition). Even the original X Window System used by UNIX has been released as Open Source Software.

Apple furniture

However, if you are to see a UNIX system today, it’s likely Apple hardware running macOS. macOS is a UNIX OS that hides its complexity under a very easy-to-use graphical desktop that has benefits and downsides. Because the macOS desktop stays out of your way, it is easy for novice users (including elderly users) to use; however, if you are a power user, macOS can be quite frustrating.

Plus, Apple has been systematically closing the extensibility and flexibility of macOS for the past decade in an attempt to make it more like iOS running on an iPad. This focus has also led to big security problems for Apple software that are only recently hitting the spotlight.

In short, for power users, Windows 10 has far better security, productivity and customization features, as well as the largest suite of apps available (including games, which are almost non-existent on macOS).

That being said, if you do a lot of Linux (=UNIX), Web, or cloud development, and don’t want to use Linux as your main operating system, macOS is a better choice than Windows. macOS is also required if you want to look trendy at Starbucks or when giving public presentations (I have a Core i9 MacBook Pro for that purpose alone). Mac computers can also be used long after Apple no longer supports them, as shown in the picture on the right.


Linux

Linux finds its roots in the UNIX community. In 1983, one famous hacker named Richard Stallman started the Free Software Foundation (FSF) to encourage computer science students and freelance software programmers worldwide to develop free software for the UNIX platform. Richard had seen success as a result of collaboration between software developers in the Artificial Intelligence Labs at the Massachusetts Institute of Technology (MIT) earlier and believed that the sharing of ideas would result in faster software development.

During the mid 1980s, the collaboration seen by UNIX vendors was starting to diminish; thus the FSF quickly developed the GNU Project. The GNU Project aimed to create a free UNIX-like operating system (GNU stands for GNUs Not UNIX). Unfortunately, the GNU Project never came to fruition. Several great products came from this GNU community such as the GNU emacs editor, but most of it ran only on the UNIX Platform. By the late 1980s, however, the GNU Project led to the release of the GNU Public License (GPL). The GPL was a legalization of free software. It stated that anyone who develops software and publishes it under the GPL must make the source code for the program freely accessible to anyone who wishes to have it. Anyone who modifies the source code to make the program better must then redistribute his or her modified source code freely in return, keeping the software free forever.

In 1991, a Finnish student named Linus Torvalds created an improved version of MINIX that he affectionately called Linux. MINIX (mini UNIX) was a small UNIX for the Intel x86 platform that shipped with Andrew Tannenbaum’s book “Operating Systems Design & Implementation” used in Universities worldwide. Linus released Linux under the GPL, and with a free operating system to develop, programmers worldwide pooled their talent in great numbers to take it further. Because free software development was so popular, a new term was created in 1998 to refer to it: Open Source Software (OSS). Since then, several thousand Open Source Software developers around the globe have transformed Linux into a very sophisticated Operating System. Linus Torvalds and his team develop the operating system kernel and libraries in California; however developers worldwide develop the software packages used with the Linux kernel. You may obtain different distributions of Linux as a result - all distributions share the same kernel and libraries, yet have different software packaged with the kernel. The greatest thing about Linux is that it was made by the UNIX community - think of Linux as “Open Source UNIX.” Consequently, 95% of all commands and concepts (filesystem structure, permissions, users, daemons, networking, etc.) are completely identical between all UNIX flavours and Linux distributions!

Basically, UNIX=Linux. If you know Linux, you know UNIX and vice versa.

There are hundreds of Linux distributions available; some common ones include Red Hat, Fedora, SuSE, Debian, Ubuntu and Arch. Even Google’s Android is just Linux in drag! Linux has been installed on pretty much every hardware platform, and has been used in everything from firewall devices to embedded systems to large cluster computing systems. Nearly every cloud technology and all cloud hosts run Linux too! One of the reasons for this diversity is that companies find Open Source Software far more attractive than closed source software. Open Source Software is collaboratively developed and scrutinized by thousands of developers; bugs and security loopholes are fixed quickly, and high quality software is developed much faster than what a proprietary software company could ever dream of. Because those who ultimately use the software develop it, Open Source Software is maintained and improved at a very fast rate.

I use Linux daily - nearly all of my servers run Linux, and the cloud app development I do is done primarily on Pop!_OS (which is Ubuntu Linux) and pushed to a complex set of virtual machines and containers for testing that closely approximates the cloud environment that the app will run on. As a productivity tool, I find myself using Linux more and more these past few years, but I still prefer Windows for most day-to-day productivity tasks, and gaming of course ;-)

Clouds are made of Linux


Windows

Microsoft Windows is the most common operating systems found on client computers today. When you walk into any company, most desktop computers will run Microsoft Windows, and when you buy a PC, it will likely come pre-installed with Windows 10. How did this come to be? Simple. Microsoft had fantastic marketing ability and a strong partner and vendor network. They really are a textbook example of how to sell software well. Microsoft’s co-founder, Bill Gates, had both technical and management skill-sets from day one.

Bill Gates on Macintosh

In the early 1980s, Microsoft started making software (such as Microsoft Excel) exclusively for the Apple Macintosh platform (as shown in the 1985 picture of Bill Gates to the left). They also purchased the DOS operating system and marketed it for PC use. Many people mistakenly assume that Microsoft did not like Apple Macintosh and favored IBM PCs. Actually, it was the other way around. Bill Gates urged Steve Jobs at Apple to make the Apple hardware open such that other manufacturers could make the components (which would ultimately have lead to more software developers, programs and market share). However, Apple ignored the advice and Bill (being the smart entrepreneur he was), made sure his eggs were not in one basket. He created much more software for the IBM PC platform and also created a Graphical User Interface (GUI) for DOS called Windows.

Although Windows was nothing special to look at in the 1980s compared to the Macintosh operating system, it started to resemble it in the early 1990s with the release of Windows 3.1 (which I’ve used for years). By that time, nearly all places that sold PCs also sold Windows 3.1. Microsoft was a household word, and it was definitely going places. But their best innovation came in 1995 with the release of Windows 95, the first complete GUI operating system from Microsoft that could do as much as the Apple Macintosh OS could (this, alongside other factors, led to several bad years for Apple).

Win95 launch

I remember getting copies of CD-ROMs entitled “Arrive in Chicago earlier than expected….” at the University of Waterloo in 1994 as a student (Chicago was the code-name for Windows 95). On the CD-ROMs was a pre-release version of Windows 95/OS2. This was because Windows 95 was initially developed jointly by Microsoft and IBM, but when things fell through, Microsoft released Windows 95 and IBM released OS2 (which went nowhere on the market fast). Windows 95 was beautiful at the time, and I was a real advocate. Microsoft had the innovation in the computing industry then. They used the Rolling Stones song “Start me up” to advertise Windows 95 and software developers jumped at the ability to create software for the new OS which ran beautifully on the new Pentium chips released at the time. By 1996, there was more Windows 95 software than you could shake a stick at.

At the same time, Microsoft was getting ready to release Windows NT4 (NT stands for New Technology), a full GUI OS that you could easily use in companies as a server (NT4 Server) or a client (NT4 Workstation). If you imagine that Windows 95 took off like an airplane, Windows NT4 took off like a rocket. Now, every business (small, medium and large) could easily implement computer systems without hiring a Ph.D that knew how to use UNIX/Novell/Banyan (Novell and Banyan are ancient history nowadays). Within a few years, Windows NT4 had the most market share of any OS in North American companies.

It is important to note that Windows 95 and Windows NT4 had entirely different structures under the surface. Windows NT4 had a stable structure from ground-up that prevented applications from directly accessing the hardware without first passing through the Hardware Abstraction Layer. As a result, Windows 95 only had 2 successors: Windows 98 (which was widely received and still common) and Windows ME (which did not sell well and was the last Windows 95-based OS).

Windows NT4, however, led to Windows 2000 (which was NT4 under the surface, but had several advancements such as Active Directory). Windows 2000 came in a server (Windows 2000 Server) and client (Windows 2000 Professional) version. In 2002, Windows XP was released as the successor to Windows 2000 Professional, followed by Windows Server 2003, Windows Vista, Windows Server 2008, Windows 7, Windows Server 2012, Windows 8, Windows Server 2016, Windows 10 and Windows Server 2019. Windows 10 and Windows Server 2019 are phenomenal operating systems from both an architectural, productivity and security perspective.

In the early 2000s, Microsoft was been hit hard by critics regarding security and stability. As a result, they’ve had to adjust their focus over the previous decade tremendously. And it worked for the most part - I’d say that Windows 10 is probably the most stable and secure OS on the market today. During this same time, Microsoft also decided to make Windows Server more like Linux - it has a non-GUI version called Windows Core (part of Windows Server 2008 and later) and a powerful scripting language called PowerShell (which I like because it is similar to UNIX-style scripting). Moreover, if you install the Windows Subsystem for Linux (WSL) 2, you can run full Linux distributions on a real Linux kernel running alongside the Windows kernel (no virtualization necessary).

As for client market share, Windows is still the #1 OS out there. And it probably will be for a while (just imagine the sheer numbers of PCs running Windows). And the thousands of companies that adopted Windows servers in the 1990s and early 2000s will guarantee them a spot in the server market for a long time.

I use Windows 10 as my main productivity workstation, and the Linux integration that WSL 2 and the new Windows Terminal (https://www.youtube.com/watch?v=8gw0rXPMMPE) allows me a great deal of flexibility for the development that I do. I leverage both Windows 10 and Linux for development purposes nowadays. Plus, for things like gaming, you gotta have Windows!