In this week’s Techie Tuesdays, we speak to Jishnu Mohan, the creator of Indic Keyboard, which enabled hundreds of thousands of Android users to read and write in local Indian languages long before Google.
Imagine this situation. You worked very hard for years putting all your after office hours into building something because you could sense that it would solve a big problem. It wasn’t exactly in your domain of expertise, but you had done a lot of research to bridge the gap. You released it, got a good feedback, and continued to strengthen it. It was all going great, until one day, a multi-billion dollar company decides to launch the same exact product with the same name. And what if that company is Google? You may have heard a number of stories about David taking on Goliath, but it takes more than inspiration to continue work on your product then.
This is what happened with Jishnu Mohan, our 27-year-old star of Techie Tuesdays this week. It may have shaken him initially, but it couldn’t bother him a lot at the end. Jishnu is a confident man, one who doesn’t let anything come between him and his beliefs. Completing engineering in seven and a half years didn’t bother him either, because he knew very well that he didn’t need to wait for a degree to start solving problems.
Here’s the short but eventful journey of Jishnu as he told us:
God’s own country and godly hacks
Born in a small village in Alleppey (a.k.a. Alappuzha) in Kerala in 1989, Jishnu got to know about computers in the fifth standard, when his elder brother joined a computer class. Since it was vacation time, Jishnu tagged along with his brother to play games at the café (where computer class was organised). A year later, he joined the same place to learn programming (BASIC). There was only one system with graphical interface, one with Windows 98. The rest were all either DOS or Windows 95. The class wasn’t intense (it only taught fundamentals), and Jishnu used to look forward to playing games (Dangerous Dave, Prince of Persia) after class more than to the class itself.
Jishnu was an average kid, with not much of an interest in sports or extra-curricular activities in his schools days. But his interest in computers kept growing. His brother got a computer when he went to college, which meant that Jishnu too had access to it. Jishnu was in eighth standard then. By formatting the system multiple times to use LINUX, he learnt how to install an operating system and operate a computer. He picked up Photoshop and Macromedia Flash on his own. Jishnu remembers one incident that took place when he was in the ninth standard. During the exams, his brother locked the computer with a password so that Jishnu couldn't use it. This was BIOS password, so it wasn’t possible to hack it in the usual way one would a Windows XP password. He says,
I had a lot of time, so I tried multiple things. I noticed that there was a battery that recorded the time, and that even when you shut down the computer, it kept track of the time. This battery was powering the system that saves the password, and so, when I removed the battery and put it back, it reset the password, letting me get into the system.
Of course, his exams didn’t go too well after that.
Working on software for free and working on free softwares
Jishnu both worked on software for free and on free softwares.
In eleventh standard, he made a promo flash video for a friend who was running an internet cafe. He doesn't remember getting paid for that.
After completing school, Jishnu was clear that he wanted to learn programming. He didn't have any clue about JEE or other competitive exams, so didn’t write them. He went to MES College of Engineering, Kuttipuram, and chose Information Technology (IT) as he didn’t have much interest in hardware (the Computer Science branch included both software and hardware, while Information Technology focused on software). He recalls that most of the students in his class took IT because they couldn't get CS.
Jishnu’s college had a thriving open source software community, with the support of faculty as well. He attended multiple events of the FOSS community, and even met Richard Stallman (Founder of GNU Project and Free Software Foundation) in Trivandrum once. While academics weren’t going great for Jishnu, he was going through a steep learning curve in FOSS. He recalls, “We were able to compile our own LINUX Kernel. Earlier, it was very complicated to install LINUX. One has to get the source code and compile it himself.”
You may also like - Thejesh GN, activist armed with Open Data
Putting learning to use
In his first year of college, Jishnu started a C programming blog. Whatever he learnt in (and out of) class was uploaded onto the blog. He had linked Google Adsense to his blog, which fetched him $100 in six months. This got him motivated to write more programs, to get more views and make more money via ads. The plan never worked out, and he made $100 in next six months, and for many more six month periods to come. Jishnu continued the blog till his last year of college, with the only goal being to get the blog on the first page of search results for C programs. The money from Adsense revenues funded his first laptop.
In his college, Jishnu learnt and presented Blender at one of the free software meetups. Blender is an open source 3D content-creation software. He later contributed an add-on for the software that helped users create a library and allowed them to save the 3D model created so that any project could then use the model.
At that time, Ubuntu was creating its own app store, and they gave prizes to top apps. This got Jishnu interested, and he created a desktop client for Wikipedia that could work offline. He used Python and GTK to build it. The app was among the top 30 apps in the app store (by user voting).
Minimum 80 percent attendance required? No problem
Jishnu’s college had a rule that a minimum of 80 percent attendance was required to qualify for writing internal examinations. Students had to log on to the college website to check their attendance. One of his friends wondered, “What if the students got the information via SMS, without having to log on to the college website.”
This was just before vacations, and Jishnu had wanted to learn Python for a long time. This was a perfect opportunity for him.
Jishnu first wrote a crawler to open the college website and log in with a student’s username and password, and then fetch his/her attendance. He found some websites through which he could SMS, but most of them didn't have APIs, and the ones that did asked for money. He went back and wrote a program to log in to the SMS service provider and send SMS. Both the programs (to fetch attendance and to send SMS) almost worked like an API for that website. Jishnu integrated both, and it gave him the desired results. After going back to college, he created a website with a registration form and collected students’ user names, passwords, and mobile numbers.
Every morning, the program used to run and send attendance data to the students. The SMS showed the percentage attendance of the student if he/she bunked the entire day. This helped them decide whether to go to the college or not. For example, if you see it as 79 percent, you'll go to the class, and if you've got more than 80 percent, then you may choose to not go (since the minimum requirement was met).
Out of 1,200 students in college, 1,000 registered for this service, and it was a big hit. Soon, Jishnu was on newspapers and radio in Kerala. He’s thankful for this as his parents didn't question him much after the newspaper feature, which they came to know about from relatives and neighbours. Not even when he took seven and a half years to finish college. He grins, saying, “There were a couple of students who took even more time to graduate."
After four years of college, though Jishnu didn't get the degree, he could still work (and needed to come back to the college to write the exams). This left him unqualified for campus recruiters. He says, “I wasn't expecting to go to any interview. I had two-digit back papers in my final year, so I knew my situation well. I had exams every alternate week almost.”
The startup fever
Jishnu’s HoD recommended him and three of his friends to a startup, Ushus Technologies in Kochi, which was founded by his friend. The company had plans to work on LINUX-based projects and found a good fit in the students. All of the four students were selected; but while the rest joined, Jishnu decided to try something else.
He instead joined three friends from the FOSS(and FSFS) community who were keen to work on some startup ideas. They ended up executing nothing even after six months. In order to sustain themselves, they took up some freelance projects. Jishnu recalls,
“We had good ideas, but all of us were just procrastinating. We didn't do anything to make it happen. But in the process, we ended up learning a lot of new things like programming and the latest technologies stack.”
At the end of six months, Jishnu joined Ushus Technologies. But there was a twist. All the four people hired for LINUX projects were assigned to work on something else. He couldn't see himself as a fit there, and decided to move on.
Introduction to Android
In 2011, the new Indian rupee symbol got a Unicode position, but the Android keyboard didn't have it. Since it was not possible to directly add it to the Android keyboard, Jishnu added it in the CynogenMod, which was the most popular ROM at that time. At that time, he used to compile his own Android and run it on his phone. He recalls,
Android source code at that time was 20GB, and I had a 256kbps connection. It took me two full months to download it.
Jishnu got interested in Android during his final year. Android was growing more popular than any other LINUX-based operating system, and a lot of the FOSS community supported Android.
When Google released Nexus S, the second Nexus phone, Jishnu asked his brother in the US to get him one. He considers Nexus devices developer-friendly, as compiling Android for Nexus is easier than on any other device. Now, the only thing coming in between Jishnu and Android was JAVA (used for Android). Jishnu never liked the JAVA programming language. He justifies his dislike by saying:
- Even if you have to do a small thing, you have to write multiple pages of code.
- You need an IDE to write a JAVA program. So, the auto suggest takes care of most of the things and you end up learning very little programming language.
He continued playing around with the device. He used to root his Nexus S and flash ROMs. He was never worried about hacking anything as, somehow, he recovered every single time, even when he once formatted the device and deleted the boot partition, without which you can't boot the device (which was required to turn the device on).
Keyboard for Indian languages – the beginnings
In 2012, Jishnu got the idea for Indic Keyboard from the rupee symbol, as he was thinking about what else he could do to contribute to CynogenMod. Hindi was then the only Indian language that was supported on mobile phones (Android-based). He realised that the phone didn't have Indian language fonts, and so, even if you included the keyboard or text, it wouldn’t show up on the device. He explains,
“The backend engine to show these characters didn't support Indian characters – the complexity of Indian scripts. For example, in the English language, each character is independent, with no two/three characters forming a different character, which isn’t the case with Indian languages.”
So, he waited till Android started supporting Indian languages in its 4.3 version of operating system. He created a Malayalam keyboard first, and then added Tamil as well and published the keyboard app in the Play Store. In one year, the app managed only 5,000 downloads, but the feedback was positive. Jishnu says,
There were other keyboards available then, but they just listed/dumped down all the characters of a language. There were no standards in terms of arrangement of characters (no science behind it), UI, and UX. It was clear that the developer of the existing keyboards didn't speak these languages.
On the other hand, Jishnu wanted to use some set standards. He came to know about InScript (short for Indian Script) – the decreed standard keyboard layout for Indian scripts (using a standard 104 or 105-key layout) developed by the Indian government and supported by several public and private organisations.
Jishnu followed these standards with minor changes, but soon realised that InScript wasn't designed for mobile, mostly being planned for typewriters. Mobile screens are slightly more complicated than desktops; you need to consider the average finger tap area so that everyone can use it. He then found out about the phonetic layout in LINUX desktop. He ported that and created couple of more layouts for both Malayalam and Tamil.
Related read - Meet Arun Ganesh, the 29-year-old map man of India
Indic project goes bigger and better
Jishnu’s Indic Keyboard was chosen and adopted to be developed as a part of a Kerala government project to support Indian languages on desktop and mobile. When the Indic Keyboard was released again, this time with a lot of PR around it, the results were different. In one day, it got more downloads than it had got within the first year of its release. The new keyboard supported 12 Indian languages, covering almost all the major ones. No other keyboard at that time had multiple language support.
Jishnu says, “Since the release by the Kerala government gave more exposure to the keyboard, my dying interest and spirit picked up as well.”
Initially, Jishnu had to spend a lot of time in understanding different languages’ usage and layouts, because he couldn't read many languages. Keyboard's core code is Android open source project. He has set up a web-based library to create Indic-based programs, and ported this desktop library into mobile as well. Though Jishnu didn't know JAVA, he knew how to hack around.
He believes that there's still a lot to do in the Indic Keyboard, and hence, he never started working on any other project.
The Google story
Initially, Google had only Hindi in their open source keyboard, and they created a Google Hindi typing tool called Google Hindi Input. Jishnu didn’t expect that Google would get into other languages as the Indic Keyboard had been there for more than two years and had never interested Google before. But when Google decided to rename their app as Google Indic Keyboard in 2014, Jishnu felt the shock. Within a week, all the search results for ‘indic’ showed the Google Indic Keyboard on top. They (Google) preinstalled the keyboard in Nexus and a few other smartphones, and even on Android TV. And that’s how they have so many more downloads than the ‘Indic Keyboard’.
Jishnu says, “I thought, ‘What’s the point (of working on Indic Keyboard)? Google will be on top of all search results.’ I know they have a better product than us. Many full-time engineers were working on the product there, while I was alone here, working part-time. They had good UX engineers, and I didn't even know the basics of UX.”
Over the past couple of years, since Google’s release of their keyboard, Jishnu’s work on Indic Keyboard has progressed slowly. However, over the past month, he has met a lot of people supporting the free software philosophy who said that he should continue working on this, and this has served as extra motivation for the 27-year-old. When he went for the Google Summer of Code mentor summit, he interacted with many likeminded people who were concerned about security aspects and didn't want a proprietary keyboard to be installed (it can potentially send credit card and other data to company servers) in mobile phones. These interactions have given Jishnu the much needed encouragement to continue working on the keyboard.
Current status and bugs
The Indic Keyboard supports 23 Indian languages and 54 layouts at the moment. Jishnu has been working on an update for Indic Keyboard for more than a year now. He expects it to be pushed in the next month. There are plans to add more languages and emojis in the update.
Jishnu pointed out that some of the bugs crop up due to the build of smartphones. Even though Android supports Indian languages, certain manufacturers remove it. Pointing out one such bug reported recently, he says, “For example, recently, when One Plus 3T got the 7.1.1 update, it broke the Malayalam language support in the phone. Atomic Chillu in Malayalam is a special character where three characters join together to make a single one. In Unicode, there's a single character that represents the same thing. Both should show the same thing. If they show different things, then it's a bug.”
To fix such bugs, Jishnu needs access to these devices (one such device), which he doesn't have most of the time. He relies on his friends, and only if they have that device can he fix these bugs. He says,
I believe local language technology should be open source. If you want to advance as a community, you need to have access to source code.
Some of the big companies have contacted Jishnu to integrate Indic Keyboard with their app. Since it's a system keyboard input method, one needs to make it like a library first, to integrate the keyboard with the app. Jishnu realised that most of these companies aren't willing to put effort into it, and are rather looking for readymade solutions. Though Jishnu wants to work on building an API, it’s not on his priority list right now.
The full-time roles
Jishnu left Hashcube after four years, and now works for a US-based food delivery startup, Taro.
Jishnu doesn't agree with the usual progression of a techie in companies today, where they start as a junior engineer and later become a senior engineer, a tech lead, and then a manager. He doesn’t want to go to managerial role. He wants to code on a daily basis. He says,
The only way you progress in companies is to get into managerial roles. I find it unfair. Why can't you build something and become better in what you're doing?
The other side (and the culprit)
Jishnu started riding bikes (bicycles) about three years ago. He likes cycling so much that he even prioritises it above everything. He even thinks of it as a major reason for the delay in the new release of the Indic Keyboard. He says,
“The free time that I used to spend for coding, I now spend on the saddle. I'm most interested in the endurance part of the ride. Like going for really long rides, sometimes for multiple days.