John: The long wait for the iPhone app has caused much distress amongst all the Pleco fans out there. Any comments on the development process of your first Pleco iPhone app?
Michael: Well, much of the delay stems from the fact that we really only started working on the iPhone version in earnest in January ’09 – before that we were mainly working on finishing / debugging Pleco 2.0 on Windows Mobile and Palm OS. We laid out the feature map for that back in early 2006, when the iPhone was nothing but a glimmer in Steve Jobs’ eye, so by the time Apple released the first iPhone SDK in Spring ’08 we were already well past the point where we could seriously scale back 2.0 in order to get started on the iPhone version sooner.
But as far as how the actual development has gone, the biggest time drain has been working around the things that iPhone OS doesn’t do very well. We’ve gone through the same process on Palm/WM too – we start off implementing everything in the manufacturer-recommended way only to find that there are certain areas of the OS that are too buggy / slow / inflexible and need to be replaced by our own, custom-designed alternatives.
On iPhone the two big problems were file management and text rendering. There’s no built-in mechanism on iPhone for users to load their own data files onto their devices; all they can do is install and uninstall software. So we had to add both our own web browser (for downloading data files from the web) and our own web server (for uploading data file from a computer) in order to allow people to install their own documents / flashcard lists / etc. We also had to implement a very elaborate system for downloading and installing add-on dictionaries and other data
files; for a number of reasons it wasn’t feasible to bundle all of those into the main software package, and again there was no way for users to install those directly from a desktop as they can on other mobile platforms.
And the iPhone’s text rendering system is actually quite slow and inflexible, which is rather disappointing coming from a company with as long and rich a history in the world of computer typography as Apple. The only official mechanism for drawing rich text (multiple fonts, bold, italic, etc) is to render it as a web page, which took way too long and used way too much memory to be practical for us; there also seem to be some bugs in the way Apple’s WebKit page rendering engine handles pages with a mix of Chinese and non-Chinese text. And even simple, non-rich-text input fields and the like are a big performance hog – it took the handwriting recognizer panel about 8x as long to insert a new character into Apple’s text input box as it did to actually recognize a character. So we basically ended up having to write our own versions of three different iPhone user interface controls in order to get the text rendering to work the way we wanted it too.
So a quick-and-dirty port of Pleco on iPhone could probably have been ready last spring, but getting everything working really smoothly took a lot longer.