Archive for the ‘Google SoC’ Category
いろいろ
Wednesday, July 25th, 2007Long time no blog about my Google Summer of Code project… Caution! Big post following!
As I said in my previous post, I wanted to focus on improving performance and on smooth integration in Maemo. Let’s start with a few explanations about how tomoe works internally. When tomoe looks up candidate characters potentially matching the character input:
- It loads all characters coordinates found in the dictionary file into memory. This is done for the very first stroke only, of course. This is why the very first stroke is much slower.
- It preselects characters from memory, based on their number of strokes.
- Finally, it compares the preselected characters, assign a score to them and sort them by descending score.
This means that there are three areas where we can potentially improve performance.
(more…)
Some progress and identified goals
Saturday, May 12th, 2007The Google Summer of Code has not officially started yet but since with school it will not be easy to work on the project in May and June, I thought I would make good use of my one-week holidays and give away a little bit of my time to make progress on the project :-).
First and foremost, as I had never developed anything for Maemo, I had to run through the process of setting up my working environment. This can be summed up as the following three steps :
- doing the necessary to gain root privileges on the device
- install SSH in order to be able to control the device from a normal computer and move files from/to the device
- install scratchbox in order to develop and test programs from a normal computer.
All those steps were straightforward and well documented. Incidentally, I am very impressed by scratchbox which is a great piece of work and integration !

After a few hours of work, I got tomoe, the handwriting recognition engine, to work under scratchbox. I just had to remove the gucharmap dependency. Then I made Debian packages for tomoe and tomoe-gtk because it is the easiest way to test a program on the device. On the device indeed, tomoe runs well and it is very convenient to draw characters with the stylus. The only problem is that it is currently very slow : about four seconds are required on each stroke to display the updated list of character candidates… I see three ways of solving this problem:
- Since tomoe supports multiple backends (xml, mysql…), create a new backend with particular focus on performances.
- Identify the bottlenecks of the main backend and improve its performances.
- Disable the update of the character candidates on each stroke. This would be the ultimate solution in case the previous two solutions do not work. Update on each stroke is however very useful because you can understand if you have not drawn a stroke correctly as soon as you have drawn it.
As expected, the job for this summer will mainly have to do with performances and smooth integration.
Apart from that, the tomoe team seems to be quite active! Hu Zheng from Red Hat Beijing (?) and author of stardict, has contributed a stroke editor to help add support for more characters. He is in the process of adding 6000 Chinese characters. There are some plans on the list to add support for the missing Japanese characters as well. Good news!

Google Summer of Code
Sunday, April 15th, 2007My project proposal “Japanese/Chinese handwriting recognition on Maemo” has been accepted for this year’s edition of the Google Summer of Code. Yay ! :-) You can see my original proposal here.
I am very excited about this project because it combines several of my great interests:
- free software
- Japanese and Chinese languages
- embedded
Without getting into the nitty-gritty of the Japanese and Chinese languages, to input characters, users have to use a so-called input-method. They type the pronunciation of the character and select it in a list. However, with literally thousands of characters, it happens, even to native speakers, to be unable to read a character. In this event, the input method cannot be used. Handwriting recognition is a nice answer to that problem especially since Nokia internet tablets feature a touchscreen and a stylus.

Above is a screenshot of tomoe in action under Debian GNU/Linux. The challenge of this project will be to bring tomoe to Maemo with particular focus on good integration into the platform. As you can see, the drawing area is divided into four squares that help draw the character correctly. The stroke numbers are displayed because they are very important for tomoe to find the correct character (roughly, characters have to be drawn from left to right and from top to bottom). You can undo/redo the last stroke. A list of possible candidates is displayed. This list is updated when the search button is pushed or, if the option is enabled, on each stroke. This latter option is useful because this way you can find your character without drawing it completely.
Here is the program timeline:
- May 28: beginning of the project
- July 9: code upload to code.google.com/hosting and mid-term evaluations
- August 20: code upload to code.google.com/hosting and final evaluations
I am very eager to work on this project and especially, I am looking forward to working with Makoto Sugano, my mentor on this project. I would like to thank him for becoming my mentor. I think I will learn a lot from him as well as from the Maemo community. I am also very grateful to Luc Pionchon thanks to whom I got a discounted Nokia N800.
Note: Three other Maemo projects have been selected including a project on Ruby bindings. This project is of particular interest for me because it would allow me to port Fantasdic to Maemo. :-)
