In which, iPhone apps are built

It turns out that creating new GUI iPhone apps is both harder and easier than you expect. Saturday night when the first iPhone UI app proof-of-concept appeared, I was tied up with family. I frantically emailed Mike Rose begging him to get a post out, which, wonderful man that he is, he did. Sunday, I grabbed what time I could, intent on testing out the new developer toolchain produced by Nightwatch and company. In summary: if you can wait for an already-compiled binary toolchain to emerge, do so.

The developers have done all they can to make building the tools as simple a process as possible. The folks on the irc.osx86.hu #iphone-uikit channel are helpful and supportive. But the bottom line is pre-alpha means pre-alpha. There many rough compiling patches along the way where I ended up hitting my head against the wall, convinced I could never get the tools built. I had to edit the source several times to get it to compile on my Intel Mac Mini.

That doesn't take into account the configuration issues involved getting the HelloWorld binary to build after you finish installing the tools. There's a file you have to adjust, the arm-cc-specs, that's really really fussy until it finally works. Which it did, late yesterday.

From there, it's a rough but glorious ride into the wild world that is UIKit. The ease of travel from building HelloWorld into creating your own apps involves your Cocoa-Fu, or depth of experience building applications under Apple's standard AppKit. You see, UIKit is similar to Cocoa but different enough to cause headaches. Many things you expect to work the same do not--although many, happily, do. And it feels as if you're programming with gloves on. You never know when a class you need won't be there or one you think you know has morphed into a stranger.

Leaving all that aside, I did manage to build several applications. My favorite is the one shown here. It allows you to run any arbitrary script you put into its application folder and name as doit.sh. (It defaults to running "ps -ax".) You must have installed /bin/sh on your iPhone and be able to add files to your Applications folder to get this running, which pretty much limits its audience to people who have enabled ssh on their iPhone. Also, the interface is (as you can see) primitive. It still lacks scrolling, zooming and a fixed-width font.

In conclusion, building your own toolchain probably isn't really worth all the fuss and bother. The trouble to get the toolchain compiled is probably the biggest obstacle before we start seeing a lot of great tools show up. As soon as a binary toolchain is released more developers will start building applications. The programming environment, while a bit twisted, is close enough to standard Cocoa that people are going to get up to speed and start publishing apps pretty quickly. I expect to see a third-party iPhone Apps installer show up very soon. Although you can install apps yourself using jailbreak (to open up the file system) and iphoneinterface (to transfer the files), this remains for the moment firmly planted in the more hard-core corners of the hacker realm.