Most of the time macs "just work" however once you start digging deep and needing custom stuff (beyond `rails new HelloWorld`) things start to come apart.
You have to rely on brew/ports or hope someone provided instructions for compiling on mac. Normally brew or ports do work and their authors do keep things up to date, but not always.
We've just been down too many rabbit holes when we needed something custom.
On top of that our production machines don't run OSX either so we would have to keep 2 sets of instructions for making sure all libraries are installed.
Sure there is vagrant, but then you lose (or fight extremely hard to keep) your ability to debug in the IDE of your choice since it all has to happen remotely
Life has been so much better running Ubuntu. Here everything "Just works" from a programming point of view.
Games I still dual boot into Win7 however (tho I did that with OSX anyways since all games arent supported or you take a performance hit)
That's not terribly unexpected, to be honest. Apple's building the machines for the average consumer first, so the "just works" is their priority. Ubuntu, as much as they've been trying to emulate OSX recently, is still a full Linux system under the Mac-y gui. There'll be a little less "just works" for the average consumer, but a bit more for the developer.
I'm pretty sure that of the many devs who've switched from Windows to OS X (it's really fascinating to see how many) we're going to see at one point quite some switching, like you, to Linux.
Stuff that I can't stand on OS X: no great firewalling. Sure, I can have an "easy" firewall, but not a great one.
By great I mean that on Linux I can do stuff like: "Block every single packet that is not part of an established and only allow user whose user ID is xxx to contact port 80/443 and only allow user whose user ID is yyyy to connect to port 22".
But to me the biggest showstopper under OS X is that you can't have simultaneously several graphical sessions. A browser, for example, is something that begs to be run in its own user account (for example a throwaway user account or one severly crippled using quota + specific firewall rules only allowing that user to browse the web and that's it, no login shells, etc.). Then you can either have that user run it's own graphical session (even at a different screen size if you want) or have that user run its browser in the graphical session of another user (not the same safest, but still way more secure than simply browsing with your main user account -- which has to be the one most insecure thing most devs are doing).
Linux makes all that super easy and as a developer --and for anyone that is a bit concerned about security-- it is great.
You can't do that on OS X. There are limits once you want to "get fancy".
And when the exodus shall start, I'm sure quite a lot will realize that Linux is actually amazing and that they did actually miss a lot.
And I'm no sysadmin: just a dev. But of course it helps when your server are also running Linux (or another Unx) and it also helps when you have to talk to the sysadmin guy (say because your app is ruining its servers' perfs) and that he sees that you know a tiny bit of Unx work ; )
Regarding the firewall issue - doesn't OS X include OpenBSD's PF ? If it's the case, then you get great and easy firewalling. Provided you can actually configure it with $EDITOR + /etc/pf.conf.
Having a GUI for PF doesn't make much sense when you have a rules syntax that is as expressive as PF's. There may be some edge cases where netfilter can do things that would require a work around in PF but in my eyes the latter wins when you look at the features + tooling + configuring package. Also there are some things PF can do that netfilter can't.
It's astonishing for how far one can get just by sticking
Putty and PSCP in the Windows Path and renaming them to ssh.exe and scp.exe if all one ends up doing is just sshing into remote machines.
Most of the time macs "just work" however once you start digging deep and needing custom stuff (beyond `rails new HelloWorld`) things start to come apart.
You have to rely on brew/ports or hope someone provided instructions for compiling on mac. Normally brew or ports do work and their authors do keep things up to date, but not always.
We've just been down too many rabbit holes when we needed something custom.
On top of that our production machines don't run OSX either so we would have to keep 2 sets of instructions for making sure all libraries are installed.
Sure there is vagrant, but then you lose (or fight extremely hard to keep) your ability to debug in the IDE of your choice since it all has to happen remotely
Life has been so much better running Ubuntu. Here everything "Just works" from a programming point of view.
Games I still dual boot into Win7 however (tho I did that with OSX anyways since all games arent supported or you take a performance hit)