Planet SMC

August 16, 2017

Santhosh Thottingal

It is your language and your pen

Google recently added voice typing support to more languages. Among the languages Malayalam is also included. The speech recognition is good quality and I see lot of positive comments in my social media stream. Many people started using it as primary input mechanism. This is a big step for Malayalam users without any doubt. Technical difficulties related to writing in Malayalam in mobile devices is getting reduced a lot. This will lead to more content generated and that is one of the stated goals of Google’s Next billion users project. The cloud api for speech recognition will help android developers to build new innovative apps around the speech recognition feature.

Google had added handwriting based input method for many of these languages in 2015. It was also well recieved by Malayalam user community and many chose it as primary input method mechanism for mobile devices.

Google’s machine learning based language tools, including the machine translation is well engineered projects and takes the language technology forward. For a language like Malayalam with relatively less language processing technology, this is a big boost. There is not even a competing product in the above mentioned areas.

All of these above technologies are closed source software, completely controlled by Google. Google’s opensource strategy is a complicated one. Google supports and uses opensource to gain maximum out of it – a pragmatic corporate exploitation. Machine learning based technologies are complex to be defined in the traditional open source definition. Here, for a ML based service provider, the training toolkit might be opensource, tensorflow for example. At the same time, the training data, models might be closed and secret. So, basically the system can be only reproduced by the owners of the data and those who has enough processing capacity. These emerging trends in language technology is also hard for individual opensource developers to catch up because of resourcing issues(data, processing capacity).

Is this model good for language?

Think about this. With no competition, the android operating system with Google’s technology platform is becoming default presence in mobile devices of Malayalam speakers with no doubt. The new language technologies are being quickly accepted as the one and only way to convey a persons expressions to digital world. No, it is not an exaggeration. The availability and quality of these tools is clearly winning its mass user crowd. There is no formal education for Malayalam typing. People discover and try anything that is available. For a new person to the digital world, handwriting was the easiest method to input Malayalam. Now it is speech recognition. And that will be the one and only one way these users know to enter Malayalam content. And these tools are fully owned and controlled by Google with no alternatives.

The open soure alternatives for input methods are still at the traditional typing keyboards. With its peers, they indeed won large user base and it even came to the users before Google entered. For example, the Indic keyboard has 1.4 million installations and actively improved by contributor for 23 languages. But I don’t see any opensource project that is in parallel with handwriting and speech recognition based input methods. As a developer working in Indic language technology based on free software, this is indeed a failure of opensource community.

I contacted a few academic researchers working on speech recognition and handwring recognition and asked what they think about these products by Google. For them, it is more difficult to convince the value of their research. ‘Well, we have products from Google that does this and thousands are using it. Why you want to work again on it?’ This question can’t be answered easily.

But to me, all of these products and its above mentioned nature strongly emphasis the need for free software alternatives. The mediation by closed sourced systems on one of the fundamental language computing task- inputting – with no alternatives puts the whole language and hence its users in heavy risk. Input method technologies, speech recognition, handwriting recognition.. all these are core to the language technology. These technolgies and science behind them should be owned by its speakers. People should be able to study, innovate on top of this technology and should be able to build mechanisms that are free from any corporate control to express their language.

I don’t want to imply or spread fear, uncertainity that Google will one day just start charging for these services or shutdown the tools. That is not my concern. All these language tools I mentioned are not to be built for facing that situation. It is to be developed as fundamental communication tools for the people for the digital age – build, own, learn, use, maintain by the people.

by Santhosh Thottingal at August 16, 2017 05:56 PM

August 06, 2017

Santhosh Thottingal

Malayalam collation updates in Glibc

GNU C library 2.26 released and proud to have my name listed under contributors. Two small patches for localedata were merged:

  1. Bug 19919 – iso14651_t1_common: Correct the Malayalam sorting order of 0D36 and 0D37
  2. Bug 19922 – iso14651_t1_common: Define collation for Malayalam chillu characters

by Santhosh Thottingal at August 06, 2017 12:49 PM

July 23, 2017

Santhosh Thottingal

Anniversary of Manjari font release

Today, July 23 marks one year anniversary of Manjari font release.

Out of all my projects, this is the project that gave me highest satisfaction. I see people using it in social media every day for memes, banners, notices. I have seen the font used for Government publishings, notices, reports. I have seen wedding invitations, book covers, Movie titles with Manjari font. I am so happy that Malayalam speakers loved it.

Kavya and me are working on new version of Manjari with more glyphs to support latest Unicode, and optimize some of the ligature rules. The latest version of the font is always available at

by Santhosh Thottingal at July 23, 2017 06:44 AM

July 02, 2017

Santhosh Thottingal


സിനിമയെപ്പറ്റിയല്ല, ദൃൿസാക്ഷിയെപ്പറ്റിയാണ്. ദൃൿസാക്ഷി എന്ന വാക്കെങ്ങനെ എഴുതും? അല്ലെങ്കിൽ എങ്ങനെയൊക്കെ എഴുതാം?

ക്+സ എന്നു ചേരുന്നിടത്താണു പ്രശ്നം, രണ്ടുവാക്കുകൾ ഇവിടെ കൂടിച്ചേരുന്നുണ്ടു്, പക്ഷേ കൂടിച്ചേരുന്നിടത്തു് അക്ഷരങ്ങൾ കൂടി കൂട്ടക്ഷരങ്ങളുണ്ടാക്കാൻ പാടില്ലാത്ത ഒരു സവിശേഷതയാണിവിടെയുള്ളതു്.  കയുടെ അടിയിൽ സ എന്ന രൂപം- ഗ്ലിഫ് ഇല്ലാത്ത ഒരു ഫോണ്ടിനെ സംബന്ധിച്ചു് അതു് താഴെക്കൊടുത്തിരിക്കുന്ന സിനിമാ പോസ്റ്ററിലേതുപോലെ നിരത്തിയെഴുതിയാൽ മതി.

പക്ഷേ അങ്ങനെ നിരത്തിയെഴുതിയാൽ മതിയെങ്കിൽ ദൃൿസാക്ഷി എന്ന ഈ 1973 ലെ സിനിമാ പോസ്റ്ററിൽ കയുടെ ചില്ല് ൿ എങ്ങനെ വന്നു?

ക എന്ന വ്യഞ്ജനം പിന്നാലെ വരുന്ന സ-യോടു ചേരാതെ വേറിട്ടുച്ചരിക്കേണ്ട വാക്കാണിതു്. തമിഴ്‌നാട്, കായ്‌കറി, ജോസ്‌തോമസ് തുടങ്ങിയപോലെയൊക്കെ. ഇംഗ്ലീഷിൽ നിന്നു വന്ന ചില വാക്കുകളാണെങ്കിൽ ഹാർഡ്‌വെയർ(ഹാർഡ്വെയർ അല്ല), സോഫ്റ്റ്‌വെയർ, പേയിങ്‌കൌണ്ടർ(പേയിങ്കൌണ്ടർ അല്ല) ഒക്കെ ഉദാഹരണം.

സ്വരം ചേരാത്ത ശുദ്ധരൂപമായ വ്യഞ്ജനമാണു ചില്ലക്ഷരം. ക യുടെ ചില്ല് അത്ര പ്രചാരത്തിലില്ല. ഇലൿട്രോണിക്സ് എന്ന വാക്കിലോ സിവിൿ, സിഡാൿ എന്നിടത്തൊക്കെ ചിലപ്പോൾ കാണാം. 1973 ൽ പക്ഷേ സിനിമാ പോസ്റ്ററിൽ വരാൻ മാത്രം അതിനു പ്രചാരമുണ്ടായിരുന്നെന്നു മനസ്സിലാക്കാം.

ഏതുശരി ഏതുതെറ്റ് എന്ന ചർച്ചയിലേക്ക് പോകാതെ ഈ വാക്കെങ്ങനെയൊക്കെ എഴുതാമെന്നുമാത്രം നമുക്കിവിടെ നോക്കാം.:

  1. ക് + സ: ഇതു് ക യുടെ അടിയിൽ സ അടുക്കിയ ഗ്ലിഫുള്ള ഫോണ്ടുപയോഗിച്ചു് വായിച്ചാൽ ഇങ്ങനെയിരിക്കും: ( This is the most undesired rendering among these examples).ഇതുതന്നെ, അങ്ങനെയൊരു ഗ്ലിഫില്ലാത്ത ഫോണ്ടുപയോഗിച്ച് വായിച്ചാൽ:
  2. ക്+ Zero Width Non Joiner + സ: ക്സ എന്നു നിർബന്ധമായും പിരിഞ്ഞിരിക്കണം എങ്കിൽ യൂണിക്കോഡ് ഉപയോഗിക്കാൻ പറഞ്ഞിരിക്കുന്ന കണ്ട്രോൾ ക്യാരക്ടർ ആണ് Zero width non joiner. മിക്ക ഇൻപുട്ട് മെത്തേഡുകളിലും ഇതു ടൈപ്പു ചെയ്യാൻ സാധിക്കും. ഹാൻഡ് റൈറ്റിങ്ങ് ഇൻപുട്ട് മെത്തേഡിൽ ഇതിനു സാധിക്കില്ല.
  3. ൿ + സ: കയുടെ ചില്ലുപയോഗിച്ച്. കയുടെ ചില്ലിന്റെ യൂണിക്കോഡ് പോയിന്റ് 0D7F ആണ്. ചില്ലുപയോഗിച്ചാൽ പിന്നീട് കയുടെയും സയുടെയും കൂടിച്ചേരൽ നടക്കില്ല.
  4. ക്+ZWJ+സ: കയുടെ അറ്റോമിക് അല്ലാത്ത ചില്ല് – മറ്റു ചില്ലുകൾ പോലെ ഇത് സ്റ്റാൻഡേഡ് അല്ല. എങ്കിലും കുറേ ഫോണ്ടുകളിൽ(Example- in fonts maintained by SMC)

ഒരു വാക്കിങ്ങനെ പലരീതിയിൽ എഴുതുന്നതു് ഭാഷാ ശാസ്ത്രപരമായി ഇത്തിരി കുഴഞ്ഞുമറിഞ്ഞ പ്രശ്നമാണ്. അതിനെപ്പറ്റി തത്കാലം ഇവിടെ വിശദീകരിക്കുന്നില്ല.

by Santhosh Thottingal at July 02, 2017 03:08 PM

June 22, 2017

Santhosh Thottingal

യൂണിക്കോഡ് പത്താം പതിപ്പ്: മലയാളത്തിന് മൂന്നു പുതിയ കോഡ്പോയിന്റുകൾ കൂടി

യൂണിക്കോഡിന്റെ പത്താം പതിപ്പ് പുറത്തിറങ്ങി. മലയാളത്തിന്റെ കോഡ് ബ്ലോക്കിലേയ്ക്ക് പുതിയ മൂന്നു അക്ഷരങ്ങൾ കൂടി ഔദ്യോഗികമായി ചേർന്നിരിക്കുന്നു. അങ്ങനെ മലയാളത്തിന്റെ കോഡ് ബ്ലോക്കിൽ  117 അക്ഷരങ്ങൾ ആയി.

പുതിയ അക്ഷരങ്ങൾ ഇവയാണ്:

  1. D00 – Combining Anuswara Above
  2. 0D3B – Malayalam Sign Vertical Bar Virama
  3. 0D3C- Malayalam Sign Circular Viramaപ്രാചീനരേഖകളിൽ കണ്ടുവരുന്നവയാണ് ഈ ചിഹ്നങ്ങൾ. അത്തരം ഗ്രന്ഥങ്ങളുടെ ഡിജിറ്റൈസേഷനിലും, പ്രാചീനലിപിസംബന്ധമായ പഠനഗവേഷണങ്ങളിലുമൊക്കെ ഇവ ഉപയോഗിക്കപ്പെട്ടേക്കാം.

0D00 – Combining Anusvara Above

ആദ്യത്തേത് ‘മുകളിലുള്ള അനുസ്വാരമാണ്’.

മലയാളത്തിൽ നാമിന്നുപയോഗിക്കുന്ന അനുസ്വാരത്തിനു തുല്യമായ ഉപയോഗമാണ് പ്രാചീനമലയാളലിപിയിൽ ഈ ചിഹ്നത്തിനുള്ളത്. അതായത് നാമിന്നുപയോഗിക്കുന്ന അനുസ്വാരം മറ്റക്ഷരങ്ങളുടെ അതേ നിരപ്പിൽ തന്നെ കിടന്ന് അതിനിടതുവശത്തുള്ള അക്ഷരത്തോട് ‘മകാരം’ ചേർക്കുമ്പോളുള്ള ഉച്ചാരണം നൽകുന്നു. പുതിയതായി നിർവ്വചിച്ചിരിക്കുന്ന ‘മുകളിലുള്ള അനുസ്വാരം’ അതുനുചുവട്ടിലുള്ള അക്ഷരത്തോടു ‘മകാരം’ ചേരുമ്പോഴുള്ള ഉച്ചാരണം നൽകുന്നു.

പ്രാകൃതഭാഷയിലെ നാടകസംഭാഷണങ്ങൾ മലയാളലിപിയിലെഴുതിയിരുന്നു. നാനൂറോളം വർഷം പഴക്കമുള്ള കയ്യെഴുത്തുപ്രതികൾ ഇതിനെ സാധൂകരിക്കുന്ന തെളിവുകൾ നൽകുന്നുണ്ട്. യൂണിക്കോഡിലേയ്ക്ക് ഇതു ചേർക്കാനുള്ള ശ്രീരമണശർമ്മയുടെ നിർദ്ദേശത്തിൽ ഇവ ലഭ്യമാണ്. പക്ഷേ തെളിവിനായുപയോഗിച്ചിരിക്കുന്ന കയ്യെഴുത്തുപ്രതികളിൽ തന്നെ അക്ഷരത്തോടൊപ്പം നിരന്നു കിടക്കുന്ന ‘അനുസ്വാരസമാനമായ ചിഹ്നങ്ങളും’ കാണാം. പക്ഷേ അവയ്ക്കു മറ്റൊരർത്ഥമാണ് പ്രാകൃതഭാഷ മലയാളലിപിയിൽ എഴുതുമ്പോഴുള്ളത്. ഈ സന്ദർഭത്തിൽ അതിന്റെ വലതുവശത്തുള്ള അക്ഷരത്തെ ഇരട്ടിപ്പിക്കുകയാണു ചെയ്യുക. നാം സ്ഥിരമായി ഉപയോഗിക്കുന്ന അനുസ്വാരത്തിന്റെ ഈ പ്രാചീന ഉപയോഗത്തെപ്പറ്റി യൂണിക്കോഡ് ചാർട്ടിൽ സൂചിപ്പിക്കുന്നുമുണ്ട്.

അതായത് പ്രാകൃതഭാഷ എഴുതാനായി മലയാളലിപി ഉപയോഗിക്കുമ്പോൾ ‘അനുസ്വാരം’ അതിന്റെ പിന്നാലെ വരുന്ന വ്യഞ്ജനത്തെ ഇരട്ടിപ്പിക്കുന്ന ഉച്ചാരണം നൽകുന്നു. ‘പത്തി’ എന്ന ഉച്ചാരണത്തിനായി ‘പംതി’ എന്നാവും എഴുതുക. എന്നുവെച്ചാൽ ‘പ + ം + തി’ എന്ന യൂണിക്കോഡ് സീക്വൻസിന് സാന്ദർഭികമായി രണ്ടു വ്യത്യസ്ഥ അർത്ഥവും ഉച്ചാരണവും വരുന്നുവെന്നാണ് സാരം. ഈ ഒരു സമീപനം യൂണിക്കോഡിന്റെ രീതിശാസ്ത്രത്തിനു നിരക്കുന്നതാണോയെന്ന സംശയം ബാക്കിവെയ്ക്കുന്നു. പിന്നാലെ വരുന്ന അക്ഷരത്തെ ഇരട്ടിപ്പിയ്ക്കുന്ന, കാഴ്ചയിൽ അനുസ്വാരം പോലെ തന്നെ തോന്നിപ്പിയ്ക്കുന്ന ഈ ചിഹ്നത്തെ പ്രത്യേകം എൻകോഡ് ചെയ്യേണ്ടതാണെന്നാണ് ഈ പ്രൊപ്പോസലിലെ തന്നെ തെളിവുകൾ വെച്ച് എനിക്കു തോന്നുന്നത്.

0D3B – Malayalam Sign Vertical Bar Virama

പുതിയ യൂണിക്കോഡ് പതിപ്പിൽ അടുത്തതായി എൻകോഡ് ചെയ്യപ്പെട്ടത് ‘കുത്തനെയുള്ള വിരാമചിഹ്നമാണ്’. 0D3B ആണിതിന്റെ കോഡ് പോയിന്റ്.

ഇത് സാധാരണയായി നാമുപയോഗിക്കുന്ന വിരാമചിഹ്നത്തിൽ നിന്നും വ്യത്യസ്ഥമാണ്. വിരാമചിഹ്നം അഥവാ ചന്ദ്രക്കല (0D4D) സംവൃതോകാരത്തെക്കുറിക്കാനും വ്യഞ്ജങ്ങളിലെ സ്വരസാന്നിദ്ധ്യമില്ലാത്തെ ശുദ്ധരൂപത്തെക്കുറിക്കാനുമാണുപയോഗിക്കുന്നത്. സംവൃതോകാരത്തെക്കുറിക്കുവാനായി ഇതുപയോഗിച്ചുതുടങ്ങിയത് 1847ൽ  ഡോക്ടർ ഹെർമൻ ഗുണ്ടർട്ടാണ്. 1900ത്തോടുകൂടിയാണ് സ്വരസാന്നിദ്ധ്യം ഒഴിവാക്കാനായുള്ള ചിഹ്നമായിക്കൂടി ഇതിനെ ഉപയോഗിച്ചു തുടങ്ങിയത്.

ഇതിനൊക്കെ വളരെ മുമ്പുതന്നെ (1700കൾ മുതൽ) സംസ്കൃതത്തിൽ നിന്നും യൂറോപ്യൻ ഭാഷയിൽ നിന്നുമുള്ള ലിപിമാറ്റ എഴുത്തുകളിൽ സ്വരസാന്നിദ്ധ്യമില്ലാത്ത വ്യഞ്ജനത്തെ സൂചിപ്പിക്കുവാൻ ഉപയോഗിച്ചിരുന്ന ചിഹ്നമാണ് ‘കുത്തനെയുള്ള വിരാമചിഹ്നം’. ഇതിനെയാണ് ഇപ്പോൾ 0D3B എന്ന കോഡ് പോയിന്റോടെ എൻകോഡ് ചെയ്തിരിക്കുന്നത്. ചന്ദ്രക്കലയുടെ ഉപയോഗം സാർവത്രികമായപ്പോൾ ‘കുത്തനെയുള്ള വിരമചിഹ്നത്തിന്റെ’ ഉപയോഗം തീർത്തും ഇല്ലാതായി എന്നു തന്നെ പറയാം. കൂടുതൽ വിശദാംശങ്ങൾ ഷിജു അലക്സ്, വി.എസ്. സുനിൽ, സിബു ജോണി എന്നിവർ ചേർന്നു തയ്യാറാക്കിയ എൻകോഡിങ്ങ് പ്രൊപ്പോസലിൽ കാണാം.

0D3C- Malayalam Sign Circular Virama

‘വട്ടത്തിലുള്ള വിരമചിഹ്നമാണ്’ 0D3C എന്ന കോഡ്പോയിന്റോടു കൂടി അടുത്തതായി എൻകോഡ് ചെയ്യപ്പെട്ടത്. ഇത് പ്രൊപ്പോസ് ചെയ്തിരിക്കുന്നതും ഷിജു അലക്സ്, വി.എസ്. സുനിൽ, സിബു ജോണി എന്നിവർ ചേർന്നു തന്നെയാണ്.

സ്വരസാന്നിദ്ധ്യമില്ലാത്ത വ്യഞ്ജനത്തെക്കുറിക്കുവാനായിക്കൂടി ചന്ദ്രക്കല ഉപയോഗിച്ചു തുടങ്ങുന്നത് 1900ങ്ങൾ മുതലാണെന്ന് ‘കുത്തനെയുള്ള വിരാമചിഹ്ന’ത്തിന്റെ പ്രൊപ്പോസലിൽ തന്നെ കണ്ടുവല്ലോ. അങ്ങനെയൊരു ഉപയോഗം ചന്ദ്രക്കലയ്ക്ക് ഉണ്ടാവുന്നതിനു മുമ്പുള്ള ( ഏകദേശം 1850-1900) കാലത്ത്  മലയാളത്തിൽ ‘വട്ടത്തിലുള്ള വിരാമചിഹ്നം’  ശുദ്ധവ്യഞ്ജനത്തെക്കുറിക്കാനായി ഉപയോഗിച്ചിരുന്നു.

കാഴ്ചയിൽ ‘മുകളിലുള്ള അനുസ്വാരം’ എന്ന ആദ്യം പറഞ്ഞ ചിഹ്നവുമായി ഇതിന് സാദൃശ്യം തോന്നാം. പക്ഷേ രണ്ടും തമ്മിൽ പ്രയോഗത്തിൽ വലിയ വ്യത്യാസമുണ്ട്. ‘മുകളിലുള്ള അനുസ്വാരം’ അതുചേരുന്ന വ്യഞ്ജനാക്ഷരത്തിന്റെ നേരെ മുകളിലായി കാണുമ്പോൾ  ‘വട്ടത്തിലുള്ള വിരമചിഹ്നം’ അതുചേരുന്ന വ്യഞ്ജനാക്ഷരത്തിന്റെ വലതുമുകളിലായിട്ടാവും ഉണ്ടാവുക.

പ്രായോഗിക ഉപയോഗം

യൂണിക്കോഡിൽ എൻകോഡ് ചെയ്യപ്പെട്ടതുകൊണ്ടു മാത്രം കാര്യമില്ല. പ്രാചീന ഗ്രന്ഥങ്ങളുടെ ഡിഗിറ്റൈസേഷൻ ആവശ്യങ്ങൾക്കായിട്ടൊക്കെ ഈ ചിഹ്നങ്ങൾ ഉപയോഗിക്കണമെങ്കിൽ ഫോണ്ടുകളിൽ അവ വരച്ചു കോഡ്പോയിന്റ് അതുമായി ചേർക്കണം. അപ്പോഴേ ഇതു ഉപയോക്താവിലേയ്ക്ക് എത്തുകയുള്ളൂ.

തേങ്ങയ്ക്കും കോഡ്പോയിന്റ്

മലയാളഭാഷയുമായി ബന്ധമില്ലെങ്കിലും മലയാളികളുടെ സ്വന്തം തേങ്ങ ഒരു ഭക്ഷ്യവിഭവമെന്ന നിലയിൽ ഒരു ഇമോജിയായി കോഡ്പോയിന്റ് സ്വന്തമാക്കിയിരിക്കുന്നു. U+1F965 ആണ് തേങ്ങ ഇമോജിയുടെ കോഡ്പോയിന്റ്.

Coconut Emoji. Image from



by Kavya Manohar at June 22, 2017 01:43 PM

May 27, 2017

Santhosh Thottingal

A formal grammar for Malayalam syllables

I wrote about formal grammar for Malayalam conjunct in last blog post. Continuing from there, let us discuss the syllable model.

A syllable is a unit of organization for a sequence of speech sounds. Each syllable can be considered as pronounciation units that constitutes a word pronounciation. For example, “മലയാളം” has മ, ല, യാ, ളം as 4 syllables. If you ask a native Malayalam speaker, “How many letters are in the word മലയാളം?” The answer would be 4 and it corresponds to syllable count. The ‘letter’ concept, known as ‘അക്ഷരം’ in Malayalam often refers to syllables.

Along with a verbal description of syllables in Malayalam we attempt to formalize a grammar using PEG – Parser Expression grammar. That grammar is then used for writing a parser to find the syllables in a given word. A web interface is also provided to try out the system.

Before starting with definition of syllable model, we need to define some terminology.


  1. Vowel – Vowels of Malayalam -Any of the set: [അആഇഈഉഊഋഎഏഐഒഓഔഔഅം]
  2. VowelSign – Vowel signs. – Any of the set [ാിീുൃെേൊോൗൂൈ]
  3. Consonant – Consonants – Any of the set [കഖഗഘങചഛജഝഞടഠഡഢണതഥദധനപഫബഭമയരലവശഷസഹളഴറ]
  4. Virama – The sign ്.
  5. Visarga The sign ഃ
  6. Anuswara – The vowel sign of അം.ie ം. This share some properties of Chillu.
  7. Chillu – Pure consonants, without any vowels. Chillus are any of ൻ, ർ, ൽ, ൾ, ൺ, ൿ, ൔ, ൕ, ൖ. The last 4 chillus are rarely used or archaic. But we can consider them for our modeling. Due to historic encoding reasons, Chillus can also appear as base Consonant+Virama+ZWJ form. That means, ൻ = ന + ് + ZWJ. Chillus never appear in the begininning of word, but is not relevant for a syllable analyser.
  8. ZWNJ Zero Width Non Joiner.\u200C
  9. ZWJ Zero with Joiner \u200D
  10. Signs A term used to address various signs that modify a Consonant. Any of VowelSign, Virama, Anuswara, Visarga.
  11. Conjunct:Refer the formal definition of this we discussed in previous blog post. We defined it as A Consonant combined with another Conjunct or Consonant using Virama. Example: സ+ ് + ത => സ്ത , സ്ത + ് + ര = സ്ത്ര. ദ്ധ + ് ര = ദ്ധ്ര, ദ്ധ്ര + ് + യ = ദ്ധ്ര്യ. But we need an advanced version. That definition did not support DotReph (ൎ) which combines with a consonant or conjunct to form Conjunct. To support DotReph as well, we will redefine Conjunct as HalfConsonant Conjunct / Consonant
  12. DotReph The sign (ൎ). It combines with other consonants as in this example: ൎ + യ -> ൎയ in ഭാൎയ
  13. HalfConsonant: A Consonant followed by Virama Example: പ്, ര്, മ് etc. Or a DotReph

Syllable model

A syllable in Malayalam can be any of the following.

  1. An independent Vowel. Vowels are often found at the begininning of the word. Example: അമ്മ. But for the specific case of Syllables, we can relax this rule of being in the start of word and generally state that a vowel is syllable. Note that vowel appearing as vowel sign is not what we are considering here. Vowel signs has its own properties.
  2. A Chillu letter is a syllable.
  3. A Consonant without any Signs is a syllable. For example, in the word തറ, both ത and റ are Syllables.
  4. A Consonant or Conjunct with Signs is a syllable. Here the Signs can be repeated more than once, but not freely. This syllable has the following characteristics:
    1. Signs can be Virama only if it is the last items of a given word. For example. അത് has അ, ത് as syllables, but അത്ഭുതം has അ, ത്ഭു, തം as syllables.
    2. Signs can occur 2 times in folllowing cases:(a) First Sign is ു and Second is Virama This combination is also called Samvruthokaram. Example: തു് in അതു്. (b) First Sign is a VowelSign and Second is Anuswara. Examples: താം, തീം, തോം, തും etc.
  5. A ZWNJ marks a syllable boundary. A ZWNJ inserted between two blocks of text inserts a ligature as well as syllable boundary. For example: തമിഴ്‌നാട്, the ZWNJ inserted after ഴ് and before നാ prevents possible ഴ്ന Conjunct and hence also makes a point that the pronounciation should break at that point. It is a bit wierd to say a ZWNJ forms a syllable since it is just a seperator. But while analysing a series of letters from begininning to end, it is technically okey to consider ZWNJ as a syllable block.

Parser Expression Grammar

You can try this in a PEG evaluator and try various conjucts to see if they all getting parsed. Use, copy paste the above grammar try inputs like ‘ശാസ്ത്രവിഷയങ്ങൾ’.

Characteristics of the Grammar

There are a few important characteristics of this grammar.

It does certain validations against the signs. For example, it does not allow a VowelSign, virama or anuswara after a visarga. If that happens, the parser will fail to parse a word. It permits a virama after a VowelSign, but that is only for Samvruthokaram(vowel sign = ു ).

Among the signs, you can see Virama, but it is permitted only at the end of the word. For example: അത്. If virama comes in between a word, it has the nature of consonant combining.

The order of Signs is also enforced. For example, you cannot have a virama and then VowelSign ു even though the reverse order is permitted.

Above rules creates some strictness for the parser. At the same time, there are some relaxed rules too. There is no maximum limit on a possible conjuct.  A nonsense conjunct like ‘ക്ച്ട്ത്പ്ബ്ഭ്മ്ജ്ത്ക്’ will be accepted by parser. Malayalam has valid conjuncts upto 5 as far as I know(Example: ഗ്ദ്ധ്ര്യ ). Usually the longer conjuncts will have the ending consonants as യ, ര, ല, വ.

In informal Malayalam, vowel sign duplication is sometimes used to denote elongation. For example, വാടാാാ. Our parser won’t accept that.

Syllable boundaries

If you want to know syllable boundaries and don’t care about anything else, there is an easy way to find boundaries.

A syllable boundary is after:

  1. A vowel. Note that this not vowel sign. Example: അ|റ, ഇ|ര, ഉ|പ്പ്
  2. A vowel sign, if not followed by virama, anuswara or visarga. Example: ത്തി|ൽ, പു|ക,
  3. A consonant if followed by another consonant or chillu. Example: ത|റ, ഷ്ട|മി, ക|ൽ
  4. A chillu. Example: സ|ർ|പ്പം
  5. An Anuswara. Example: കു|ടും|ബം,
  6. A Visarga. Example: ദുഃ|ഖം
  7. A ZWNJ is syllable boundary.

Web interface

I prepared a web interface if you just want to try out the syllable analyser and dont want to play with PEG.

Malayalam syllable analyser

Now that comes with a JS API too, just include the following file in your web application:

Then use the following method to split a word to syllables.


I prepared a codepen project to demonstrate this.

See the Pen Malayalam syllable analyser by Santhosh Thottingal (@santhoshtr) on CodePen.

Source code

Please report any issues or ideas to improve this model there. Thanks!

by Santhosh Thottingal at May 27, 2017 11:54 AM

May 21, 2017

Santhosh Thottingal

A formal grammar for Malayalam conjunct

In Malayalam a conjunct(കൂട്ടക്ഷരം) is formed by combining 2 or more consonants by Virama(ചന്ദ്രക്കല).  “ക്ക” is a conjunct with 2 consonants, formed by ക + ് + ക. സ്ത്ര is a conjuct with 3 consonants സ+ ് + ത +്+ ര. ന്ത്ര്യ  is a conjunct with 4 consonants – ന + ് + ത + ് + ര + ് + യ. Conjuncts with more than 4 consonant is rare. ഗ്ദ്ധ്ര്യ is formed by 5 consonants.

Can we define this formation in a formal grammar?

Let us try. For the simplicity, I am using Parser Expression Grammar formalism since we can quickly write a parser for that to test and evaluate.

Before that let us define the conjuct in plain English in a bit more concise and unambigous way.

Conjunct: A Consonant combined with another Conjunct or Consonant using Virama

We need to define Consonant and Virama also.

  • Virama:   ്.
  • Consonants – Any of the set [കഖഗഘങചഛജഝഞടഠഡഢണതഥദധനപഫബഭമയരലവശഷസഹളഴറ]

Writing this in PEG syntax

You can try this in a PEG evaluator and try various conjucts to see if they all getting parsed. Use, copy paste the above grammar try inputs like ന്ത്ര്യ.

Let us look at the definition again.

Conjunct = Consonant Virama (Conjunct / Consonant )

This is a tail recursion. Meaning, The Conjuct  get expanded towards the end of the expression. Can we rewrite this using a Left recursion? We can. see:

Conjunct = (Conjunct / Consonant ) Virama Consonant

This will have the same result of our previous expression. We can also rewrite our plain English definition as well accordingly:

Conjunct: A Conjunct or Consonant  combined with another Consonant using Virama

There is a problem with this new definition since it is Left recursion, depending up on the parser implementation, it can cause infinite recursion. The PEGjs parser which we used above for testing and evaluation does not support Left recursion since it is a top down parser(recursive descent parser). You can try modify the above pegjs grammar in the online evaluation tool, you will see the parser warns about ininite recursion.

But if the parser is capable of avoiding this issue, nothing stops you to write the grammar using Left recursion. LALR parsers such as GNU Bison can very well support left recursion. But big issue here is GNU Flex/Bison used for writing such grammars does not support Unicode!. You can make it working by doing some low level byte manipulation. I did not try.

One more thing: I wrote ( Conjunct / Consonant ) instead of (Consonant / Conjunct ). The order was chosen intentionally since the matches are done left to right. Since a Conjunct anyway start with a Consonant, the parsing will proceed with that path. We avoid it by using the Conjunct, Consonant order.

by Santhosh Thottingal at May 21, 2017 05:49 AM

April 16, 2017

Santhosh Thottingal

On Kerala IT Policy Draft 2017

The Kerala IT Policy Draft 2017(draft) was published in March 2017 for public feedback. It has many progressive elements in it and are crucial for the rapidly changing IT ecosystem in the context of  Government  IT Policy.

Continuing earlier Kerala gov. policy on Free and Open source software, this version also emphasis the usage and promotion of free and opensource software. The policy also mentions about the importance of Malayalam computing and local language content. These are all good, even though planning and implementation of specific items in these sections need wider discussions.

One important topic I wanted to comment in this post is about e-governance. There are detailed mentions about e-governance in the policy. There is a plan to have single government poral for participatory e-governance. About government service delivery, it says:

State is embarking on its journey to offer an “Omni-channel experience” of all its e-Governance services through web portal, mobile applications, Akshaya / CSCs and through Integrated Citizen call centres. The objective is to setup and operationalise an effective Single Window for services supported by the core infrastructure and systems.
It shall be ensured that all government applications are compliant to Deity guidelines and thereby interoperable.

In my experience with government services and their digital services, one important issue is lack of high level information system planning. I often see each department develop websites, service portal and mobile apps and release with lot of PR every time a government changes or even under same government. A state goverment has serveral departments and the amount of data it handles and kind of services it provides is huge. By nature, these departments share a lot of data mostly interdependent. Every digital service on top of this is not connected. A citizen need to register and login to multiple government websites. A central web portal is the quick solution that comes out in every IT polciy acknowledging the above issue. Even then we see lot of apps for government, lot of websites inauguarated now and then.

I think it is time to think about the information system of all these departments and see how we can architect them. Having scattered information systems is natural in the early developing stage of a government IT infrastructure. But at one stage, they should get a strucutre and start communicating each other avoiding the need to rebuild every year or 5 years.

Of course it is not trivial to have a clarity on such system. But I don’t see an effort in IT policy in this direction. I feel that each departments will continue running their IT systems independently and the connection between each department will be the responsibility of the citizen. For example, get the certificate with sign and seal from this department, go to the other department office, submit the application with the previous ceritificate, get the approval , go to other department, get the stuff done(And as people always say, have a nice chappel). Oh, have your copy of ID proof in every department and prove that it is you and nobody else paying your tax. This happens when each of these department is completely digital.

The wish for well connected IT infrastructure for goverments is nothing new. This wish always ends up in centralized citizen data repositories with unique citizen ids.  That is the traditional modeling of this problem. Now a days it is very clear that this kind of system attracts lot of interest from govenrment and non-goverment entities. Surveillance is becoming the primary goal of the systems, replacing the goal of better citizen service.

There are lot of things to learn from the deficiencies of existing e-governance system. This is not a time to go silient about this in IT policy. The vulnerability of this centralized IT systems with Aadhaar like primary key systems is widely discussed in media now a days. These systems are highly insecure with exclusion and mistrust of citizen. This will infiltrate to state IT systems soon, lack of political will will accelerate it.  There are lot of e-governance space in Kerala in developing stage. Can this be better modelled?

One of the biggest problems in e-governance is the security which demands the greatest protection to be government information from the third party attacker or opponents.  It is of no doubt that it can not be secured with another highly insecure authentication systems like Aadhaar as widely promoted. The need of a well modelled e-Authentication framework is required and that need to learn from mistakes.


by Santhosh Thottingal at April 16, 2017 06:16 AM

April 05, 2017

Santhosh Thottingal

Libreoffice Malayalam Hyphenation

I had developed and released hyphenation extension for Malayalam in Openoffice years back. Libreoffice was born later. Eventhough libreoffice supported the openoffice extensions, the extension repository is freshly created for libreoffice. The old extensions were not present in the libreoffice repository.

Now, I have uploaded the Malayalam hyphenation extension in libreoffice extension repository too. I will explain the installation and configuration step by step in this blog post:

All Operating systems

  • Download an extension and save it anywhere on your computer.
  • In LibreOffice, select Tools -> Extension Manager from the menu bar.
  • In the Extension Manager dialog click Add.
  • A file browser window opens. Navigate to the folder where you saved the LibreOffice extension file(s) on your system. The extension’s files have the file extension ‘OXT’.
  • Find and select the extension you want to install and click Open.
  • If this extension is already installed, you’ll be prompted to press OK to confirm whether to overwrite the current version by the new one, or press Cancel to stop the installation.
  • After you are asked whether to install the extension only for your user or for all users. If you choose the Only for me option, the extension will be installed only for your user. If you choose For all users, you need system administrator rights. In this case the extension will be available for all users. In general, choose Only for me, that doesn’t require administration rights on the operating system.

Debian and Ubuntu

The above steps works for Debian and Ubuntu too. But there is a better way. Using your package manager install hyphen-ml package. This will install hyphenation not only for libreoffice, but for typesetting packages like LaTeX.

Using the hyphenation

  • To automatically hyphenate the current or selected paragraphs, choose Format – Paragraph, and then click the Text Flow tab.

    LIbreoffice Hyphenation
  • To manually Hyphenate Single Words, click in the word where you want to add the hyphen, and then press Ctrl+Hyphen(-).
  • To manually Hyphenate Text in a Selection Select the text that you want to hyphenate. Choose Tools – Language – Hyphenation.

For detailed help, read libreoffice hyphenation documentation

A hyphenated paragraph

Known Issues

Malayalam and several other languages does not use visible hypen(-) at the end of line when a word is broken. Currently there is no way to control this in libreoffice.

I had developed hyphenation patterns for 10 other Indian languages too. Yet to upload them to libreoffice repository. But they are readily available in Debian and Ubuntu. You can install them by choosing hyphen-* package.


by Santhosh Thottingal at April 05, 2017 03:12 AM

March 31, 2017

Santhosh Thottingal

നമ്മളെല്ലാം നമ്മളല്ലാതാവുന്ന കാലം

എന്റെ പാൻകാർഡിലെ പേരല്ല പാസ്‌പോർട്ടിലുള്ളതു്. വോട്ടേഴ്സ് ഐഡിയിലെ വീട്ടുപേരല്ല പാൻകാർഡിൽ. വീട്ടുപേരാകട്ടെ ഓരോന്നിലും ഓരോന്നാണു്. ചിലതിൽ ഇനിഷ്യൽ മാത്രം. ചിലതിൽ ഇനിഷ്യൽ ചുരുക്കാതെ എഴുതിയതു്. ചിലതു് മലയാളത്തിൽ. ചിലതു് ഇംഗ്ലീഷിൽ. ചിലവയിൽ അക്ഷരത്തെറ്റ്. കുത്തുള്ള ഇനിഷ്യൽ. കുത്തില്ലാത്ത ഇനിഷ്യൽ. തോട്ടിങ്ങൽ, തോട്ടുങ്ങൽ, തോട്ടിങ്ങല്…

ആധാറിലെ എന്റെ പേരു് ഉത്തരമില്ലാത്ത ഒരു ചോദ്യമാണു്. “സന്തോഷ് ടീ ആര്”. ആരാണെന്നറിയാൻ കാർഡിലെ ഫോട്ടോ ഒട്ടും സഹായകരമല്ല.

വലിയ പ്രശ്നമൊന്നും ഇതുവരെ നേരിട്ടിട്ടില്ല. പക്ഷേ കുറച്ചു ദിവസം മുമ്പു് എന്റെ പ്രൊവിഡന്റ് ഫണ്ട് KYC ഡോക്യുമെന്റുകളിൽ പാൻ കാർഡ് ചേർക്കാൻ പറ്റിയില്ല. എന്റെ എംപ്ലോയറുടെ റെക്കോർഡിലുള്ള പേരും പാൻ കാർഡിലെ പേരും ഒന്നല്ലാത്തതുകൊണ്ടാണത്രെ. കാര്യം ശരിയാണു്, പാൻ കാർഡിലെ പേരിൽ ഇനിഷ്യലുകളാണ്, എംപ്ലോയറുടെ കയ്യിൽ ഇനിഷ്യൻ നീട്ടിയെഴുതിയതും. ഇതിപ്പൊ പേരെന്തിനാ അങ്ങനെ മാച്ച് ചെയ്യുന്നതു്, അതൊക്കെ ഒഴിവാക്കാനല്ലേ ഈ ഡോക്യുമെന്റുകൾക്ക് നമ്പറുകൾ?

നമ്മൾ നമ്മളാണെന്നു തെളിയിക്കാൻ പെടാപാടുപെടുന്ന വിചിത്രരാജ്യമാണു് ഇന്ത്യ. ഐഡിപ്രൂഫുകളില്ലാതെ ഒരു ഓഫീസിലും പോകേണ്ടകാര്യമില്ല. നമ്മൾ അങ്ങോട്ട് പണം കൊടുക്കാനാണെങ്കിലും പോലും ഐഡിയില്ലാതെ വാങ്ങില്ല. ഈ ഐഡി പ്രൂഫ് എന്ന പേപ്പർ മാത്രമേ ആവശ്യമുള്ളൂ, അതിലെ പേരോ, ഫോട്ടോയോ ആരും പരിശോധിച്ചുറപ്പിക്കുന്നതു ഞാൻ കണ്ടിട്ടില്ല. ബൈ ഡിഫോൾട്ട്, നമ്മൾ നമ്മളല്ല എന്നതാണ് പൊതുവിലുള്ള നയം. അല്ലെങ്കിൽ തെളിയിക്കണം.

ആധാർ “യുണീക്(!) ഐഡി” ഇതിനൊക്കെ പരിഹാരമല്ലേന്നു ചിന്തിക്കുന്നവരുണ്ടാകം. എങ്കിൽ തെറ്റി.  നമ്പറുകൾക്കപ്പുറം  സോഫ്റ്റ്‌വെയറുകൾ ഇന്ത്യൻ പേരുകൾ കമ്പെയർ ചെയ്യുന്ന ഒരു ദുരന്തനാടകത്തിനെല്ലാരും തയ്യാറാവുക.

ആധാറും പാൻകാർഡും ലിങ്ക് ചെയ്തില്ലെങ്കിൽ പാൻകാർഡ് കാൻസലാവും എന്നൊരു സന്തോഷവാർത്ത കേട്ടിരുന്നല്ലോ.  ഈ ലിങ്ക് ചെയ്യൽ അത്ര എളുപ്പമാവില്ല പോലും.

The income tax department has recently started accepting initials that can be put on the PAN card. However, you will be required to put your full name while applying for a verification of data. For instance, if your official name is M Ramamurthy where the full name is Madurai Ramamurthy where Ramamurthy is the first name, I-T will allow initials only for the first name. Hence, you can either print your name on the PAN card as either Ramamurthy or R Madurai.

Once you try to link PAN to your Aadhaar card which accepts initials, there is bound to be a name mismatch. This will lead to a rejection of request for linking Aadhaar card. In several parts of the country, especially the south of India, the names of villages are often suffixed or prefixed to the name of an individual. Here, any name except the first name of the person is considered as surname and will have to be mentioned in full on the PAN card.

ഈ പേരുകൾ ഒത്തുനോക്കൽ സോഫ്റ്റ്‌വെയർ ഏറ്റെടുക്കുകയാണു്. വെറും string comparison ആണെങ്കിൽ മിക്കവരുടെയും പേരുകൾ തള്ളും. തള്ളിപ്പോയവർ പേരുകൾ മാറ്റാൻ, ശരിയാക്കാൻ മെനക്കെടേണ്ടിവരും.  ഇനിയിപ്പൊ ഇന്ത്യൻ പേരുകൾ മാച്ച് ചെയ്തു നോക്കാൻ ഒരു അൽഗോരിതം തയ്യാറാക്കാൻ ശ്രമിച്ചെന്നിരിക്കട്ടെ. എന്തൊക്കെയായിരിക്കണം അതിൽ ശ്രദ്ധിക്കേണ്ടതു്? ഇംഗ്ലീഷിലെഴുതിയ പേരാണെന്നെരിക്കട്ടെ. ഇന്ത്യൻ ഭാഷകളെക്കൂടിപരിഗണിച്ചാൽ ഇതു് വളരെ സങ്കീർണ്ണമാകും.

  • അപ്പർ കേസ്, ലോവർ കേസ് മാറ്റങ്ങൾ കണക്കിലെടുക്കരുതു്. Anand Chandran, ANAND Chandran, Anand CHANDRAN, anand chandran, ANAND CHANDRAN ഒക്കെ ഒന്നാണല്ലോ.
  • കുത്ത് കോമ ഒക്കെ വിടണം. Rama C, Rama C.
  • സ്പേസ് വെറുതെ വിടണം. Rama Chandran, Ramachandran ഇവ ഒന്നല്ലേ
  • സ്പെല്ലിങ്ങ് വ്യത്യാസങ്ങൾ. Pradeep, Pradip, Pradeeb, Pradeeb, Prathib, Pratheeb, Prathib, Prathib ഇതൊക്കെ വേറേ വേറെ ആളുകളാവാം, ഒരാളാവാം
  • First name, Last name, Middle name പേരുകൾ നമുക്ക് വളരെ ആശയക്കുഴപ്പമുള്ളവയാണു്. പ്രേതേകിച്ചും ദക്ഷിണേന്ത്യൻ പേരുകളിൽ. M Sudhakaran, Sudhakaran M, Sudhakaran Manoharan ഒക്കെ ഒരാളാവാമല്ലോ.
  • വേറുതേ ഒരു സ്പേസ് അധികമായതുകൊണ്ട് പേരു മാച്ച് ആവാതെ ആളുകളെ ഓഫീസുകൾ കേറിയിറക്കാനും ഈ അൽഗോരിതങ്ങളെക്കൊണ്ടു സാധിക്കും എന്നും ഓർക്കാം.

ഇംഗ്ലീഷിൽ ഇത്തരം അൽഗോരിതങ്ങളൊക്കെ ഉണ്ടു്. Soundex, MetaphoneNew York State Identification and Intelligence System ഒക്കെ ഉദാഹരണങ്ങൾ. നമ്മുടെ പേരുകളുടെ പ്രത്യേകതകൾ കൂടി പരിഗണിച്ചു് അതുപോലൊരു അൽഗോരിതം നമുക്കും വേണ്ടേ?

ഇംഗ്ലീഷിൽ മാത്രം പോരാ, ഇന്ത്യൻ ഭാഷകളിലും വേണ്ടേ? നേരത്തെപ്പറഞ്ഞ Soundex അൽഗോരിതത്തിനെപ്പോലെയൊന്നു് ഇന്ത്യൻ ഭാഷകൾക്കു വേണ്ടി ഇൻഡിക് സൌണ്ടെക്സ് എന്ന പേരിൽ തയ്യാറാക്കിയിരുന്നു. വിവിധ ഇന്ത്യൻ ഭാഷകളിലെഴുതിയാലും പരസ്പരം ഒത്തുനോക്കാൻ അതിനു കഴിയും. ഉദാഹരണത്തിനു് സന്തോഷ്, सन्तोष എന്നിവ ഒരേ പേരാണെന്നു പറയുന്ന വിധത്തിൽ.

by Santhosh Thottingal at March 31, 2017 02:15 PM

March 29, 2017

Santhosh Thottingal

ഇമോജികളും ചില്ലക്ഷരങ്ങളും തമ്മിലെന്തു്?

ഈയിടെ XKCD യിൽ വന്ന ഒരു തമാശയാണു് മുകളിൽ കൊടുത്തിരിക്കുന്നതു്. ഇമോജികളെ പരിചയമുള്ളവർക്കു കാര്യം പിടികിട്ടിക്കാണും. എന്തെങ്കിലും ആശയം പ്രകടിപ്പിക്കാനുള്ള ചെറുചിത്രങ്ങളെയും സ്മൈലികളെയുമാണു് ഇമോജികൾ എന്നുവിളിക്കുന്നതു്. ചാറ്റു ചെയ്യുമ്പോഴൊക്കെ നമ്മൾ ഉപയോഗിക്കുന്ന ചിരിക്കുന്നതും സങ്കടഭാവത്തിലുള്ളതും നാക്കുനീട്ടുന്നതുമായ ചെറുചിത്രങ്ങളുടെ നിര ഇന്നു് വളർന്നു് ആയിരക്കണക്കിനായിട്ടുണ്ട്. ചിത്രങ്ങൾക്കു പകരം അവയെ അക്ഷരങ്ങളെന്നപോലെ കണക്കാക്കാൻ യുണിക്കോഡ് ഇപ്പോൾ ഇവയെ എൻകോഡ് ചെയ്യുന്നുണ്ടു്. ഉദാഹരണത്തിനു് 😀 എന്ന സ്മൈലിക്ക് U+1F60x എന്ന കോഡ്പോയിന്റാണുള്ളതു്. അടുപോലെ 👨 പുരുഷൻ, 👩 സ്ത്രീ എന്നിവയൊക്കെ പ്രത്യേക കോഡ് പോയിന്റുകളുള്ള ഇമോജികളാണു്.

ഇമോജികൾ അക്ഷരങ്ങളെപ്പോലെയായാൽ അവ ചേർന്നു് കൂട്ടക്ഷരങ്ങളുണ്ടാവുമോ? 😀

ഇമോജികളെ കൂട്ടിയിണക്കി പുതിയ അർത്ഥമുള്ള ഇമോജികൾ ഉണ്ടാക്കാനുള്ള സംവിധാനം യുണിക്കോഡ് ഒരുക്കിയിട്ടുണ്ടു്. 👪 എന്ന ഇമോജി കുടുംബത്തെ സൂചിപ്പിക്കുന്നു. അച്ഛൻ, അമ്മ, മക്കൾ എന്നിവരടങ്ങിയ കുടുംബം. ഇതുപക്ഷേ അച്ഛൻ അമ്മ, മകൻ, മകൾ എന്നിവ കൂട്ടിച്ചേർത്തും ഉണ്ടാക്കാം. 👨👩👧👦  എന്ന ഇമോജി അങ്ങനെ 👨‍ + 👩‍ + 👧‍ + 👦 എന്നീ ഇമോജികൾ കൂട്ടിയുണ്ടാക്കിയതാണു്. വെറുതെ അടുപ്പിച്ചെഴുതിയതല്ല, നമ്മൾ ക്ക  എന്നു് എഴുതാൻ ക കഴിഞ്ഞ ചന്ദ്രക്കലയിട്ട് അടുത്ത കയുമായി യോജിപ്പിക്കില്ലേ, അങ്ങനെ യോജിപ്പിക്കണം. അതായതു് U+1F468 U+200D U+1F469 U+200D U+1F466 എന്ന ശ്രേണി ഉപയോഗിക്കണം. ഇവിടെ കൂട്ടിയോജിപ്പിക്കാൻ ഉപയോഗിച്ചിരിക്കുന്നതു് U+200D എന്ന അക്ഷരമാണു്.

എന്താണു് U+200D? Zero Width Joiner എന്ന ഒരു അദൃശ്യ അക്ഷരമാണതു്. അതിനു രൂപമില്ല, സ്വഭാവമേ ഉള്ളൂ. അതിനിരുവശവമുള്ള അക്ഷരങ്ങളെ കൂട്ടിയോജിപ്പിക്കുക എന്ന സ്വഭാവം. ഒരു ഫോണ്ടിനു് ഇങ്ങനെയുള്ള ഒരു ശ്രേണിവന്നാൽ പകരം ഒരു ഒറ്റ ഇമോജിയുടെ ചിത്രം വെയ്ക്കണം എന്നറിയാം. നമ്മുടെ ക + ് + ക എന്ന അക്ഷരശ്രേണിവന്നാൽ അതു് ക്ക എന്നാക്കണം മലയാളം ഫോണ്ടുകൾക്കറിയാമെന്നപോലെ.

ഇനിയിപ്പോൾ ഒരു ഇമോജി ഫോണ്ടിനകത്തു് അങ്ങനെ കൂട്ടിയോജിപ്പിക്കണമെന്ന നിയമമില്ലെങ്കിലോ, വെറുതെ വിട്ടാലും മതി, ‘കുടുംബം’ ഇമോജി ഒറ്റ ചിത്രമല്ലാതെ നാലുപേർ നിരന്നു നിൽക്കുന്ന ചിത്രമാവും. എങ്ങനെ? നമ്മുടെ പ്ന എന്ന കൂട്ടക്ഷരം പ്‌ന എന്ന രീതിയിൽ പിരിഞ്ഞുവന്നാലും നമുക്ക് പ്ന തന്നെയാണല്ലോ, അതുപോലെ.

അങ്ങനെ ഇമോജികളെ ഇഷ്ടാനുസരണം ചേർത്തു് വിചിത്രമായ ഇമോജികൾ ഉണ്ടാക്കുന്നതിനെപ്പറ്റിയാണു് മുകളിലെ XKCD തമാശ. പക്ഷേ അങ്ങനെ എല്ലാ ഇമോജികളെയും തോന്നിയപടി ചേർക്കാൻ പറ്റില്ല കെട്ടോ, യുണിക്കോഡ് പ്രത്യേകം നിർവചിക്കണം. ഇതുവരെ നിർവചിച്ചിരിക്കുന്നവയുടെ ചാർട്ട് യുണിക്കോഡ് പുറത്തിറക്കിയിട്ടുണ്ടു്. അതിപ്പോൾ, മലയാളത്തിലും ഞ യും പയും ചന്ദ്രക്കലയിട്ടാലും കൂട്ടക്ഷരമുണ്ടാക്കില്ലല്ലോ, ചില അക്ഷരങ്ങൾ ചില ക്രമത്തിൽ ചേർന്നാലല്ലേ കൂട്ടക്ഷരമുണ്ടാക്കൂ.

നേരത്തെപറഞ്ഞ ZWJ യെ എവിടെയോ കണ്ട പരിചയമുണ്ടോ? 😀

മലയാളത്തിലെ ചില്ലക്ഷരങ്ങൾ എങ്ങനെയാണെഴുതുന്നതു്? ൻ എന്ന ചില്ലക്ഷരത്തിനു് U+0D7B എന്ന കോഡ്പോയിന്റ് ഉണ്ടു്. ഒറ്റയ്ക്കൊരു കോഡ് പോയിന്റുള്ളതുകൊണ്ടു് ചില്ലക്ഷരം ൻ അറ്റോമിക് ആയി എൻകോഡ് ചെയ്യപ്പെട്ടിരിക്കുന്നു എന്നും പറയാം. പക്ഷേ ഇങ്ങനെയുള്ള ഒരൊറ്റ കോഡ് പോയിന്റ് ചില്ലക്ഷരങ്ങൾക്കില്ലായിരുന്നു. സ്വരം ചേരാത്തു വ്യഞ്ജനം എന്ന അർത്ഥമാണല്ലോ ചില്ലക്ഷരങ്ങൾക്കുള്ളതു്. ൻ എന്നാൽ ന് എന്ന് സ്വരമൊന്നും ചേരാതെ ഉച്ചരിക്കുന്നു. അവൻ എന്ന വാക്ക് ഉദാഹരണം. ൻ എന്നെഴുതാൻ യൂനിക്കോഡ് 5.1 പതിപ്പിനുമുമ്പു വരെ ന + ്  + ZWJ എന്ന ശ്രേണിയാണു് ഉപയോഗിച്ചിരുന്നതു്. പിന്നീടു് അറ്റോമിക് കോഡ് പോയിന്റ് വന്നപ്പോൾ അതുപയോഗിച്ചും എഴുതിത്തുടങ്ങി. ZWJ യ്ക്കിവിടെ നേരത്തെ പറഞ്ഞ അദൃശ്യരൂപം തന്നെയാണ്. ന് എന്നതിനെ മോഡിഫൈ ചെയ്യുന്ന സ്വഭാവമാണു് ഈ സന്ദർഭത്തിലുള്ളതു്. ന് എന്നതിന്റെ ദൃശ്യരൂപം മാറ്റുക എന്ന സ്വഭാവം. അർത്ഥത്തിൽ മാറ്റം വരുത്തുന്നില്ല, ദൃശ്യത്തിൽ മാത്രം. നൻമ, നന്മ എന്നീ വാക്കുകളിൽ മയുടെ മുമ്പിലത്തെ ൻന്റെ ഉച്ചാരണം ഒന്നു തന്നെയാണല്ലോ. ഈ രണ്ടുവാക്കുകളും ഒന്നുതന്നെയാണെന്നും ZWJ എന്ന അദൃശ്യാക്ഷരംകൊണ്ടു് രൂപത്തിൽ മാത്രം വ്യത്യാസപ്പെട്ടിരിക്കുന്നുവെന്നും ഉദ്ദേശിക്കുന്നു.

ZWJ യുടെ നിർവചനമനുസരിച്ചു് ഡാറ്റാപ്രൊസസ്സിങ്ങിൽ വേണമെങ്കിൽ അവയെ അവഗണിയ്ക്കാം എന്നാണ് – ignorable character. ഇമോജികളുടെ കാര്യം പറയുമ്പോഴും ഇവ വേണമെങ്കിൽ ഒഴിവാക്കി കാണിക്കാം എന്നാണല്ലോ പറഞ്ഞതു്.

“When not available, the ZWJ characters are ignored and a fallback sequence of separate emoji is displayed. Thus an emoji zwj sequence should only be supported where the fallback sequence would also make sense to a viewer.”

ഇതുപോലെത്തന്നെയാണു് മലയാളത്തിലെ ZWJ യുടെ ഉപയോഗവും അർത്ഥവ്യത്യാസം ഉണ്ടാക്കാത്ത വാക്കുകളിൽ ദൃശ്യരൂപത്തിനു മാറ്റം വരുത്താൻ മാത്രം ZWJ ഉപയോഗിക്കാമെന്നായിരുന്നു പൊതുവിലുള്ള മനസ്സിലാക്കാൽ.

മലയാളത്തിലെ ചില്ലുകൾ – യുണിക്കോഡ് എൻകോഡ് ചെയ്തതു്

മലയാളത്തിൽ പക്ഷേ കാര്യങ്ങൾ അത്ര എളുപ്പമായിരുന്നില്ല. ഇങ്ങനെ ZWJ കൊണ്ട് ദൃശ്യരൂപത്തിനു മാറ്റം ഉണ്ടാക്കണമെന്ന നിർദ്ദേശം അനുസരിക്കാത്ത ബഗ്ഗുകളുള്ള അപ്ലിക്കേഷനുകളുണ്ടായിരുന്നു. ഉദാഹരണം ഫയർഫോക്സിന്റെ ആദ്യപതിപ്പുകൾ. “അവൻ കൊടുത്തു” എന്ന വാക്യം “അവന് കൊടുത്തു” എന്ന രീതിയിൽ തെറ്റിക്കാണിച്ചാൽ തെറ്റിപ്പോകില്ലേ? ഈ ചോദ്യം ചോദിച്ചാൽ അത്യാവശ്യം ഭാഷാവബോധമുള്ളവർ സംവൃതോകാരം ഉപയോഗിക്കാത്തതിന്റെ പ്രശ്നങ്ങൾ ചൂണ്ടിക്കാണിക്കും. “അവന് കൊടുത്തു” എന്നതു് “അവനു് കൊടുത്തു” എന്നു് മീത്തൽ മാത്രമല്ലാതെ സംവൃതോകാരം ഉ ചിഹ്നം കൂട്ടി എഴുതിയാൽ ഈ ആശയക്കുഴപ്പം വരില്ലയെന്നു്.

എന്തായാലും ചില്ലക്ഷരങ്ങളെ ഇങ്ങനെ ZWJ ചേർത്തെഴുതാതെ സ്വന്തമായി കോഡ് പോയിന്റ് കൊടുത്തു് അറ്റോമിക് ആയി നിർവചിക്കണമെന്ന വാദം യുണിക്കോഡ് അംഗീകരിക്കുകയാണുണ്ടായതു്. അതാണു് ഇന്നത്തെ ചില്ലുകളുടെ അംഗീകൃത/റെക്കമെന്റഡ് രീതി. എന്നാൽ ZWJ ചേർത്തെഴുതിയ ചില്ലുകൾ വ്യാപകമായി അപ്പോഴേക്കും മലയാളത്തിൽ വന്നിരുന്നതിനാൽ അപ്ലിക്കേഷനുകൾ അവയെ ചില്ലുകൾക്കു തുല്യമായി പരിഗണിക്കണമെന്ന നിർദേശവും ഉണ്ടു്.

കൌതുകകരമായ ഒരു കാര്യം, ഈ ചില്ലക്ഷരവിവാദമൊക്കെ നടക്കുമ്പോൾ ZWJ യ്ക്ക് ഇത്ര പ്രശസ്തിയൊന്നും ഉണ്ടായിരുന്നില്ല. മലയാളം, സിംഹള, അറബിക്ക് എന്നീ ഭാഷകളിലെ കുഴപ്പം പിടിച്ച, ആർക്കും മനസ്സിലാക്കാൻ പെട്ടെന്നു കഴിയാത്ത, അക്ഷരമാലയിലേക്കു് കടന്നുകയറിയ ഒരു അന്യാക്ഷരം ആയിരുന്നു അന്നതു്. അതുകൊണ്ടുതന്നെ അപ്പ്ലിക്കേഷനുകളൊന്നും ഇവ നേരാംവണ്ണം പ്രൊസസ്സ് ചെയ്യില്ല, നമുക്ക് ചില്ലുകൾക്ക് പ്രത്യേകം കോഡ് പോയിന്റ് വേണമെന്നൊക്കെ വാദമുണ്ടായിരുന്നു. പക്ഷേ വർഷങ്ങൾ കഴിഞ്ഞപ്പോൾ zwj യെ നമ്മൾ കൂടുതൽ കൂടുതലിടങ്ങളിൽ കാണുകയാണു്.

കൂടുതൽ വായനക്ക്:

by Santhosh Thottingal at March 29, 2017 05:07 PM

February 01, 2017

Ershad K

Install RMagick 2.13.2 in macOS Sierra

Homebrew is usually pretty good at installing ImageMagick and I was wondering why it threw the following error when I tried to configure an old Rails project in macOS Sierra. I had run brew install imagemagick before installing the RMagick gem and still got this –

checking for Ruby version >= 1.8.5... yes
checking for /usr/local/Cellar/gcc@4.9/4.9.3_1/bin/gcc-4.9... yes
checking for Magick-config... no
Can't install RMagick 2.13.2. Can't find Magick-config in <snip>

Turns out Homebrew installed ImageMagick 7.0.4-6 and it doesn’t have Magick-config executable in its bin directory, instead it has Magick++-config.

Got the gem installed by downgrading ImageMagick to version 6 as follows.

# Uninstall ImageMagick 7
brew uninstall imagemagick
brew install imagemagick@6
brew link imagemagick@6 --force

Now we can install the gem.

gem install rmagick -v '2.13.2'


by ershad at February 01, 2017 06:59 AM

January 26, 2017

Santhosh Thottingal

സാങ്കേതികവിദ്യാഭ്യാസം : പരീക്ഷകളിങ്ങനെ മതിയോ?


കേരള സാങ്കേതിക സര്‍വ്വകലാശാലയുടെ ഒന്നും മൂന്നും സെമസ്റ്ററുകളിലെ പരീക്ഷകള്‍ ഒരുപാട് കോലാഹലങ്ങള്‍ക്കു ശേഷം തുടങ്ങിക്കഴിഞ്ഞു. മൂല്യനിര്‍ണ്ണയശാലകളും സജീവമായിരിക്കുന്നു. ചോദ്യപ്പേപ്പറുകളും അവയുടെ നിലവാരവും മൂല്യനിര്‍ണ്ണയരീതിയും ഒക്കെയാണ്  ഞങ്ങള്‍ അദ്ധ്യാപകര്‍ക്കിടയിലിപ്പോള്‍ ചൂടുള്ള ചര്‍ച്ച. ‘പോര്‍ഷന്‍ തീര്‍ത്താല്‍’ തീരുന്ന പണിയേ തനിക്കുളുവെന്നു കരുതിയിരുന്നവരായിരുന്നു മിക്കവരും. “ഒക്കെ ഞാന്‍ പഠിപ്പിച്ചതാ, അവര് പഠിച്ചിരുന്നെങ്കില്‍ ജയിച്ചേനെ” അല്ലെങ്കില്‍ “നമ്മളെയൊക്കെ ക്ലാസ്സില്‍ പഠിപ്പിച്ചിട്ടാണോ, കാര്യങ്ങളൊക്കെ തനിയേ കണ്ടുപിടിച്ചു പഠിക്കാനുള്ള മടികൊണ്ടാ ഇപ്പോഴത്തെ കുട്ടികളൊക്കെ പരീക്ഷയില്‍ തോല്‍ക്കുന്നേ” എന്നുമൊക്കെയുള്ള മാസ്സ് ഡയലോഗടിയ്ക്കാന്‍ അദ്ധ്യാപകർക്കൊന്നും പണ്ടത്തെയെന്നപോലെ ഇപ്പോഴും ഒരു മടിയുമില്ല. വ്യക്തിപരമായ നിരീക്ഷണങ്ങള്‍ നിന്നുള്ള സാമാന്യവല്‍ക്കരണത്തില്‍ തെറ്റുകളുണ്ടന്നു തോന്നിയാല്‍ ചൂണ്ടിക്കാണിക്കുക, തിരുത്താം  🙂

തനിയ്ക്ക് ആഴത്തില്‍ ബോധ്യമുള്ള ഒരു കാര്യം മാത്രമേ മറ്റൊരാള്‍ക്കു ബോധിയ്ക്കും വിധം പറഞ്ഞു കൊടുക്കാന്‍ ആര്‍ക്കായാലും പറ്റൂ.  അവര്‍ക്കേ ക്ലാസ്സ്മുറിയില്‍ പഠിതാവില്‍ നിന്നും തിരിച്ചു ചോദ്യങ്ങള്‍ ഉണ്ടാകുമ്പോള്‍ കൂടുതല്‍ ആഴത്തിലേയ്ക്കിറങ്ങി പാഠഭാഗം ഇനിയും ആസ്വാദ്യകരമാക്കുവാന്‍ സാധിക്കൂ, ചുറ്റുമുള്ളലോകത്തെ അതിലേയ്ക്ക് ബന്ധിപ്പിയ്ക്കുവാനാകൂ. അങ്ങനെയൊരു ക്ലാസ്സിലിരുന്ന വിദ്യാര്‍ത്ഥിക്കേ അതുനുമപ്പുറമെന്തുണ്ടെന്ന് ക്ലാസ്സിനു പുറത്തന്വേഷിക്കുവാന്‍ സാധിക്കൂ. അപ്പൊഴേ പഠിച്ചതുകൊണ്ടു തന്റെ പരിസരത്തെ എങ്ങനെ മെച്ചപ്പെടുത്താമെന്ന് അദ്ധ്യാപകര്‍ക്കും സഹപാഠികള്‍ക്കുമൊപ്പം ചര്‍ച്ച ചെയ്യാനും പ്രാവര്‍ത്തികമാക്കാനും ഉള്ള ശ്രമങ്ങളൊകെ ഉണ്ടാകൂ. ഇതൊക്കെ സാധിച്ചില്ലെങ്കില്‍ ഒരു സാങ്കേതിക കലാലയം കൊണ്ട് എന്താണ് പ്രയോജനം?

ഇനി ഇങ്ങനെയൊക്കെയൊരു ആദര്‍ശാത്മക ക്ലാസ്സ്മുറി കേരളത്തില്‍ ഉണ്ടെങ്കില്‍ തന്നെ അവിടെയുള്ള ‘മിടുക്കരായ’ വിദ്യാര്‍ത്ഥികളെ അമ്പേ പരാജയപ്പെടുത്തുന്ന മട്ടിലായിരുന്നു ഞാന്‍ കണ്ടിടത്തോളം* ചോദ്യപ്പേപ്പറുകളും മൂല്യനിര്‍ണ്ണയവുമൊക്കെ. സിലബസ് എന്നു പറയുന്നത് പലപ്പോഴും ഒരു സൂചന മാത്രമാണ്. അതിനെ വ്യാഖ്യാനിച്ച് ക്ലാസ്സ്പഠനത്തില്‍ എന്തൊക്കെ ഉള്‍പ്പെടുത്തണമെന്നത് അതത് വിഷയം കൈകാര്യം ചെയ്യുന്ന അദ്ധ്യാപകരുടെ വിവേചനാധികാരത്തില്‍ പെടുന്നതാണ്. പാഠഭാഗത്തേക്കുറിച്ചു വ്യക്തമായ ധാരണ അദ്ധ്യാപകര്‍ക്കില്ലെങ്കില്‍ ഇതിനെ സ്വാധീനിക്കുന്നത് മുന്‍കാലങ്ങളിലെ ചോദ്യപ്പേപ്പറുകളുമായിരിയ്ക്കും. അദ്ധ്യാപരെത്ര മിടുക്കരായാലും അവര്‍ പഠിപ്പിച്ചതു കൊണ്ട് പരീക്ഷയില്‍ മാര്‍ക്കു കിട്ടുന്നില്ലെങ്കില്‍ ആ അദ്ധ്യാപനത്തിന് ഇവിടെ ആരും വില കൊടുക്കുകയുമില്ലല്ലോ!! അപ്പോള്‍ പരീക്ഷാ ചോദ്യത്തിന് ഉത്തരമെഴുതാന്‍ പാകത്തിലാവണം അദ്ധ്യാപനം എന്ന നിലയിലേയ്ക്ക് കാര്യങ്ങള്‍ മാറുകയും ചെയ്യും. അതു തന്നെയാണ് സംഭവിച്ചിട്ടുള്ളതും.

ചോദ്യപ്പേപ്പറുകളാകട്ടേ സിലബസിലെ ഏതെങ്കിലുമൊക്കെ വാക്കുകള്‍ ചേര്‍ത്തെഴുതിയിട്ട് ‘വിശദീകരിക്കുക’, ‘നിര്‍വ്വചിക്കുക’ എന്നൊക്കെയാണെങ്കിലെ അവസ്ഥ ഒന്നാലോചിച്ചു നോക്കൂ. ഉദാഹരണത്തിനു്, “ജൈവലോകം – വിശദീകരിയ്ക്കുക” എന്നൊരു ചോദ്യമുണ്ടെങ്കില്‍ യഥാര്‍ത്ഥത്തില്‍ അതിന്റെ സ്കോപ്പ് എത്രയോ വലുതാണ്. ജൈവലോകത്തെ പരസ്പരബന്ധവും ആഹാരശൃംഖലയും അതിലെ കണ്ണികള്‍ മുറിഞ്ഞാല്‍ എന്തുണ്ടാവുമെന്നും അതില്‍ പരിണാമത്തിന്റെ പങ്കും ഒക്കെ അറിയാവുന്നയാള്‍ അതൊക്കെ വിശദമാക്കിയാല്‍ ഒരു പുസ്തകത്തിനുള്ള വകുപ്പുണ്ട്. ആ ചോദ്യത്തിന്റെ ഉത്തരത്തിലെന്തൊക്കെ ഉള്‍ക്കൊള്ളിക്കണമെന്ന് ചോദ്യകര്‍ത്താവിന് യാതൊരു ധാരണയുമില്ലായെന്നു തോന്നും വിധമുള്ള  ഒരു സ്കോറാകും അതിനുണ്ടാവുക. പ്രതീക്ഷിക്കപ്പെടുന്ന ഉത്തരത്തിന്റെ ആഴവും പരപ്പുമായി യാതൊരു ബന്ധവുമുണ്ടാവില്ല ആ ചോദ്യത്തിന്റെ സ്കോറിന്. ‘ജൈവലോകത്തേക്കുറിച്ച് വിശദീകരിച്ചാല്‍ അഞ്ചു മാര്‍ക്കു നല്‍ക്കുക’ എന്ന മട്ടിലൊരു ഉത്തര സൂചികയും കൂടിയായാല്‍ കാര്യങ്ങള്‍ കൈവിട്ട്പോകാന്‍പിന്നെയൊന്നും വേണ്ട . പിന്നെ മൂല്യ നിര്‍ണ്ണയം തോന്നുംപടിയാകും. എന്തെഴുതിയാലും മാര്‍ക്കു കൊടുക്കാത്തവരും എന്തെങ്കിലുമൊക്കെ എഴുതിയാല്‍ മാര്‍ക്കു കൊടുക്കുന്നവരും മൂല്യനിര്‍ണ്ണയത്തിനുണ്ടാകും. ചുരുക്കിപ്പറഞ്ഞാല്‍ ക്ലാസ്സ് മുറിയില്‍ ആര്‍ജ്ജിക്കേണ്ട നൈപുണികളും പരീക്ഷയും മൂല്യനിര്‍ണ്ണയവും പരസ്പരബന്ധമില്ലാതെ നിലകൊള്ളുന്ന കാഴ്ചയാണ് നടന്നുകൊണ്ടിരുന്നത്. സാഹചര്യങ്ങള്‍ക്കനുസരിച്ച് വിശകലനശേഷി ഉപയോഗിക്കേണ്ടുന്ന ചോദ്യങ്ങളാവും കാര്യകാരണബന്ധങ്ങള്‍ കൃത്യമായി മനസ്സിലുറച്ചോ എന്ന് പരീക്ഷിച്ചറിയാന്‍ വേണ്ടത്. ഇത്തരം ചോദ്യങ്ങള്‍ വളരെ അപൂര്‍വ്വമായി മാത്രമേ എഞ്ചിനീയറിങ്ങ് പഠനകാലത്തും അദ്ധ്യാപന കാലത്തും കണ്ടിട്ടുള്ളൂ. കൂട്ടത്തില്‍ പറയട്ടേ, സ്കൂള്‍ തലം വരെ അതിസൂക്ഷ്മമായി അപഗ്രഥന ശേഷി അളക്കുന്ന ചോദ്യങ്ങള്‍ ധാരാളമായി കണ്ടു ശീലിച്ച്  പ്രവേശനപ്പരീക്ഷയൊക്കെ കടന്നു വരുന്ന വിദ്യാര്‍ത്ഥികളോടാണിമ്മാതിരി ചോദ്യങ്ങള്‍ ചോദിക്കുന്നത്. (പ്രവേശനപ്പരീക്ഷയുടെ കടമ്പയൊക്കെ കേരളത്തിലെ സ്വാശ്രയ എഞ്ചിനീയറിങ്ങ് രംഗത്തൊരു വിഷയമാണോ എന്നതിലേയ്ക്ക്  ഇപ്പോള്‍ കടക്കുന്നില്ല)

ഒരു സാങ്കല്പിക ചോദ്യമാണ് മുകളിൽ സൂചിപ്പിച്ചത്. പക്ഷേ യാഥാർത്ഥ്യം ഇതിനേക്കാൾ കഷ്ടമാണ്. കാലിക്കറ്റ് യൂണിവേഴ്സിറ്റിയുടെ ‘Information Theory and Coding’ എന്ന വിഷയത്തിന്റെ ചോദ്യപ്പേപ്പറിൽ നിന്നാണ് ഈ ചിത്രം.


സിലബസിൽ നിന്നുള്ള കുറച്ചു വാക്കുകളും ഒപ്പം Explain എന്നൊരു കൂട്ടിച്ചേർപ്പും. ഏതാണ്ട് നൂറോളം പേജുകളിലായിട്ടേ ഇതൊക്കെ ശരിയ്ക്ക് വിവരിക്കാനാവൂ.  ഗണിതപരമായി വളരെ മനോഹരമായ ഒരു വിഷയത്തോടാണ് ഇതു ചെയ്തിരിക്കുന്നത്.   പഠിച്ചവരോടും ഉത്തരമെഴുതുന്നവരോടും തീർത്തും ഉത്തരവാദിത്തരഹിതമായ ഒരു പെരുമാറ്റമായിട്ടേ ഇത്തരം ചോദ്യങ്ങളെ കാണാനാവൂ.

ഇതിനു സമാനമായി മറ്റൊരു ചോദ്യപ്പേപ്പർ. Computer Organization and Design എന്ന വിഷയത്തിന്റെയാണ്.

Explain, Discuss, What do you mean by എന്നൊക്കെ മാറിമാറിച്ചേർത്തെഴുതിയാൽ പരീക്ഷാചോദ്യങ്ങൾ തയ്യാറാക്കാമെന്നു കരുതുന്നവരെയാണോ ചോദ്യപ്പേപ്പർ തയ്യാറാക്കാൻ ഏൽപ്പിക്കുന്നത്?

ഈ സര്‍വ്വകലാശാലാ പരീക്ഷയ്ക്ക് പറ്റുന്ന രീതിയില്‍ വിദ്യാര്‍ത്ഥികളെ സജ്ജരാക്കാന്‍ എന്താണ് വേണ്ടത്? എന്തു ചോദ്യം കിട്ടിയാലും എന്തെങ്കിലുമൊക്കെ എഴുതാനുള്ള പരിശീലനം കൊടുക്കുക. പലവട്ടം ആവര്‍ത്തിക്കുന്ന ചോദ്യങ്ങളൊക്കെ അച്ചടിച്ച നോട്ടായി കൊടുക്കുന്ന സാങ്കേതികസ്ഥാപനങ്ങളൊക്കെയുണ്ടാവുന്നത് അങ്ങനെയാണ്. രണ്ടു ദിവസം മെനക്കെട്ടാല്‍ തരക്കേടില്ലാത്ത മാര്‍ക്കു വാങ്ങാന്‍ ഇങ്ങനെയൊരു നോട്ടുണ്ടെങ്കില്‍ മതിയാകും. അവിടെയൊക്കെ  പരീക്ഷാ റിസല്‍ട്ടും മെച്ചപ്പെടും. കാര്യവും കാരണവും ബോദ്ധ്യപെടുത്തി ക്ലാസ്സെടുക്കുന്ന അദ്ധ്യാപകര്‍ ഈ പരീക്ഷാമത്സരത്തില്‍ തോറ്റുപോകുന്നു. അവരുടെ വിദ്യാര്‍ത്ഥികള്‍ക്ക്  “ജൈവലോകത്തെ” നൂറുവിധത്തില്‍ അപഗ്രഥിയ്കാന്‍ അറിയുമായിരിയ്ക്കും, പക്ഷേ ഇങ്ങനെയൊരു ചോദ്യത്തിന് അതിലെന്തെഴുതണമെന്നറിയാതെ കുഴങ്ങും. അവരിലും പഴയ ചോദ്യപ്പേപ്പറൊകെ നോക്കി നോട്ടൊക്കെ തയ്യാറാക്കുന്ന വിദ്യാര്‍ത്ഥികള്‍ രക്ഷപ്പെടും. ഉന്നതവിദ്യാഭ്യാസത്തിനായി GATE പോലുള്ള അഭിരുചി പരീക്ഷയിലേയ്കു വരുമ്പോഴാണ് ഇത്തരം ക്ലാസ്സ്‌റൂം കോച്ചിങ്ങ് വെറും വെള്ളത്തിൽ വരച്ച വരയായിരുന്നുവെന്ന് പലര്‍ക്കും ബോദ്ധ്യപ്പെടുക. ഇതു കടന്നു കൂടുവാനായി സ്പെഷ്യല്‍ കോച്ചിങ്ങ് സെന്ററുകള്‍ ഒക്കെ നമ്മുടെ നാട്ടില്‍ വേണ്ടി വരുന്നത് അത്തരം വിശകലനാത്മകമായ പഠനം കോളേജുകളില്‍ അധികം നടക്കാത്തതു കൊണ്ടാണ്.

എന്റെ തലമുറയിലെ അദ്ധ്യാപകരില്‍ ഭൂരിപക്ഷവും ഈ ഒരു സിസ്റ്റത്തിലൂടെ പഠനകാലം കഴിഞ്ഞു വന്നവരാണ്. അവരില്‍ നിന്നും അതുകൊണ്ടാണ്  ആദ്യഖണ്ഡികയില്‍ പറഞ്ഞ തരത്തിലുള്ള അഭിപ്രായങ്ങള്‍ ഉണ്ടാകുന്നത്. സിലബസ്സിലുള്ള വാക്കുകളൊക്കെ ക്ലാസ്സില്‍ സൂചിപ്പിച്ച് ചിലതിനേക്കുറിച്ചുള്ള പുസ്തകത്തിലൊക്കെ ലഭ്യമായ പരിശീലന ചോദ്യങ്ങളും കൊടുത്തുകഴിഞ്ഞാല്‍ തന്റെ കര്‍ത്തവ്യം പൂര്‍ണ്ണമായി എന്ന തോന്നലവര്‍ക്കുണ്ടാവുക സ്വാഭാവികമാണ്. അവരെ സംബന്ധിച്ചിടത്തോളം പരീക്ഷയ്ക്കു വേണ്ടി ബാക്കിയൊക്കെ സ്വയം സജ്ജരാകേണ്ടത് വിദ്യാര്‍ത്ഥികളുടെ പണിയാണ്. ആദര്‍ശാത്മകമായ ക്ലാസ്സ്മുറിയിലെ വിദ്യാര്‍ത്ഥിക്കും കാര്യങ്ങളറിയുമെങ്കിലും പരീക്ഷയ്ക്കു തയ്യാറെടുക്കല്‍ സ്വന്തം പണിതന്നെ. ചുരുക്കി പറഞ്ഞാല്‍ ഈ രണ്ടു വിഭിന്നധ്രുവങ്ങളില്‍ നില്‍ക്കുന്ന ക്ലാസ്സിലെ വിദ്യാര്‍ത്ഥികളും മേല്‍പ്പറഞ്ഞ പരീക്ഷാ സമ്പ്രദായത്തില്‍ ഒരുപോലെയാണ്.  മാര്‍ക്കിന്റെ കാര്യത്തില്‍ പലപ്പോഴും ഇവരേക്കാള്‍ മറ്റൊരു വിഭാഗം (ചിട്ടയായി നോട്ടൊക്കെ കൊടുത്തുവിടുന്ന – അതിലപ്പുറം ഒന്നും നടക്കാത്ത )  സ്ഥാപനങ്ങളിലെ വിദ്യാര്‍ത്ഥികള്‍ ശോഭിയ്ക്കുകയും ചെയ്യും.

മൂല്യനിര്‍ണ്ണയോപാധികളെപ്പറ്റി ശാസ്ത്രീയമായി പഠിച്ചിട്ടില്ലെങ്കിലും സാമാന്യബോധം കൊണ്ടു മനസ്സിലാക്കുന്നത് ലളിതമായത്, അടിസ്ഥാന ജ്ഞാനം പരിശോധിക്കുന്നത്, പ്രായോഗികജ്ഞാനം പരിശോധിക്കുന്നത്, സങ്കീര്‍ണ്ണമായത് എന്നിങ്ങനെയൊക്കെയായി ചോദ്യങ്ങളെ തരം തിരിച്ച് നിശ്ചിത ശതമാനം മാര്‍ക്ക് ഓരോ വിഭാഗത്തിനും മാറ്റിവെച്ച്  സന്തുലിതമായ ഒന്നാവണം ചോദ്യപ്പേപ്പറെന്നാണ്. ഒരു വിഷയത്തെക്കുറിച്ച് സാമാന്യമായ ഒരു ബോധവും അതെന്തിനു പഠിയ്ക്കുന്നു എന്ന അറിവും ഉള്ള വിദ്യാര്‍ത്ഥികള്‍ക്ക് തോല്‍ക്കേണ്ടി വരുന്ന ഒന്നാവരുത് പരീക്ഷ. പക്ഷേ ആഴത്തിലുള്ള അപഗ്രഥനം സാധ്യമാകുന്ന വിദ്യാര്‍ത്ഥികള്‍ക്ക് മാത്രമാവണം ഉയര്‍ന്ന സ്കോറിനുള്ള അവസരം.

പറഞ്ഞു വന്നത് പരീക്ഷയിലെ മാര്‍ക്കിന് നിലവിലുള്ള നിലയും വിലയുമൊന്നും കുറയാന്‍ പോകുന്നില്ല. പരീക്ഷാഫലം തന്നെയാവും സ്ഥാപനങ്ങളുടെ വിപണിമൂല്യത്തേയും നിര്‍ണ്ണയിക്കുക. കേരളത്തിലെ സാങ്കേതിക വിദ്യാഭ്യാസസ്ഥാപനങ്ങളൊക്കെ ഒരു സാങ്കേതിക സര്‍വ്വകലാശായുടെ കീഴില്‍ വന്നതോടെ എല്ലാ സ്ഥാപനങ്ങളേയും ഒന്നിച്ചു വിലയിരുത്താന്‍ പറ്റുന്ന ഒറ്റ അളവുകോലായി യൂണിവേഴ്സിറ്റി പരീക്ഷകള്‍ മാറി. അപ്പോള്‍ പരീക്ഷകള്‍ അഭിരുചിയും അറിവും അതിന്റെ ആഴവും പരപ്പുമൊക്കെ അളക്കാനുതകുന്ന വിധത്തില്‍ തയ്യാറാക്കിയാല്‍ ആ മാര്‍ക്കിന് തീര്‍ച്ചയായും വിലയുണ്ടാകും. സാങ്കേതിക പഠനം അതിന്റെ ലക്ഷ്യം നിറവേറ്റുന്നുവെന്നുറപ്പു വരുത്താന്‍ പരീക്ഷയ്ക്കു കുറേയൊക്കെ സാധിക്കുകയും ചെയ്യും.

ഇപ്പോൾ  കേരള സാങ്കേതികസർവകലാശാലയുടെ പരീക്ഷകൾ നടന്നുകൊണ്ടിരിക്കുകയാണല്ലോ.  മൂന്നാം സെമെസ്റ്റർ പരീക്ഷകളിൽ പാഠഭാഗം ആഴത്തിൽ അറിഞ്ഞവർക്കല്ലാതെ ഉത്തരങ്ങളൊന്നുമേ എഴുതാനാവാത്ത വിധം ചോദ്യങ്ങളാണ് ഇലക്ട്രോണിക്സ് വിഭാഗം വിഷയങ്ങൾക്കുണ്ടായിരുന്നത്. ഫലത്തിൽ മുഴുവനറിഞ്ഞില്ലെങ്കിൽ ഒന്നുമറിയില്ല എന്ന ഒരു ലേബലിങ്ങാവും മാർക്കിന്റെ അടിസ്ഥാനത്തിൽ നോക്കിയാൽ കാണാനാകുക. അറിവിനും അത് പ്രയോഗിക്കാനുള്ള കഴിവിനും ആനുപാതികമാവില്ല നേടുന്ന സ്കോർ. എഞ്ചിനീയറിങ്ങ് അഭിരുചിയോടെയല്ലാതെയും ഈ ബിരുദകോഴ്സിനു ചേരുന്ന അനവധി വിദ്യാർത്ഥികൾ ഇവിടെയുണ്ട്. അവരെയൊക്കെയങ്ങ് തോൽപ്പിച്ചുകളഞ്ഞ് ശുദ്ധികലശം നടത്തേണ്ടതൊന്നുമില്ല. ഏതെങ്കിലും ഒരു ബിരുദകോഴ്സ് പൂർത്തിയാക്കുക എന്ന ഉദ്ദേശത്തോടെ എത്തിച്ചേരുന്ന ശരാശരിക്കാരും, ശരാശരി മാർക്കോടെ പരീക്ഷകൾ കടന്നുകൂടെട്ടേ. അതുകൊണ്ട് വലിയ ദോഷമൊന്നും വരാനില്ല. ബിരുദസമ്പാദനത്തിനു ശേഷം തങ്ങൾക്ക് എത്തിച്ചേരാൻ പറ്റുന്നിടതേയ്ക്ക് അവർ എത്തിക്കോട്ടേ.

പക്ഷേ ഒരു പുസ്തകത്തിന്റേയും റെഫറൻസിന്റേയും സഹായം കൂടാതെ നിർദ്ധരിക്കേണ്ട എഞ്ചിനീയറിങ്ങ് പ്രശ്നങ്ങളൊന്നും പ്രായോഗിക ജീവിതത്തിലുണ്ടാകാൻ പോകുന്നില്ല. ലഭ്യമായ വിഭവങ്ങളെല്ലാം ഉപയോഗിച്ച് എങ്ങനെ ഏറ്റവും സമർത്ഥമായി പ്രശ്നങ്ങൾ പരിഹരിക്കാം അല്ലെങ്കിൽ ജീവിതം മെച്ചപ്പെടുത്താം എന്നിടത്താണ് സാങ്കേതിക വൈദഗ്ദ്ദ്ധ്യം തെളിയിക്കേണ്ടത്. ഒരു പുസ്തകത്തിൽ നിന്നും വെറുതേയങ്ങ് പകർത്തേണ്ടതല്ല, പകരം അതിലെ ഫാക്റ്റും ഒപ്പം സ്വന്തം സർഗ്ഗസാങ്കേതികബോധവും ചേർത്ത് ഉത്തരത്തിലെത്തേണ്ട  ചോദ്യങ്ങൾ ഉണ്ടാകുമ്പോൾ പരീക്ഷകൾക്ക് പുസ്തകങ്ങൾ ഒപ്പം കൂട്ടാമെന്നാവാം. ‘കോപ്പിയടി’ എന്ന സാദ്ധ്യത പോലും ഇതോടെ തള്ളിക്കളയാനാകണം. ഇത്തരം ചർച്ചകൾ ‘സ്വാശ്രയകോളേജുകൾ – കോപ്പിയടി’ വിവാദവുമായി ബന്ധപ്പെട്ട് സാമൂഹമാദ്ധ്യമത്തിൽ ധാരാളമായി കാണുകയുണ്ടായി. അതു വളരെ ശരിയാണു താനും.

സാങ്കേതിക പഠനത്തിന്റെ അളവുകോല്‍ സെമസ്റ്ററവസാനമുള്ള എഴുത്തുപരീക്ഷ മാത്രമല്ല എന്ന് ഇതെഴുന്ന എനിയ്ക്ക് നല്ല ബോധ്യമുണ്ട്. അതുകൊണ്ട് ക്ലാസ്സില്‍ തുടര്‍ച്ചയായി നടത്തുന്ന മൂല്യനിര്‍ണ്ണയവും ഇതോടൊപ്പം പ്രാധാന്യമര്‍ഹിക്കുന്നു. പക്ഷേ ആ ഇന്റേണല്‍ മാര്‍ക്ക് നിര്‍ണ്ണയിക്കുന്നതിനുള്ള മാനദണ്ഡം ക്ലാസ്സിലെ അസൈന്‍മെന്റ്, ഇന്റേണല്‍ പരീക്ഷകള്‍ ഒക്കെ ചേര്‍ന്നിട്ടാണ്. അസൈന്‍മെന്റുകള്‍ എന്ന നിലയില്‍ സിലബസിലെ ഏതെങ്കിലും ഒന്നോ രണ്ടോ ടോപ്പിക്കുകളെക്കുറിച്ചുള്ള ചെറുതോ വലുതോ ആയ കുറിപ്പുകള്‍ തയ്യാറാക്കുവാനാകും വിദ്യാര്‍ത്ഥികളോട് അദ്ധ്യാപകര്‍ ആവശ്യപ്പെടുക. ആദ്യം പൂര്‍ത്തിയാകുന്ന കുറച്ചുപേരുടെ കുറിപ്പുകളുടെ തനിപ്പകര്‍പ്പായ അറുപതോളം  ‘അസൈന്‍മെന്റുകള്‍’ക്ക് പ്രത്യേകിച്ചൊരു മാനദണ്ഡവുമില്ലാതെ അനുവദിച്ചിരിക്കുന്ന മാര്‍ക്ക് വീതിച്ചു കൊടുക്കുക എന്നതിലപ്പുറം അദ്ധ്യാപകര്‍ക്കു ഒന്നുമവിടെ ചെയ്യാനുണ്ടാകില്ല. ചുറ്റുപാടുകളില്‍ നിന്നും അധികവിവരം ശേഖരിയ്ക്കുവാനും ലഘുപ്രോജക്റ്റുകള്‍ചെയ്യുവാനുമൊക്കെ കരിക്കുലം വിഭാവനം ചെയ്യുന്നുണ്ടെങ്കിലും പഠിച്ചതേ പാടൂവെന്ന അവസ്ഥയിലാണ് കാര്യങ്ങള്‍.

അതിനു മാറ്റം വരണമെങ്കില്‍ തങ്ങള്‍ പഠിച്ചതിന്നും ശീലിച്ചതിനുമപ്പുറം എന്തൊക്കെ പാഠ്യോപാധികളും സാദ്ധ്യതകളുണ്ടെന്നതിനെക്കുറിച്ചു കേരളത്തിലങ്ങോളമിങ്ങോളമുള്ള എഞ്ചിനീയറിങ്ങ് അദ്ധ്യാപകര്‍ക്ക്  അറിവുപകരേണ്ടതുണ്ട്. കരിക്കുലം ചട്ടക്കൂട് എങ്ങനെയൊക്കെ സര്‍ഗ്ഗാത്മകമാക്കിയാലും അത് പ്രായോഗികതലത്തില്‍ എത്തണമെങ്കില്‍ അദ്ധ്യാപകരും അതിനു പാകത്തില്‍ പരിശീലിപ്പിക്കപ്പെടണം. അനുഭവപരിചയം കൊണ്ട് അല്ലെങ്കില്‍ മികച്ച ഉള്‍ക്കാഴ്ച്ചകൊണ്ട് ഓരോരോ വിഷയത്തിനും പറ്റിയ അദ്ധ്യാപന രീതികള്‍ സ്വായത്തമാക്കിയവര്‍ ഉണ്ടാകുമെങ്കിലും അതു പങ്കുവെയ്ക്കുവാനൊരു വേദി നമുക്കില്ല.

ഫാക്കല്‍ട്ടി ഡെവലപ്പ്മെന്റ് പ്രോഗ്രാം (FDP) പലപ്പോഴും കോളെജുകള്‍ മുന്‍കൈ എടുത്തു നടത്താറുണ്ട്. അവിടെ subject knowledge വികസിപ്പിക്കുക എന്നതിലുപരി ബോധനശാസ്ത്രം അധികം ചര്‍ച്ചയിലെത്താറില്ല. ഇതിനു സാങ്കേതിക സര്‍വ്വകലാശാല തന്നെ ഒരു സ്ഥിരം സംവിധാനം രൂപീകരിക്കുന്നത് ദീര്‍ഘകാലാടിസ്ഥാനത്തില്‍ വലിയ ഗുണം ചെയ്യും. അതു വഴി അദ്ധ്യാപക പരിശീലനം ഓരോ വെക്കേഷന്‍ കാലത്തും നടത്തണം. അദ്ധ്യാപനത്തിന്റെ രീതിശാസ്ത്രം മുതല്‍ ചോദ്യപ്പേപ്പര്‍ തയ്യാറാക്കുവാനുള്ള പരിശീലനം വരെ കൊടുക്കുകയും വേണം. ഇതൊന്നും മേല്‍ത്തട്ടില്‍ നിന്നും നിര്‍ബന്ധം ചെലുത്തി ചെയ്യിക്കേണ്ടതില്ല. പരിശിലനം ലഭിച്ച അദ്ധ്യാപകരുടെ വിദ്യാര്‍ത്ഥികളില്‍ നിന്നുള്ള പ്രതികരണം കൊണ്ടു തന്നെ ഇതിന്റെ ആവശ്യകത തിരിച്ചറിഞ്ഞ് വേണ്ടവര്‍ പരിശീലനത്തിനെത്തിക്കൊള്ളും. ഓരോ വിഷയങ്ങള്‍ക്കും ലഭ്യമായിട്ടുള്ള അദ്ധ്യാപനസഹായികളുടെയും പഠന വിഭവങ്ങളുടെയും കേന്ദ്രീകൃതമായ വിഭവസമാഹരണം നടത്തി അതു സ്വതന്ത്രലൈസന്‍സില്‍ ലഭ്യമാക്കുകയും വേണം. ഇവയൊക്കെയുണ്ടെങ്കില്‍ തന്നെ ഒരു വിഷയം പുതിയതായി കൈകാര്യം ചെയ്യുന്ന അദ്ധ്യാപകര്‍ക്ക്  പോലും ‘സ്റ്റാര്‍ട്ടിങ്ങ് ട്രബിള്‍’ ഇല്ലാതെ സുഗമമായി അദ്ധ്യാപനം സാധ്യമാകും.

ക്ലാസ്സില്‍ നിന്നും തന്നെ വിഷയത്തിലുള്ള അടിസ്ഥാനം ഉറച്ചുകഴിഞ്ഞാല്‍ വിദ്യാര്‍ത്ഥികള്‍ക്ക്  നന്നായി തയ്യാറാക്കിയ ഒരു ചോദ്യപ്പേപ്പര്‍ നേരിടാന്‍ ബുദ്ധിമുട്ടുണ്ടാവുകയില്ല. എന്താണെന്നും എന്തിനാണെന്നുമറിയാത്ത ഒരു വിഷയം പാസ്സാകാനുള്ള നോട്ടുകളും  കുറുക്കുവഴിയും അന്വേഷിച്ചു സമയം കളയേണ്ടി വരില്ല അവര്‍ക്ക്. ഈ അധികസമയം മതിയാകും പഠിച്ച കാര്യങ്ങള്‍ പ്രായോഗികമായി ഉപയോഗിക്കുവാന്‍ ചുറ്റിലുമുള്ള അവസരങ്ങള്‍ തിരിച്ചറിഞ്ഞ് ചെറിയ പ്രോജക്റ്റുകള്‍ ചെയ്യുവാനും അതുവഴി പഠനകാലം സാര്‍ത്ഥകമാക്കുവാനും. ഇത്തരം പ്രവര്‍ത്തനങ്ങളൊക്കെത്തന്നെ മതിയാകും ഇന്റേണല്‍ മൂല്യനിര്‍ണ്ണയത്തിന്. സ്വന്തമായി ഇതൊക്കെ ചെയ്ത ഒരു വ്യക്തിക്ക് സെമസ്റ്ററവസാനമുള്ള പരീക്ഷയൊന്നും ഒരു വെല്ലുവിയേ ആവുകയില്ല.

ഇപ്പറഞ്ഞതൊക്കെ യാഥാര്‍ഥ്യമാക്കുവാന്‍ പോന്ന വിഭവശേഷിയൊക്കെ തല്‍ക്കാലം സാങ്കേതികസര്‍വ്വകലാശാലയ്ക്കില്ലെങ്കിലും അദ്ധ്യാപകരുടെ കൂട്ടായ്മകളൊക്കെ മുന്‍കൈ എടുത്താലെങ്കിലും കുറച്ചു ചുവടുവെപ്പുകള്‍ നടത്താനാകുമെന്നു കരുതുന്നു.

*കേരള, കാലിക്കറ്റ് സര്‍വകലാശാലകളിലെ കഴിഞ്ഞ ഒരു പത്തു വര്‍ഷത്തിനിടയില്‍ കണ്ടിട്ടുള്ള ചോദ്യപ്പേപ്പറുകളെക്കുറിച്ചാണ്.

by Kavya Manohar at January 26, 2017 05:06 AM

മഹാഭാരതപ്രഭാഷണപരമ്പര – സുനിൽ പി ഇളയിടം

ഡിസംബർ അവസാനവാരം പാലക്കാട് ജില്ലാ ലൈബ്രറിയുടെ ആഭിമുഖ്യത്തിൽ ശ്രീ സുനിൽ പി ഇളയിടം അഞ്ചു ദിവസം നീണ്ടുനിന്ന ‘മഹാഭാരതം: സാംസ്കാരിക ചരിത്രം’ എന്ന വിഷയത്തിലുളള പ്രഭാഷണപരമ്പര നടത്തുകയുണ്ടായി. പരിപാടിയിൽ നേരിട്ട് പങ്കെടുക്കാൻ സാധിച്ചില്ലെങ്കിലും പ്രഭാഷണത്തിന്റെ വീഡിയോ നല്ല നിലവാരത്തിൽ ഷാജി മുള്ളൂക്കാരൻ റെക്കോർഡ് ചെയ്തിരുന്നു. ഈ വീഡിയോകൾക്ക് വൻപ്രചാരമാണ് ലഭിച്ചതു്. ആദ്യഭാഗം കേട്ടുതുടങ്ങിയപ്പോഴേ മനസ്സിലായി, പന്ത്രണ്ട് മണിക്കൂറോളമുള്ള ഈ പ്രഭാഷണം തീർച്ചയായും കേട്ടിരിക്കേണ്ടതാണെന്ന്. ഒഴിവുസമയങ്ങളിലും യാത്രകൾക്കിടയിലുമൊക്കെയായി മുഴുവൻ കേട്ടുതീർത്തു.

മഹാഭാരതത്തിന്റെ ആധ്യാത്മമോ മതപരമോ ആയ വസ്തുതകളല്ല സുനിൽ പി ഇളയിടം വിശകലനം ചെയ്യുന്നതു്. ചരിത്രത്തിൽ മഹാഭാരതം വികസിച്ചു വന്ന നാൾവഴികൾ, ആ വികാസത്തെ സ്വാധീനിച്ച സാംസ്കാരിക, രാഷ്ട്രീയ ഘടകങ്ങൾ, തിരിച്ച് മഹാഭാരതം സ്വാധീനിച്ച ചരിത്രത്തിന്റെ വഴികൾ, മഹാഭാരതത്തിന്റെ പലപതിപ്പുകളും അതിന്റെ ക്രിട്ടിക്കൽ എഡിഷനും, ഗീതയുടെ ചരിത്ര പശ്ചാത്തലവും കാലഗണനയും എന്നിവയൊക്കെയാണ് പ്രഭാഷണത്തിൽ ചർച്ച ചെയ്യുന്നതു്. വിഷയത്തിനെപ്പറ്റിയും, വിഷയത്തിനു പുറത്ത് ബന്ധപ്പെട്ട കഥകളും സമകാലിക സംഭവങ്ങളും, രാഷ്ട്രീയവും ഒക്കെയായി പാണ്ഡിത്യം തുളുമ്പുന്ന തടവില്ലാത്ത കാവ്യാത്മകമായ പ്രഭാഷണം എന്തുകൊണ്ടും നല്ലൊരു വൈജ്ഞാനികാനുഭവമാണു് തന്നതു്. ചരിത്രത്തെപ്പറ്റിയും മഹാഭാരതത്തെപ്പറ്റിയുമുള്ള എന്റെ കാഴ്ചപ്പാടിനെ ഈ പ്രഭാഷണം വല്ലാതെ മാറ്റിമറിച്ചു. വർഷങ്ങൾക്ക് മുമ്പ് മതപരമോ ഐതിഹാസികപരമോ ആയും പിന്നീട് വെറും യുക്തിവാദപരമായും മാത്രം കണ്ടിരുന്ന മഹാഭാരതം, അതിനെല്ലാമപ്പുറത്തു് നമ്മുടെ ചരിത്രത്തിനെപ്പറ്റിയും സ്വത്വബോധത്തെപ്പറ്റിയും ദേശീയതയെപ്പറ്റിയുമൊക്കെ ആഴത്തിലുള്ള അറിവുകൾ തേടാനുള്ള മാർഗമായി ഇപ്പോഴാണു് ഞാൻ മനസ്സിലാക്കുന്നതു്. പ്രഭാഷണത്തിൽ പരാമർശിക്കപ്പെട്ട വ്യക്തികൾ, സംഭവങ്ങൾ, കൃതികൾ എന്നിവയെപ്പറ്റി കൂടുതൽ വായിക്കാനുമാഗ്രഹിക്കുന്നു.

by Santhosh Thottingal at January 26, 2017 04:13 AM

January 01, 2017

Santhosh Thottingal

Detailed font reports using fontreport tool

Google i18n team developed a tool to create detailed report of fonts. The tool named fontreport, produces a multi page PDF with Unicode coverage of the font, what glyphs are in it, what Open Type features it supports, available ligatures, and glyph substitutions. Optionally the tool can also create plain text reports. The PDF is generated using TeX.

Manjari font report generated using fontreport tool

I found it very useful to create report for a dozen of fonts I maintain with Swathantha Malayalam Computing community. Sharing the reports it created:

Font reports(PDF):

  1. Rachana Regular
  2. Rachana Bold
  3. Meera
  4. Manjari Regular
  5. Manjari Bold
  6. Manjari Thin
  7. Dyuthi
  8. Chilanka
  9. Karumbi
  10. AnjaliOldLipi
  11. Keraleeyam
  12. Uroob

by Santhosh Thottingal at January 01, 2017 12:24 PM

Swanalekha input method documentation

Sayahna Foundation had prepared a single page documentation of Swanalekha input  method in PDF format. Since I often get emails about the key mapping, I am sharing it here.


Swanalekha Malayalam input method documentation

by Santhosh Thottingal at January 01, 2017 10:02 AM

December 31, 2016

Santhosh Thottingal

2016 ൽ വായിച്ച പുസ്തകങ്ങൾ

വായിച്ചു തീർത്തതിനെക്കാൾ തീർക്കാതെ വായന നിർത്തിയ പുസ്തകങ്ങളായിരിക്കും 2016ൽ കൂടുതലും. ഉള്ളടക്കത്തിലെ താത്പര്യം കൊണ്ട് വായിക്കാനെടുത്തു് വായന ദുഷ്കരമായപ്പോഴോ പ്രതീക്ഷയ്ക്കൊത്ത് ഉള്ളടക്കമില്ലാത്തപ്പോഴോ പല നോൺ ഫിക്ഷൻ പുസ്തകങ്ങളും മാറ്റിവെച്ചു. 20 പുസ്തങ്ങളെങ്കിലും വായിക്കണമെന്നു കരുതിയെങ്കിലും അത്രയും പൂർത്തിയാക്കാൻ കഴിഞ്ഞില്ല. അതേ സമയം പുസ്തങ്ങളുടെ ലോകത്തിനപ്പുറം ഇന്റർനെറ്റ്-സോഷ്യൽ മീഡിയാ വായനകൾക്ക് ഒട്ടും കുറവുണ്ടായില്ല. ഒന്നു രണ്ടു മിനിറ്റുകൊണ്ട് ഒറ്റനോട്ടത്തിൽ വായിച്ചെടുക്കാവുന്ന കുറിപ്പുകളാണ് ഇന്റർനെറ്റ് വായനക്കാർക്കിഷ്ടം എന്നു തോന്നുന്നു. നീണ്ട കുറിപ്പുകൾ ഉണ്ടെങ്കിൽ പ്രധാനഭാഗങ്ങൾ ബ്ലർബ് ആയി കൊടുത്ത് വേഗത്തിലുള്ള വായനയെ സഹായിച്ചില്ലെങ്കിൽ വായനക്കാർ വിട്ടുകളയും.

വായിച്ച പുസ്തകങ്ങൾ താഴെക്കൊടുക്കുന്നു. ഈബുക്കുകളാണ് കൂടുതലും വായിച്ചതു്.
1. Elon Musk: Inventing the Future by Ashlee Vance
2. ബുക്‌സ്റ്റാള്‍ജിയ by P.K. Rajasekharan
3. Mr. Penumbra’s 24-Hour Bookstore by Robin Sloan
4. When Breath Becomes Air by Paul Kalanithi
5. Sapiens: A Brief History of Humankind by Yuval Noah Harari
6. The Vegetarian by Han Kang
7. Gujarat Files by Rana Ayyub
8. Stories of Your Life and Others by Ted Chiang
9. The Sceptical Patriot: Exploring the Truths Behind the Zero and Other Indian Glories by Sidin Vadukut
10. The Drunkard’s Walk: How Randomness Rules Our Lives by Leonard Mlodinow
11. കണ്ണ് സൂത്രം by Vinod Krishna
12. Homo Deus: A Brief History of Tomorrow by Yuval Noah Harari
13. What If?: Serious Scientific Answers to Absurd Hypothetical Questions by Randall Munroe
14. Feynman’s Rainbow: A Search for Beauty in Physics and in Life by Leonard Mlodinow
15. Bad Science by Ben Goldacre (some more pages remaining)
16. The Intelligence Paradox: Why the Intelligent Choice Isn’t Always the Smart One by Satoshi Kanazawa
17. Shady Characters: The Secret Life of Punctuation, Symbols & Other Typographical Marks by Keith Houston
18. Arms and the Man by George Bernard Shaw

by Santhosh Thottingal at December 31, 2016 09:46 AM

November 15, 2016

Rajeesh K Nambiar

Improvement in converting video/audio files with VLC

VLC Media Player has the ability to convert video/audio files into various formats it supports, since a long time. There is a dedicated “Convert/Save” menu for converting single or multiple files at once into a different format, with limited ‘editing’ features such as specifying a start time, caching options etc. It is quite useful for basic editing/cropping of multimedia files.

As an example, one of the easiest ways to create a custom iPhone ringtone is to create a “.m4r” (AAC format) file exactly 40 seconds long. It is a matter of selecting your favourite music file and doing a “Convert/Save” with appropriate “Profile”. A “Profile” specifies the video/audio encoding to be used, which can be easily customized by selecting different audio and video codecs.

The options “Caching time”, “Play another media synchronously” (think adding different sound track to a video clipping) and a “Start time” etc can be specified under “Show more options” button and even more advanced functionality is available by making use of the “Edit Options” line. Internally, all the options specified at this line are passed to the converter.

There was one thing lacking in this “Convert/Save” dialog though – there was no possibility to specify a “Stop Time” akin to the “Start Time”, in the GUI (although it can be manually specified in the “Edit Options”, but you need to calculate the time in milliseconds). VLC 2.x series convert looks like as follows – notice the lack of “Stop time”:


Being bugged by this minor annoyance, I set out to add the missing “Stop-time” functionality. Going through the codebase of VLC, it was relieving to see that the converter backend already supports “:stop-time=” option (akin to “:start-time=”). It was then a matter of adding “Stop Time” to the GUI and properly updating the “Edit Options” when user changes the value.

A working patch was then sent to vlc-devel mailing list for review and feedback. After 5 rounds of review and constructive feedback from Filip Roséen the code was cleaned up (including existing code) which is now committed to the master branch. This functionality should be available to users in the upcoming 3.0 release. Screenshot below:



Tagged: hacking, vlc

by Rajeesh at November 15, 2016 06:05 PM

November 09, 2016

Santhosh Thottingal

Electronic Design and Automation Lab: Migration to Scilab

The third semester B.Tech Electronics and Communication Engineering programme of Kerala Technological University (KTU) has a lab course on electronic design and automation. The course aims to introduce the students to various electronic design and simulation tools like SPICE, MATLAB and HDL.


I had proposed the migration of the MATLAB section of this lab course to SCILAB, a popular open source alternative to MATLAB. The migration is now complete with support from FOSSEE . The source code of the experiments are now available here. A detailed lab manual will be made available soon.



by Kavya Manohar at November 09, 2016 02:30 PM

November 07, 2016

Santhosh Thottingal

September 30, 2016

Santhosh Thottingal

Proposal for Malayalam language subtags for orthography variants rejected

The Internet Engineering Task Force (IETF) – Languages is responsible for the registration of language tags, subtags and script variants. These registered language tags are used in a wide set of internet standards and applications to identify and annotate language uniquely.


Recently Sascha Brawer(currently working at Google) submitted a proposal to register two new language subtags for Malayalam to denote the orthography variations. Malayalam orthography had a diverging moment in history when Kerala government decided to script reformation in 1971. The decision was to accommodate the Malayalam orthography for the then existing typewriters and typesetting devices. These devices had limitations to accomodate the wide character set of Malayalam at that time.

So, the proposal was to introduce two subtags as follows:

  1. ml-puthiya:  Reformed Malayalam orthography-Malayalam that is  w ritten in the orthography of the 1971 reform. In Malayalam (transcribed to English), the term for this variant is “puthiya lipi”.
  2. ml-pazhaya:  Traditional Malayalam orthography- Malayalam that is written using the orthographic conventions that were in place before the 1971 reform. In Malayalam (transcribed to English), the term for this variant is “pazhaya lipi”.

Sascha Brawer correctly explained the missing part in this classification:

According to my contact, this reform was a continuum; the Kerala government order of 1971 did not immediately affect the common practice. Instead, the transition from traditional to reformed has happened over the period of 20-30 years. There is a lot of variation in the specifics for any year one could pick in the last century.

Again according to my contact, there is a common overall understanding among Malayalam speakers that the orthography of the language has moved from ‘traditional’ to ‘reformed.’ However, my contact did not know of an authoritative reference that would describe this transition in more detail.

I replied to the proposal as follows:

Mathrubhumi-titleMathrubhumi daily uses a mixed orthography, except the ു sign, it mostly follows traditional writing style with many conjuncts and stacked ligatures
Manorama-TitleMalayala Manoarma daily follows a style more close to reformed orthography and avoids many ligatures.

[…] This is true, there is no defnition or authoritative reference about this
differences. And that is my concern. Given a set of printed samples from
say, todays news paper in Malayalam, one cannot say this is new'(puthiya) or this is ‘old'(pazhaya). The contemporary Malayalam usage is a mixed one. It borrows some reformation from 1971 order and some from the practices that existed before

The reason for mixed mode is because the main intention behind the 1971
reformation was to get Malayalam ‘usable’ with then type writers and composing machines. As technology progressed and when these limitations vanished, nothing stopped people from using the types similar to what they will write using pen on paper. The modern opentype technology completely removed this limitation and many modern and famous typefaces of Malayalam uses this ‘old’/ml-pazhaya style.

So defining two variants ml-puthiya, ml-pazhaya without a clear way to
distinguish one from another and having a wide range of ununamed variants exist, is concerning.[…]

Later,  Michael Everson, the registrar for IETF language tags said he is rejecting the proposals.

For a Malayalam subtag to be approvable, it really should refer to an orthographic standard. So far it appears that there isn’t anything very precise for either the traditional or the newer spelling to be specified, so it would be best to reject this now (rather than extending it little by little) until revised proposals with solid references can be put forward.

by Santhosh Thottingal at September 30, 2016 03:07 AM

September 07, 2016

Balasankar C

SMC/IndicProject Activities- ToDo List


So, M.Tech is coming to an end I should probably start searching for a job soon. Still, it seems I will be having a bit of free time from Mid-September. I have got some plans about the areas I should contribute to SMC/Indic Project. As of now, the bucket list is as follows:

  1. Properly tag versions of fonts in SMC GitLab repo - I had taken over the package fonts-smc from Vasudev, but haven’t done any update on that yet. The main reason was fontforge being old in Debian. Also, I was waiting for some kind of official release of new versions by SMC. Since the new versions are already available in the SMC Fonts page, I assume I can go ahead with my plans. So, as a first step I have to tag the versions of fonts in the corresponding GitLab repo. Need to discuss whether to include TTF file in the repo or not.
  2. Restructure LibIndic modules - Those who were following my GSoC posts will know that I made some structural changes to the modules I contributed in LibIndic. (Those who don’t can check this mail I sent to the list). I plan to do this for all the modules in the framework, and to co-ordinate with Jerin to get REST APIs up.
  3. GNOME Localization - GNOME Localization has been dead for almost two years now. Ashik has shown interest in re-initiating it and I plan to do that. I first have to get my committer access back.
  4. Documentation - Improve documentation about SMC and IndicProject projects. This will be a troublesome and time consuming task but I still like our tools to have proper documentation.
  5. High Priority Projects - Create a static page about the high priority projects so that people can know where and how to contribute.
  6. Die Wiki, Die - Initiate porting Wiki to a static site using Git and Jekyll (or any similar tool). Tech people should be able to use git properly.

Knowing me pretty much better than anyone else, I understand there is every chance of this being “Never-being-implemented-plan” (അതായത് ആരംഭശൂരത്വം :D) but still I intend to do this in an easy-first order.

September 07, 2016 04:47 AM

August 23, 2016

Anwar N

GSoC 2016 IBus-Braille-Enhancement Project - Summary

   First of all my thanks to Indic Project and Swathanthra Malayalam Computing(SMC) for accepting this project. All hats off to my mentors Nalin Sathyan and Samuel Thibault. The project was awesome and I believe that I have done my maximum without any prior experience

Project Blog :

Now let me outline what we have done during this period.

Braille-Input-Tool (The on-line version)
  Just like Google transliteration or Google Input Tools online. This is required because it's completely operating system independent and it's a modern method which never force user to install additional plugin or specific browser. The user might use this form temporary places like internet cafe. This is written using JQuery and Html. And works well in GNU/Linux, Microsoft windows, Android etc

See All Commits :
Test with following link :

IBus-Braille enhancements
See All Commits :

1 IBus-Braille integrated with Liblouis : The Liblouis software suite provides an open-source braille translator, back-translator and formatter for a large number of languages and braille codes. So maintaining and shipping separate braille maps(located at /share/ibus-sharada-braille/braille) with ibus-braille is a bad idea. Through this we completely adopted Ibus-Braille to use Liblouis. The conversion is done in an entire word manner instead of each letter. ie the conversion does after writing direct braille unicode and pressing space.
Commit 1 :
Commit 2 :
Commit 3 :

See Picture of Ibus-Braille preferences given below

2 8-Dot braille Enabled : Yes languages having more than 64 characters which can't be handled with 64 (6 dots ) combination are there, Music notations like  “Abreu” and LAMBDA (Linear Access to Mathematics for Braille Device and Audio Synthesis) uses 8-dot braille system.  unicode support 8-dot braille.
Commit 1 :

See key/shortcut page picture of ISB preferences dot setting

3 Dot 4 issue Solved :  In IBus-Braille when we type in bharati braille such as Malayalam, Hindi, etc. we have to use 13-4-13 to get letter ക്ക(Kka). But according to braille standard in order to get EKKA one should press 4-13-13. And this make beginners to do extra learning to start typing. Through this project we solved this issues and a conventional-braille-mode switch is provided in preferences in order to switch between.

Commit :

4 Add Facility to write direct Braille Unicode : Now one can use IBus-Braille to type braille dot notation directly with the combination.  The output may be sent to a braille embosser. Here braille embosser is an impact printer that renders text in braille characters as tactile braille cells.

Commit :

5 Three to Six for disabled people with one hand : A three key implementation which uses delay factor between key presses for example 13 followed by
13 having delay less than delay factor (eg:0.2) will give X. If more, then output would be KK. If one want to type a letter having combination only 4,5,6 he have to press "t" key prior. The key and the Conversion-Delay can be adjusted from preferences.

Commit :

6 Arabic language added
Commit :

7 Many bugs solved
Commit :
others are implied

Project Discourse :
IBus-Sharada-Braille (GSoC 2014) :

Plugins for firefox and chrome
    This plugin can be installed will work with every text entry on the web pages no need for copy paste. extensions are written in Javascript.
See All Commits :

Modification yet desirable are as following

1 Announce extra information through Screen Reader:  When user expand abbreviation or a contraction having more than 2 letters is substituted the screen reader is not announcing it. We have to write a orca(screen reader) plugin for Ibus-Braille

2 A UI for Creating and Editing Liblouis Tables

3 Add support for more Indic Languages and Mathematica Operators via liblouis

Braille-input-tool (online version)
                       Liblouis integration
Conventional Braille, Three Dot mode and Table Type selection 
Chrome Extension

Direct braille unicode typing
 Eight dot braille enabled

by Anwar N ( at August 23, 2016 04:39 AM

August 22, 2016


GSoC — Final Report!

So finally it’s over. Today is the last date for submission of the GSoC project. This entire ride was a lot informative as well as an experience filled one. I thank Indic Project organisation for accepting my GSoC project and my mentors Navaneeth K N and Jishnu Mohan for helping me out fully throughout this project.

The project kicked off keeping in mind of incorporating the native libvarnam shared library with the help of writing JNI wrappers. But unfortunately the method came to a stall when we were unable to import the libraries correctly due to lack of sufficient official documentations. So my mentor suggested me an alternative approach by making use of the Varnam REST API. This has been successfully incorporated for 13 languages with the necessity of the app requiring internet connection. Along with it, the suggestions which come up are also the ones returned by Varnam in the priority order. I would be contributing further to Indic Project to make the library method work in action. Apart from that see below the useful links,

  • this and this is related to adding a new keyboard with “qwerty” layout.
  • this is adding a new SubType value and a method to identify TransliterationEngine enabled keyboards.
  • this is adding the Varnam class and setting the TransliterationEngine.
  • this and this deals with applying the transliteration by Varnam and returning it back to the keyboard.
  • this is the patch to resolve the issue, program crashes on switching keyboards.
  • this makes sure that after each key press, the displayed word is refreshed and the transliteration of the entire word is shown.
  • this makes sure that on pressing deletion, the new word in displayed.
  • this creates a template such that more keyboards can be added easily.
  • this makes sure that the suggestions appearing are directly from the Varnam engine and not from the inbuilt library.
  • The lists of the commits can be seen here which includes the addition of layouts for different keyboards and nit fixes.

Add Varnam support into Indic Keyboard

The project as a whole is almost complete. The only thing left to do is to incorporate the libvarnam library into the apk and then we can call that instead of the Varnam class given here. The ongoing work for that can be seen below,


varnamc -s ml -t "Adutha ThavaNa kaaNaam" //See you next time

by Vishnu H Nair at August 22, 2016 08:06 PM

Sreenadh T C

It’s a wrap!

“To be successful, the first thing to do is to fall in love with your work — Sister Mary Lauretta”

Well, the Google Summer of Code 2016 is reaching its final week as I get ready to submit my work. It has been one of those best three-four months of serious effort and commitment. To be frank, this has to be one of those to which I was fully motivated and have put my 100%.

Well, at first, the results of training wasn’t that promising and I was actually let down. But then, me and my mentor had a series of discussions on submitting, during which she suggested me to retrain the model excluding the data set or audio files of those speakers which produced the most errors. So after completing the batch test, I noticed that four of the data set was having the worst accuracy, which was shockingly below 20%. This was causing the overall accuracy to dip from a normal one.

So, I decided to delete those four data set and retrain the model. It was not that of a big deal, so I thought its not gonna be drastic change from the current model. But the result put me into a state of shock for about 2–3 seconds. It said

TOTAL Words: 12708 Correct: 12375 Errors: 520
TOTAL Percent correct = 97.38% Error = 4.09% Accuracy = 95.91%
TOTAL Insertions: 187 Deletions: 36 Substitutions: 297
SENTENCE ERROR: 9.1% (365/3993) WORD ERROR RATE: 4.1% (519/12708)

Now, this looks juicy and near to perfect. But the thing is, the sentences are tested as they where trained. So, if we change the structure of sentence that we ultimately give to recognize, it will still be having issues putting out the correct hypothesis. Nevertheless, it was far more better than it was when I was using the previous model.

So I guess I will settle with this for now as the aim of the GSoC project was to start the project and show proof of that this can be done, but will keep training better ones in the near future.

Google Summer of Code 2016 — Submission

  1. Since the whole project was carried under my personal Github repository, I will link the commits in it here : Commits
  2. Project Repository : ml-am-lm-cmusphinx
  3. On top of that, we (me and the organization) had a series of discussions regarding the project over here: Discourse IndicProject

Well, I have been documenting my way through the project over here at Medium starting from the month of May. The blogs can be read from here.

What can be done in near future?

Well, this model is still in its early stage and is still not the one that can be used error free, let alone be applied on applications.

The data set is still buggy and have to improved with better cleaner audio data and a more tuned Language Model.

Speech Recognition development is rather slow and is obviously community based. All these are possible with collaborated work towards achieving a user acceptable level of practical accuracy rather than quoting a statistical, theoretical accuracy.

All necessary steps and procedure have been documented in the README sections of the repository.

puts "thank you everyone!"

by Sreenadh T C at August 22, 2016 07:01 AM

August 21, 2016

Arushi Dogra

GSoC Final Report

Its almost the end of the GSoC internship. From zero knowledge of Android to writing a proposal, proposal getting selected and finally 3 months working on the project was a great experience for me! I have learned a lot and I am really thankful to Jishnu Mohan for mentoring throughout .

Contributions include :-

All the tasks mentioned in the proposal were discussed and worked upon.

I started with making the designs of the layouts. The task was to make Santali Olchiki and Soni layouts for the keyboard. I looked at the code of the other layouts to get a basic understanding of how phonetic and inscript layouts work. Snapshot of one of the view of Santali keyboard :

Screen Shot 2016-08-21 at 6.53.03 PM

Language Support Feature 
While configuring languages, the user is prompted about the locales that might not be supported by the phone.

Screen Shot 2016-08-21 at 6.33.25 PM

Adding Theme Feature
Feature is added at the setup to enable user to select the keyboard theme

Screen Shot 2016-08-21 at 6.49.21 PM

Merging AOSP code
After looking at everything mentioned in the proposal, Jishnu  gave me the job of  merging AOSP source code to the keyboard as the current keyboard doesn’t have changes that were released along with  android M code drop because of which target sdk is not 23 . There are a few errors yet to be resolved and I am working on that😀

Overall, it was a wonderful journey and I will always want to be a contributor to the organisation as it introduced me to the world of open source and opened a whole new area to work upon and learn more.
Link to the discourse topic :

Thank You!  :D

by arushidogra at August 21, 2016 01:29 PM

August 17, 2016

Balasankar C

GSoC Final Report


It is finally the time to wind up the GSoC work on which I have been buried for the past three months. First of all, let me thank Santhosh, Hrishi and Vasudev for their help and support. I seem to have implemented, or at least proved the concepts that I mentioned in my initial proposal. A spell checker that can handle inflections in root word and generate suggestion in the same inflected form and differentiate between spelling mistakes and intended modifications has been implemented. The major contributions that I made were to

  1. Improve LibIndic’s Stemmer module. - My contributions
  2. Improve LibIndic’s Spell checker module - My contributions
  3. Implement relatively better project structure for the modules I used - My contributions on indicngram

1. Lemmatizer/Stemmer


My initial work was on improving the existing stemmer that was available as part of LibIndic. The existing implementation was a rule based one that was capable of handling single levels of inflections. The main problems of this stemmer were

  1. General incompleteness of rules - Plurals (പശുക്കൾ), Numerals(പതിനാലാം), Verbs (കാണാം) are missing.
  2. Unable to handle multiple levels of inflections - (പശുക്കളോട്)
  3. Unnecessarily stemming root words that look like inflected words - (ആപത്ത് -> ആപം following the rule of എറണാകുളത്ത് -> എറണാകുളം)

The above mentioned issues were fixed. The remaining category is verbs which need more detailed analysis.

Long Version

A demo screencast of the lemmatizer is given below.

So, comparing with the existing stemmer algorithm in LibIndic, the one I implemented as part of GSoC shows considerable improvement.

Future work

  1. Add more rules to increase grammatical coverage.
  2. Add more grammatical details - Handling Samvruthokaram etc.
  3. Use this to generate sufficient training data that can be used for a self-learning system implementing ML or AI techniques.

2. Spell Checker


The second phase of my GSoC work involved making the existing spell checker module better. The problems I could identify in the existing spell checker were

  1. It could not handle inflections in an intelligent way.
  2. It used a corpus that needed inflections in them for optimal working.
  3. It used only levenshtein distance for finding out suggestions.

As part of GSoC, I incorporated the lemmatizer developed in phase one to the spell checker, which could handle the inflection part. Three metrics were used to detect suggestion words - Soundex similarity, Levenshtein Distance and Jaccard Index. The inflector module that was developed along with lemmatizer was used to generate suggestions in the same inflected form as that of original word.

Long Version

A demo screencast of the lemmatizer is given below.

3. Package structure

The existing modules of libindic had an inconsistent package structure that gave no visibility to the project. Also, the package names were too general and didn’t convey the fact that they were used for Indic languages. So, I suggested and implemented the following suggestions

  1. Package names (of the ones I used) were changed to libindic-. Examples would be libindic-stemmer, libindic-ngram and libindic-spellchecker. So, the users will easily understand this package is part of libindic framework, and thus for indic text.
  2. Namespace packages (PEP 421) were used, so that import statments of libindic modules will be of the form from libindic.<module> import <language>. So, the visibility of the project ‘libindic’ is increased pretty much.

August 17, 2016 04:47 AM

August 16, 2016

Anwar N

IBus-Braille Enhancement - 3

 A hard week passed!

1 Conventional Braille Mode enabled : Through this we solved dot-4 issue and now one can type using braille without any extra knowledge

commit 1 :

2 handle configure parser exceptions : corrupted isb configuration file can make it won't start. so I solved this by proper exception handling

commit 2 :

3 Liblouis integration : I think our dream is about to come true!  But still also we are struggling with vowel substitution on the middle.
commit 3 :
commit 4 :
commit 5 :

by Anwar N ( at August 16, 2016 08:35 PM

August 09, 2016

Sreenadh T C

What now?

“Now that the basic aim was fulfilled, what more can we work on, given there is almost half a month to GSoC Submission!”

Well, as of now the phoneme transcription was done purely based on the manner the word was written and not completely based on the Speech pattern. What I mean is that there are some exceptions in how we write the word and pronounce it (differently). This was pointed out by Deepa mam. She also asked if I could possibly convert some of the existing Linguistic rules(algorithms) that was made with Malayalam TTS in mind, so that it could be used to re-design the phoneme transcription. This could also turn out to be helpful for future use like using it for a fully intelligent Phoneme Transcriber for Malayalam Language Modeling.

This is what we are working on right now, and am literally like scratching my head over some loops in Python!

juzzzz jokinnn
The basic idea is to iterate over each line in the ‘ml.dic’ file and validate the transcription I made earlier with the set of rules. Correcting them (if found invalid) as it goes over.

Seems pretty straight forward! Will see how it goes!

Update — 4th August

Wew!, This is going nuts! OK so I first tried using Lists to classify the different types of phones. It all was good, until I reached a point in algorithm where I have to check if the current phoneme in the transcription is a member of a particular class of phoneme ( now, when I say, class of Phoneme, I just mean, the classification and not the class ). Of course I can search in List for the presence of the element and its quite sufficient enough to say in small comparisons. Our case is different. We are talking about around 7000 words in a file, on top of which each line will have significant amount of if-elif clauses.

This could slow down things and make the script less efficient ( will eventually see the difference ). So I went back to Python documentation and read about the Set Types ( set and frozenset )

A set object is an un-ordered collection of distinct hashable objects. Common uses include membership testing, removing duplicates from a sequence, and computing mathematical operations such as intersection, union, difference, and symmetric difference. — said the Python doc.

This is exactly what I wanted. I mean, I don’t have to do any manipulation to the phoneme classes, so there is no real meaning in using a List. Furthermore, the Set supports the ‘in’ using which the membership can be checked with no additional searching procedure. How cool is that!


Update — 9th August

So, after some test on the script, I generated the dictionary file once again, this time applying some of the TTS rules. Now the SphinxTrain is running with this dictionary file. Hopefully, there should be some change in the accuracy.!

left panel with new dictionary, right panel with old dictionary
left panel with new dictionary, right panel with old dictionary

This might as well be the last development phase update if all goes well. Then it is submission time.

puts 'until then ciao'

by Sreenadh T C at August 09, 2016 01:56 PM

Anwar N

IBus-Braille Enhancement - 2

Hi, with this week I where fighting with my final semester exams! and it's over.  Also within this week I added the facility for typing direct braille Unicode.

instead of converting to Unicode I added it as a new language so that one can later edit and use. 

by Anwar N ( at August 09, 2016 03:40 AM

July 31, 2016


GSoC Progress — Week 8 & 9

Awesome, something good is happening :)

Cmake was giving me some trouble in the beginnning. After clearing all the dependency issues with the Cmake example, I was successfully able to run the endless-tunnel on my phone. Following the similar pattern of how the modules are being incorporated in the cmake app, we tried to incorporate the varnam module. The code for the attempt is given here.

Now there comes a problem :| I have documented the issue here,

Adding a new native module using CMake yields "Error: exception during working with external system:"

After 9 days, there has still not been a single response :( So as an alternative we have decided to use the varnam API. I have completed the class for the same and is yet to link to the Keyboard input from the Indic Keyboard app. This part is the agenda for the next week.

program HelloWorld(output);
writeln("That's all for now, see you next time!")

by Vishnu H Nair at July 31, 2016 04:53 PM

Sreenadh T C

‘He’ just recognized what I said!

Well, the title says it all. The computer just recognized what I said in my Mother Tongue! A major step in the right the direction.

For this to happen, I had to complete the Acoustic Model training. So then!

What is Acoustic Model!

Well it is a set of statistical representational parameters used to learn the language by representing the relation between audio signal and corresponding linguistic features that make up that speech or audio ( phoneme, and transcription! ).

To produce these we need to set up a database structure as documented by the CMU SphinxTrain team. Some of these files were common to the Language Model preparation like the phoneme transcription file. After setting up the database it should look like this irrespective of the language!

The training is straight forward if you get the database error free which was not my case! Thank you! ( ** if you get it error free on the first run, you are probably doing it wrong! ** )

I had to solve two issues ( 1 and 2 ) before I could run the training without any hiccups! It took a day to make the patch works in the files. The documentation didn’t mention that the phone set should contain a maximum of 255 phones due to practical limitation though theoretically it had no problems ( found out myself from the CMU help forums. ). That was the Issue : Reduce phoneset to a max of 255 #31. I successfully reduced to what is found in the current repository version.

Update — July 27

Acoustic Model is ready for testing!

$ sphinxtrain -t ml setup

This command will setup the ‘etc’ and ‘wav’ folder as mentioned above. Now we need to setup the sphinx_train.cfg config file which is excellently documented by the team.

Once that is out of the way, run the training.

$ cd ml


$ sphinxtrain run





still waiting!!



Finally its done! Took quite a lot of time!

Not only that, my Zenbook finally started showing heating and fan noise. That sixth gen Intel needed some extra air! ( ** nice! ** ).

Update — July 29

Well, this means, the GSoC 2016 aim have been achieved which was to develop the Language Model and Acoustic Model. Only thing left is to keep testing it.

The discussion with Deepa mam helped in bringing out a possibility in improving the accuracy which am working on as a branch in parallel to the testing.

With that in mind for the coming week, that’s it for this week

puts "until then ciao!"

by Sreenadh T C at July 31, 2016 07:46 AM

July 30, 2016

Rajeesh K Nambiar

Convert iPhone contacts to vCard

On a recent troubleshooting attempt, I lost all the contacts in my Android phone. It had also received a recent update which took away the option to import contacts from another phone via bluetooth.
I still had some contacts in the old iPhone, but now that mass transfer via bluetooth is gone, it was a question of manually sending each contact in vCard format to the Android phone. That means I should probably find a less dreadful way to get the contacts back.

Here is one way to extract contacts en-masse from iPhone into popular vCard format. The contact and address details in iOS are stored by AddressBook application in a file named ‘AddressBook.sqlitedb’ which is an sqlite database. The idea is to open this database using sqlite, extract the details from a couple of tables and convert the entries into vCard format.

Disclaimer: the iPhone is an old 3GS running iOS 6 and it is jailbroken. If you attempt this, your mileage would vary. Required tools/softwares are usbmuxd (especially libusbmuxd-utils) and sqlite, with the prerequisite that openssh server is running on the jailbroken iPhone.

  1. Connect iPhone via USB cable to the Linux machine. Run iproxy 2222 22 to connect to the openssh server running on the jailbroken phone. iproxy comes with libusbmuxd-utils package.
  2. Copy the addressbook sqlite database from phone:scp -P 2222 mobile@localhost:/var/mobile/Library/AddressBook/AddressBook.sqlitedb .Instead of steps 1 and 2 above, it might be possible to copy this file using Nautilus (gvfs-afc) or Dolphin (kio_afc) file manager, although I’m not sure if the file is accessible.
  3. Extract the contact and address details from the sqlite db (based on this forum post):sqlite3 -cmd ".out contacts.txt" AddressBook.sqlitedb "select ABPerson.prefix, ABPerson.first,ABPerson.last,ABPerson.organization, c.value as MobilePhone, h.val ue as HomePhone, he.value as HomeEmail, w.value as WorkPhone, we.value as WorkEmail,ABPerson.note from ABPerson left outer join ABMultiValue c on c.record_id = ABPerson.ROWID and c.label = 1 and 3 left outer join ABMultiValue h on h.record_id = ABPerson.ROWID and h.label = 2 and = 3 left outer join ABMultiValue he on he.record_id = ABPerson.ROWID and he.label = 2 and = 4 left outer join ABMultiValue w on w.record_id = ABPerson.ROWID and w.label = 4 and = 3 left outer join ABMultiValue we on we.record_id = ABPerson.ROWID and we.label = 4 and = 4;"
  4. Convert the extracted contact details to vCard format:cat contacts.txt | awk -F\| '{print "BEGIN:VCARD\nVERSION:3.0\nN:"$3";"$2";;;\nFN:"$2" "$3"\nORG:"$4"\nEMAIL;type=INTERNET;type=WORK;type=pref:" $9"\nTEL;type=CELL;type=pref:"$5"\nTEL;TYPE=HOME:"$6"\nTEL;TYPE=WORK:"$8"\nNOTE:"$9"\nEND:VCARD\n"}' > Contacts.vcf
  5. Remove the empty content lines if some contacts do not have all the different fields:sed -i '/.*:$/d' Contacts.vcf

Now simply transfer the Contact.vcf file containing all the contact details to Android phone’s storage and import contacts from there.

Tagged: hacking, linux, mac

by Rajeesh at July 30, 2016 09:16 AM

Anwar N

IBus-Braille Enhancement - 1

  This week I forked IBus-Braille project from SMC GitLab repository  added two things.

1 Eight-Dot braille enabled. Now one can add languages with 8 dot's. The default keys are Z for dot 7 and period for dot-8. This can be remapped using preferences.

2 Arabic Language added and tested with users

See commits :

by Anwar N ( at July 30, 2016 03:23 AM

July 26, 2016

Arushi Dogra

Updates on work

My next task was to show instead of all layouts, filter them on the basis of language. My first option I decided to do filtering based on locale. So instead of ACTION_INPUT_METHOD_SUBTYPE_SETTINGS we can use ACTION_LOCALE_SETTINGS but the problem here was that it was giving a list of all the locales in the system instead of the locales in our app. So I skipped this idea. And then decided to create a list and enable users selection on that. But there was no way to connect that to enabled system subtypes. I was stuck on this for quite some time .We ditched the plan and moved on to the “Theme selection” task.

I am currently working on the Theme Selection task . I have successfully added the step . But now I am working on adding the fragment instead of the whole activity . After I am done with this, I will move to adding the images of the themes. I will hopefully complete this task by the weekend.

Also , after a meeting with the mentor, it is decided that after this task I will work on merging AOSP source code to the keyboard as the current keyboard doesn’t have changes that were released along with  android M code drop because of which target sdk is not 23 . So my next task will be merging AOSP code which will give the benifit of run time permissions.😀

by arushidogra at July 26, 2016 12:34 AM

July 25, 2016

Balasankar C

4 Days. 22 Hours. LaTeX.

Heya folks,

One of the stuff I love doing is teaching what I know to others. Though it is a Cliché dialogue, I know from experience that when we teach others our knowledge expands. From 10 students, you often get 25 different doubts and minimum 5 of them would be ones you haven’t even thought yourself earlier. In that way, teaching drives a our curiosity to find out more.

I was asked to take a LaTeX training for B.Tech students as a bridge course (happening during their semester breaks. Poor kids!). The usual scenario is faculty taking class and we PG students assisting them. But, since all the faculty members were busy with their own subjects’ bridge courses and LaTeX was something like an additional skill that the students need for their next semesters for their report preparation, I was asked to take to take it with the assistance of my classmates. At first, I was asked to take a two-day session for third year IT students. But later, HOD decided that both CS and IT students should have that class, and guess what - I had to teach for four days. Weirdly, the IT class was split to two non-continuous dates - Monday and Wednesday. So, I didn’t have to take class for four consecutive days, but only three. :D

The syllabus I followed is as follows:

  • Basic LaTeX – Session I
    1. Brief introduction about LaTeX, general document structure, packages etc.
    2. Text Formatting
    3. Lists – Bullets and Numbering
  • Graphics and Formulas – Session II
    1. Working with Images
    2. Tables
    3. Basic Mathematical Formulas
  • Academic Document Generation (Reports and Papers) – Session III
    1. Sectioning and Chapters
    2. Header and Footer
    3. Table of Contents
    4. Adding Bibliography and Citations
    5. IEEETran template
  • Presentations using Beamer – Session IV

As (I, not the faculty) expected, only half of the students came (Classes on semester breaks, I was surprised when even half came!). Both the workshops - for CS and IT - were smooth without any much issues or hinderences. Students didn’t hesitate much to ask doubts or tips on how to do stuff that I didn’t teach (Unfortunately, I didn’t have time to go off-syllabus, so I directed them to Internet. :D). Analysing the students, CS students were more lively and interactive but they took some time to grasp the concept. Compared to them, even though kind of silent, IT students learned stuff fast.

By Friday, I had completed 4 days, around 22 hours of teaching and that too non-stop. I was tired each day after the class, but it was still fun to share the stuff I know. I would love to get this chance again.

IT Batch

IT Batch

CSE Batch

CSE Batch

July 25, 2016 12:00 AM

July 24, 2016

Sreenadh T C

Developing the Language Model

Finally, I can start the work towards Milestone — 2, which is completing the development of Language Model for Malayalam. Time to completely switch to Ubuntu from here on. Why?

Well, all the forums related to CMU Sphinx keep telling that they won’t monitor the reports from Windows anyways, and since all the commands and codes mentioned in the documentation is more inclined to Linux, let’s just stick to it as well. After all, when it comes to Open-Source, why should I develop using Microsoft Windows. (** Giggle **)

What is a Statistical Language Model?

Statistical language models describe more complex language, which in our case is Malayalam. They contain probabilities of the words and word combinations. Those probabilities are estimated from a sample data ( the sentence file ) and automatically have some flexibility.

This means, every combination from the vocabulary is possible, though probability of such combination might vary.

Let’s say if you create statistical language model from a list of words , which is what I did for my Major Project work, it will still allow to decode word combinations ( phrases or sentences for that matter. ) though it might not be our intent.

Overall, statistical language models are recommended for free-form input where user could say anything in a natural language and they require way less engineering effort than grammars, you just list the possible sentences using the words from the vocabulary.

Let me explain this with a traditional Malayalam example:

Suppose we have these two sentences “ ഞാനും അവനും ഭക്ഷണം കഴിച്ചു ” and “ ചേട്ടൻ ഭക്ഷണം കഴിച്ചില്ലേ ”.

If we use the statistical language model of this set of sentences, then it is possible to derive more sentences from the words( vocabulary ).

ഞാനും (1) , അവനും (1) , ഭക്ഷണം (2) , കഴിച്ചു (1) , ചേട്ടൻ (1) , കഴിച്ചില്ലേ (1)

That is, we can have sentences like “ ഞാനും കഴിച്ചു ഭക്ഷണം ” or maybe “ഭക്ഷണം കഴിച്ചില്ലേ ”, or “ അവനും കഴിച്ചില്ലേ ” and so on. It’s like the Transitive Property of Equality but in a more complex manner. Here it's related to probability of occurrence of a given word after a word. Now this is calculated using the sample data that we provide as the database.

Now, you might be wondering what the numbers inside the parenthesis mean. Those are nothing but the number of occurrences of each word in the given complete set of sentences. This is calculated by the set of C libraries provided by a toolkit that I will introduce shortly.

Update — July 18


Let’s start building. If you remember from my previous blog post/articles, you can recollect me writing about extracting words and then transcribing those to phonetic representation. Those words are nothing but the vocabulary that I just showed.

For building a language model of such a large scale vocabulary, you will need to use specialized tools or algorithms. One such set of algorithms are provided as C Libraries by the name “CMU-Cambridge Statistical Language Modeling Toolkit” or in short CMU-CLMTK. You can head over to their official page to know more about it. I have already installed it. So we are ready to go.

So according to the documentation,

The first step is to find out the number of occurrences. (text2wfreq)

cat ml.txt | text2wfreq > ml.wfreq

Next we need the .wfreq to .vocab file without the numbers and stuff. Just the words.

cat ml.wfreq | wfreq2vocab -top 20000 > ml.vocab

Oops, there are some issues with the generated vocab file regarding repetitions and additional words here and there which are not required. This might have happened while I was filtering the sentences file but forgot to update or skipped updating the transcription file. Some delay in further process. It's already late night! I need to sleep!

Update — July 19

‘Meld’. Thank you StackExchange

With this guy, its easy to compare everything and make changes simultaneously. It should be done by today!




Okay, now that the issue have been handled, we are getting somewhere. It should be pretty much straight forward now.

Next we need find list of every id n-gram which occurred in the text, along with its number of occurrences. i.e. Generate a binary id 3-gram of the training text ( ml.txt ), based on this vocabulary ( ml.vocab ).

By default, the id n-gram file is written out as binary file, unless the -write_ascii switch is used in the command.

-temp ./ switch can be used if youwant to run the command without root permission and use the current working directory as the temp folder. Or you can just run it as root, without any use, which by default will use /usr/tmp as temp folder.

cat ml.txt | text2idngram -vocab ml.vocab -temp ./ > ml.idngram

Finally, we can generate the Language Model. This can either be an ARPA model or a Binary.

idngram2lm -idngram ml.idngram -vocab ml.vocab -binary ml.bin


idngram2lm -idngram ml.idngram -vocab ml.vocab -arpa

Even though ARPA is available, using the binary format of the language model is recommended for faster operations.

Here is the basic work-flow.

as provided by the Toolkit Documentation.

That’s it. The Language Model is complete. I can now go ahead into next step, that is building and training the Acoustic Model.

by Sreenadh T C at July 24, 2016 06:13 AM

July 23, 2016

Santhosh Thottingal

Manjari Font

I am happy to announce the new Malayalam font I was designing for past several months. The new font is named “Manjari”.

Malayalam blogpost:

Malayalam script is known for its curly characters with beautiful loops. Encoded in unicode around 2001, it is relatively new to the digital age. The script has been evolving from rectangle shaped to oval shaped types of varying proportions. The popular culture is more of oval/ellipse shaped curves, mainly because writing methods using stensils or pens demanded less sharp corners. The character or ligature shapes has also been changing gradually towards the shapes that are easy with pens. The Manjari font takes that to another level by smoothening all curves to its maximum.

The curves are constructed along the spiral segments. The resulting shapes are extra smooth. The curve perfection resulted in whitespaces that aquired beautiful leaf and drop shapes between the bowls and loops of the script. It is illustrated in the specimen. The spiral smoothness of curves were complemented by rounded terminals which gives very soft feeling for the eyes.

The design of the curves in Manjari are theoretically based on the PHD thesis by Raph Levien – “From Spiral to Spline: Optimal Techniques in Interactive Curve Design” ( The Inconsolata monospace humanist latin font known for its clean lines and elegant design by Levien himself is based on this theory.

Normal, Bold, Thin style variants are available. This is the first Malayalam unicode font with thin style variant


The curve strokes in Manjari were drawn in Inkscape using the spiral library written by Raph Levien himself  and opentype feature compilation was done using FontForge. The font is about to release in next few days, SVGs, scripts and source is available at 

Orion Champadiyil prepared some illustrations using the font, you can see them in our font download page

News reports


by Santhosh Thottingal at July 23, 2016 06:29 AM

July 21, 2016

Balasankar C

Kerala State IT Policy - A Stakeholder Consultation

Heya folks,

Last Saturday, that is 16th July, I attendeda a meeting regarding the upcoming Kerala State IT Policy. It was a stakeholder consultation organized by DAKF, Software Freedom Law Centre and Ernakulam Public Library Infopark branch. The program was presided by Prasanth Sugathan of SFLC (I had met him during Swatanthra, when I helped Praveen in the Privacy track) and was inaugurated by M. P Sukumaran Nair, advisor to the Minister of Industries. The agenda of the meeting was to discuss about the suggestions that needs to be submitted to the Government before they draft the official IT policy, that will be in effect for the next few years. I attended the meeting representing Swathanthra Malayalam Computing. Even though the meeting had a small audience, some of the key topics were brought into the mix.

Professor Jyothi John, retired principal of Model Engg. College, discussed about MOOCs to improve the education standard of the State. He also talked about improving the industry-academia-research relationship that is in a pathetic state as of now. I was asked to talk a few words. But, since SMC hadn’t taken any official stand or points for the meeting, I actually talked about my views about the issue. Obviously, my topics were more focused on Language Computing, Digital empowerment of the language and as well as how FOSS should be the key stone of the IT policy. I also mentioned about the E-Waste problem that Anivar had discussed the other day on the Whatsapp group.

Me Talking

Me Talking | PC: Sivahari

Mr. Joseph Thomas, the president of FSMI also talked on the importance of FOSS in IT policy (Kiran Thomas had some pretty strong disagreements with it. :D ). Following that, Babu Dominic from BSNL talked about their success stories with FOSS and how the project was scraped by government. There were some brilliant insights from Satheesh, who is a Social Entrepreneur now and once ran an IT-based company.

Following that, the meeting took the form of a round table discussion where interesting points regarding E-Waste and the money-saving nature of FOSS (Microsoft has been targetting Institutions for pirated copies, not home users) were raised by Mr. Bijumon, Asst Professor of Model Engg College. Mr. Jayasreekumar, who is a journalist talked about the important issue of the downtrodden people, or the people in the lower socio-economic belt were not part of the discussion and the image of digital divide that carves. We have to seriously increase diversity of participants in these meetings, as a large part of the population has no representation in them. Such meetings will be only fruitful, if the sidelined communities who also should benefit from this policy are brought together to participate in them.

The general theme of the meeting was pointing towards how the IT policy should focus more on the internal market, and how it should be helpful in entrepreneurs in competing with foreign competitors, atleast in the domestic market.

News Coverage in Deshabhimani

News Coverage | PC: Deshabhimani

More and more meetings of this nature are a must, if the state is to advance in the domain of IT.

July 21, 2016 12:00 AM

July 20, 2016

Anwar N

work progress in browser-addon

 About two months passed. We do many testing on online braille-input tool. And some widgets rearranged for user comforts. In the recent weeks we made a good progress in both Firefox and Chrome browser addons. But still we suffer from a grate problem with  these addons, The plugins are not working in google chat and Facebook chat entry's.  We are seeking the solution...

by Anwar N ( at July 20, 2016 08:15 PM

July 19, 2016

Balasankar C

GSoC Update: Week #7 and #8


Last two weeks were seeing less coding and more polishing. I was fixing the LibIndic modules to utilize the concept of namespace packages (PEP 420) to obtain the libindic.module structure. In the stemmer module, I introduced the namespace package concept and it worked well. I also made the inflector a part of stemmer itself. Since inflector's functionality was heavily dependent on the output of the stemmer, it made more sense to make inflector a part of stemmer itself, rather than an individual package. Also, I made the inflector language-agnostic so that it will accept a language parameters as input during initialization and select the appropriate rules file.

In spellchecker also, I implemented the namespace concept and removed the bundled packages of stemmer and inflector. Other modifications were needed to make the tests run with this namespace concept, fixing coverage to pick the change etc. In the coding side, I added weights to the three metrics so as to generate suggestions more efficiently. I am thinking about formulating an algorithm to make comparison of suggestions and root words more efficient. Also, I may try handling spelling mistakes in the suffixes.

This week, I met with Hrishi and discussed about the project. He is yet to go through the algorithm and comment on that. However he made a suggestion to split out the languages to each file and make more clean (just importing these split language files). He was ok with the work so far, as he tried out the web version of the stemmer.

[caption id="attachment_852" align="aligncenter" width="800"]hrishi_testing_spellchecker Hrishi testing out the spellchecker[/caption]

July 19, 2016 12:47 AM

July 16, 2016


GSoC Progress — Week 6 & 7

Why doesn’t it work!!!!!

Alright, for the past two weeks, me and my mentor have been trying a lot to call the varnam library in Java. First we went on trying to load the prebuilt library onto Android Studio and then use the methods in Java, which didn’t work :(

Now we are on a different route of compiling varnam during runtime. For this we are following the cmake example given here. Another thing to note that is, cmake requires canary Android Studio which can be downloaded here. It all started off well when it was seen that OSX has a problem running that.

Now I am getting it all setup on Linux as well as Windows( just in case :P ) Sorry in not writing any technical details, will make it up in the next week.

fn main() {
println!('That's all for now, see you next time!');

by Vishnu H Nair at July 16, 2016 06:49 AM

Sreenadh T C

Mentioning the huge contributions

“ In open source, we feel strongly that to really do something well, you have to get a lot of people involved. — Linus Torvalds ”

I have always loved the idea of Open Source and have been fortunate enough to be participating in one of the world’s best platform for a student to develop, grow, and learn. Google Summer of Code 2016 have gone past it’s mid-term evaluation, and so have I. The last couple of weeks have been in a slow pace compared to the weeks in June.

contribution graph — May-June-July

This is simply because, I was ahead of my schedule while in the Mid-term evaluation period , also I didn’t want to rush things up and screw it up. But, I thought this is the right time to mention the contributions that have been taking place towards this Open Source Project.

Gathering recordings or speech data for training would mean that a lot of people have to individually record their part, and then send it to me. Now this might seem simple enough to some of you out there, but believe me, recording 250 lines or sentences in Malayalam with all its care is not going to be that interesting.

Nonetheless, pull requests have been piling up on my Repository since the early days of the project. The contribution has been really awesome.

What more can you ask for when your little brother who have absolutely no idea about what the heck am doing, but decides to record 250 sentences in his voice so that I could be successful in completing the project! (** aww… you little prankster… **)

And he did all this without making much of a mistake or even complaining about the steps I instructed him to follow. He was so careful that he decided to save after I confirm each and every sentence as he records them. (** giggles **). For those who are interested in knowing what he contributed, take a look at this commit and this. Oh and by the way, he is just 11 years old :) .

To not mention other friends along with this, would be unfair.

So here is a big shout out to all 18 other guys and gals without whom this would not have reached this far.

I know this blog post was not much about the project when looking in one aspect but, when you look it in another point of view, this is one of the most important part of my GSoC work.

With the final evaluation, coming up in 4.5 weeks or so, it is time to start wrapping up my work and put up a final submission in a manner that someone with same enthusiasm or even better can take up this and continue to work on it to better it.

I guess that’s it for this week’s update. More to follow as I near the completion of this awesome experience.

puts "until then ciao!"

by Sreenadh T C at July 16, 2016 06:14 AM

Santhosh Thottingal

A short story of one lakh Wikipedia articles

At Wikimedia Foundation, I am working on a project to help people translate articles from one language to another. The project started in 2014 and went to production in 2015.

Over the last one year, a total of 100,000 new artcles were created across many languages. A new article get translated in every five minutes, 2000+ articles translated per week.

The 100000th Wikipedia page created with Content Translation is in Spanish, for the song ‘Crying, Waiting, Hoping

I designed the technical architecture and continue to be the main developer. I am so proud to be part of a project that contributed this much for free knowledge.

Related blog posts in Wikimedia blog:

Content translation tool hits milestone with one hundred thousand articles

Wikipedia’s coverage of essential vaccines is expanding

Content Translation tool has now been used for 50,000 articles

Semi-automated content translation is coming to Scandinavian Wikipedias

Naradanews Malayalam published a note on this

ഓരോ അഞ്ച് മിനിറ്റിലും പുതിയ ലേഖനം; വിക്കിപീഡിയ ബഹുഭാഷാ സാന്നിധ്യം വർദ്ധിപ്പിക്കുന്നു

by Santhosh Thottingal at July 16, 2016 05:29 AM

July 15, 2016

Santhosh Thottingal

FOSS migration of electronic circuit simulation lab

My proposal for migrating basic electronic circuit simulation lab to the FOSS tool eSim has been approved. The source code and documentation of experiments can now be downloaded from here.

eSim is an open source EDA tool for circuit design, simulation, analysis and PCB design. eSim is developed by FOSSEE (Free and Open Source Software for Education) – an initiative of MHRD, Govt. of India. FOSSEE promotes the migration of labs in educational institutions from proprietary tools to FOSS only ones through lab migration projects.

I am really happy to have become a part of this project. You can read my previous post on eSim usage here.

by Kavya Manohar at July 15, 2016 02:41 PM

July 11, 2016

Arushi Dogra

Update on work

The week started with continuing the task for detection of supported locales. I was facing some problems initially. I was trying to first change the contents of a static file during runtime which I later realised couldn’t be done. So as directed by mentor I changed the approach and decided to prompt the user at the setup time about which languages might not be supported by the phone.
It looks something like this:


Unfortunately my system crashed and the later part of my time was given to formatting the laptop,taking backup, installing the OS and re-setup of the project. Then I went home for my parents wedding anniversary for 3 days.

My next task : Improving the setup wizard . Since the user might not be interested in all the languages , so instead of showing all the layouts at once , we are planning to first ask the user to chose the language and then the corresponding layout in it. I have to discuss more with Jishnu regarding this task.

by arushidogra at July 11, 2016 07:16 PM

July 08, 2016


ട്രോളുകളുടേ ജനാധിപത്യം – മനോരമ ന്യൂസിലെ നിയന്ത്രണരേഖയിൽ

മനോരമ ന്യൂസിലെ നിയന്ത്രണരേഖയിൽ ട്രോളുകളുടേ ജനാധിപത്യം എന്ന വിഷയത്തിൽ നടന്ന ചർച്ചയിൽ ഐ.സി.യു. വിനെ പ്രതിനിധീകരിച്ച് പങ്കെടുത്തു. വി.ടി ബൽറാം, ഉഴവൂർ വിജയൻ, വി.വി രാജേഷ്, ആർദ്ര നമ്പ്യാർ , സുഭാഷ് നായർ എന്നിവരും പങ്കെടുത്തിരുന്നു

by Hrishi at July 08, 2016 07:46 PM

July 06, 2016

Anwar N

Braille-Input-Tool : The final touch


            With this two weeks we have done many testing with users and done many additions according to their needs. The first one  is Key reassigning. as you know there are many keyboard variants also user like to set there own keys instead of using f,d,s,j,k and l. But this make the necessity of saving user preferences. So we done this using jstorage. it's working fine

Key reassigning can be done by clicking "Configure Keys" button which will popup many entry's where user can remap his keys. Restore option is also provided there.

New and Save are the basic things that should be provided by a online editor

Changing font color, font size and background color are very impotent for partially impaired blind people. For keeping the page accessible we choose combobox containing major color list instead of providing graphical color picker

Various bugfixes

Braille-Input-Tool :
See all commits :

by Anwar N ( at July 06, 2016 09:09 PM

July 05, 2016

Balasankar C

GSoC Update: Week #5 and #6


Last two weeks were spent mostly in getting basic spellchecker module to work. In the first week, I tried to polish the stemmer module by organizing tags for different inflections in an unambiguous way. These tags were to be used in spellchecker module to recreate the inflected forms of the suggestions. For this purpose, an inflector module was added. It takes the output of stemmer module and reverses its operations. Apart from that, I spent time in testing out the stemmer module and made many tiny modifications like converting everything to a sinlge encoding, using Unicode always, and above all changed the library name to an unambiguous one - libindic-stemmer (The old name was stemmer which was way too general).

In the second week, I forked out the spellchecker module, convert the directory structure to match the one I've been using for other modules and added basic building-testing-integration setup with pbr-testtools-Travis combination. Also, I implemented the basic spell checking and suggestion generation system. Like stemmer, marisa_trie was used to store the corpus. Three metrics were used to generate suggestions - Soundex similarity, Levenshtein Distance and Jaccard's Index. With that, I got my MVP (Minimum Viable Product) up and running.

So, as of now, spell checking and suggestion generation works. But, it needs more tweaking to increase efficiency. Also, I need to formulate another comparison algorithm, one tailored for Indic languages and spell checking.

On a side note, I also touched indicngram module, ported it to support Python3 and reformatted it to match the proposed directory that I have been using for other modules. A PR has been created and am waiting for someone to accept it.

July 05, 2016 01:57 PM

July 03, 2016

Santhosh Thottingal

ഡോക്ടർ ബി എം ഹെഗ്ഡേ – മാതൃഭൂമി ആഴ്ചപ്പതിപ്പിൽ വന്ന അഭിമുഖത്തെപ്പറ്റി

മാതൃഭൂമി ആഴ്ചപ്പതിപ്പിന്റെ കഴിഞ്ഞയാഴ്ച പുറത്തിറങ്ങിയ പതിപ്പിൽ(ലക്കം 16) ഡോ ബി എം ഹെഗ്‌ഡെയുമായി അഭിമുഖമുണ്ട്. കവർസ്റ്റോറിയാണു്.  ലോകപ്രശസ്ത ജനപക്ഷ ഡോക്ടറാണു്, ആരോഗ്യം സമൂഹത്തിന്റെ ആരോഗ്യമാണെന്നൊക്കെ പറഞ്ഞുള്ള ആമുഖത്തിനപ്പുറം വായിച്ച് പോയപ്പോൾ എന്റെ പരിമിതമായ ശാസ്ത്രവിജ്ഞാനത്തിനൊരിക്കലും അംഗീകരിക്കാൻ കഴിയാത്ത കപടവാദങ്ങളാണു് കാണാനിടയായതു്.  പത്മ ഭൂഷൺ ലഭിച്ച, മണിപ്പാൽ യൂണിവേഴ്സിറ്റിയുടെ വൈസ് ചാൻസ്‌ലറായിരുന്ന, നിരവധി ബിരുദങ്ങളും വർഷങ്ങളുടെ വൈദ്യശാസ്ത്ര അനുഭവപരിചയവുമുള്ള ഇദ്ദേഹം ഇങ്ങനെയൊക്കെ ശാസ്ത്രത്തെ അവതരിപ്പിക്കുന്നതിൽ എനിക്കത്ഭുതമുണ്ട്.

ആരോഗ്യരംഗത്തെ സാമ്പത്തിക ചൂഷണങ്ങൾ, ഡോക്ടർ രോഗി ബന്ധങ്ങളിലെ തെറ്റായ പ്രവണതകൾ തുടങ്ങി ആർക്കും അംഗീകരിക്കാൻ അത്ര വിഷമമൊന്നുമില്ലാത്ത വിഷയങ്ങളുടെ മറവിൽ ആധുനിക വൈദ്യശാസ്ത്രത്തെയും അതിന്റെ നേട്ടങ്ങളെയും അപ്പാടെ നിരാകരിയ്ക്കുകയാണു് ഹെഗ്‌ഡെ ചെയ്യുന്നതു്. അദ്ദേഹത്തിനു ലഭിച്ച ശാസ്ത്ര വിദ്യാഭ്യാസത്തെയും അലങ്കരിച്ച പദവികളെയും അപ്പാടെ ചോദ്യചിഹ്നമാക്കുന്ന രീതിയിലുള്ള നിരീക്ഷണങ്ങൾ നമ്മുടെ നാട്ടിലെ ലാടവൈദ്യൻമാരുടെയോ കപടശാസ്ത്രവാദക്കാരുടെയോ വാദങ്ങളിൽ നിന്നും ഒട്ടും ഭിന്നമല്ല.

അഭിമുഖത്തിൽ നിന്നുള്ള ചില ഭാഗങ്ങൾ താഴെകൊടുക്കുന്നു.

“ഞാൻ പഠിക്കുന്ന കാലത്തു് ഹൃദയാഘാതം വന്നാൽ രോഗിക്ക് ഓക്സിജൻ നൽകുമായിരുന്നു. ഹൃദയാഘാതം വന്നവർക്ക് ഓക്സിജന്റെ അളവ് കുറച്ചുമതിയെന്ന്(Hypoxia)  പിന്നീടാണു് കണ്ടെത്തിയതു്. എത്രപേരെ നമ്മൾ ഓക്സിജൻ കൊടുത്തു് കൊന്നു?” ഹാർവാഡ് മെഡിക്കൽ സ്കൂളിൽ നിന്നും നോബൽ സമ്മാനം നേടിയ ബെർണാഡ് ലോണിന്റെ കീഴിൽ കാർഡിയോളജിയിൽ പരിശീലനം നേടിയ ആളാണ് ഡോ ഹെഗ്ഡെ എന്നു് അദ്ദേഹത്തിനെക്കുറിച്ചുള്ള വിക്കിപീഡിയ ലേഖനത്തിൽ പറയുന്നു.  ഓക്സിജൻ കൊടുത്തുവെന്ന അമിതമായി ലളിതവത്കരിച്ച മേൽപ്രസ്താവന കൊണ്ട് ഡോ ഹെഗ്ഡെ എന്താണുദ്ദേശിക്കുന്നതു്? ഓക്സിജന്റെ അളവു ക്രമീകരിച്ചുകൊണ്ടുള്ള ചികിത്സാപഠനങ്ങൾ നടന്നിട്ടുണ്ട് എന്നതുകൊണ്ട് ഓക്സിജൻ കുറച്ചു മതിയെന്നും ഓക്സിജൻ കൊടുത്തുകൊന്നുവെന്നും പറയുന്നതു് അദ്ദേഹത്തിന്റെ വിദ്യാഭ്യാസത്തിനു ചേർന്നതാണോ? ഇതുവായിക്കുന്ന സാധാരണക്കാർ എന്താണതിൽ നിന്നും മനസ്സിലാക്കേണ്ടതു്?.

വെളിച്ചെണ്ണയുടെ മാഹാത്മ്യത്തെപ്പറ്റി അദ്ദേഹം വിവരിക്കുന്നുണ്ട്. അമേരിക്കയിൽ അൾഷെമേഴ്സിനും ജീവിതശൈലീരോഗങ്ങൾക്കും വെളിച്ചെണ്ണ ഡോക്ടർമാർ നിർദ്ദേശിക്കുന്നുവെന്നു അദ്ദേഹം പറയുന്നു. അറുപതുകളിൽ ഡോ ഹെഗ്ഡേ ഇതുപറഞ്ഞപ്പോൾ ആരും കണക്കിലെടുത്തില്ല പോലും. “നവജാതശിശുവിനുപോലും വെളിച്ചെണ്ണ വായിൽവെച്ച് കൊടുക്കാം, വായിൽവെച്ചുതന്നെ ദഹിക്കും”-മലയാളികൾ വെളിച്ചെണ്ണ ഉപേക്ഷിക്കാനുള്ള ബുദ്ധി കാണിച്ചതുകൊണ്ടാണു് രോഗങ്ങൾ കൂടിയതു്. നവജാതശിശുക്കൾക്ക് മുലപ്പാലിനുപകരം വെളിച്ചെണ്ണ കൊടുക്കാം എന്ന് അദ്ദേഹം വേറേ പലയിടങ്ങളിൽ പറയുന്നതായും വായിച്ചു( ഈ വാദത്തിന്റെ ഉള്ളടക്കത്തിലേയ്ക്ക് ഞാൻ പോകുന്നില്ല, പക്ഷേ ശാസ്ത്രീയമായ നിഗമനങ്ങളിൽ എത്തിച്ചേരുന്ന മാർഗങ്ങളും അവയുടെ അംഗീകാരത്തിനു് അവലംബിയ്ക്കുന്ന മാർഗങ്ങളും അറിയൊന്ന ഏതൊരാൾക്കും ഈ “ഒറ്റമൂലി” വാദങ്ങൾ മുഖവിലയ്ക്കെടുക്കാൻ എളുപ്പമല്ല. പൊതുജനങ്ങളുടെ മുന്നിൽ ഇത്തരം വാദങ്ങൾ അവതരിപ്പിക്കുന്നതു് എത്രമാത്രം ഉത്തരവാദിത്തത്തോടുകൂടിയായിരിക്കണം എന്നും അദ്ദേഹത്തിനറിയേണ്ടതല്ലേ?

“കോശങ്ങൾ സ്വയം അറ്റകുറ്റപ്പണികൾ നടത്തുമെന്ന വിപ്ലവകരമായ അറിവ് ശാസ്ത്ര ലോകം രഹസ്യമാക്കിവെച്ചിരിക്കുകയാണു്”. ഈ രഹസ്യം ഡോ ഹെഗ്ഡേ മാതൃഭൂമി ആഴ്ചപ്പതിപ്പ് ലക്കം 16 ൽ പുറത്തുവിട്ടു.

“അവയവം മാറ്റിവെയ്ക്കൽ ഒരു രോഗത്തിനും പരിഹാരമല്ല, കാറിനെപ്പോലെ യാന്ത്രികമായാണ് ശരീരം പ്രവർത്തിക്കുന്നതെന്ന പഴയ ശാസ്ത്രം പഠിച്ചവരാണു് ട്രാൻസ്പ്ലാന്റേഷൻ തുടരുന്നത്”

“ശാസ്ത്രത്തെ കിഴക്കെന്നും പടിഞ്ഞാറെന്നും നാം ഒരിക്കലും വേർതിരിക്കേണ്ടതില്ല ” എന്നുപറയുന്ന ഡോ ഹെഗ്ഡേ അടുത്ത വാചകത്തിൽ പറയുന്നു:  “പാശ്ചാത്യ ശാസ്ത്രം ഇന്ന് എല്ലാ രംഗത്തും ആധിപത്യം നേടിയിട്ടുണ്ട്, അതു് താമസിയാതെ തകർന്നു വീഴും”. ഡോ ഹെഗ്ഡേ അദ്ദേഹത്തിന്റെ പ്രൊഫഷനിൽ സ്വയം വിശ്വസിക്കുന്നുണ്ടോ എന്നാർക്കെങ്കിലും ചോദിക്കാൻ തോന്നിയാൽ കുറ്റപ്പെടുത്താനാവുമോ?

“പണ്ട് അമ്പലങ്ങളിൽ വെള്ളിപ്പാത്രത്തിൽ തീർഥജലം നൽകുമായിരുന്നു, പന്ത്രണ്ടുവർഷമൊക്കെ മണ്ണിനടിയിൽ സൂക്ഷിക്കുന്ന നാനോപാർട്ടിക്കിൾസ് അതിലുണ്ടാവും. “.  ക്വാണ്ടം മെക്കാനിക്സ് പോലെ പറയുന്ന വിഷയത്തിനു കനം കൂട്ടാൻ വേണ്ടി ചേർക്കുന്ന മറ്റൊരു വാക്കാണ് നാനോ സയൻസ്. കേൾക്കുന്നവർക്ക് അറിയാൻ സാധ്യത കുറവാണെന്ന വിശ്വാസമാണതിനു പിന്നിൽ. ഡോ ഗോപാലകൃഷ്ണനൊക്കെ നന്നായി ഉപയോഗിക്കുന്ന വിദ്യയാണതു്. വെള്ളത്തിൽ നാനോ പാർട്ടിക്കിൾസ് ഉണ്ടാവും എന്നതുകൊണ്ട് എന്തുണ്ടാവാനാണു്? വെള്ളത്തിൽ മൺതരികളുണ്ടാവുമെന്നോ, പായലുണ്ടാവുമെന്നോ പറയുന്നതിനേക്കാൾ ഇതിനൊക്കെ എന്തെങ്കിലും അർത്ഥമുണ്ടോ?  “ഞങ്ങളുടെ നാനോ സിൽവർ ലായനിക്ക് വില പത്തുരൂപയേ ഉള്ളൂ, ഉപകാരികളായ അണുക്കളെ അതു നശിപ്പിക്കില്ല, രോഗകാരികളെ പെരുകാൻ അതു് അനുവദിക്കുകയുമില്ല”-പേറ്റന്റ് കിട്ടാൻ കൈക്കൂലി കൊടുക്കാൻ തയ്യാറാകാത്തതുകൊണ്ട് പുറത്തിറക്കിയിട്ടില്ലെന്നും അദ്ദേഹം പറയുന്നു. ഹൃദയാഘാതം തടയാൻ ഒരു ഇലക്ട്രോമാഗ്നറ്റിക് ഉപകരണവും ഇദ്ദേഹം കണ്ടുപിടിച്ചതായി അവകാശപ്പെടുന്നു. അതിനും പേറ്റന്റ് കിട്ടിയിട്ടില്ല. കൈക്കൂലി തന്നെ പ്രശ്നം.

“പ്രാചീനമായ ആചാരങ്ങളെ ശാസ്ത്രീയമായി വിശകലനം ചെയ്തു് നമുക്ക് പല ആരോഗ്യപ്രശ്നങ്ങളെയും പരിഹരിക്കാം”. പ്രധാനമന്ത്രി മുതൽ നാട്ടിലെ ഒറ്റമൂലി വൈദ്യൻമാർവരെ  പറയുന്ന ഈ മന്ത്രം ഇദ്ദേഹവും ഉരുവിട്ടു. ഒരു കണക്കിൽ അഭിമുഖത്തിന്റെ ഒറ്റവാചകത്തിലുള്ള ചുരുക്കമായും ഈ പ്രസ്താവനയെ പരിഗണിക്കാം. പക്ഷേ അഭിമുഖം വരും ലക്കങ്ങളിൽ തുടരും എന്നു മുന്നറിയിപ്പുണ്ട്.

“നിങ്ങൾ ആരോഗ്യത്തോടെയിരിക്കുമ്പോൾ ഒരിക്കലും ഡോക്ടറുടെയടുത്തു് ചെക്ക് ചെയ്യാൻ പോകരുതു്” ഹെൽത്ത് ചെക്കപ്പുകൾക്കെതിരെ അദ്ദേഹം സംസാരിക്കുന്നുണ്ട്.

“ഡോക്ടർമാർ ഹാർട്ട് ബ്ലോക്കെന്നു പറഞ്ഞാൽ ഒരിക്കലും ഭയക്കരുതു്, എല്ലാ മനുഷ്യർക്കും ബ്ലോക്ക് ഉണ്ടാവും” -” സ്കൂളിൽ പോകുന്ന കുട്ടികൾക്കും ബ്ലോക്കുണ്ടാവും, വിയറ്റ്നാം കൊറിയൻ യുദ്ധങ്ങളിൽ വെടിയേറ്റ് വീണ അമേരിക്കൻ പട്ടാളക്കാരിൽ എല്ലാർക്കും ബ്ലോക്കുണ്ടായിരുന്നു!”. വെടിയേറ്റ് മരിച്ച പട്ടാളക്കാരുടെ ബ്ലോക്കിന്റെ കാര്യം സ്വല്പം വിശ്വസിക്കാൻ തോന്നുന്നു. ലേസർ ബൈപാസ് സർജറി നടത്തിയ  തെരഞ്ഞെടുത്തവരിൽ നടത്തിയപ്പോൾ, കുറച്ചുപേർക്ക് വെറും ബോധം കെടുത്തുകയേ ഉണ്ടായുള്ളൂ. “പക്ഷേ അവർ പുർണ ആരോഗ്യവാൻമാരായിരുന്നു. ശസ്ത്രക്രിയ നടത്തിയവർക്ക് ആരോഗ്യപ്രശ്നങ്ങളുണ്ടായിരുന്നു. പ്ലസിബോ ഇഫക്ടാണ് രോഗം മാറ്റുന്നതെന്ന് ഇതു് സംശയാതീതമായി തെളിയിക്കുന്നു”. പൂർണ ആരോഗ്യമുള്ളവരിലാണോ ഇങ്ങനെ ബോധംകെടുത്തി ശസ്ത്രക്രിയ നടത്തിയെന്നു പറഞ്ഞു വിശ്വസിപ്പിച്ചതെന്നു വ്യക്തമല്ല.

“രോഗമൊന്നുമുണ്ടാവില്ലെന്ന ശുഭാപ്തിവിശ്വാസമുള്ളവരായാൽ തന്നെ ശരീരത്തിലെ കാൻസർ കോശങ്ങൾക്ക് പെരുക്കാൻ കഴിയില്ല”. കാൻസർ ചികിത്സയ്ക്ക് സെൽഫ് ഹെൽപ് പുസ്തകങ്ങൾ ഉപയോഗിക്കാമോ?

“അറിവില്ലായ്മയുണ്ടാക്കുന്ന അഹങ്കാരമാണ് എല്ലാ ആരോഗ്യപ്രശ്നങ്ങളും സൃഷ്ടിക്കുന്നതു്. പണം മുടക്കി ലോകത്തൊരാൾക്കും ആരോഗ്യം വാങ്ങാനാവില്ല”

“പരിണാമജീവശാസ്ത്രം പഠിച്ചാൽ ഡാർവിനും മെൻഡലുമൊക്കെ പഴഞ്ചനാണെന്നും അണുക്കളിൽ നിന്നും പരിണമിച്ചുണ്ടായവരാണ് മനുഷ്യരെന്നും ബോധ്യമാകും”.

“ഫിസിക്സിലെ തത്വമെടുത്തു് വിമാനവും മിസൈലുകളുണ്ടാക്കുന്നതും ശാസ്ത്ര സാങ്കേതികവിദ്യയുടെ പേരിൽ ഒരു ലക്ഷം കോടി ചെലവു ചെയ്തു് ചന്ദ്രനിൽ പോകുന്നതും വെറും ഈഗോയെ തൃപ്തിപെടുത്തലാണ്. അതുകൊണ്ട് ഭൂരിപക്ഷം വരുന്ന സാധാരണകാർക്കും ഒരു നേട്ടവും ഇല്ല” – ഇന്ത്യയിലെ ശാസ്ത്ര വിദ്യാർത്ഥികൾക്കും പൊതുജനത്തിനും ഇദ്ദേഹം നൽകുന്ന സന്ദേശമെന്താണു്?

ഇനിയുമുണ്ട്. പക്ഷേ ഇതെല്ലാം നമ്മുടെ നാട്ടിലെ ലാടവൈദ്യൻമാരും വടക്കഞ്ചേരിമാരും ഗോപാലകൃഷ്ണനെപ്പോലുള്ളവരും എത്രയോവട്ടം പറഞ്ഞ് നമ്മൾ കേട്ടിട്ടുള്ളതുതന്നെ. പ്രതിരോധവാക്സിനുകളെ സംബന്ധിച്ച് ഗൌരവകരമായ ചർച്ചകൾ നടക്കുന്ന ഇക്കാലത്തു്, ആ വിഷയത്തിൽ പ്രതിലോമകരമായ ആശയങ്ങൾ പ്രചരിപ്പിച്ച മാതൃഭൂമി തന്നെ ഇത്തരം കപടശാസ്ത്ര വാദങ്ങൾക്ക് വേദിയൊരുക്കുന്നതു് ആശങ്കയുണ്ടാക്കുന്നു. പത്മഭൂഷൻ നേടിയ ശാസ്ത്രഞ്ജൻ, നിരവധി വൈദ്യശാസ്ത്ര ബിരുദങ്ങളുള്ള, പല ഉയർന്ന പദവികൾ അലങ്കരിച്ചയാൾ എന്നൊക്കെയാണ് ആണു് ഡോ ഹെഗ്ഡേയുടെ വിശേഷണങ്ങൾ എന്നോർക്കുമ്പോൾ ഇന്ത്യയിലെ ശാസ്ത്ര വിദ്യാഭ്യാസത്തെയും ശാസ്ത്രജ്ഞർ എന്നു വിളിക്കപെടുകയും ആദരിക്കുകയും ചെയ്യപ്പെടുന്നവരെയും ഓർത്ത് ഒരേ സമയം ലജ്ജിക്കുകയും ആശങ്കപ്പെടുകയും ചെയ്യുന്നു. റോക്കറ്റിനു തുലാഭാരം നടത്തുന്നവരും യുദ്ധവീമാനത്തിനു ശത്രുസംഹാരപൂജനടത്തുവരെയും ശാസ്ത്രജ്ഞൻ എന്ന് നമ്മൾ ഇനിയും വിളിച്ചുകൊണ്ടേയിരിക്കുമോ?

ഹെഗ്ഡേയുടെ ലേഖനങ്ങൾ ‘നിർമുക്ത’ പണ്ട് വിശകലനം ചെയ്തിരുന്നു –


This note was later published in Narada news Malayalam

ഹെഗ്‌ഡെയുടെ അഭിമുഖം; ഒരു വിമർശന വായന

by Santhosh Thottingal at July 03, 2016 11:07 AM

June 26, 2016


GSoC Progress — Week 4 & 5

Ooh boy, half way through GSoC and lot to be done. Finally we decided to do the entire project in Android Studio so that the later integration with Indic Keyboard would be easier. As said in the last post, I was in a state of completing the wrappers of varnam_init() and rest of the functions when a queue of challenges popped up.

First of all since we are moving out of the regular “PC” kind of architecture, storing the scheme files in a specific directory is still a problem. First we decided to store it in the internal storage of the mobile which then eventually caused a lot of problems because varnam_set_symbols_dir() required a string path to the directory, which was not possible. Then we later decided to store it in the external storage of the device. This decision is temporary because once the user removes the external SD card, Varnam keyboard would not be functional :P

Then came the problem of build architectures. Since my work machine is a Mac, all the built libraries are in the form of .dylib files. Android accepts only .so files as the jniLibs. After generating the binary in my dual boot Ubuntu, it turned out that Android accepts only 32 - bit architecture libraries. Then using VirtualBox I finally managed to get the desired files. Now out of nowhere the thrown error is,

"Cannot find:"

I have currently written wrappers for most of the required methods, but have to resolve these errors to get the testing going smoothly. I will upload a list of references I have gone through(there a tons of em) in the next post so that anyone working in this topic may find it useful.

object Bye extends Application {
println('That's all for now, see you next time!')

by Vishnu H Nair at June 26, 2016 09:40 PM

Sreenadh T C

Hours of data piling up!

drifting along, calm and composed! *wink*

Howdy everyone, well its exactly mid way to Google Summer of Code 2016, and everything have been going as per the schedule and plan, as I type this looking at the matte screen of the Asus Zenbook that just arrived. No more of criticizing of the Electricity and rain which I have been doing in my previous posts ( **giggle** ) but the internet connectivity still haunts me.

The week started off with spending a day setting up the new Zenbook with dual boot, installing dependencies on Ubuntu (sudo apt-get install blah-blah ), setting up git and repo, and on the other hand hoping that Windows will finish updating… … …one day… …! Ultimately, I decided to turn every automatic things off ( **duh** ) so that I can squeeze some speed out of my Broadband connection ( -___- ).

Anyways, the completion of transcribing the dictionary to its phonetic representation means I can now concentrate on collecting the training voices from all the contributors. Almost 12 of the speakers have completed their quota of sentences and around 8 speakers are remaining. Once this is completed, I can actually begin the reorganizing of database and then start the training using that database.

In the meantime, there other files to setup. Like, the file containing the ‘phones’ alone ( ml.PHONE ), the file that contains the relative path to the audio files in the wav directory ( ml.FILEIDS ), “wav/speaker1/file_1.wav” , the filler file that contains phonetic representation of sounds and disturbances for a more accurate recognition ( ml.FILLER ).

Talking about making the ml.FILEIDS file, mapping 4993 sentences from 15+ folders with each one having exactly 250 wav files is not going to be easy. But then there is a catch, notepad++ is there to rescue. Column edit mode ( Alt + Shift + up/down ) and Column replace with increment decimal options are available which will save time writing down each file name.

Note: the column edit will only work as long as the character we want to replace is in same column. Now since, the file id is of the form speaker/file_# , I can easily select the # column and replace it with decimal increment option — 1,2,3,4…

So, that’s how the week have panned out and hoping to continue this good run of form ( * That’s the football side of me typing. Euro 2016 commentary style * ).

puts “until then ciao!”

by Sreenadh T C at June 26, 2016 09:59 AM



Are you referring to the bash command used in the experiment I described or about the ruby scripts from my previous posts. I used the scripts to extract the sentences and words from subtitle file. The same script proved useful in many related situations during the course.

I didn’t have to sit for long time to figure out the script and was not sure if np++ had option for extraction :)

by Sreenadh T C at June 26, 2016 05:56 AM

June 25, 2016

Arushi Dogra

Weekly Blog

I am given the task to detect whether a language is supported by the keyboard or not. In my phone Punjabi is not supported so I did all the testing with that. Whenever a language is not supported it is displayed as blank so that gave me an idea on how I will work on this issue. So I created the bitmap for all the characters of the language and compared it with an empty bitmap. So If the language was not supported it had empty bitmap and I declared it as not supported.

I have to improve on : Currently it is checking every time when the keyboard is opening. So I will do it such that it checks for all languages during the setup wizard and stores the info.

My task for next week is checking in setup wizard for all languages and in the list displaying the languages which cannot be supported as not supportable so that the user can know.

by arushidogra at June 25, 2016 01:35 PM

June 23, 2016

Balasankar C

GSoC Update: Week #3 and #4


[Sorry for the delay in the post]

I spent the last two weeks mainly testing out the stemmer module and the defined rules. During that I found out there are many issues for a rule based model because different types of inflections to different parts of speech can yield same inflected form. This can be solved only by machine learning algorithm that incorporates a morphological analyzer and is hence out of scope of my proposal. So I decided to move forward with the stemmer.

I tried to incorporate handling of inflections of verb - like tense change - using rules and was able to do a subset of them. Rest of the forms need more careful analysis and I've decided to get the system working first and then optimize it.

I've also decided to tag the rules so that a history of stemming can be preserved. The stemmer will now generate the stem as well as the tags of rules applied. This metadata can be useful to handle the problem of same letter being inflected to different forms that I faced while developing VibhakthiGenerator.

I spent some time in cleaning up the code more and setting up some local testing setup like a CLI and Web interface.

The PR was accepted by Vasudev and the changes are currently a part of the indicstemmer codebase.

BTW, it is time for the Midterm evaluations of GSoC 2016, where the mentors evaluate the progress of the students and give a pass/fail grade to them. Also, the students get to evaluate the mentors, communication with them and their inputs. I have already completed this and am waiting for my mentor to finish it. Hopefully, everything will go well.

June 23, 2016 03:04 PM

June 21, 2016

Anwar N

Bug fixes on Online Braille-Input-Tool

  The first month is over, the webpage is almost finished we gone through many bugs in the last week. Sathyaseelan mash and Balaram G really helped us to find out the bugs. One of the crucial and not easy to detect was the bug with map initialization.  We take lot of time to find and fix it.  Another one was with the insertion of text at the middle. following are the names of other commits

CapsLock(G) and Beginning-Middle switch(Alt)
Simple mode checkbox
Word and letter deletion enabled
Abbreviation enabled

by Anwar N ( at June 21, 2016 05:45 AM

June 18, 2016

Sreenadh T C

Milestone 1 : Conquered

We look far ahead and calls it ‘future’ but fails to realize the coming step is closest milestone for future.

Ok so the week have been very interesting. As usual I started off doing the same thing that I have been doing for the past 3 weeks which is transcribing the Malayalam words to phonetic representation. I kept saying that this thing is getting boring day by day for myself. With the mid term evaluation starting from Monday of next week I had to complete the phonetic transcription by Saturday or Sunday. This seems very unlikely given the pace that I am continuing with.

To keep me busy and not bored of Google summer of code ( even though I wanted this ) I thought of learning a new language which would be useful for the coming future. The Rust language. It seemed to take my mind off for a little time but it was not of much as help as I thought.

In the meantime recording of sound or speech was going on among my friends and there has been some updates regarding that. I have completed recording 115 sentences in the midst of the transcription dilemma.

June 16 — update

Ok I think I have an idea. I have to wait and see if this will work or not within a day. Well today something really helpful and timely stuff happened. I have been working on an Android app to run the model. Unfortunately it was always crashing until today when I fixed it finally. The bug was really, really really small. In fact it was embarrassing when I found out what the bug was. I had to use capitalised letter (** duh, are you serious! **) while specifying a search name tag. Now how come I missed that! The model that I developed for my major project was running absolutely fine in the app. In fact it so happens that it have better accuracy than it did on my PC.

feeling joyful… yayy!

But this was not the idea that I was talking about at the beginning of the paragraph. (** giggles **)

Ok I was not joking.

Well the idea would have been more beneficial if I had this in mind at the starting of phonetic transcription but like anybody else' my brain won’t work when I need it.

Anyways the idea was to use find and replace option of Notepad++ to batch edit all the words but there is a catch that if I am to edit the words then I must save about 3 to 4 days. Keeping in mind that if this experiment goes in vain then I am going to need more days than I actually need if I was to follow the steps that I used up until now.

I decided to try the experiment anyways because if I succeed in it then I am going to save more days than I am going to lose if I do not. And probably couple of days before my schedule.

I think I make some sense!?!

So here is a brief of what I actually typed in my so called experiment.

  • The b.txt and a.txt files initially contain raw malayalam words that needs to be represented phonetically.
  • In the alphabetic order, I find each character or sound ( eg. കാലം, കാപ്പി, കാറ്റ് after finding കാ and replacing it with KA will look as KA ലം, KA പ്പി, KA റ്റ് and so on) and replace all with the phonetic representation inside the b.txt file. This will save a lot of time rather editing each word line by line which I was doing till now.
  • Once all the replacing is done, file will only have English characters (phones) ( eg. KA L1AM, KA PPI, KA T ). But this is not what the file should be like. The file should be like കാലം KA L1AM, കാപ്പി KA PPI, കാറ്റ് KA T and so on.
  • To make it that way, I simply have to join the file with ML words ( a.txt ) and this new file with just the phonetic representation ( b.txt ). This is where the paste command of bash was used and find and replace again to get rid of newline. ( thanks to Aboobacker MK, for the quick reply with the bash command )
paste -d “ ” a.txt b.txt | tee out.txt 
Milestone Conquered
puts “until then ciao!”

by Sreenadh T C at June 18, 2016 06:59 AM

June 17, 2016

Arushi Dogra

Working with the layouts!

I started with making the designs of the layouts. The task was to make Santali Olchiki and Soni layouts for the keyboard. I looked at the code of the other layouts to get a basic understanding of how they were working.

Soni Layout
It took some time to understand how the transliteration codes were working.I did changes in the ime submodule for the layout. I messed up with the locale names and fixed that later. The changes were merged! Then I updated  the submodule on the Indic keyboard branch .

Santali Olchiki Layout

Previously I made the inscript layout of Santali Olchiki but after discussion with the mentor, it was decided to work on the phonetic layout as it can fit in smaller layout and thus easier to type too. I made the design of the keyboard and wrote the code for it and tested on the device. It is coming out fine too.

After that I explored various keyboard apps to see their setup wizards.

My task for the next week is to detect whether a language is supported by the system or not. I am planning to do it by checking if a character is typed it gives empty results or not. I will look for other ways too. I will update about the progress in the next blog.


by arushidogra at June 17, 2016 12:18 PM

June 14, 2016

Sreenadh T C

Hi shaun,

Hi shaun,

Am working with CMU Sphinx toolkit that has recognizer libraries written in C. I am focussing on adding Language model and Acoustic model for Malayalam Language. CMUSphinx already have support for famous languages with pretty good accuracy results.

by Sreenadh T C at June 14, 2016 07:02 PM

June 13, 2016


GSoC Progress — Week 2 & 3

First of all, apologies for skipping the last week’s post. Last two weeks were somewhat a bit rocky :P

Discussion with my mentor suggested me to start of with the varnam_init method. Following with the initial trial build sent in a queue of issues to be resolved. Following are the errors in order

Finally after a few resolution of machine dependency and reinstallation I got it finally running :) I am now finishing varnam_init and will move on to the whole libvarnam in the coming week.

cat('That's all for now, see you next time!')

by Vishnu H Nair at June 13, 2016 06:57 PM