Retro-envy
Palm Pre SDK != 'Web Apps'
In my quest to re-experience the early days of app development on a new mobile platform, I didn't rewind one year like I was hoping -- I went back two years, back to the days when we could only develop web apps on the iPhone. I wrote this piece back then, bitching about the limitations of web apps on the iPhone. It seems we're right back in the same boat with webOS.He specifically laments the lack of OpenGL|ES support and the accelerometer data being too inaccurate (currently limited to four readings per second). He raises some important points, with the above major stumbling blocks for those thinking of writing games, but he's wrong in saying that the Pre is akin to iPhone's web app 'SDK' as it was presented back at WWDC 2007. Palm's apps aren't web apps; yes they use javascript and HTML, but they tie into the system services with such. There is no other 'native' API; all applications, including the entire system shell, are built the same way and have the same capabilities. Really, Craig's found out that the Pre has (in effect) a sandbox for applications, and, if you think of it, it's not unlike the iPhone SDK sandbox. Bloggers lambasted the original iPhone SDK for providing only a baby subset of the actual features of the iPhone. Has it stopped growth, or a booming 65,000 app market with 1.5 billion unit sales? Of course not! Palm's lack of developer access to certain functions is a mere by-product of the immaturity of the platform. The reason there is no OpenGL|ES support on the Pre is because the Pre doesn't have an OpenGL|ES graphics driver. Currently the entire OS is using software-based drawing and animation (using directFB I believe). This is why webOS isn't as smooth as the iPhone in its animations or scrolling. But this is merely a software limitation, which will no doubt be improved upon with software updates. Palm has also proven that they're a much more open company than Apple in all their dealings with the Pre hacking community, which has impressed me to no end. I fully expect them to keep adding great features to their SDK and listening to the developer feedback. I do believe the accelerometer issue above to be an oversight; it's far more likely that Palm only envisioned game developers using the accelerometer at higher refresh rates, and the Pre wasn't initially designed for gaming, more being a re-imagining of Palm's canned Foleo project. That's not to say the Pre will never support gaming; the GPU in the Pre hardware is a damn good PowerVR SGX 530 chip, of the same family as that in the iPhone 3GS, just with a lower maximum polygon/sec count. As soon as there's a proper driver in the OS, and WebKit is re-tooled to use the GPU for its rendering, we should expect some really awesome updates to webOS. It's just a matter of time…
No promo codes for apps rated 17+
Apple specifies that any application that may contain high levels of offensive language, violence, sexual content, or references to drugs or alcohol receive a rating of 17+. But, according to Apple, apps that feature an embedded web browser or provide access to 3rd party content also automatically require the 17+ rating, regardless of the application's content or intended audience.Marco Arment provides a little more detail:
Assuming Apple applies their standards on what constitutes “unfiltered internet content” somewhat uniformly, this will affect, among others, any subsequent versions of: Instapaper Every Twitter and Tumblr client that can show others’ content Every RSS reader Every Flickr client Every instant-messaging client (remember, text profanity counts) Every social-networking client Most ebook readersHowever, it's worse than that. If you set a rating for an application before you've finished it and uploaded to iTunes Connect, there is no way to change the rating afterwards. So say, for example, you edit the application to remove offensive content or, as mentioned above, remove an inbuilt browser, you cannot change the rating for your application back to sane levels, thus preventing you from generating promo codes for it! Until recently it was even nastier: If you had even a single 17+ rated application entry on iTunes Connect, whether it had been uploaded/finished or not, you were forbidden from making any promo codes for any of your other apps, even if they were rated 4+. I fell into that trap by having my (unreleased) Doom port listed on iTunes Connect as 17+; for months I was unable to generate promo codes for my other apps until I contacted Apple with a 'WTF?'. Fortunately, you were able to modify the rating at the time, unlike now. I really hope Apple sort out this mess soon, because when the App Store system works it works really well.
Speech Synthesis on iPhone 3GS
Posted this on Twitter a week back, but maybe it's of some interest to blog readers; here's how to do simple voice synthesis on the iPhone 3GS (3GS-only, I'm afraid). It's a private API, but hopefully if we file enough Radars they'll make it a public one.
To enable the following code to work you'll need to link the VoiceServices.framework (from the PrivateFrameworks folder of the SDK) in your app.
NSObject *v = [[NSClassFromString(@"VSSpeechSynthesizer") alloc] init]; [v startSpeakingString:@"All your base are belong to us"];
Apologies for my lazy 'NSObject' define above, but you get the idea :-)
With that, you have simple speech synthesis for your application (obviously you cannot include this when you submit to the App Store as it links to a private framework, but you can use it in your internal applications). It requires the 3GS because the Speech stuff just isn't in the firmware for the older devices.
Obligatory video below: