Unix/Linux operating systems have long been a favorite of mine due to their flexibility, robustness, and the control offered to the user. My go-to distribution is Ubuntu (previously Debian), which has great package management built in. It's an open-source system, which means it's continually being improved by a community of dedicated developers. This openness also allows for a level of customization and control that's hard to match. You can tweak and tune your system to fit your exact needs, whether you're setting up a server, a desktop workstation, or a tiny embedded system. The vast array of distributions available, each with their own strengths, allows you to choose a system that's tailored to your specific requirements.
One of the most powerful aspects of Linux that I absolutely love is its command-line interface and the suite of tools that come with it. These tools, often referred to as the "Unix philosophy," are designed to do one thing and do it well. They can be combined in countless ways to perform complex tasks. For example, the grep command can be used to search for a specific string in a file or stream of input. The ls command lists the contents of a directory. You can pipe the output of ls into grep to search for a specific file in a directory. The command would look like this:
ls | grep myfile.txt
This will list all files in the current directory and then search that list for "myfile.txt". To get a bit cheeky, this will create a file named "me", fill "me" with beer, and move me to hawaii:
touch me && echo "beer" > me && mkdir -p hawaii && mv me hawaii/
This ability to chain reliable, well-documented, modular commands together allows for a level of power and flexibility that's hard to match in other operating systems.
After using Windows for many years and then switching many more years ago, I also have a deep appreciation for the macOS operating system. Being Unix-based, it combines the power and flexibility of Unix with the sleek and intuitive user interface that Apple is known for. This means I can leverage powerful command-line tools and scripts, similar to a Linux environment, while also enjoying a smooth, user-friendly desktop experience. The seamless integration between software and hardware in a Mac system also contributes to a stable and efficient operating environment. In terms of security, macOS has a strong track record. It's built on a Unix-based foundation which is known for its robust security features. Furthermore, Apple has implemented several security measures such as Gatekeeper, which blocks untrusted applications, and XProtect, an automatic malware detection tool. Additionally, the fact that macOS is less targeted by malware compared to other operating systems adds an extra layer of security.
I'm a big proponent of doing development work in the environment that matches where the code will end up running. So, if I'm working on server code, I'll typically be working on my Mac, but remoting into a cloud server or container that's running Ubuntu. No point in wrestling with package install challenges on my Mac when the target environment is Ubuntu! The lake_washington_and_sammamish_temps project was a bit of an exception; since it uses Selenium and Chrome, I found it easier to code and debug the web browser interactions on my local machine.
*nix OS provided for the wonderful low price of: free!
Next: IDE and Jupyter Notebooks