iphone

La la la la la I can't hear you

Since the iPhone SDK was first released in March, the biggest roadblock to developing good iPhone software is that iPhone developers are officially prohibited from talking to anyone about what they're doing. In order to get the iPhone developer tools, you have to accept to a non-disclosure agreement with Apple. The NDA covers not only the development tools, but itself. I'm not even really allowed to mention what the NDA says, because doing so violates the NDA. I'm hoping that detail will be seen as minor enough that I won't get sued. Saying that the NDA prohibits discussing iPhone development should be OK, since Scott Anguish of Apple has publicly said so many, many times.

One of the most useful sources of information for a software developer on any platform is... other developers working on the same platform. The ability to discuss issues with other developers, compare notes, and get questions answered is extremely valuable. But none of that is allowed for iPhone developers.

This has a direct effect on software quality. Although Apple provides documentation, that doesn't always explain things. Normally, faced with a difficult situation, I'd ask around and see what other people might do. The only permitted way to do that now is through Apple tech support incidents. If you're one of the lucky ones allowed to pay $99 to join the iPhone developer program, you get two incidents, meaning you can get two questions answered. If you have more questions you can buy more incidents for $195 each.

The NDA almost made sense when the SDK was first released. And anyway it had precedent, in that when Apple distributes pre-release software to developers, an NDA always applies. Historically the NDA on a particular release has been lifted when that version is released to the public. This has always been the case with pre-release versions of Mac OS X.

iPhone OS 2.0 was released on July 11. But the iPhone NDA still applies. The rationale for the difference with Mac OS X, as explained on Apple's Cocoa-Dev mailing list, is that Mac OS X releases always include developer tools, while the iPhone release does not. Since the public release of Mac OS X means making the tools publicly available, the prior NDA can no longer apply. With the iPhone this is not the case.

With no obvious milestones on the horizon, and with Apple reps continuing to repeat that the NDA still applies, I can't help wondering if the current situation will ever change. It's not like an iPhone OS release is ever going to include developer tools, because the tools don't run on the iPhone. At this point the iPhone NDA could apply forever, a prospect I find depressing but which I can't dismiss.

All of this might make a tiny bit of sense were it not for the fact that iPhone developer information is in fact widely available. Google turns up results for virtually any search term related to iPhone development. Of course, since I've had to accept Apple's NDA, I could not possibly comment on whether those results are accurate.

I also could not possibly comment on whether the iPhone developer discussions taking place at Apple's own web site are giving useful answers. Apple's steadfastly forbidding iPhone discussion on their Cocoa-Dev mailing list, but if you use their web site instead they don't appear to mind.

If you mention any of this on Cocoa-Dev you'll receive sanctimonious responses about following agreements you've accepted. Which, typically, ignore the bizarreness of so piously pretending to protect the privacy information which is already widely available to the public.

So why aren't I using that web site? Because iPhone development has so far been profitable enough that I can't risk being booted from the official developer program. I won't say I haven't looked at them, though as mentioned I couldn't possibly comment on whether I've found anything useful there.

The situation bears a striking resemblance to US laws restricting the export of encryption software. Those laws were based on the idea that, since bad people could use strong encryption to hide their plans, it was important to keep this software from getting into the hands of people who didn't have the good sense to live in the USA (because apparently that's where all the bad guys are). They also neatly ignored the fact that this software was widely available outside of the US anyway. The net effect was a bunch of idiotic restrictions that utterly failed to achieve their intended goals.

And so we proceed. Apple with its fingers in its ears, pretending that its NDA is keeping something secret, developers like me facing a major hurdle as a direct result, and anyone else with a passing interest in the topic having no trouble getting all the information they might want. Apple, you can pretend all you want, but you're not achieving anything useful to you in any way by doing so.

Smile, you're on the internet!

You haven't seen it on this web site, but it just so happens that I've completed version 1.0 of my first iPhone application, which is now available in the iPhone app store. The reason it's not here is because, as I described briefly back in March, I developed the app on a contract basis for someone else.

AirMe Main ScreenThe application is called AirMe (which is also the client's name). In simplest terms it's a network-enabled camera application. You take a photo with the built-in camera, and the application immediately uploads it to the web. Right now it supports Flickr and AirMe's own photo-sharing site. The app also does some cool auto-tagging and titling of the photos-- like getting your location from the phone and doing a reverse-geocode lookup to get the name of the place the photo was taken. That information is used both for tags and for a generated title for the photo. It also finds the local weather conditions ("sunny", "83F") for use in tags. It can also automatically create Flickr photosets based on location, meaning that if you're in San Francisco, you can have photos automatically go into a "San Francisco" set.

You can of course disable the weather, location, and photoset stuff if you choose. Or add your own custom tags.

And it's free. If you have an iPhone, go and get it, OK?

It's been an interesting development process, enabled by great tools and frameworks from Apple, and simultaneously hampered by the slow process of getting into the iPhone developer program and by a bizarrely draconian non-disclosure agreement. For that last reason I can't actually discuss the development much. I will mention that, if you do go and try the app, keep in mind that there's already a bug-fix release just waiting to get posted to the store. I uploaded it to Apple a couple of days ago but so far it's just sitting there waiting for Apple's blessing. Rumor has it that updates can be very slow in processing.

The most interesting thing about getting this app into people's hands is that, unlike other software I've worked on, I can get a direct, personal insight into how people are using it. Flickr uploads have been a popular choice, and most people are making their photos public. As a result I can go over to Flickr anytime I like and see exactly what people are doing with the application. You don't get that with most software. You design expected use cases, you get feedback from a few people, but what people do with your software still often seems like a remote, almost abstract reality. This direct connection is a new, amazing experience.

I could sit and look through those pictures for hours. A woman walking her dogs in California. Two guys having beer in Germany. A family at a restaurant in Australia. A woman with straws up her nose in the UK. A rainy day in Tokyo. All of these people using software I wrote to share their pictures. Of course it's not my software per se since I wrote it for a client, but after putting this many hours into it I can't help feeling proud of my surrogate-child app.

More on this, and iPhone development in general, to come.


Atomic Bird in MacLife

Those of you in the USA should pick up the June 2008 issue of MacLife magazine. They've got an article called "The Dawn of iPhone 2.0", covering expectations for what's going to happen once this pre-release iPhone software I've been playing with goes public.

Why, when there's so much information online? Because I'm one of the sources for the article (see page 49), along with Paul Kafasis of Rogue Amoeba and Erica Sadun. That's reason enough, right?

For what it's worth, I did eventually get my iPhone developer certificate, although it still looks like the whole certificate program is pretty screwed up.

Back to the office, or, the iPhone Cometh

It's an interesting time to be a Mac developer. With the release last week of the iPhone SDK, Apple suddenly opened up a whole new interesting platform to software developers. And as one might expect, those who have experience developing for Mac OS X have a huge head start when it comes to this new platform. Development for the iPhone uses the same tools, language, and even many of the same frameworks as the Mac.

I think I can say all of that, despite the NDA and Apple's rapidly-developing official position on what can be said and where. Earlier this week Apple reps announced that iPhone development could be discussed on Apple's Cocoa-Dev mailing list, but this was followed the next day by a hasty retraction. That is, one day the rule seemed to be "go a head, talk amongst yourselves", but by the next day this had changed to "don't you dare". I can only imagine the internal discussions. The official line may have changed again by the time you read this.

Anyway, in my case the nature of the SDK means that my daily routine has changed rather suddenly, in a nice demonstration of business on internet time. On Thursday the SDK was released. Friday I saw an ad on Craigslist for a company near me needing an iPhone developer. Saturday morning the company's CTO phoned me, and Monday I started doing iPhone development on a contract basis. And incidentally, soon afterward I started filing bugs with Apple against the SDK. Of course, it's still a beta release.

I don't often do contracts, but I really wanted to get a fast start on the iPhone, and what better way to do it? Aside from the same deal where I can continue working from home, I guess. Some aspects of the work mean that I really do need to be on-site for a lot of it, and I'm out of practice at making daily trips to an office.

Right now I'm splitting my time between this contract and my own apps. I'm not putting anything on hold or making fundamental changes to my business, but at the same time I didn't want to pass up this opportunity.


Atomic Bird, LLC