February 5, 2007

Why Apple is Better than Microsoft

Category: Apple — me @ 4:27 pm

With a title like this I’ll bet you’re expecting some rapid evangelical Apple-activist rant on one of the many themes you’ve heard time and time again. You know, Macs having fewer viruses, having a superior UI, etc. And granted, I do very much love working in my Apple world. Whenever I have to “slum” in Windows, and especially if I have to work on someone else’s computer where a zillion little apps and utilities have been installed (willing or not) by the owner’s ISP or Real Player or some anti-virus software, and where the IE toolbar has been polluted with half a dozen ROWS of little controls by Google or Microsoft or whatever… ack! I want to pull my hair out.

But all that notwithstanding, I wanted to blog about something that few people—even few Mac users—are aware of: the magic that’s “under the hood”.

A little over a week ago I attended a “Leopard Tech Talk” here in New York. It was like a free, one-day conference/workshop for local Apple developers focusing on the new technologies being introduced in the upcoming “10.5 Leopard” version of the Mac operating system.

Now I can’t tell you anything specific that I learned that day. As an official Apple Developer I’ve signed a Non-disclosure Agreement so I’m legally bound to keep my lips sealed. But I can tell you that it was an amazing experience. And it cemented into my head the true level of “evolution” that you get with OS X that is completely missing in Windows.

Apple is constantly coming out with new “Frameworks” in their operating system that create simple and powerful new paradigms for programmers to use. One of the most amazing features that came out in the last “10.4 Tiger” revision was called Core Data. With it you were able to use some amazing new tools to design the interior data structure for your application. In fact, you got a GUI tool that allowed you to simple “draw” the data structure. Whether your application is some productivity app or a simple “cooking recipe library” or maybe you’re developing something to monitor exercise and diet—whatever the application, you usually have some sort of “data” that you’re managing.

So anyway, instead of “rolling your own solution” for defining and storing and manipulating this data set, if you use the new Core Data framework you get all these amazingly powerful features “for free” from the Operating System. First of all, the OS will manage the data storage, using a lightweight database solution—either a flat-file implementation or SQLite, you don’t have to worry about which. Secondly, you can simply graphically drag the controls in your apps GUI to manage a lot of the data fields. (This isn’t new or revolutionary, but it is not elegantly integrated into the OS.) But wait, there’s more! You instantly get the ability to add Synchronization technologies via iSync in case you want your app to synchronize its data between different computers. Oh, and wait, if you want to develop searchable fields via the new Spotlight technology, that comes for free as well!

But I’m not trying to write just about the miracles of Core Data. My point is this is one example of a technology that Apple added into one of its revisions of the operating system. Every 18 months or so there are a bunch of new, similarly powerful frameworks introduced. In Tiger there were new graphics frameworks (Quartz Compositions, Quartz 2D, Core Image and Core Video, and Quartz Extreme) and a new pluggable automation system (Automator). All these came in the last revision of the Operating System. The revision before they came out with things like Core Audio to make working with sound easier, and Rendezvous (now called Bonjour because of a trade name dispute) for auto-detection of hardware and software services on a local network, and WebKit for HTML rendering solutions.

And this next version of the operating system, Leopard? In some ways when you look at its interface (as demonstrated by Steve Jobs in the 2006 WWDC keynote; I’m still not breaking any NDAs here) you may ask “Is that all?” due to the smaller number of new features. But here’s what I have to tell you: much of what’s in there is a continuation of the API development “under the hood” that no user will know about. It’s the development of these frameworks that makes it possible for Apple to come out with a constant list of great new applications for this OS, like the entire iLife suite, or the movie-editing Final Cut Pro, or a lot of the new OS features themselves.

And all these new technologies make it possible for 3rd-party application developers to make powerful new applications with very little effort. On the downside, there are many apps out there that require the end-user to have the most recent version of the OS installed. That’s good for driving Apple’s sales, but it really allows the entire platform to expand and develop rapidly. It’s this driving pace that allowed Apple in less than one year to switch to a PowerPC/Intel architecture co-existance, and the amazing ease of supporting 32-bit or 64-bit applications.

Now let’s look at Microsoft. Hmm. Well, to be honest, many applications out there developed in Visual C++ or Visual Basic really just target the same Win32 API and Windows Foundation Class object-oriented framework. There are some available features for integrating Internet Explorer views into your applications. (Quicken is a good example of a IE-based UI.) If you are a video game developer, the various DirectX libraries have been evolving to give you new powerful frameworks. But in many ways programming for Windows isn’t much different between today and 1995. Apart from the user experience, Windows Vista isn’t much different than Windows 2000 or even Windows NT 4.

A lame exception—the only example of a revolutionary new framework—is the whole .NET framework. Back in the early days (five years ago) planning Vista, there were big plans for .NET to be the Windows evolution. But bit by bit it moved away from being strongly integrated into the OS to just being a subsystem that didn’t differ much from the Java virtual machine. Don’t get me wrong: .NET is pretty cool, and you can do some nice things with C#, but it doesn’t really reflect any new Operating System features. Nothing like the proliferation of amazing technologies that Apple keeps adding in.

I wish I could conclude with some auspicious predictions about the future of programming, but alas I cannot. As great as OS X is as a desktop OS, there are some bone-headed things Apple does that keeps it out of the world of Corporate IT. (Right now: lack of virtualization, the botched and aborted ODBC subsystem, and the refusal to even look at .NET integration with the same eye as Python and Ruby.) But I will say that the few kids that are studying Computer Science are doing amazing things with OS X, and they will eventually become the corporate problem-solvers and decision-makers of the future.

For now, I just wish I could work with Apple technologies professionally, because they are just friggen’ cool. Sadly, the chances right now of that are a snowball’s in Hell.

No Comments »

No comments yet.

RSS feed for comments on this post.

Leave a comment

XHTML ( You can use these tags):
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong> .