iPhone app? I'd rather not

The latest craze is to write an iPhone app. I’ve been preaching for a while that mobile apps are the way of the future but I don’t like the idea of iPhone apps and here’s why.

First, I have to give credit to Apple. They’re brilliant, though I’m convinced the place they’re at now is exactly what they intended a few years back. If you work on the premise that any good capitalist company is bent on total market domination (not all companies are but it seems to fit Apple) then what they’re doing is right on track to achieving this goal.

The iPhone is a smart phone targeted at consumers. Before the iPhone, a smart phone was a blackberry like device that had a prohibitively expensive data plan and was for corporate communication. Normal people didn’t buy them, it served as a ball and chain to keep people focused on work even when they weren’t in the office. It made no sense to put an MP3 player in such a device, and since most blackberry customers had big IT depts and in house developers, deploying mobile apps meant a java applet. But really, it was about connectedness and communication.

In order to create a new market Apple put what everyone wanted on their new smart phone - a desktop grade web browser. You could use this to access your corporate intranet apps or your personal email or your family photo album. Developing new apps to target the device used the same standard technologies that every company had in stock. HTML, CSS and Javascript. A market opened up and people were happy. Apple successfully created a new product market and captured everyone’s attention.

This does happen every now and then. Netbooks, palm pilots, ebook readers, mp3 players. One company explodes onto the scene with a great idea, the world goes crazy, and then what happens? Send in the clones… It takes a year or more but any time there’s a successful new market everyone wants in.

In Apple’s case the clones were absolutely capable of doing things just as well, and conceivably better. So how do you keep your product successful when the clones come? Offer consumers something they can only get with your product. Something good, something you can make them want and ask for by name.

Now it just so happens Apple has been doing just this for a while. Sony, Dell and IBM have been creating computers of the same calibre as Apple’s line for at least as long as Apple has. But only on Apple’s computers can you get Mac OS, and they’ve done a great job of ensuring people want it.

So what did Apple do to ensure their continued success with consumer oriented smart phones? They created the App store. The App store is not for web applications. No no, those just aren’t cool enough. If you want your app to be able to use 3d or advanced gestures or the accelerator or compass (most apps dont need these) you need to write a native app. You’ll notice that much of Apple’s marketing isn’t about the iPhone, it’s about the app store.

So how do you create an App for the App Store? You don’t use java. Because Java is portable and then it would be too easy to port it to the other clones coming down the pipeline and we don’t want that. Besides, Java is evil and slow and ugly and we can’t have that in the App Store. And C++, that’s no good either, because again, it’d be too easy to port that to other platforms. And besides, everyone knows that it’s too easy to write insecure code with C++. .Net? Noooo waaaay. That’s some other vendor’s proprietary solution.

If you want truly beautiful, secure and unportable code you need to write it with Objective C. Haven’t heard of it? Don’t worry, you’re not alone. It is the platform developed by NeXT, which was later bought by Apple and is the programming language used to develop modern Mac OS apps. And that’s all it’s used for. Period.

So if you want to write very cool apps for the iPhone here’s what you need to do:

  • Get an Apple computer running Mac OS (you can’t develop on Windows or Linux)
  • Learn Objective C
  • Pay Apple for a developer subscription

The least costly of these steps is the last because you can purchase a subscription for as little as $100. The next least costly is to buy an Apple computer. Starting at about $1,000 for a machine, it isn’t too big of an investment.

But you do need to make a big investment into learning Objective C and Apple’s developer tools. And this is where the genius is evident. Every second you spend learning Objective C and iPhone development is an investment in acquiring skills that are useful only for developing iPhone apps and Mac OS applications. In essence, assuring that there is no reasonable competition for Apple’s platforms.

So what can you do if you want to develop for this amazing new platform? (And I’ll readily admit, it is an amazing new platform)

You don’t have to feed the monopoly. Instead invest in skills that will help you with the iPhone and other platforms.

Ask yourself: Do you really need hardware access? (remember, location and orientation are available to web apps) If not, then you probably can use HTML5, CSS and JavaScript. You can write offline apps with HTML 5. You can store data locally using either cookie based persistent storage or client side SQL storage. Add a couple lines of iPhone specific html and your app can behave just like an app store app once it’s been bookmarked on the user’s home screen.

And the good news is that your app can work with little modification on Android and Palm Pre based handsets and much of your code can be reused on desktops and other brands of mobile devices. Wow.

My recommendation: Don’t invest in Apple’s monopoly. Invest in skills that will be portable to other platforms.

Comments

What about the cost of use, though?

I agree with your sentiments on this topic. The iPhone does appear
to be a very awesome platform (at least from a user perspective) and
Apple has done a great job of ensuring vendor lock-in. I have a
question about your proposal to write web applications instead of
native applications, though: what about the cost to the user? Here
in Canada, data plans are very expensive, so using such an
application would have a non-substantial runtime cost.

If your application is so unique that no alternative exists then
people will probably just suck it up and use it. But if a
competitor comes along with a similar product in native form, I
suspect your iPhone users will happily pay $2 or $3 for it and
migrate away.

This feels like a case where focusing on the problems of the
developer might actually create a poor experience for users. Though
maybe I’m reading too much into this and offline support is enough
to work around usage issues…?

Native development is not solely a programming choice

Native development is not solely a programming choice, there is also a good amount of marketing and purchasing methods to consider

There are couple important factor I think you missed about native vs web apps. The app store has visibility.

First, users searching for a new “app”, are more likely to stumble across it in the less noisy, single purpose app store search. Also, repeated use is eased by automatic creation of “desktop” icons.

Second, single payment for an app could not be easier than doing it through the app store, and is virtually impossible by comparison in a web app.

It seems like you could get around both of those problems with a frame though.

Other than that, I agree that web apps are easier, less evil, and have more longevity than iPhone apps.

Post new comment

The content of this field is kept private and will not be shown publicly.
  • You can use Markdown syntax to format and style the text.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Lines and paragraphs break automatically.

More information about formatting options

CAPTCHA
This question is for testing whether you are a human visitor and to prevent automated spam submissions.
7 + 3 =
Solve this simple math problem and enter the result. E.g. for 1+3, enter 4.

Back to top