Part of the process of becoming a new eBay employee is selecting your company laptop. I was offered a choice: Lenovo Thinkpad or MacBook Pro. Coming from a Linux development world, I picked the Mac, thinking it would be closer to what I am used to.
Man, did I fuck up.
Thankfully, I still have my Ubuntu workstation to get real work done on, but the Mac does it duty — running Outlook, maybe Firefox or Google Chrome every now and then. Oh, I also have VMWare installed on it so I can boot Windows to browser test in Internet Explorer. I should have picked the PC, at least then I would save myself the step of booting VMWare.
So what’s wrong with using the Mac as a development machine for Milo, a Python application backed by PostgreSQL and Redis (or any web project, for that matter)? Well, sacred cow, here come the spears.
Horrific package management
I’ve only poked around a little, but so far I’ve found three separate package managers for OS X: Fink, MacPorts & Homebrew. Each is heinous in its own special way, but the fact that you have three competing package managers, that don’t talk to each other has convinced me that Mac users, in the typical hipster fashion, brutally raped the Unix culture, throwing away everything that made it unique because they did not understand it. These Visigoths are the single best case for government mandated licensing for computer programmers.
What’s wrong with having disparate package managers? Being completely comfortable with the risk of sounding like your grandfather, the problem is I’ll tell you when we get to production. No, really. Installing your packages in production is going to be a pain in the balls if you are using any or all of these OS X package managers. If it’s not, then you haven’t been doing this long enough. I realize that if you’re a Mac web developer, your deployments probably consist of
git pull, but when you are older, you will understand the value of automated version dependency satisfaction. Better not tell you now, it would spoil the surprise.
The scary part about having many general use package managers is that it pushes programmers toward using programming language specific package managers like
pip, which only serve to metastasize the problem. I generally make Debian packages for everything, even if it means repackaging a
pip package, but thankfully, there are scripts for that.
One of the unfortunate trends in OS X package management is the idea that the user should be compiling everything. This is being perpetrated mostly by the Homebrew package manager, whose basic building block is the formula, basically a Ruby script that tells it how to download, compile, and install the package. Well congratulations, dipshit, you’ve reinvented
dpkg, poorly. I am simply trying to develop an application, is there a good reason why I am compiling
libxml2 and all of its dependencies? What is this shit, Gentoo?
You don’t deploy to BSD
So why the hell are you developing on it? You can’t possibly expect software packages to behave similarly across MacOS X and Linux, which is probably your production environment. OS X and Linux have different kernels, which means different I/O & process schedulers, different file systems, and a whole host of other implementation details that you’ll write off as having been abstracted away until you have your first serious encounter with It Works On My Machine (confrontations with this beast that were resolved by installing packages are nothing compared to the unwelcome violation you’ll get when you discover a real operating system difference). These problems won’t come often, but when they do, you’ll conveniently forget that I ever warned you.
This is one of those lessons that it will take you a few catastrophic failures to learn. Your development platform should be as close as possible to your production platform.
Sooner or later, you have to face facts. Man up and learn Emacs.
The hardware is overpriced
A basic 15” MacBook Pro will run you $1,800 while you can buy a comparable model from Lenovo for $1,200. An extra $600 for the privilege of running a shitty operating system, where do I sign up? You could put that extra cash into time saving hardware like SSD drives, time-altering hardware like tequila, or perhaps to pay a few months worth of project hosting.
While the flesh has certainly rotted off this horse’s bones by now, the price issue for Mac developers is more of an indicator of other problems: you’re spending too much money on a device that looks nice, but ultimately makes your job harder. If you’re a startup, this is called dick swinging and doesn’t serve anybody.
‘Lost’ apologists are almost always Mac users. Scientists are baffled.
I used to be a big time Mac fanboy. In fact, I even had a letter published in Macworld magazine when I was 15. However, at some point, I started writing code to put food on my table, and found that the Mac just does not cut it. I’m generally all for developers using the tools that they want to use and feel the most productive with, but tools like MacOS X cause more problems for the rest of the development team, and are a net negative. Bring your pet Rhesus monkey to work if you want, but the first time that little fucker throws feces at me, he’s going to the hot dog factory.
But really, Mac developers, stay out of the command line. You’ll hurt yourselves.