It was a great opportunity to experiment with a project I've been eyeing for a while:
I found PhoneGap pretty easy to work with, except I hadn't used Xcode before, so I spent a while learning Xcode conventions before I could get totally up and running. The latest release of PhoneGap seems to be easier to setup.
My only complaint: the app is noticeably slower when built natively with PhoneGap when compared to running my code inside of mobile safari, in a regular browser window. I'm not sure what that's about - you'd think the opposite would be true. I'm sure this will get better over time.
PhoneGap just gives you a browser window; unless you want to build up your own UI elements you need some kind of framework. I originally used JQTouch (JQT) after watching this excellent PeepCode screencast, but the latest version of JQT was not working with the latest version of Mobile Safari in iOS 4, so I switched to a recently-announced project still in alpha testing, jQuery Mobile.
jQuery Mobile builds (naturally) on jQuery and gives you a bunch of nice UI behaviors that you'd expect from a mobile app, like page transitions, lists, swiping, etc. There's a pretty awesome demo. This was the bedrock of The Stoop app and saved me a ton of work.
HTTP Streaming: The first version of the app was rejected by Apple because some audio files were longer than ten minutes. iPhone app store guidelines say you have to use Apple's HTTP streaming protocol in this case. It turned out to be really straightforward to use the provided Apple-provided mediafilesegmenter to split our MP3s into 10-second chunks. A few files were over 64kbps so I downsampled them with ffmpeg and LAME (the guidelines also require you to offer at least one stream at that bitrate).
CloudFront: I'm trying as much as possible to get out of the business of running servers when there are cloud services that can do it better. There's no good reason for an app like this to need its own custom server dishing out static audio files, so I uploaded all the segmented files to Amazon S3, then setup a CloudFront CDN distribution. Whenever you listen to a Stoop story, it's coming from an Amazon CDN node. This was very easy to setup. I'm experimenting with s3stat as a way to get listening statistics.