Mac OS X good and bad & Braydix w/WebKit

I actually had a slightly not-unpleasant experience with Mac OS X, being used as a Unix server. Since I rail on how much I hate it as a server, I thought I would balance my own bias with a report to the contrary.

I was prepping a mini to run DJB-utilties – DNS, daemontools, Ucspi-tcp. It was not very painful to get them installed. I decided to run my stuff using launchd instead of daemontools, and that worked fine too. I tested it and killed some stuff and it came right back. Also tweaked the Postfix config to use some custom transports, and stay running – easy-peasy. No problems. Found some nice stuff on the internet about how to add users using something like dscl – and that didn’t hurt much at all. The odd piece of dated documentation here and there, but no biggee. Postfix was totally painless, just my weakness with that package that might’ve affected me if only slightly. I should note – and I bet this affects my report – that this was on a regular OS X workstation. When I used to program all day on a Mac OS X workstation which ran apache and php, I also had no problems from that setup.

And now to balance my prior balancing report – I also worked on a Mac OS X Server. And it fucking sucked. Again. Within days of my previous unhappy work with an OS X server – I think it was either Tuesday or last Tuesday – I’m working on another one that’s freaking out, and I can’t tell what’s going on, and the admin tools don’t work, and smoke is pouring out of the side of it, and gear teeth are flying out with sparks. It’s a mess. I keep wanting you to not hurt me, OS X Server, and you always do. Every time. I hate you. It’s like some horrible abusive relationship. I run away, seek counseling, go to a victim-of-abuse-by-os-x-server shelter, get my life together again, and then, months later, I think, “Hey, that OS X Server, he ain’t so bad…it was probably something I did, after all. I bet I can do better.” And then I’m making excuses about how I fell down the stairs and banged my eye into a doorknob again.

I also have redeveloped Braydix (as a necessity). Instead of building it against Firefox, I built it against WebKit, and saved literally 2 or 3 months of work. Holy shit! It’s no wonder that everyone uses WebKit as their base. My God, the difference! I also used the Qt toolkit, and was finally able to get rid of Xwindows, which I am sooooo stoked about. So the latest Braydix uses the Linux framebuffer and bops open a web browser right there. It boots up fast for me on my VirtualBox, but I sent an ISO to good ole Bryan and he wasn’t able to get it to do much without it panicking and dying. So a bit more work to do. Another thing I did was I jammed everything into the ‘initramfs’ and got rid of the whole concept of a root drive. Sooooooo freeing! And the result is a 33 MB ISO (which doesn’t yet work, but shhhhhh…). I’ve been trying to get it to run on this eeePC I have handy but so far, not quite. Just getting Grub on there was enough of a challenge. We’ll see how it goes.

Mac OS X Server

I am a huge fan of the Mac. I have been using them since the Mac Plus running – oh, I dunno, it was before system 6 and MultiFinder and all that. I’ve dabbled in PC’s, and am pretty good with them, but I love Macs. And I like Unix machines a lot too. I learned Linux In the days before the kernel was 1.0 – it was in the 0.9’s or something, I don’t remember. I ran Slackware in those days. Ah, the good ole days.

So I try to consider myself platform-agnostic. I can tell you now some things I really like about Windows boxes. Among which was the generally snappiness of them. I was running a Win2k box for a while (to help force me to test one of our application’s bugginess and behavior under the Dreaded Internet Explorer). It made me really envious. And, so long as I didn’t mess around with it too much, it performed well – especially so for a box with such low specs (as it was, I think I blogged about it before).

As such, it pains me terribly to say I fucking despise Mac OS X Server. I’m sorry, but Apple has completely blown it with this product. I don’t doubt that they are fine if you just do file and print, but this isn’t a Windows server, it’s a Mac server – it’s got Unix stuff in it – why can’t I make it do a whole bunch of things? And the answer is, because it is shit.

The number of individual problems I’ve had on OS X Server is too numerous to count. The stupid management applications crashing on me, or their effects not ‘kicking in’, or the fact that you can’t migrate NetInfo accounts to LDAP accounts, any number of things. The GUI ends up being obtuse and incomprehensible, and the command line is even more painful than that. I’ve always theorized that when you try and put a nice shiny GUI on top of an ugly (but efficient, and flexible) command line, the end result is always a terrible mishmash. I was hoping to be proved wrong with OS X server. And I have not been. The file system is shit. The Mail server is garbage. The web server – oh! the web server! – I have never seen Apache be so terribly crippled. I had to crawl around in config files and XML files for hours to repair our server, once. Awful. And we’ve taken explicit, careful pains to never mess with the command line or any binaries or anything – after all, it’s an OS X server, and we’re trying to do things the OS X way. What a disappointment.

Today, for example, I’m trying to set up a co-workers account so he can do SSH authentication to the server to run some simple SSH commands (having to do with Subversion, a version control system I’d like to switch us over to from CVS). I go into the management app, I go to my coworkers account, I see he has no ‘home’ set. That’s fine, he is not an SSH man, himself. So I try and set him one. Crash. I try and read mine so I can compare. Crash. I try and look at it again, it’s not one box for ‘what is your home’ it’s three boxes, and I can’t figure out what is what. And I’m not stupid. And any time I try and do anything to it, crash. What a fucking mess.

Now, don’t think this means I have any like for Windows servers. Because they’re just as bad – though possibly a bit less so, since they don’t have to do the “Shiny GUI to shitty command line translation” that OS X has to. To enable RIP routing on a FreeBSD box? (Mind you, I don’t know FreeBSD that well). set it to ‘yes’ in the conf file, and then launch it. Boom. New routes in routing table. Try to enable RIP on Win2k3 server? You have to enable routing and remote access (Telephony! What the fuck!), then add RIP for an interface, then all kinds of stuff – then all my route metrics are all freaky and inexplicably huge, until I find out that Windows is randomly mangling my route metrics based on interface speed (NB – win2k did not do that). What kind of lame-ass bullshit IS this? IIS also enjoys baffling and frustrating me and anyone else who is cursed with it.

Unix boxes, however, are mean. They just aren’t nice or friendly at all. Totally unapproachable. Compare an airplane cockpit with the driver’s seat in a car. The car you might be able to work out yourself, by playing with it. The airplane, you will not. There are 50,000 gajillion little controls for things. The car emphasizes just a few, and will let you get around. So the end result is it takes FOREVER to figure out what you’re doing on a Unix box, until you start getting the Zen of how it works and what its design are. You can do a hell of a lot on a Windows server or a Mac server without knowing what the hell you’re doing. And that has its advantages. And its disadvantages, when you mess with something you don’t understand and unleash unholy hell upon yourself. And Unix boxes will not only let you shoot yourself in the foot, they will load the gun and point it right at your foot, and take the safety off, and not say a word about it. Like I said, mean.

I do know this – any time I get to spec out or make any new server or computer for anyone that I have control over, it won’t be a Windows or Mac server. Maybe if it was something for simple file-and-print, and some email, I might. But not for anything nontrivial.

I should mention – it could be an issue with my own personal comfort level with these machines. I mean, I know Unix boxen pretty well, maybe not as well as I know the Windows and Mac boxen. But every time someone needs to refer to someone who knows more about these things, they always get referred to me. So it’s sad, but maybe I *do* know as much about these things as I do about the other. Because I assume there’s some bias in my knowledge here. But the scary thing is, there might not be.