STATIC DISCLAIMER: All the stuff in here is purely my opinions, and they tend to change depending on what mood I'm in. If you're going to get bitter if I say something about you that you don't like, then maybe don't read. I avoid using names as much as possible, and would request that people who know me do the same in their comments. Basically, I often vent my frustrations on here, so if you happen to be someone who frustrates me, expect to read a description of someone very much like you in here!

Friday, July 14, 2006

Ninjas and pirates = cool

I just thought I'd try something different, and title a post something completely unrelated to the actual content.

So what is this post about? It's a musing on Apple's Universal binary... thing. Idea? Concept? Standard? Framework? Whatever. It's about Universal binaries.

So you might be reading this as part of the sensible 95% of the world's computer users, and you might say to me "Justin, oh man with a rant, what pray tell is a Universal binary?"
To which I'd probably reply "Well, first we need some very quick history..."

Apple Macs have run on PowerPC chips now for many years. I've asked around, and it appears that when they changed to the PowerPC chips from the Motorolla chips, the compatability issues were all but overcome by embedding a Motorolla emulator in the ROM. Nice idea, but apparently it still caused some issues because it didn't do any of the floating point stuff. But hey, this was before Quake, so who needed floating point?
Anyway, the PowerPC architecture is RISC and likes to sort it's bytes using a different "end" to the rest of us Intel/AMD people. PowerPC likes the big end of Ian, and Intel/AMD prefer the small end of Ian - whoever Ian is. That's why they call these different approaches Big EndIan and Small EndIan. So writing a single piece of code that will run on both is nigh impossible - and seeing as how the computer can't tell one end of Ian from the other, it does make life difficult. There is other... stuff... involved but this isn't a technical blog per se, so I'm not going to bother explaining. Basically, if you write and compile code for one, it sure as heck isn't going to run on the other.

Fast-forward to today when suddenly we have Apple's OSX running on both PowerPC AND Intel CPUs. There's a bunch of software out there that was written for the PowerPC chips, and so cannot run natively on these new fangled machines. However, see people don't get that, and wouldn't get that. So the first thing Apple did was bung in an emulator, and give it a trendy name. Why? Well, because that's what Apple do - give things trendy names. It's not an MP3 player - it's an iPod (C)(R)(TM)(Patent will bite you in the ass). It's not an internet Macintosh, it's an iMac. Are we seeing the sparkles here? I know I am. Sorry - tangent.
So Rossetta. Named so after the Rossetta stone, although from my limited understanding, the stone helped translate between 3 almost forgotten languages, and Apple's version only seems to translate the one: Macintosh software. Now you can go out and spend double what it's worth on a new Mac, and have it run most stuff SLOWER then your old one. "This will never do" says Steve. And so, he comes up with a brilliant idea. (note that I can't support Steve Jobs actually comming up with this idea personally...)

(You knew I'd get to my point sooner or later, right?)

The first Apple product with a name less-then-vaguely related to it's purpose! What is it?
Well, at first glance you might think "Binaries, that are universal". And hey, that actually was my first guess. But from our discussion of Ian's ends earlier, you may remember that this is "nigh on impossible". You can't just take once piece of compiled code, and have it run on both platforms, can you? Well... no. Or yes. Or maybe.
Apple simplifies this as follows: From a user's perspective, a Universal program such as Filemaker can be run on either a PowerPC or an Intel Mac and for all intents and purposes they use the same set of files on either architecture. However, what isn't obvious is that it's not the same code. Actually, each executable file contains two seperate applications - one compiled for PowerPC and one for Intel chips - wrapped up together in a nice compiled Universal wrapper so that they can't be seperated. This, for your average user, works fantastically as anything carrying the Universal logo can be run on any recent Mac.
However, here I come to my gripe with this. Most Mac users will bandy about the term "bloatware" in reference to Windows and Microsoft software in general, and on occasions I can see their point. However, I have never seen something so wasteful as using double the necissary hard disk space for an application, simply so that your users don't have to remember the word "Intel" when they're buying software. Doesn't this seem like going a little too far with the "It Just Works"(C)(R)(TM)(Patent will bite you in the ass) mentality? If I were to say fill 100Gb on my Intel Mac with executables, (on avaerage) 50Gb of that would be useless padding that will never be referenced. Ever. Seems just a little wasteful to me.

So why would I write this post? I mean, the Mac users seem happy enough - what's the problem? The problem is that the arguments that I hear from Mac users on a daily basis about why Macs are so much better then Windows PCs are based on bad computing practices. Inefficientcy, supported user ignorance, data hiding. The Mac OS is like one giant rootkit, perminantly hiding files in the GUI that Steve doesn't think users should need to see. There's no option to show them - they're just never there. And Mac users are fine with this, because why should the graphical representation of files on your disk actually represent the files on your disk? That would just be confusing. And now with Universal binaries, you can fill 50% of your hard disk with superflous code, just so we can continue to support the users' right to be completely ignorant of their computer as a computer. Because your Mac isn't a computer - it's like a trendy 20-something guy in jeans and a t-shirt who starred in that "Ed" TV show. I don't know about you, but that guy always seemed like a bit of a useless dork to me, and I prefer my computer to be useful, even if it doesn't come in indigo.

Alright - through writing this post (and viewing the link immediately above), I've become so fired up about my anti-Mac-ness for the day, that I'm going to write another post.

No comments: