Once upon a time, I did all my development in Linux. It was quite nice: I did my editing in vim and sometimes Eclipse, I typed commands into a terminal window, and managed my software using apt. I was fairly happy with this setup.

With time though, I started to feel the pain of dealing with Windows and its users. I needed to use Microsoft Office for 100% compatibility, suspend and restore reliably, access Exchange without issues and use software that didn’t look like it’s UI was designed by a kindergartner.

So, I abandoned Linux and tried to make Windows work. The command-line was hell, the development tools stunted and broken and it looked even worse then Linux. But I could get Office, and my Exchange issues were gone.

When the pain became unbearable, I went off the reservation and decided to try using macOS. At first it was a complete pain. The copy and paste keys were different! That’s just change for change sake, right? Until the first time I did a copy and paste in a terminal window and realized the keys didn’t conflict with Ctrl-C.

The window handling just worked. I wasn’t playing around with the window manager du jour and thanks to excellent text editors like TextMate and BBEdit, I didn’t have to deal with vim anymore. And, even better, Terminal.app was pretty good. And if I didn’t like it, there was iTerm and now iTerm 2.

I had a VM of Linux (and Windows) in case I needed them on macOS, but I never needed the Linux VM and only used the Windows VM when I needed to check code for Windows compatibility.

And, best of all, I could automate anything I wanted to. Thanks to LaunchBar, Automator and AppleScript, I could automate almost everything I wanted to. PDF workflow handling and services are awesome. This was the best decision I’ve made for my workflow and productivity.

Packages

Not everything was wine and roses. I needed software to do my job. IntelliJ became my IDE of choice - that worked beautifully. Microsoft Office 2011 runs well and is completely compatible. Apple Mail (and iCal) has no issues with my companies Exchange server. Printing, which shares a subsystem with Linux, works great in the home but can be hit or miss in support of those giant industrial copy/printers.

And, of course, I wanted command-line tools. Homebrew worked well here for the only three things I ever needed to install: git, imagemagick and python. I’ve installed a few other things using homebrew (nmap and others) but that was just for playing around. It’s actually worked out better then apt-get because I don’t get gigantic lists of packages to update on a regular basis.

When you’ve had to deal with the Linux version of DLL hell, homebrew is a breath of fresh air.

Darwin

And, best of all, I don’t have to give a crap about my kernel version anymore. I don’t have to know or care that it’s darwin vs. Linux 2.6.3.43.1.3.4.6.2. Or which patches my chosen distribution has applied, or whether my distribution is in political favor with the kernel developers or not. It just works.

Though the darwin support for dtrace is pretty amazing.

Workflow

The macOS terminal is good. If you have issues with it, you’re probably using vim or emacs full screen. Wow. Feel free to use iTerm 2 if you are.

macOS is highly customizable as well. Managing daemons is far better then most Linux systems due to the modern init replacement. Luckily for Linux, projects like SystemD are catching up.

And with application launchers like LaunchBar, QuickSilver, Sparks, etc. I can work from the keyboard constantly.

Open source

And, as a developer, not having to deal with the open-source politics is a win. I don’t have to defend my betrayal of open-source rights when I choose a closed-source video driver and yet I can still install pretty much any open source project.

And support for future ruby platforms like rubinius and macruby is actually better on macOS.

Closing thoughts

If everything I said went over your head, and you think I’m crazy, it just means your time hasn’t come yet.

I remember reading Alex Sellier’s counter thoughts on this matter yesterday and being amazed that different people have different viewpoints, both of which are totally valid for them and realizing that this isn’t a zero-sum game. What you believe isn’t the word from God and neither is what I believe. Make your own (hopefully informed) decisions and choose what’s right for you.

I sure do love the Toto blogging engine, though.