The time had come to replace my slowly fading laptop, it had served me well in the last four years, but all good things must come to an end. I was faced with a choice: which operating system do I commit to for my next four years? As a Computer Science student I wanted to make the right choice. These days most things I could ever want to do are possible on any one of the big three (Windows, OSX or Linux), so it was mostly a choice of form factor and style. How would each choice affect my experience throughout the years to come? Would I have to give up some long-loved programs that I had invested my time and money into? How could it affect my workflow? Here's a bit about my past experience with each OS.
I've always been a Windows guy. My family grew up with them. I can still remember playing computer games with my father on our old Windows 2.1 desktop. My Father works in IT, so we managed to keep up with trends and usually had the latest version Windows on mostly-decent hardware. I'd gotten used to it and didn't have any reason to mess with a good thing so when I got my first personal laptop as a graduation gift naturally I went with Windows 7. It mostly did as it was told, it rarely complained, it handled device drivers like a champ. Aside from the occasional annoying "Your computer will reboot for updates in 5 minutes" I didn't have any major complaints. It was only once I started to get a little deeper into programming (mostly in C++) that I started to find a few shortfalls. Installing any sort of IDE was a nightmare due to way the file system was (mis)organized. Things you attempt to install would misplace libraries or install them twice. There's really no system for where programs were meant to put things and often programs would clutter up my own files with their junk. Since when do Adobe plugin files count as "Documents"?
Installation problems could usually be fixed by editing some complicated system settings that weren't meant to be messed with. Editing the system path consisted of fumbling through a long jumbled line of file paths all sandwiched together in a fixed size text-box, making it impossible to see what's already there, nor what you're changing. The native command-line interface is lacking in most areas and isn't meant for doing any serious work in. These design warts, legacies of the Microsoft's past OS's have been patched and repaired, but continue to cause problems in their modern OS's. Around this time I started fiddling around with Linux, more specifically Ubuntu, to see what it could do.
After getting fed up with some of Windows' more annoying design and organization problems I sought to try out the veteran-praised Linux. I started out with Ubuntu because I'd been told it was easy both to install and understand, which was perfect for someone new to the command-line like me. I installed it onto a partition on my Laptop, choosing to dual-boot with Windows because I wasn't sure I'd be ready to make the switch cold turkey. Once Ubuntu had very kindly walked me through the installation I excitedly began to study the BASH command line and some of the things it could do. I was amazed when I learned I could type a simple 'sudo apt-get' to have my system download, install, and update most common programs. Though it uses the command-line, this seems like a vastly superior method of installation. No need to hope you downloaded the right version for your system, installing it manually, then deleting the installation files afterwards.
The Unix core's structure is very well defined, you know where to look for your programs, hard-drives, configuration files, etc. Your home folder is kept separate for your own personal use where you won't accidentally mess with anything important. Everything is properly modularized for easy organization and security. The 'root' permissions system seems much more secure than the Windows 'always administrator' approach that most people default to. Unfortunately, my laptop wasn't supported 100% in everything, so I had to do a little fiddling to get things like my function keys and headphone jack to work properly, but once configured it worked fine. Flash was an issue, my browsers couldn't load YouTube videos or listen to flash-based music players, but after installing a more recent version of Ubuntu most of those problems went away. Overall it worked great and I really enjoyed the system, but Linux still has fewer options available for software than the other OS's.
I had never had an apple computer before, in fact prior to purchasing my macbook I had never purchased a single product from apple. I knew their reputation well however, "It just works!" my friends would exclaim. I liked the idea of it, but of course I used Windows with pride, sure it was a little tougher to do some things, but hey, I'm a Computer Science student so of course I can figure it out. Of course, I never stopped to ask myself weather I should actually have to put that work in. The philosophy and design of apple products eluded me, I just wasn't convinced. Then I started comparing bullet points.
- Disorganized OS structure
- Difficulty with programming tools
- Bad command-line (bring on the hate-mail)
- Open Source
- Constantly updated
- Unix command-line
- Unix system structure
- Poorly supported on some hardware
- Less choice of software
- Lots of software available
- Powerful and reliable hardware.
- Unix system structure
- "Hold your hand" approach
- Stuck in apple's dictatorship
After considering the pros and cons of each, I pulled out my yellow legal pad and began to rank things based on their importance to me. After a few minutes I realized that I was really quite fed up with the Windows file structure and sloppy organization/installation. The registry is really just a bad idea, made worse by every new iteration. That left me with two options, Linux or OSX. I really liked Ubuntu and how much control it gave me over everything, it was well organized, supports the free-software movement and was also free of charge. OSX is also very well organized, it limits control over some aspects, but in turn delivers a well designed experience that is intuitive and efficient. In the end, the combination of a large software ecosystem, well-built hardware, and good customer support won out in the end and I dove in head-first, purchasing a re-furbished 13" macbook pro retina with a 2.6 GHz processor.
Now that the dust has settled I'm very happy with my decision. There were a few bumps in the road of adapting to the new OS, but most things were just a matter of learning a slightly new way of doing things. I can confidently say that I'm very impressed with how OSX handles application installation (in most cases you simply drag application files onto your hard-drive and they work as-is). I haven't experienced a single crash or hang-up yet, and if one were to occur I know that time-machine would allow me to recover gracefully. I've been able to reconstruct most of my old Windows workflows, as well as develop some new ones. Overall I would say that choosing an OS is very much situational, something that's good for one person may be bad for another and in most cases doing research and trying out each OS you're considering is probably the best way to make a decision.
Hopefully you learned something 🤞! If you did, please consider checking out my book: It teaches the principles of using optics in Haskell and other functional programming languages and takes you all the way from an beginner to wizard in all types of optics! You can get it here. Every sale helps me justify more time writing blog posts like this one and helps me to continue writing educational functional programming content. Cheers!