Welcome to iPhone: Your Crappy Mac of Tomorrow, Today!

Note: this post is a long non-technical rant. Please skip it if you don't want to read that kind of thing. I promise that this will be a rare event.

My employer got me an iPod Touch shortly after Apple announced the official iPhone SDK, but it ended up not doing much for a while. Due to various things beyond the scope of this post, I didn't do any SDK work with it. And since I rarely listen to music outside of my office and my car (which has no iPod hookup), it didn't get used very much for anything.

Arrival

With the release of the 2.0 firmware I started using it more. Apps like Remote, AOL Radio, and Pandora really make the thing more useful. This has also led me to use the built-in apps more frequently. It's a lot more convenient to skim through my e-mail on the iPod than it is to lug a laptop downstairs for breakfast. Having a credit-card sized web browser is also very handy. (Unless your page uses Java, or Flash, or requires real JavaScript mouse events, or....)

But as they say, familiarity breeds contempt, and after using it more these past few weeks, I've come to realize that the iPhone platform is really pretty crappy in a lot of ways. And these ways are mostly not due to hardware limitations, but rather artificial limitations put in place by Apple. And mostly these are limitations which have been put in place For Our Own Protection, and which have been, shockingly, praised from many quarters.

Counterattack

Let's take a common scenario. I want to chat with my wife in China while I check out the latest mailing list posts. I prefer to use Meebo for my IM needs, as I find the official AIM client to be too clunky, slow, and annoying (not to mention that it only does AIM). You can make this work. Open two pages in Safari, one for Meebo, the other for Gmail. They both function, mostly. Except Mobile Safari apparently doesn't run JavaScript in backgrounded pages, so I have to make sure to switch back to Meebo every few seconds, lest I get connection errors. But it works, for the most part.

So this is annoying, but usable. It works for a little while. And then Mobile Safari, in a delightful fit of absentmindedness, decides that it no longer wishes to remember my Meebo page. It clears it from memory, reloading it the next time I switch to it, signing me off, and probably losing whatever pending messages I hadn't read yet.

Alright, so I'll switch to AIM. This makes the process significantly more cumbersome when switching back and forth, but due to AIM's server-side support, at least I can be away from AIM for longer without getting any errors or actually signing off. But now, of course, Safari decides to have another fit of amnesia, and forgets the contents of the page I'm viewing, reloading it. Helpfully, this makes gmail forget my place and take me back to the inbox. Great.

So much for chatting and viewing the web. Never mind that I could do this just fine on my Quadra 610 over a decade ago, with vastly less computational power and only a slightly larger screen.

Let's try something else, like listening to music while I chat. So I hit Music, choose a track, then go off to chat. Works fine! Of course I don't bother loading much music onto this thing since it's a pain to do, so I'd rather listen to internet radio. Let's fire up AOL Radio instead. Pick a good station, then go chat. Whoops, music stopped.

Suddenly I notice my App Store icon has a badge. I have some updates! Ah, maybe an AIM update will make it suck less. A Twinkle update too. And a few others, no doubt all good. I click update. Enter my password. Again. For a bunch of free updates. They begin to download and install. Ah yes, this takes a while. To pass the time, I'll go read the latest updates on Twinkle.

Hmm, my Twinkle icon is gone. Oh, it's moved to the next page. Oh, I can't run it, because it's downloading and installing. Crap. I'll just stare at the progress bar until it's done. Waiting... it's done! It's still on the next page! Now let's pass the time by manually moving AIM, Twinkle, and the three other apps that got updated back to where they started.

Oh yeah, and not only did they all forget where I had placed their icons, but half of them just forgot everything they knew about me.

And then to top it all off, I get a receipt in my e-mail for the half-dozen free updates I just downloaded. Total charges: zero dollars.

Shake Before Using

I can't expect too much from Apple. After all, 2.0 is really a 1.0 of all the fancy new stuff, and it's only been a year since the very first release. And Apple doesn't need to do everything perfectly, just provide the framework so third parties can fill in the gaps.

Oh yeah, about that.

How about a third-party app that would let me run AOL Radio in the background? Hmm, violates Apple's terms, nuts. Maybe a third-party application launcher to replace the default one. Nope. Maybe just a Safari plugin to make it less strict about purging certain pages from memory. Ah, crap.

Wait, I have the perfect solution. Let's just write our own browser, and music player, and Twitter client, and chat client, and mail client, and app updater, all in the same application. And then we can stick a launcher front-end on it. And then, since it's all the same application, we can multitask and switch and run in the background as much as we want. After all, who needs an operating system with process management. AppleWorks showed us just how well the highly integrated application can work. Single-tasking is how it was done on the Apple II, it was how it was done on the original Mac, and by god, it's good enough for the iPhone.

Well, unless you're Apple, of course. After all, you wouldn't want "Music" to quit just because you launched Safari. Never mind that the third-party music players that I actually want to listen to can't do it.

Reprisal

After spending a month or so really using this thing, I feel like I've gone back to the dark ages. This is GS/OS 4.0. Mac System 1. But unlike those, Apple isn't letting us developers patch over their holes. There will be no MultiGS, no Switcher. No plugins, no launchers, no daemons, no services, no improvements.

Unless Apple makes them, of course.

But do you think they will?

I'm going to keep using this thing. Despite all the flaws, it's still a useful device to have, especially when I didn't have to pay for it myself. But right now, I'm only getting maybe 10% of the hardware's potential, and this is all Apple's fault.

I suppose I could jailbreak and get some of these fixes, but I don't like hacking at closed hardware, always afraid Apple will shut it down, searching for hours for the right program to crack open the device and expose the juicy goodies inside, afraid to hit the wrong button and turn it into an expensive brick.

I wish they would just let up on the thumbscrews already, let us lowly users install what we wish, and let the platform evolve naturally.

Rebellion

But my big fear, what prompts me to write this article, is that this is just a preview of bigger things to come. Specifically, I think that Apple is going to start pushing Mac OS X in the same direction as the iPhone. Maybe not today, maybe not tomorrow, but over the next few years.

There's no smoking gun that makes me say this, but there are some worrying indicators:

First, some miscellaneous things like Apple's long time pointless usage of the ptrace() call in an attempt to protect iTunes, DVD Player, and any other program that uses Apple's DVDPlayback.framework from being debugged. There are also encrypted binaries which showed up in 10.4 as part of the Intel switch.

Second, code signing. This is, after all, what Apple uses on the iPhone to deny access by "unapproved" applications. Code signing is something that can be used for good or for evil, and despite many assurances from Apple people that it's only intended for good, it appears to me that Apple has yet to make up their minds about it in Mac OS X. For example, code signing is used to avoid re-prompting the user for keychain access when updating a signed application. This is good. It's also used to give Apple applications special privileges to bypass the firewall even when the firewall is set to "do not allow anything through under any circumstances at any time ever, period" mode. This is very bad. Code signing is used pretty much only for evil on the iPhone, and it could easily shift that way in Mac OS X as well. For all we know, Snow Leopard will come with a switch that says "only allow Apple-approved applications", and it will default to On. Guess what that will do to us third-party developers.

Last, Apple's focus and attention seems to be on the iPhone, and the sentiment coming out of Cupertino is one that the iPhone is good, all of the stupid, crippling restrictions on how it works are good, and Apple always knows best. After all, what platform got basically 100% of the attention at this year's WWDC keynote, and what platform got 0% of the attention? Hint: the desktop Mac you are probably reading this post on is not in the 100% category. This is the same keynote, let's remember, where high-up Apple people ridiculed the idea that anyone would ever have a legitimate reason to run applications in the background. Unless that application is made by Apple, of course. And then they came up with their brilliant idea of push notifications, which totally replace the need for background processes, unless you're writing a music player, or a web browser, or GPS logger, or a terminal emulator, or file downloader, or....

The iPhone is not just a crappy platform. It's a crappy platform which may very well turn our beloved Mac OS X into a crappy platform too. Right now Apple has two platforms. One of them is powerful, rich with history, open to any development, and hacker friendly. One of them is deliberately crippled, difficult to use for any kind of advanced tasks, will not accept code without the Apple Official Seal of Approval, and is extremely hacker unfriendly. The latter platform also has all of Apple's love and attention right now. How long can it be until these Apple higher-ups, who talk down to us about background processes and told us that web apps were an awesome way to develop, decide that the desktop Mac OS X could use some of this closed system code signing restricted seal of approval sauce too?

Try Again

Now, before you post a comment, or write about this, or even criticize this post in your head, there are some points I would like you to keep in mind:

No, I haven't forgotten how resource constrained the device is. I am concerned that a lot of people have forgotten how resource constrained their once-powerful desktop systems of yesteryear were. 128MB of RAM and a 600MHz ARM is more than enough to run a modern mobile operating system, a music player, a chat client, and a web browser. Hunting down a runaway process that's destroying your battery life sucks, to be sure. But you know what sucks more? Not being able to listen to music while I chat. You want to know why Apple doesn't have a switch in the settings that says "enable background applications"? Because everybody would turn it on as soon as they found it. Apple doesn't feel like putting in the effort to do it right. They're taking the cop-out of simply disabling it (except for their own apps, because don't forget, they know better than you), and then telling us what a great favor they're doing to all of us by destroying the functionality of our devices. Don't even think about mentioning viruses, worms, trojans, or other forms of malware. Mac OS X is an open system which will run any code you hand it, and somehow it has not been overrun with malware. The iPhone installed base is currently about one tenth the size of the Mac OS X installed base, and as such represents an even smaller target. Likewise, no talk of how rich people are going to get off the App Store. First of all, I'm doubtful that anyone will get rich. With only a few million iPhones in the world, you'd have to get an extremely large percentage of them to buy your stuff to get rich. Secondly, even if a few select developers do get rich, this has no bearing on how much Apple is destroying my user experience. And last, none of this stuff about it not being a miniature laptop. I know it's not a miniature laptop. But when a device is advertised as being able to play music and browse the web, is it too much to ask that it can do both at the same time? Yeah, I'm angry. I'm tired of being fed crap and being told that it's caviar. I'm a very long-time Apple user, and I don't think that they are going in the right direction with any of this stuff. And no, the fact that several million people are willing to plunk down hundreds of dollars for an iPhone 3G of their very own is not going to convince me otherwise.

Did you enjoy this article? I'm selling whole books full of them! Volumes II and III are now out! They're available as ePub, PDF, print, and on iBooks and Kindle. Click here for more information

And I think that's it. Flame away!Comments:

Add your thoughts, post a comment:

Spam and off-topic posts will be deleted without notice. Culprits may be publicly humiliated at my sole discretion.