Monday, March 03, 2008

ETech: iPhone Software Development

I've been to four, maybe five, O'Reilly OSCONs. I think I've blogged at least three of these here, but this is my first ETech. Expectations are, as ever, pretty high. I've heard a lot of good things about this conference...

The first day of ETech is set aside for tutorials, and I'm sitting in iPhone Software Development: Past, Present, Future given by Nate True.



The big disappointment here is that Apple hasn't yet released the official iPhone SDK, it's delayed till Thursday, I'm sure if Apple had kept to their original deadline of late February Nate would have had more to say. I'm also fairly sure Nate is more annoyed about this that I am, so I'm moderately philosophical about this problem...

This is probably the first tutorial I've ever been in where the presenter has opened with "There is DVD here for the Mac. If you don't have a Mac...". Looks like we're really going to get hands on here, which is pretty cool.

Update: Nat is covering the state of the current SDK, and the history of iPhone jailbreaks and firmware attacks. I've actually been keeping up with this although it's nice to see this in one place from someone that was on the inside, and in a lot less fragmentary way than I've seen in the past.

Update: There are two SDK's, the official SDK from Apple and the hacker's SDK. There are rumours everywhere, but Nate is guessing that there will be a large barrier to entry to the official SDK and very enterprise focused. The hacker's SDK has been around for months, but it is difficult to setup (but he's going to walk us through it today) and it's got really poor documentation. However the interesting point he's making is that the applications are likely to be compatible with the Apple SDK. The installer that arrived with the v1.1.3 firmware looks hopeful. Because of the lack of documentation, having the applications open source is essential.

Update: Interesting he's talking about 'how to make money' and the list seems to be: donations, selling your software, adverts and sponsorship, contract work a employment. Users will only donate if they love your app, nag screens can increase donation rates, but will decrease user satisfaction. Selling your software, generally as trialware andsince Paypal works on the iPhone you can make payments on the phone itself, you can make your applications activate entirely on the iPhone without having to got to a desktop machine. However many users reject trialware immediately, so you have to prove your worth the money.

Update: It's tutorial time, time to break out that DVD we've been given. We need the Xcode v3.0, the iPhone toolchain v0.4, the iPhone 1.1.4 firmware filesystem, and headers patch archive. Time to sudo...

Update: First step is unbundling the firmware, then installing Xcode if you didn't already have it, but I do, then running the toolchain installer. If you're running Leopard then you now have to patch the headers. Nate isn't sure whether this is necessary if you're still running Tiger, as I am, so we'll find out...

Update: ...and I've just built and installed my first native application. You don't have to apply the header patches if you're running Tiger, and interestingly things seem to work okay with Xcode 2.4.1 as well as Xcode 3.0.

Update: Now for some UIKit basics. Currently, at least, iPhone applications are written in Objective C a which has an odd memory management strategy, at least if you're a C programmer. Memory leaks on the iPhone are especially bad, although (theoretically) your phone functionality should be secure against third party applications. Nate is talking about the UIKit and the other frameworks.


Update: ...and I've just built and installed my first UIKit application. You can apparently run your UIKit applications directly from the command line rather than from SpringBoard, which means that you can capture the debugging output from the application. If you run it from SpringBoard it'll jut close if something goes wrong.

Update: Interestingly Nate's estimate of the install base of hacked iPhones is in the 'hundreds of thousands'. We're now walking through the code of Nate's Tap Tap Revolution application...

Update: We're on coffee break...

Update: ...and we're back. Nate is going through a live example of how to add UIKit buttons and functionality to the sample application we built before. I've also been playing around with Erica's accelerometer code during the break.