Google Indic Android hackathon

When I heard Google is organizing an Indic Android hackathon at their Bangalore office, I got thrilled. I always wanted to work for google, so going to their office itself was tremendous for me (this might be the closest I can ever get). It was an invite only event, some how I got an invitation.

First day, the event started with some talks by Google’s partners. Even though it was an android related event, most people talked about common Indic problems or common mobile related Indic problems rather than focusing on android platform.

Lunch was awesome. One of the best mutton I ever had in Bangalore. Surprisingly they even had Kerala rice. Google knows how to make their employees happy.

Real event, hackathon started at 5pm, Google’s partners came up with a few topics, and gave us time to form groups and select any of those. I was interested to work on either UI/UX for any of the project or work on IME. Since I have already worked on keyboard, I knew I won’t need to start from scratch. I talked to few people and met Satya and Narasimha and they liked the keyboard idea. We decided to form a team. We started by planning what to do in the next 24 hours we got.
Our plan was to

  • Port XKB keyboard layouts, at least one per language
  • Generate dictionary for word suggestion, for all the ported languages
  • Write a script to filter words in dictionary
  • Use jquery.ime java port and find a method to suggest words from dictionary for transliteration
  • Fix character going outside the button in keyboard (this is a long time bug in my keyboard)

After helping my team members to configure and setup their machine, we moved to google’s food court and started work at around 10’o clock. Satya started working on Kannada layout, Narasimha on Telugu and I started with dictionaries.

I downloaded database dumps of Wikipedia and created a script to get words, gave priority and normalized those. All words were given a priority between 15 and 254 based on number of occurrences in Wikipedia. Script had some additional check to skip 1 character words and numbers. I faced some problem here because of the length calculation in Perl, Unicode wasn’t considered by default. So a single character Unicode words were getting a length of more than 1. After fixing it I moved on to fixing button issue. Narasimha was already asleep. Sathya completed Kannada and he also went to sleep. I was prepared not to sleep, thanks to google’s free snacks, coffee, juices, and packaged coconut water.

I figured out a way to fix layout issues. Word suggestions was not working in transliteration, So I started debugging it, it was around 4 or 5’o clock, I spent a lot of time on this. Couldn’t figure out what was going wrong. After trying few more times, I dropped it and moved to porting Bengali layout.

When my team mates woke up we had dictionary for all languages we planned, layout issue fixed, and a Bengali layout. They started porting layouts and I fixed few bugs related to new languages. After lunch, we were almost complete with all AOSP supported languages. We still had time, so we decided to port few languages which are supported in some Samsung devices. We started with Gujarati. We ported one more, but decided not to have it because we didn’t have time to correct layouts and create dictionary.

We were really proud of what we did. App was working fine, suggestions were working, and even we had a gesture typing, which even though works only with google’s proprietary library, was the first of its kind for Indic languages. We didn’t prepare much because app was no brainer, anyone who has an android phone will know about keyboards, switching between them etc.

Every team got 4 minutes to present their app, 4 minutes wasn’t enough for us to go through all languages in out keyboard, So I rushed through our presentation. I had an expectation that judges will have good experience with android, So we didn’t explain what difference a keyboard makes than an app developers using some api to transliterate inside their app.

One of the question I faced from judges was about words in dictionary, while demonstration suggestion, one of the suggested word was an english word which was typed as it is in Malayalam. That might have affected our scores negatively. One judge was asking about validity of words from Wikipedia. Another question was about gesture typing. I thought I was able to answer all questions considerably well. Some people from other teams also said that they liked the presentation. But we didn’t win.

3 participated teams got a Nexus 5 and a Nexus 7 tablet each.

About other apps, I really liked a news app (I forgot the name), may be that is the only app presented which tried to follow android UI design guidelines (that also had a minor issue). App had a card based layout with smooth animations. This might be one of the 3 if someone from Google was in judging team to check with Android UI guidelines for submitted apps.

At the end of the day, event was really good. Really looking forward to attend events like this.

This might be the longest blog post I have ever written.