Thoughts on Using a Mac as a Development Platform
This post was inspired partly by this Reddit post.
Take my opinions on the Mac as a development machine with a grain of salt, since I’m neither a professional programmer, nor do I contribute to any major open source projects. I’m still in the early stages of hackerdom, and most of the code I write is either for learning, part of simple scripts I write to automate tedious tasks or, more recently, part of small desktop apps I write using the Cocoa libraries. Even though I haven’t written or worked on any complex piece of software, I grew up using Linux and open source software and have been exposed to many different programming languages (before I settled on Python as my language of choice). I installed Fedora Core 1 (or was it FC2?) just for fun when I was 14 and ended up using various Linux distributions for about four years before I bought my MacBook.
I bought the MacBook about 8 months ago, and started learning Cocoa for writing desktop apps for the Mac, and I’m loving every bit of it.
All right, here’s my list.
The Good Parts
- Mac OS X is UNIX under the hood. Heck, launch Terminal.app and have fun playing with awk, grep, sed and friends – the same stuff one would use under Linux. OS X also comes with Perl pre-installed. I have no idea if Python and Ruby are parts of the core system, but they’re definitely parts of Apple’s Developer Tools package.
- You can grab all your favorite editors and languages off MacPorts, which is very similar to Debian’s APT (actually, it’s closer to Gentoo’s emerge tool).
- Most Linux applications run perfectly on Mac OS X. In fact, many of the lesser known apps have Linux and Mac OS X ports, but no Windows ports. The Transmission BitTorrent client is one example.
- I believe the UI of my OS has a profound effect on my productivity. The OS X UI has been designed to not draw attention to itself unless you look very hard. Contrary to popular belief, OS X does not have any eye candy, unless you consider smooth transitions from boot screen to login screen to the desktop eye candy. Exposé and Spaces look like eye candy to someone who has never touched a Mac before, but they are productivity features which just happen to be beautifully designed. A stock Ubuntu system with Compiz has much more intrusive eye candy than a stock OS X system.
- If you’re looking for a new programming language and a new set of APIs to learn, then there’s no better choice than Objective-C and Cocoa (this is exactly what I’m learning these days). After having written a few apps using Cocoa, you will never want to go back to writing apps for Windows or Linux. The API is consistent and well designed, and contains classes for the most common tasks you might wish to perform in a desktop app. Interface Builder is awesome in the true sense of the word, and unlike most other IDEs, XCode is fast, responsive and almost a pleasure to use (almost, because I still prefer the editing capabilities of Emacs over any other editor).
- No tinkering with config files, no hardware driver issues, minimal maintenance, no slowdowns over time, no malware issues and not having to do an apt-get upgrade every three hours. The it just works nature of the Mac has given me more time to work on my own code, rather than spending most of my time finding ways around other people’s mistakes.
The Bad Parts
- If you’re writing commercial applications, then Windows is the way to go. Apple will never have significant market share on your average desktop, since both Windows and Linux can run on anything from a Rs.25000 ($500) Zenith desktop to a custom built, Rs.65000 ($1360) gaming machine, whereas the Mac OS runs only on Apple hardware.
- Macs don’t play well with other operating systems. Installing Windows using BootCamp works fine and dandy, but running it for a long time causes my MacBook to heat up to over 65ºC. While installing Linux on a Mac is easy, it’s not officially supported by BootCamp, and getting it to play well with the hardware requires many hacks and workarounds.
- Customizing a Mac is not easy. Linux allows you to customize every aspect of the OS, and even Windows allows a certain level of customizability, but the Mac allows none. Be prepared to either install unsafe hacks that mess with the OS or just STFU and follow the One True Way of Steve Jobs.
- Be prepared to pay for quality. The software-wants-to-be-free culture of the Linux world is not acceptable in the Mac world. If you can’t pay up, then have fun using unstable ports of clumsily put together GTK apps under the X-Server.
Even though the Mac has its own disadvantages, I’d rather use a Mac than a Windows/Linux machine for development any day.

8 Responses to “Thoughts on Using a Mac as a Development Platform”
Rather than dual boot linux, you could try it in a VM. I have RedHat Enterprise (and Oracle) running happily under VirtualBox. Ubuntu works well as well. The heat thing can’t really be helped, as virtualisation is quite expensive.
“Apple will never have significant market share on your average desktop…”
Never is a very long time. Let’s put money on it. Ten bucks says someday we’ll see some form of Apple software running the majority of the devices people use daily (see how the iPhone is burning its way into the mobile market).
You’re right though… if it ever happens, it’ll be a long time. We can leave the payouts in our wills.
I should have explained my statement more clearly. What I meant to say was that desktop computers built by Apple in their current form will not achieve a significant market share. In fact, I’ll be glad if they don’t. I don’t want my community diluted by people who don’t know what a web browser is.
As far as devices are concerned, I think Apple already has a significant market share in that area. They’ve got two killer devices, the iPod and the iPhone, that everybody owns. Their reputation in the shiny-new-gizmo department is rising. There can be no debate about the fact that Apple *will* own the devices market in the future.
I don’t want to get into the debate of whether Apple will or will not “have significant market share on your average desktop”, but I do want to point out that there are quite a few people out there making a living off their commercial apps for the current Mac market.
Nice article btw.
One place where I’ve found Linux to be slightly better than OS X is in terms of installing libraries related for scientific computation, signal processing, etc. On Ubuntu I just apt-get the required stuff, whereas I’ve seen people often struggling with a Mac for the same.(No firsthand experience though.)
Thanks for the post. Glad to hear you’re enjoying developing on a Mac. I was the ‘guinea pig’ developer at my shop two years ago, got a shiny new Macbook Pro to prove out that we could transition from an Ubuntu/Windows platform, and now about 80% of our staff develop on Mac’s.
Personally, I would never go back. I would like to address some of your “bad parts” if I may:
1) “If you’re writing commercial applications, then Windows is the way to go”
While no platform is perfect, I have never had any problems writing commercial applications on a Mac – and the hardware is in almost all cases(IMHO) superior to the PC versions – and yes more expensive. I’m on two years+ of everyday usage with ZERO days of downtime. That’s something I have not ever seen using a PC.
2)”Macs don’t play well with other operating systems.”
As already commented, VM’s are a very solid solution to this and I regularly run different versions of Windows and linux this way. Appliances are available for free download for a lot of the ‘open’ linux flavors as well.
3) “Customizing a Mac is not easy”
Well between Fink, MacPorts and the 1000’s of utility Cocoa apps(made by people not unlike yourself in a lot of cases) I just can’t agree with this. I have yet to run across anything I could not easily(and safely) figure out how to customize with nothing more than a little Googling.
4) “Be prepared to pay for quality”
This is actually very much the same as 3)
I use TONS of freely available and high quality free software on my Mac. Everything from the tried and true linux apps like Gimp and GraphViz to the NeoOffice port of OpenOffice, all of the software and utilities regular and power users alike require are at our fingertips in the Apple world.
I just read back over this post, and I hope it doesn’t come across as overly negative – my intent is just to try and help you get past the ‘bad parts’ and get the most out of your Mac. Cheers!
Isn’t MacPorts a clone of BSD’s Port?
Now that you mention it, I think it is. But I don’t see them mentioning that anywhere.
Leave a Reply