Sunday, September 4, 2011

Improving the user experience in Kiten, guest post

Note: Today's guest post brought to you by Daniel Moctezuma.

Improving the user experience in Kiten

As part of Google Summer of Code 2011 I worked on improving Kiten in various aspects:
1. Write a better deinflection system
2. Add more filtering options
3. Update EDICT and KANJIDIC dictionaries
4. Write a Kanji Browser tool to help users learn kanji
5. Bugfixes and code polishing

Before going deep in each point, I would like to tell you what Kiten is (in case you haven't heard about it).
Kiten is a Japanese Reference Tool that consists mainly of a Dictionary and a Radical Selector, it uses the EDICT (for vocabulary) and KANJIDIC (for kanji) dictionaries.
The Dictionary lets you translate from japanese to english and from english to japanese, this means you can write in english, hiragana, katakana or kanji to search in the dictionaries.
The Radical Selector lets you to search for a kanji by filtering its radicals, this way you can find a kanji without knowing anything about its readings or meanings.

With this GSoC project, Kiten is now more than that.

1. Deinflection system
Kiten now has a better deinflection system that deconjugates a verb/adjective and gives you the result of it. Example: 笑った is the past tense form of 笑う (to laugh), but (like in any language) if you search a past tense verb in a dictionary you will not find it. So Kiten can deconjugate the input and search for it.
You might wonder, "but why is this necessary?", the truth is that some japanese language learners can be confused of some verb tenses, so they might not know the dictionary form of a verb. Kiten can help you with that and give you feedback about your input, so next time you will know if you entered a verb in past tense or so.
2. Add more filtering options
This improvement helps users to filter results that "start/end with" or "contain" what the user entered to be searched. Also it shows the results in a better order:
  • exact match
  • words starting with the user's input
  • words ending with the user's input
  • words containing (anywhere/in the middle) the user's input
It helps a lot to have order in what we see, most of the time the user wants to know the meaning for a exact match, but also it is good to know if a word is used different, as at the end of an expression or somehow in the middle.

3. Update EDICT and KANJIDIC dictionaries
For some years Kiten was not being maintained regarding dictionaries, now that has changed with this improvement. These dictionary files are the core of Kiten and having the latest updates of them is a must. As part of the project, the user is now able to update the dictionaries at any time (if an update is available).
4. Write a Kanji Browser tool to help users learn kanji
You can browse all the kanji available in the KANJIDIC dictionary and be able to search by Grade and Number Strokes. Just click on the kanji and you can access detailed information such as stroke order, onyomi/kunyomi readings, meanings, grade, etc.
This tool helps you to learn Kanji by Jouyou Grade, in other words, KanjiBrowser can filter kanji by grade difficulty so you will only see those in the current grade you are interested in learning.
5. Bugfixes and code polishing
This includes various areas of Kiten like libkiten maintenance, bugs in the dictionary, etc.
Just to name a few:
  • You can add more dictionaries (EDICT/KANJIDIC format), as well as having deinflection system compatibility with them.
  • Libkiten can be considered mature now.
  • Fixed memory leaks.
  • Code simplification (for better performance and readability).
  • Clear separation between common/uncommon entries.
  • and more.
So, now we can say Kiten is not only a Japanese Reference Tool, but a Set of Tools:
  1. Dictionary (Japanese <---> English)
  2. Radical Selector
  3. Kanji Browser

Also I am proud to say this contribution is now merged on the master branch and expected to be released in KDE 4.8 along with other contributions from the KDE community.

Finally I would like to thank the following people:
  • Jeremy Whiting, for being my mentor in this project.
  • Anne-Marie Mahfouf, for her support since the beginning.
  • Joseph Kerian (previous Kiten developer/maintainer), for his support on some questions I had about the code base.
  • KDE, for choosing my proposal and for letting me have this amazing experience.
  • Google, for Free Software Development promotion by paying to students and encouraging them to learn and contribute to our world.
Thanks a lot!

Daniel E. Moctezuma

Friday, April 22, 2011

Kontact with google calendar

Hey all, with the help of some friendly folks in #kontact I was able to get mail/calendar set up and working in kontact today. I previously had some bad settings in akonadi from my last attempt a few months (maybe a year?) back. and clearing .config/akonadi helped alleviate that problem.

Since I've been using an android phone lately much of my calendar and mail stuff is on google services, so naturally I wanted to sync my calendar, contacts, and mail with google. Fortunately this is all possible, unfortunately it's not all that clear how to set it up. So here's a quick walkthrough for future reference.

Lets look at the tricky one, calendars. To add a google calendar to your korganizer you just need the caldav address which you can get from the calendar's settings like this.

Then you'll need the google calendar url to plug your calendar's address into which can be found in the help section, here for convenience:

Then you can open korganizer (or kontact) and right click the calendar manager and choose Add Calendar. It will give you a list of resources like this:

Since google calendars support CalDav choose the Dav groupware resource. Here's where the ui could use some update and/or simplification. The next thing you will see is a list of calendar providers, of which google is not a part like this:

The trick (thanks Leo) here is to click cancel since google is not on the list. Strangely (most cancel buttons close instead of continuing) this continues to a dialog to let you add your calendar by url that looks like this:

You can finally put in your url (combine the google calendar url with your calendar's address) and enter your username ( and hit the fetch button. After entering your username again (not sure why it doesn't take the one you already set) and password you are able to choose your calendar and add it to korganizer.

Anyone that votes we simplify this process raise your hand :) o/

Sunday, April 3, 2011

School's out

KDE-Edu is out of subversion and now in git. Take a look. And not a moment too soon. This coming week there will be a KDE Edu sprint in Bilbao Spain. What better place to learn how to use git than a sprint with peers eh?  Anyway this message is brought to you by the hard work of Ian Monroe and Nicolas Alvarez who worked very hard to get the conversion rules set up. (And fixed a few bugs in svn2git in the process).

Tuesday, March 29, 2011

Minor tasks

Just a quick note to let you all know what I've been up to this week. Monday I took a look at what will be needed to finally fix Jovie (make it use the voices you add, etc.) The rest of the week I've spent some time setting up a local copy of to play with. Last night I got it working with chihuahua layout which looks nice, but has some accessibility issues. I let the awesome crew in #kde-www know about them and a fix is in the works. I wont switch the site over to the new layout until it's accessible, don't worry. I would like to clean up the content on there though, it's very outdated, and much of it could probably move to techbase and/or

Oh, I've also signed up to be a SoC mentor. This summer is going to be awesome.

Monday, March 28, 2011

QtZeitgeist 0.7.0 released!

Today we released version 0.7.0 of libqzeitgeist aka QtZeitgeist (the first release with a tarball) It's basically the same as 0.1.0 but with a new version, some minor fixes, and a license file.

libQZeitgeist is a wrapper library around the Zeitgeist DBus API for Qt, and is brought to you by Collabora in cooperation with the Zeitgeist team and KDE.

If you don't know what Zeitgeist is:
Zeitgeist is a service which logs the user's activities and notifications, anywhere from files opened to websites visited and conversations, and makes this information readily available for other applications to use. It is also able to establish relationships between items based on similarity and usage patterns.

To get started:

* Get the code
* Get the Zeitgeist code from
* Join #zeitgeist on
* Have fun with use developing
* Follow the work on

Tuesday, March 1, 2011

It's alive!

I'm very excited to announce that qt-atspi has seen some major progress lately. Frederik Gladhorn has been kicking some major butt and has gotten it into much better shape than it has been previously. I just tested his "experimental" branch, and I've got to say wow. Since I started testing and playing with qt-atspi my holy grail has been to try to get our qt calculator to work with orca as well as gcalctool does. Today I need to get a new holy grail. Fired up orca, fired up the calculator test app and was delighted to hear every button, every change, selection, activation all spoken to my ears through the chain from QAccessible to qt-atspi to at-spi2 to orca to speech-dispatcher to espeak (Quite the chain, I know). In the next days and weeks we'll likely get qt-atspi packaged for distros to test and I'll definitely put some polish on the how to build it yourself tutorial I put on techbase last year for those that want to play with it sooner :)

Frederik you rock!

P.S. Sorry for no pretty pictures, maybe for my next post I'll learn how to make a videocast of qt-atspi in action :p