Sunday, April 11, 2010

Apple’s SDK brouhaha explained for non-developers (as if you care)

I’ve got it in my craw to try to explain the current brouhaha behind Apple’s recent SDK changes. It’s a case of history repeating itself, so that a dominant platform can retain its dominance through bullying and complexity.

To understand this issue, you must understand the plight of every business that develops mobile applications. When planning to create an application for mobile devices, this is the conversation that happens at thousands of companies around the world, again and again:

Boss: We want everyone to be able to run our application, no matter what phone they use. Can you create an application that will run on all phones?

Engr: All the phones use different APIs (Application Programmer Interfaces). We can’t write one application that runs on all phones.

Boss: So write a different version of the program for each phone.

Engr: That would take 20 times as many developers as we have, probably one to concentrate on each phone. Can I hire 20 times as many developers?

Boss: No, we can’t afford to hire. So write the application as a web page. I hear web browsers are getting pretty powerful.

Engr: Yes, and very many smartphones are, or soon will be, running a similarly powerful HTML5 browser. But the HTML standard is always about 10 years behind the times in terms of supporting our needs for storage, media input, media output, GPS, compass, touch, tactile, and odor. We can’t do our app in HTML5.

Boss: So we’re back to writing a separate application for each platform. What can we afford to do; keeping in mind that iPhone is the device by which our company will be judged?

Engr: We can spend a lot of time making a really sweet iPhone version, and a little bit of time hacking together good-enough version for Android and Blackberry, then throw together some crap versions for J2ME and Palm and Symbian and Windows mobile.

Boss: Isn’t there some way we can write our application once, and run it everywhere?

Engr: Some way to “write-once, run-anywhere”? Hmmm… That question is beyond the scope of this little embedded dialog. Let’s return to Brent’s blog...

The nirvana solution for every developer with less-than-infinite time and money is to Write-Once, Run-Anywhere (WORA). In a WORA world, you would take the time to write application source code, then flip a switch and the WORA tool would compile that application into something that ran on iPhone, something that ran on Android, something that ran on Blackberry, and Pre, and on and on.

There are two ways to make WORA magic happen:

  1. UBER-API: Translate an uber-API into something that runs on all platforms. The most well-known contender in this area is Adobe’s Flash (but there’s also Corona & Titanium & PhoneGap and others). With Adobe’s tools, a developer could write Flash code, then compile that same code into something that would run similarly on a wide range of phones.
  2. EMULAPI: Create an API layer on all platforms that copies (or emulates) the API of another platform. To do this, one would emulate the X API on the Y Platform, so that code written for X could then be compiled to run on Y. For example, Google could write a tool to take the Objective-C source code of an iPhone application (possibly even the raw binary application), and run it on and Android via a compile- or run-time layer that emulates the iPhone API.
Every dominant platform (i.e. the platform that has the most developers creating for it) has fought to retain its dominance by preventing WORA. IBM did it with mainframes. AT&T did it with Unix. Microsoft did it with desktops. Now Apple is doing it with mobile.

Apple does not want to lose its dominance. Apple does not want WORA. Apple’s tactics to prevent WORA are the same ones used by IBM, AT&T, and Microsoft before it. These tactics are A) bullying, and B) complexity.


Much has been written this week about section 3.3.1 of the iPhone Developer Program License Agreement, which says, in essence, that no app will be accepted into the app store if it is originally created with a non-Apple API. For as long as Apple can get away with it, this bullying clause prevents WORA type 1: UBER-API. You can read here, here, here or here for more about this brouhaha.


Apple also announced something else last Thursday that has not been much written about: They announced over 1500 new APIs. That’s 1500 NEW APIs, an addition to the approximately gazillion API’s already in the iPhone SDK.

Why is it so important for a dominant platform to have so many APIs, and for that API list to keep growing? Remember that the second way to achieve WORA is to duplicate the API of the dominant platform. If Apple wants to prevent this form of WORA (i.e. to prevent a developer from writing an app for the iPhone, but being able to then compile that same app to run on Android and RIM and other platforms) they need to keep their API large, complex, and always growing. This makes it hard for another platform to duplicate for two reasons:
  1. The shear number of APIs means that a lot of engineers must take a lot of time duplicating those APIs.
  2. With so many APIs will come even more bugs. Some small percent of code is going to contain bugs, even if written by the mighty geniuses at Apple. To duplicate Apple’s API well you must also duplicate the bugs, which is even harder than duplicating the APIs themselves.

So that’s what’s up with Apple this week. In short, they are now the dominant platform in a space, and they intend to maintain that dominant position for as long as possible by preventing the ability to write an application once and run it anywhere. Apple’s tactics for maintaining their dominance are: bullying and complexity. They’re the same tactics use by every computer platform dominator before them. All of this has happened before, and it will happen again. So say we all.

Friday, April 9, 2010

Apple’s 4.0.1 Developer License prohibits apps written by the left hand

News Item: A small but vocal subset of developers across the web are registering their outrage at this change in Apple’s new iPhone 4.0.1 SDK license:

15.3.5 Applications must be written using only the developer’s right hand (e.g. applications written using the left hand, or partially written with the left hand are prohibited).

The primary reason for the change, say sources familiar with Apple’s plans, are to ensure quality of user experience, better multitasking, and longer batter life.

“A quality user experience is critical to the iPhone and iPad experience,” said Steve Jobs, who declined to specify if he was left-handed, right-handed, or bisexual. “Beautiful apps start with beautiful code. Our User Interface Imagineers have determined that the right hand, which is closer to the return key, produces more newlines, a cleaner source-code look, and, hence, more beautiful apps. Such code also extends battery life in a multitasking environment.” Jobs further explained that developers using their left hand to code are overly tempted to be masturbating with their right hand, or accidentally using too many words starting with letters from the left side of the keyboard, such as “Adobe”, “Silverlight”, “Flash”, or “Google”.

In a press release it was also announced that the Apple board has agreed to shorten Jobs’ lengthy title from “Chief Executive Officer” to just “F├╝hrer”.

Sunday, April 4, 2010

Postcard from the Holy Land

I love Peeps. I loooooooooove Peeps. No, that’s putting it too mildly (damn me and my low-key understated ways). I luh-huh-huh-huh-huh-huh-ove 'em.

Peeps are my rock. My foundation. This makes Easter the most significant day of the year. For you Easter may be just about bunnies and decorative hats, but for me Easter is almost a religious thing.
BTW, I’m not fanatical in my religion. I’m not like those cultish blaspheming schismoids who believe that Peeps come from Cadbury Eggs. That’s ridiculous. Peeps are immaculately conceived.

This Easter was supposed to be the greatest of all Easters. This is the year I had made my holy pilgrimage to seek the origins of those magic marshmallow treats. But…

Wow! Easter Island isn’t at all what I expected it to be. I thought it would be like CandyLand of the Gods. Turns out it’s an island (which I expected) without trees (which I did not expect) some really really big stone heads (which nobody would expect, because it’s just weird--I thought I had a big head, I always say it’s big enough for someone with at least twice my IQ, but these things are enormous) and, worst shock of all, ask around and no one will tell you where to find Peep Eden. They keep it a secret. Not a Peep.

To make matters worse, our group was stuck with a tour guide, named Ricardo, who was a complete, rude asshole. He was also just plain stupid: I mean, the guy could hardly even speak English. He’s from Chile, fer-chrissakes. North America, South America, whatever, it’s all America and he should learn to speak American gosh-darnit!!
I got nothing against Chile, mind you. I luh-huh-huh-huh-huh-huh-ove Chile. It’s my second favorite food (behind Peeps)—I don’t care if it’s with meat, without meat, chunky, hot, mild, marshmallowy… I love Chile. I was planning a pilgrimage next year to Chile, but this tour guide is such a jerk that I may cancel that trip.

I’m really starting to question my faiths.

Here’s a little taste of the tour, so you can see what a douchebag we had to put up with.
Guide: The ancient inhabitants of this land were known as The Rapanui, they once numbered over 10,000.

: Hold it right there, Rick, but that’s just BS. I happen to know that the inhabitants are called “The Peeple.” Also, there’s no way in hell 10,000 Peeple ever lived here. So no more bullshit, OK?

: Some say as many as 17,000 at it’s height.

: Bull-Shit! Just look around, there’s hardly any food growing, hardly any trees, there’s no way 10,000 could live off this land.

: Most experts say that the Rapanui deforested their land, causing their own population collapse.

: Oh my god, you’re one of those hippy environmentalists, aren’t you. Next thing you know you’ll start talking about climate change.

: Yes, climate change in the 18th century probably exacerbated the deforestation. They simply used up their resources faster than they could be replenished. I believe the day came where a Rapanui individual, desperate for fuel, knowingly and willfully cut down their last mature tree.

: No way. Peeple weren’t so stupid as to use up their own food and fuel supplies faster then they could be replaced.

: Tell me, sir, how did you get from your home to Easter Island?

: I flew. Took a few flights, actually, it was quite a hassle. I should have been upgraded.

: Those planes used a lot of fuel. How quickly are you replacing the oil that was drilled to make all that fuel?

: I don’t replace the fuel. The oil companies do that. Duh!

Thankfully, we broke then for a box lunch the tour agency had provided. But pretty soon the guide was all up in my ass again:
Me: Excuse me. Could I have a real knife instead of this plastic stuff you gave us?

: Good for you, sir, using reusable silverware instead of disposable, oil-based plastic. You have learned something, sir.

: Hell yeah, I’ve learned something. I tried to chisel off some pieces of that big stone head, to bring home as souvenirs, but these plastic knives don’t cut through shit.

: grrrble grrblle grrrble (his English got so bad at this point that I couldn’t make sense of any of it)

So that’s my Easter vacation. A bit disappointing, eh? It just goes to show that people are the same wherever you go: there’s always some asshole trying to ruin things for the rest of us.

Actually, although I hate to admit it, the guide did have a point about maybe, possibly, the oil running out. Just in case he’s right (and I’m not saying he his) you should all get on a flight to Easter Island now, while you can, pronto, before the oil’s all gone. Those heads are ginormously big, you have to see them for yourself to believe them, and (thanks to the jerk guide) I wasn’t able to bring any pieces back to show you!

Bring a chisel.

Hopefully I’ll have a better time on my next vacation in a few months in Puerto Vallarta, where I plan to celebrate the 4th of July (although for some weird reason they call it “Sinko Day My Oh!”)