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.
John: The iPhone version of Pleco got a complete UI overhaul. What can you tell us about the thought that went into the redesign? How do you feel about it compared to the last UI design?
Michael: Most of the redesign was done simply to meet the needs of a finger-driven interface – we had to find ways of doing the same things with fewer, larger buttons, and no possibility for the sort of fine-grained control that you can get on a stylus-driven Windows Mobile handheld. So aside from simplifying things, reducing the number of buttons and switching from a one-panel to a two-panel interface (where you enter a search term, then tap on a search result to view it full-size on a separate screen), the main changes were in the areas of text selection and handwriting input.
Apple actually has a pretty good system for English text selection in iPhone OS 3.0 – drag your finger around and it shows you a magnified version the character / word you’re trying to select – but it’s way too fussy to individually select Chinese characters, so instead we modified the interface we use for the document reader in Pleco 2.0 on Palm / Windows Mobile; you tap on a character and it automatically highlights the surrounding word, then you can use some nice big finger-friendly arrow buttons to move the highlight around or expand / shrink it to cover individual characters.
For handwriting input, the main change was simply making the input box bigger; Apple actually includes a built-in Chinese handwriting recognizer in iPhone OS, but it’s confined to a box the width/height of the iPhone’s keyboard area (since they didn’t want to make programmers redesign their apps to accommodate a differently-sized keyboard just for Chinese), so we licensed a Chinese handwriting engine for iPhone from our friends at Hanwang Technology and implemented that in a fullscreen box. We also added a multi-touch gesture – tap on the screen with two fingers to clear the input box (and begin entering another character), tap again to backspace. We tested the same gesture in an Apple-sized input box and it didn’t work as well (easy to have one finger land outside of the box), so it’s probably only practical in a fullscreen box, but it works really well in one of those.
Of course, having gone to all of the trouble to implement this Apple will inevitably decide to add fullscreen Chinese handwriting recognition system-wide in iPhone OS 4.0, but at least we should get a few months of being the only dictionary to offer it, and even if they do implement their own fullscreen recognizer the one we licensed from Hanwang is a lot more accurate than Apple’s. (which was adapted from an obscure late-90s Apple product called the Advanced Chinese Input Suite)
John: What elements of the iPhone app are you most and least pleased with?
Michael: The handwriting input is great – I still think writing characters with a stylus is better in some respects, but most Pleco users should find the transition to fingertip-based handwriting pretty seamless.
I’m also really happy we managed to implement the experimental “Live Mode” feature, letting people look up characters in web pages (and offline HTML documents) by tapping on them – in current-generation iPhones it’s a little too slow / memory-intensive to really work well, but after another hardware update or two it should be the closest thing available to a mouseover dictionary.
And in general I think we’ve done a good job at translating the Pleco interface to touchscreens – when the finger-driven Windows Mobile 7 comes out (hopefully in 2010), whatever version of Pleco we release on that can be expected to look very similar to what we’re about to release on iPhone.
As far as disappointments, the custom text controls I mentioned above are still a bit rough – for our second iPhone release we’re probably going to need to implement our own version of the iPhone’s keyboard, since the interactions between that and our text input fields are somewhat less-than-perfect. (clipboard support is also kind of spotty at the moment) I’m also a little disappointed in the fact that there won’t be flashcards in the first release, and of course in the long wait for our iPhone version in general, though now that we’ve got the core product working on we should be able to get additional iPhone features / updates out a lot faster.
John: What elements of the iPhone 3.x firmware has Pleco implemented (or plans to implement)?
Michael: We’re very big on In App Purchase – now that it’s supported in free apps, we’ll likely be selling Pleco in the form of a free “Lite” version with the various dictionaries and other add-ons available as additional purchases on the device. We also make pretty heavy use of the new clipboard – the built-in document reader lets you look up words from inside of a piece of Chinese text on the clipboard, which provides an admittedly-slightly-awkward way to translate Chinese SMSes. We also make heavy use of the new ability to compose emails without leaving the application – there’s a new feature that lets you instantly send us a report if you can’t find a match for a particular word (and we are in fact planning to add new entries to some of them based on that feedback).
There are also some new things developers have been given access to that we haven’t done any work with yet but are actively looking into; for example, iTunes music playback can now be controlled from within an application, so we might be able to use that to let people queue up Chinese-language audio programs and listen to them while reading through / looking up words in transcripts in Pleco.
John: We know how the infamous iPhone app approval process goes, but can you tell us when you plan to officially submit the new Pleco for iPhone app to the Apple app store? How much should users expect to pay for it?
Michael: We’ll be submitting it to Apple as soon as the beta-test is finished – there haven’t been too many severe bugs reported so far, so best-case it might be just a couple of weeks from now.
As far as prices, we’re aiming to keep things pretty similar to our Palm / Windows Mobile software, but with a bit more flexibility about exactly which dictionaries / features you can purchase; there should be less of a distinction between buying a dictionary in a bundle and buying it as a separate add-on later, and it should be possible to save money by skipping any or all of the stroke order / audio / handwriting input / flashcards / document reader modules if you’re not interested them. (That, of course, is all still subject to Apple’s approval – in theory they could demand that we release exactly one, non-customizable version of Pleco and charge $224 for it. (February 24th being Steve Jobs’ birthday.))
John: Any plans for an Android version?
Michael: Not at the moment. Our cross-platform engine code is written in C, while Android mainly uses Java – it is possible to execute C code on Android, but the mechanism for doing so is rather awkward, so a Pleco Android port would be extremely labor-intensive.
If the release of the iPhone version leaves us sufficiently flush with cash to hire a couple of Java programmers, we could certainly consider an Android port then, but for now we prefer to focus on iPhone, Windows Mobile, and a desktop version (very easy due to the overlap between desktop / mobile Windows and Mac OS X / iPhone).
John: Oh, one more thing… Any comment on the tone-color issue?
Michael: The palette we use was actually devised by my friend Sam Lipoff, who was pitching me on the idea of tone coloring way back when I was putting together Oxford Dict 1.0 on Palm OS back in 2001. He’s actually found a reference to the idea in a Chinese teaching book from several decades ago, so I think it’s been bouncing around for a while but has only started to see widespread use recently between Dummitt’s book and a couple of different pieces of software integrating it. Which is not to say that Dummitt didn’t independently invent tone coloring, just that he’s probably not the only person to do so.