Retro-envy

With all this talk of an Apple tablet in the news recently I was overcome with nostalgia (or, as I call it, 'retro-envy', considering I wasn't even five when the original Newton came out). Digging out my Newton MP2100, I determined to pimp it out with storage and some networking ability. I had a key hurdle to overcome before I could manage this: I didn't have a serial cable with which to install packages onto my Newton. After a little scrounging, I found an ancient EigerCom 33kbps PCMCIA modem that had been used in an old PowerBook 1400cs. Assuming this would 'just work' with my phone lines, I hastily plugged it into the Newton and into the wall. Fortunately, the Newton recognized and could use this card off the bat (handy!). The only problem was actually dialing up! Nine out of ten times, the modem would complain that it couldn't find a dial tone. In the end, I switched the modem to the 14.4kbps mode which allowed me to dial in every time. Getting WiFi working isn't too difficult, if you do it right. If you do it wrong, like I did, you'll spend hours scratching your head wondering why it won't work. I followed the great howto on the 'My Apple Newton' blog and installed everything I needed. I also installed the 'More WiFi Cards' package, thinking it may be useful in the future. Big mistake! Apparently, if you install the 'More WiFi Cards' package, it stops the standard accepted WiFi cards from working. It took me several hours to realize this, after purchasing a cheap Lucent Orinoco Gold 802.11b card from eBay and trying to configure it with my network. The good news: it works without problems on the latest Airport Extreme base stations (if you have b/g compatibility turned on). Here's a quick shot of my MP2100 on Twitter: I have since ponied up for a working serial cable and used both unixnpi (command line) and NCX to install packages. NCX also allows you install packages over WiFi, which makes things a lot easier and faster. Considering the MP2100 was released in 1997, two years before 802.11b even existed on paper, I think that's quite a feat. :-) While browsing eBay for Newton-related items, I came across this MP120 in perfect condition for a mere £21. I placed a bid a couple days before it closed, fully expecting to be outbid by a large amount. Amazingly, I wasn't, and today my beautiful MP120 arrived. Definitely a steal! I have a few more retro goodies en route to me, ranging from ATA flash storage for the Newton (now possible thanks to the recently-released ATA driver) to an eMate 300, also a steal. Will post more about them when they come!

Palm Pre SDK != 'Web Apps'

Palm opened up their webOS SDK for the Palm Pre on July 16th, allowing anyone to check it out and start developing applications for the Pre. However, some developers are finding problems that prevent them from bringing their applications to the device. Craig Hunter, an iPhone developer, writes:
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+

People are only now finding out what 17+ apps and rating systems entail; any application rated 17+ is refused the ability to have promotional codes generated, so you cannot send out review copies, etc. TUAW writes:
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 readers
However, 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.

SameGame v2.0

Coming Soon…

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:

Quake 3 on iPhone 3GS

I posted these to Twitter, but I'll put them here too for posterity. Here are screenshots of my newly compiled version of Quake 3 running on the iPhone 3GS on max graphics settings. I made my own icon for it as I didn't like the original. Do note that the frame rate generally dips by 10fps when I press the screenshot buttons, and it runs really smooth on device! No special hacks used when building; I did turn on auto vectorization and NEON in the compiler settings.