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.


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

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

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

വലിയ പ്രശ്നമൊന്നും ഇതുവരെ നേരിട്ടിട്ടില്ല. പക്ഷേ കുറച്ചു ദിവസം മുമ്പു് എന്റെ പ്രൊവിഡന്റ് ഫണ്ട് 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 അൽഗോരിതത്തിനെപ്പോലെയൊന്നു് ഇന്ത്യൻ ഭാഷകൾക്കു വേണ്ടി ഇൻഡിക് സൌണ്ടെക്സ് എന്ന പേരിൽ തയ്യാറാക്കിയിരുന്നു. വിവിധ ഇന്ത്യൻ ഭാഷകളിലെഴുതിയാലും പരസ്പരം ഒത്തുനോക്കാൻ അതിനു കഴിയും. ഉദാഹരണത്തിനു് സന്തോഷ്, सन्तोष എന്നിവ ഒരേ പേരാണെന്നു പറയുന്ന വിധത്തിൽ.

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.



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


This note was later published in Narada news Malayalam

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

Fontconfig language matching

I had to spend a few hours to debug a problem about fontconfig not identifiying a font for a language. Following the tradition of sharing the knowledge you acquired in hard way, let me note it down here for search engines.

The font that I am designing now has 3 style variants, thin, regular and bold. All has same family name. So if you set this family for whatever purpose, depending on context, thin, regular or bold versions will be picked up. Regular is expected by default. Also when you pick the font from font selectors, you would expect, regular being selected by default.

The problem I was facing is, instead of Regular, Bold was getting selected as default. In font selectors, Bold was listed first.

In GNU/Linux systems, this font matching and selection is done by fontconfig. I started with fc-match

$ fc-match MyFont
MyFontBold.otf: "MyFont" "Bold"

So that confirms the problem. After fiddling with os/2 properties , asking in fontconfig mailing list, and reading fontconfig documentation, I found that the lang property fontconfig calculates from Regular variant of font does not include ‘en’

$ fc-list MyFont : family : style : lang 

I tried to find how fontconfig calculates the languages supported by a font. The minimum set of code points to be included in a font so that fontconfig declare that it supports a given language is defined in the fontconfig library. You can find them in source code. For example, mandatory code points(glyphs that match to it) to be present for English is defined in en.orth file. I cross checked each code points and one was indeed missing from my regular font variant, but bold version had everything. When I added it, all started working normally.

Later fontconfig developer Akira TAGOH told me that I can also use fc-validate to check the language coverage

$ fc-validate --lang=en MyFont.otf
MyFont.otf:0 Missing 1 glyph(s) to satisfy the coverage for en language

And after adding the missing glyph

$ fc-validate --lang=en MyFont.otf
MyFont.otf:0 Satisfy the coverage for en language

And now fc-match list Regular as default style

$ fc-match MyFont
MyFont.otf: "MyFont" "Regular"

അധിക നിമിഷം (Leap second)

ഈ വരുന്ന ജൂണ്‍ 30 നു് ഒരു പ്രത്യേകതയുണ്ടു്. ആ ദിവസത്തിന്റെ ദൈര്‍ഘ്യം 24 മണിക്കൂറും ഒരു സെക്കന്റും ആണു്. അധികം വരുന്ന ഈ ഒരു സെക്കന്റിനെ ലീപ് സെക്കന്റ് അല്ലെങ്കില്‍ അധിക നിമിഷം എന്നാണു് വിളിക്കുന്നതു്. നമ്മള്‍ സാധാരണ ഉപയോഗിക്കുന്ന കൈയില്‍ കെട്ടുന്ന വാച്ചുകളിലോ ചുമര്‍ ക്ലോക്കുകളിലോ ഒന്നും ഇതു കണ്ടെന്നു വരില്ല. അല്ലെങ്കിലും ഒരു സെക്കന്റിനൊക്കെ നമുക്കെന്തു വില അല്ലേ? പക്ഷേ അങ്ങനെ തള്ളിക്കളയാനാവില്ല ഈ അധിക സെക്കന്റിനെ. സെക്കന്റ് അളവില്‍ കൃത്യത ആവശ്യമായ കമ്പ്യൂട്ടറുകളിലും ഉപകരണങ്ങളിലും ഇതു പ്രശ്നമുണ്ടാക്കാനുള്ള സാധ്യത വളരെ കൂടുതലായതുകൊണ്ടു് ജൂണ്‍ 30, 11 മണി, 60 സെക്കന്റ് എന്ന സമയത്തെ, എന്നാല്‍ ജൂലൈ 1 ആവാത്ത ആ നിമിഷത്തെ, നേരിടാന്‍ ലോകമെമ്പാടുമുള്ള സാങ്കേതിക വിദഗ്ദ്ധര്‍ കരുതിയിരിക്കുന്നു.

ഈ അധിക നിമിഷം എവിടെനിന്നു വന്നു? വളരെ ചുരുക്കിപ്പറഞ്ഞാല്‍ ഭൂമിയുടെ കറക്കത്തിന്റെ വേഗത എല്ലാ കാലത്തും ഒരുപോലെയല്ലാത്തതുകൊണ്ടാണു് ഈ അഡ്ജസ്റ്റ് മെന്റ് വേണ്ടിവരുന്നതു്. ഭൂമിയുടെ കറക്കത്തിന്റെ വേഗത കുറയാന്‍ ഭൌമപാളികളുടെ ചലനങ്ങള്‍ അല്ലെങ്കില്‍ ഭൂചലനങ്ങള്‍ പ്രധാനകാരണമാണു് . ഭൂമിയുടെ കറക്കത്തെ അടിസ്ഥാനമാക്കി ഒരു ദിവസത്തെ 24 മണിക്കൂറുകളായും ഒരു മണിക്കൂറിനെ 60 മിനിറ്റായും ഓരോ മിനിറ്റിനെയും 60 സെക്കന്റായും വിഭജിച്ചാണല്ലോ നമ്മുടെ സമയം. ഇതിനെ ആസ്ട്രോണമിക്കല്‍ സമയം എന്നും വിളിക്കാം. പക്ഷേ കൃത്യതയാര്‍ന്ന സെക്കന്റിന്റെ നിര്‍വചനം ഈ വിഭജനങ്ങളെ ആസ്പദമാക്കിയല്ല ചെയ്തിരിക്കുന്നതു്. ഒരു സീസിയം-133 ആറ്റം, സ്ഥിരാവസ്ഥയിലിരിക്കുമ്പോൾ (Ground State) അതിന്റെ രണ്ട് അതിസൂക്ഷ്മസ്തരങ്ങൾ (Hyper Levels) തമ്മിലുള്ള മാറ്റത്തിനനുസരിച്ചുള്ള വികിരണത്തിന്റെ സമയദൈർഘ്യത്തിന്റെ, 9,192,631,770 മടങ്ങ് എന്നാണു് സെക്കന്റിന്റെ ശാസ്ത്രീയവും ഔദ്യോഗികവുമായ നിര്‍വചനം.

ലോകത്തിലെ ക്ലോക്കുകളെല്ലാം കൃത്യസമയം പാലിക്കുന്നതു് കോര്‍ഡിനേറ്റഡ് യൂണിവേഴ്സല്‍ ടൈം (UTC) സ്റ്റാന്‍ഡേഡ് അനുസരിച്ചാണു്. ഇതിനെ ആസ്പദമാക്കിയാണു് സമയമേഖലകളില്‍( Timezones) സമയം കണക്കാക്കുന്നതും കമ്പ്യൂട്ടറുകളിലെ സമയക്രമീകരണവും. ഗ്രീനിച്ച് മാനക സമയമടിസ്ഥാനമാക്കി ശാസ്ത്രലോകം അംഗീകരിച്ച സമയഗണനസമ്പ്രദായമാണു് UTC. ഇന്ത്യയിലെ സമയമേഖല UTC+5.30 എന്നാണു് കുറിക്കാറുള്ളതു്. ഗ്രീനിച്ച് സമയത്തില്‍ നിന്നും അഞ്ചരമണിക്കൂര്‍ കൂടുതല്‍ എന്ന അര്‍ത്ഥത്തില്‍. 1972 മുതല്‍ UTC, ഇന്റര്‍നാഷണല്‍ അറ്റോമിക് ടൈമിനെ പിന്തുടരുന്നു. ഇന്റര്‍നാഷണല്‍ അറ്റോമിക് ടൈം സീസിയം ആറ്റത്തിന്റെ വികിരണത്തെ അടിസ്ഥാനമാക്കിയാണു്.

ഞാന്‍ തുടക്കത്തില്‍ പറഞ്ഞ ജൂണ്‍ 30 നു് അധിക സെക്കന്റ് എന്നതു് UTC സമയമാണെന്നു വ്യക്തമാക്കട്ടെ. ശരിക്കും ഇന്ത്യയിലപ്പോള്‍ ജൂലൈ 1 രാവിലെ 5.30 ആയിരിക്കും.

നിത്യജീവിതത്തിലെ സമയം എന്ന ആശയം രാത്രി-പകല്‍ മാറ്റങ്ങളെ അടിസ്ഥാനമാക്കിയാണല്ലോ. UTC യും നിത്യജീവിതത്തിലെ ആവശ്യങ്ങള്‍ക്കുള്ളതായതുകൊണ്ടു് ഒരേ സമയം അറ്റോമിക് ടൈമിന്റെ കൃത്യത പാലിക്കാനും അതേ സമയം ഭൂമിയുടെ കറക്കത്തിനൊപ്പമാവാനും വേണ്ടിയാണു് ഇടക്ക് ഇങ്ങനെ സെക്കന്റുകള്‍ ചേര്‍ക്കുന്നതു്. ഇങ്ങനത്തെ 26-ാമത്തെ അഡ്ജസ്റ്റ്മെന്റ് ആണു് 2015 ജൂണ്‍ 30നു നടക്കാന്‍ പോകുന്നതു്. 2012 ജൂണ്‍ 30നായിരുന്നു അവസാനമായി ലീപ് സെക്കന്റ് വന്നതു്.

കൃത്യമായി പറഞ്ഞാല്‍ ജൂണ്‍ 30നു് പതിനൊന്നുമണി 59 മിനിറ്റ്, 59 സെക്കന്റ് കഴിഞ്ഞാല്‍ ജൂലൈ 1, 00:00:00 സമയം ആവേണ്ടതിനു പകരം ജൂണ്‍ 30, 11 മണി, 59 മിനിറ്റ്, 60 സെക്കന്റ് എന്ന സമയം നില്‍നില്‍ക്കും. അതിനു ശേഷമേ ജൂലൈ ആവൂ.

ലീപ് സെക്കന്റ് കുഴപ്പക്കാരനാവുന്നതു് പല രീതികളിലാണു്. കമ്പ്യൂട്ടറുകളില്‍ ഏതുതരത്തിലുള്ള ഓപ്പറേഷനുകളുടെ രേഖീയ ക്രമം(linear sequencing) ടൈം സ്റ്റാമ്പുകളെ അടിസ്ഥാനമാക്കിയാണു്. ഓപ്പറേറ്റിങ്ങ് സിസ്റ്റമാണു് ഈ മിടിപ്പുകള്‍(ticks) ഉണ്ടാക്കിക്കൊണ്ടു് അതിനുമുകളിലെ അപ്ലിക്കേഷനുകളെ സഹായിക്കുന്നതു്. മിടിപ്പുകളുടെ എണ്ണം മിനിറ്റ്, മണിക്കൂര്‍, ദിവസം ഒക്കെ കണക്കാക്കാന്‍ ഉപയോഗിക്കുമെന്നു പ്രത്യേകം പറയേണ്ടതില്ലല്ലോ. 12:59:60 നു ജൂലൈ ഒന്നാണോ ജൂണ്‍ 30 ആണോ തുടങ്ങിയ കണ്‍ഫ്യൂഷന്‍ മുതല്‍ എന്തൊക്കെ തരത്തിലുള്ള പ്രശ്നമാണു് ഇവ ഉണ്ടാക്കുന്നതെന്നു പറയാന്‍ കഴിയില്ല. ലിനക്സ് കെര്‍ണലില്‍ ഇതു കൈകാര്യം ചെയ്യാനുള്ള സംവിധാനം ഉണ്ടായിരുന്നെങ്കിലും 2012ലെ ലീപ് സെക്കന്റ് സമയത്തു് അതു് നേരാവണ്ണം പ്രവര്‍ത്തിച്ചില്ല. ജൂണ്‍ 30നു ന്യൂയോര്‍ക്ക് സ്റ്റോക് എക്ചേഞ്ച് ഒരു മണിക്കൂറോളം പ്രവര്‍ത്തനം നിര്‍ത്തുമെന്നു് അറിയിച്ചു കഴിഞ്ഞു.

വലിയ വെബ്സൈറ്റുകള്‍ ലീപ് സെക്കന്റിനെ നേരിടാന്‍ തയ്യാറെടുത്തുകഴിഞ്ഞു. വിക്കിപീഡീയ അതിന്റെ സെര്‍വറുകളില്‍ UTC ടൈമുമായുള്ള ഏകോപനം താത്കാലികമായി നിര്‍ത്തിവെച്ചു് ഹാര്‍ഡ്‌വെയര്‍ ക്ലോക്കില്‍ സെര്‍വറുകള്‍ ഓടിക്കും. ലീപ് സെക്കന്റ് ഒക്കെ കഴിഞ്ഞ ശേഷം സെര്‍വറുകളെ പല ഘട്ടങ്ങളിലായി വീണ്ടും UTC യുമായി ഏകോപിപ്പിക്കും. ഗൂഗിള്‍ വേറൊരു രീതിയാണു് ഉപയോഗിക്കുന്നതു്. അവര്‍ ലീപ് സെക്കന്റിനോടടുത്തു് വരുന്ന സെക്കന്റുകളെ കുറേശ്ശേ വലിച്ചു നീട്ടും, ചില്ലറ മില്ലി സെക്കന്റുകള്‍ അധികമുള്ള സെക്കന്റുകള്‍ എല്ലാം കൂടി കൂട്ടിവെച്ചാല്‍ ഒരു സെക്കന്റിന്റെ ഗുണം ചെയ്യും, അതേ സമയം പുതിയൊരു സെക്കന്റിന്റെ വരവ് ഇല്ലാതാക്കുകയും ചെയ്യും.

ഈ തലവേദന എങ്ങനെയെങ്കിലും ഒഴിവാക്കാനുള്ള ചര്‍ച്ചകളും ആരംഭിച്ചിട്ടുണ്ടു്. ഭൂമിയില്‍ നമ്മള്‍ ലീപ് സെക്കന്റ് കണക്കാക്കിയാലും നമ്മുടെ ബഹിരാകാശ നിരീക്ഷണങ്ങള്‍ക്കു് ആസ്ട്രോണമിക്കല്‍ ക്ലോക്ക് തന്നെ വേണമല്ലോ. ലീപ് സെക്കന്റ് എന്നു വേണം എന്നു് ഏകദേശം ആറുമാസം മുമ്പേ തീരുമാനിക്കാനും പറ്റു. International Earth Rotation and Reference Systems Service (IERS) ആണു് ലീപ് സെക്കന്റ് എപ്പോള്‍ വേണമെന്നു തീരുമാനിക്കുന്നതു്.

കൂടുതല്‍ വായനയ്ക്ക്:  https://en.wikipedia.org/wiki/Leap_second

HOWTO: Wacom Bamboo CTH301K in Debian

This is a short documentation on getting Wacom Bamboo CTH301K working in Debian. I use Debian Sid with Linux kernel 3.16 at the time of writing this. But this should work with latest Ubuntu(14.04 or 14.10) and new kernels.

Wacom Bamboo CTH301K is an entry level touch pad with stylus – you can use it as a mouse, or drawing pad with stylus. It has multitouch features like pinch zoom and all. I got all working.

Eventhough wacom has drivers for their many models in linux kernel, this particular model with device id: 056a:0318 does not have a driver in kernel. When you connect it, you will see it is listed in the lsusb output as
Bus 003 Device 016: ID 056a:0318 Wacom Co., Ltd

But touch or stylus wont work because of missing driver. First step to get stylus working is adding usbhid.quirks=0x056a:0x0318:0x40000000 to the grub boot cmdline. For this, edit /etc/default/grub. Append the above string to GRUB_CMDLINE_LINUX_DEFAULT. In my system it looked like as follows:

GRUB_CMDLINE_LINUX_DEFAULT="quiet init=/bin/systemd usbhid.quirks=0x056a:0x0318:0x40000000"

You need to save this file and run update-grub command to get this updated in grub. There are alternate ways to pass this string to modprob, but this method make sure it works always in every system restart. Once done, you will see the stylus getting detected and working. Touch will not work still-This is because the default wacom driver picked up does not know about this device.

To get touch working, open /usr/share/X11/xorg.conf.d/50-wacom.conf and add MatchIsTablet "on" to the first section of that file. In my machine it looked like

Section "InputClass"
        Identifier "Wacom USB device class"
        MatchUSBID "056a:*"
        MatchIsTablet "on"
        MatchDevicePath "/dev/input/event*"
        Driver "wacom"

With this the “evdev” driver will be managing the device’s touch part. Restart your X – like restrarting KDM or GDM. Or just restart the machine.

You will see stylus and touch working now. You may need to use xsetwacom command to adjust the preferences, but you can find documentation of that elsewhere.

The above method also works with wireless model, just replace the device id 0x056a:0x0318 with 0x056a:0x0319


  • 24/04/2015: Bamboo Pad pen support accepted into Linus’ repository on the “master” branch (commit 61e9e7e). Expected release: Linux 4.0.
  • Bamboo Pad touch support accepted into Jiri’s HID repository on the “for-4.1/wacom” branch (commit 8c97a76). Expected release: Linux 4.1.

Configurable node logger with winston

For an advanced logging system for nodejs applications, winston is very helpful. Winston is a multi-transport async logging library for node.js. Similar to famous logging systems like log4j, we can configure the log levels and winston allows to define multiple logging targets like file, console, database etc.

I wanted to configure logging as per usual nodejs production vs development environment. Of course with development mode, I am more interested in debug level logging and at production environment I am more interested in higher level logs.

I am sharing my singleton logger instance setup code.


NotoSansMalayalam and nta

NotoSansMalayalam has the following ligature rules for ന്റ (nta)- All uses Akhand Opentype featurenotosansml-nta1

  1. uni0D7B(ൻ) + uni0D4D(്) + uni0D31(റ) => ൻ + ് + റ
  2. uni0D28(ന) + uni0D4D(്) + uni200D(ZWNJ) +uni0D31(റ) => ന്‍ + റ
  3. uni0D28(ന) + uni0D4D(്) + uni0D31(റ) => ന് +റ


The first one is what is defined in Unicode chapter 09 section 9.9[pdf]. The second is what Microsoft Kartika used to use for /nta/ as a bug. The last one is what all other fonts follows. If this is what standards can achieve, what can I say?

Hyphenation in web

This is a follow up of a 4 year old blog post about hyphenation. Hyphenation allows the controlled splitting of words to improve the layout of paragraphs, typically splitting words at syllabic or morphemic boundaries and visually indicating the split (usually with a hyphen).

I wrote about how a webpage can use Hyphenator javascript library to achieve hyphenation for a text with ‘justify‘ style. Along with the hyphenation rules I wrote for many Indian languages, this solution works and some websites already use it. The Hyphenator library helps to insert Soft hyphens in appropriate positions inside the text.

Example showing the difference between Malayalam text hyphenated and not hyphenated. You can see lot of line space wasted with white space in non-hyphenated text
Example showing the difference between Malayalam text hyphenated and not hyphenated. You can see lot of line space wasted with white space in non-hyphenated text


More recently browsers such as Firefox, Safari and Chrome have begun to support the CSS3 hyphens property, with hyphenation dictionaries for a range of languages, to support automatic hyphenation.

For hyphenation to work correctly, the text must be marked up with language information, using the language tags described earlier. This is because hyphenation rules vary by language, not by script. The description of the hyphens property in CSS says “Correct automatic hyphenation requires a hyphenation resource appropriate to the language of the text being broken. The user agents is therefore only required to automatically hyphenate text for which the author has declared a language (e.g. via HTML lang or XML xml:lang) and for which it has an appropriate hyphenation resource.”

CSS Example

-webkit-hyphens: auto;
-moz-hyphens: auto;
-ms-hyphens: auto;
-o-hyphens: auto;
hyphens: auto;

Browser Compatibility

  • Chrome 13+ with -webkit prefix
  • Firefox 6.0+ with -moz prefix
  • IE 10+ with -ms prefix.

Hyphenation rules

CSS Text Level 3 does not define the exact rules for hyphenation, however user agents are strongly encouraged to optimize their line-breaking implementation to choose good break points and appropriate hyphenation points.

Firefox has hyphenation rules for about 40 languages. A complete list of languages supported in FF and IE is available at Mozilla wiki

You can see that none of the Indian languages are listed there. Hyphenation rules can be reused from the TeX hyphenation rules.  Jonathan Kew was importing the hyphenation rules from TeX and I had requested importing the hyphenation rules for Indian languages too.  But that was more than a year back, not much progress in that. Apparently there was a licensing issue with derived work but looks like it is resolved already.

CSS4 Text

While this is all well and good, it doesn’t provide the fine grain control you may require to get professional results. For this CSS4 Text introduce more features.

  • Limiting the number of hyphens in a row using hyphenate-limit-lines. This property is currently supported by IE10 and Safari, using the -ms- and -webkit- prefix respectively.
  • Limiting the word length, and number of characters before and after the hyphen using hyphenate-limit-chars
  • Setting the hyphenation character using hyphenate-character. Helps to override the default soft hyphen character

More reading

PS: Sometimes hyphenation can be very challenging. For example hyphenating the 746 letter long name of Wolfe+585, Senior.