Planet SMC

March 01, 2014

Rajeesh K Nambiar

SMC mentoring for GSoC 2014 too

Swathanthra Malayalam Computing is a free software collective engaged in language computing, development, localization, standardization and popularization of various Free and Open Source Softwares in Malayalam language. SMC developers have contributed to various Indian language computing efforts including fonts, spell checkers, hyphenation patterns (used by TeX, Libreoffice, Firefox), input methods etc. Last year, SMC was selected as a mentor for Google Summer of Code program and we successfully mentored 3 student projects – a web application to store and process bibliography data of books with i8n support, port SILPA into Flask application and restructure into standalone modules and Automated Shaping&Rendering testing, primarily for HarfBuzz.

Together with Santhosh, I have mentored the Automated Shaping&Rendering testing framework which we use to test Malayalam font changes against HarfBuzz. It can also be used to test Uniscribe shaping engine if compiled in Windows, or used against HarfBuzz with Uniscribe backend.

SMC is selected as an organization to mentor for GSoC again this year. If you are a student who wants to work on interesting problems, look at our project ideas. One of the problems I am particularly interested and to mentor is adding Indic shaping support to ConTeXt. Apart from the listed ideas, you can propose other ideas as well. Read the FAQ, you can reach us by mailing list or via IRC #smc-project on

Tagged: gsoc, smc

by Rajeesh at March 01, 2014 02:45 PM

February 25, 2014


Google Indic Android hackathon

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

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

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

Real event, hackathon started at 5pm, Google’s partners came up with a few topics, and gave us time to form groups and select any of those. I was interested to work on either UI/UX for any of the project or work on IME. Since I have already worked on keyboard, I knew I won’t need to start from scratch. I talked to few people and met Satya and Narasimha and they liked the keyboard idea. We decided to form a team. We started by planning what to do in the next 24 hours we got.
Our plan was to
* Port XKB keyboard layouts, at least one per language
* Generate dictionary for word suggestion, for all the ported languages
* Write a script to filter words in dictionary
* Use jquery.ime java port and find a method to suggest words from dictionary for transliteration
* Fix character going outside the button in keyboard (this is a long time bug in my keyboard)

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

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

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

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

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

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

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

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

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

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

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

by Jishnu at February 25, 2014 01:43 PM

February 08, 2014


How to neutralize the escape key (keycode 9), without spending any XM

I bought my laptop in 2009. And I am using it (overusing it) ever since. When I joined Sixdee Telecoms in 2012, they gave me another laptop. For the next six months I was using (overusing) the new one, and I kept my old buddy in a blue HP bag – without touching it. In August 2013 I left Sixdee. and my laptop came out of the blue bag. And after two – three months the keyboard started to misbehave. some keys like Escape, Backspace & Enter stopped working. The only option I had, was to buy a usb-keyboard. and I did it. I bought a small usb-keyboard for Rs 250/-. ans started using it.

After one month – when I visited Jithinettan, he was also facing the same issue – almost all keys of his laptop were not working. So he bought a usb-keyboard and some of the keys in the usb-keyboard also stopped working. And he was using on-screen keyboard for typing those keys. I stayed with him for a few weeks.

On a not-so-special morning when I woke up , my laptop keys started working. I don’t know how, but they started working. all keys – at the same time. For a  moment I thought about spreading the news.I imagined about the hundreds of curiosity-seekers, attracted by the resounding news of the miracle. But after considering the fact that I had only one laptop, I changed my mind.

I gave my usb-keyboard to Jithinettan and after a few days I came back to Ernakulam. Life was better without a usb-keyboard. Months flew like days. One day I was chatting with someone and suddenly the chat-window got closed. I opened it again and it got closed again within no seconds. After sometime when I opened the Gmail compose window,  the same thing happened. I restarted my machine and everything was fine. I heard the voice of Morpheus -”It must be a glitch in the matrix“.

The Escape key after my attack

The Escape key after my attack


Similar incidents started to occur for the next few days. And it was  VIM,  who showed me the culprit. It was ‘the escape key’. the escape key was being pressed for no reason. I tried cleaning the keyboard. I tried almost everything – without any luck.  And one day I got angry and I attacked the escape key with all my force. I caught the key with my nails and I pulled with complete energy – and I won.  They key was in my hand, a white round thing was all that remained in the position of the escape key. I restarted the machine and tried using it. Now the unwanted escape key press was not happening. Whenever I needed the escape key I pressed on the white spot – and the escape key press event got triggered. I smiled. – That was a big victory.


The keycode9 press event  shown in xev console

The keycode9 press event shown in xev console

Exactly after two days, the glitch happened again. the escape key was being pressed   again. And there was nothing left on the position of escape key. I considered firing an XMP-Burstor. But there were no portals on that position. So instead of using the ingress app I tried to scan the position using the ‘xev‘ command. – and yess!! – the escape key was being pressed. To be exact, the key with keycode 9 was being pressed. “Why don’t you remap the keys?” - it was Morpheus again. “Why don’t you remap the keys?”  I asked myself.

For remapping the keys I should find out a key which I don’t use. After spending a couple of minutes, I found the key – the menu key (right click key). This is the only key which I can live without. So the game is ON.

Step 1: Disable keycode 9 

xmodmap -e ‘keycode 9 = NoSymbol’

I used this commend for disabling the usual escape key. After running this command, I tried pressing the white spot. nothing is happening. I again used xev to confirm this. Yes – the key is being pressed and nothing is happening because it is mapped to NoSymbol. All is clear and we are ready to move to the next step.

Step 2: Remap the menu key into escape key 

xmodmap -e ‘keycode 135 = Escape’

The keycode of the menu key is 135. We just mapped the key with keycode 135 into Escape action. I tried pressing it. It works in VIM , chat windows are getting closed when I press the menu key. and I confirmed it using the xev command.

YESS!! I did it. I neutralized the escape key ( keycode9). And life is beautiful again..But if this happens again with a new key – I don’t have any spare keys :(




by Stultus at February 08, 2014 09:49 AM

January 31, 2014

Rajeesh K Nambiar

Going to FOSDEM ’14

I’m attending FOSDEM 2014 at the Université Libre de Bruxelles this weekend. Hope to meet some of the hackers, especially Fedora and KDE folks.

Tagged: hacking

by Rajeesh at January 31, 2014 07:08 PM

January 11, 2014

Santhosh Thottingal

Collaboratively edited documentation for Indic font developers

One of the integral building blocks for providing multilingual support for digital content are fonts. In current times, OpenType fonts are the choice. With the increasing need for supporting languages beyond the Latin script, the TrueType font specification was extended to include elements for the more elaborate writing systems that exist. This effort was jointly undertaken in the 1990s by Microsoft and Adobe. The outcome of this effort was the OpenType Specification – a successor to the TrueType font specification.


The Devanagari ddhrya-ligature, as displayed in the
JanaSanskritSans font.

Fonts for Indic languages had traditionally been created for the printing industry. The TrueType specification provided the baseline for the digital fonts that were largely used in desktop publishing. These fonts however suffered from inconsistencies arising from technical shortcomings like non-uniform character codes. These shortcomings made the fonts highly unreliable for digital content and their use across platforms. The problems with character codes were largely alleviated with the gradual standardization through modification and adoption of Unicode character codes. The OpenType Specification additionally extended the styling and behavior for the typography.

The availability of the specification eased the process of creating Indic language fonts with consistent typographic behaviour as per the script’s requirement. However, disconnects between the styling and technical implementation hampered the font creation process. Several well-stylized fonts were upgraded to the new specification through complicated adjustments, which at times compromised on their aesthetic quality. On the other hand, the technical adoption of the specification details was a comparatively new know-how for the font designers. To strike a balance, an initiative was undertaken by the a group of font developers and designers to document the knowledge acquired from the hands own experience for the benefit of upcoming developers and designers in this field.


Glyphs inside Meera font

The outcome of the project will be an elaborate, illustrated guideline for font designers. A chapter will be dedicated to each of the Indic scripts – Bengali, Devanagari, Gujarati, Kannada, Malayalam, Odia, Punjabi, Tamil and Telugu. The guidelines will outline the technical representation of the canonical aspects of these complex scripts. This is especially important when designing for complex scripts where the shape or positioning of a character depends on its relation to other characters.

This project is open for participation and contributors can commit directly on the project repository.

by Santhosh at January 11, 2014 08:26 AM

November 23, 2013

Rajeesh K Nambiar

SMC Malayalam fonts updated versions released

The Unicode fonts for Malayalam maintained by Swathanthra Malayalam Computing were last updated almost 2 years ago. They all were supporting just the v1 Indic opentype spec. But there were rendering problems with the fonts under Harfbuzz.

I was fortunate to attend the Open Source Language Summit 2012 (last year!) organized by Wikimedia Foundation and Red Hat (thank you, guys!) where many of the Indic language experts came together to work on issues at hand. The 2-days workshop helped me greatly to get much more insight into fonts, opentype spec and Harfbuzz in general. Since then I have been spending a lot of effort in updating and fixing the Malayalam fonts and also testing git snapshots of Harfbuzz and reporting issues to harfbuzz development list.

In the meantime, Harfbuzz matured enough and fixed many rendering issues. Thanks to the last Udupi hackfest by Behdad and Jonathan Kew, all known issues with Malayalam shaping has been addressed. And we were busy updating the fonts, opentype lookup rules and fixing bugs to work with old shapers (old pango, Qt, ICU Layout Engine, Windows XP) as well as the new ones (Harfbuzz, Uniscribe, Adobe). The v1 Indic opentype spec was a mess due to ‘undesirable’ Halant reordering (Consonant+Halant forms were ligated while it should have been Halant+Consonant). It has caused a lot of grief on the font developers and shaping engine developers side. With the v2 spec (mlm2 script tag for Malayalam), this has been changed and there is no need to perform Halant shifting anymore by shaping engines. I was leading the effort of porting to mlm2 spec of Malayalam fonts. We could port only Meera and Rachana for now, and RaghuMalayalam taken care by a few sed scripts.

During the 12th anniversary celebrations of Swathanthra Malayalam Computing group, the new version of fonts (5.1 supporting old shapers and 6.0 supporting new shapers) were released. See the email to smc-discuss for details. Remaining fonts also need to be updated, there is interest from community to collaborate on that. The new release will show up in Fedora 20.

In the process, I have learned quite some intricacies of the Indic opentype spec and would try to document them in a series of posts.

Tagged: fonts

by Rajeesh at November 23, 2013 06:07 PM

October 03, 2013


Malayalam Page Numbers using XeLatex

I was typesetting a book in Malayalam using XeLatex. and I was wondering if it is possible to use Malayalam numerals for page numbers.

By referring a stackexchange answer I wrote the following macro.

%%%———–Malayalam Page Number—————%%%%

\def\malcounter#1{\expandafter\@malnumber\csname c@#1\endcsname}



Now the \MalpageNum command will give you the current page number using the Malayalam numerals.




by Stultus at October 03, 2013 09:04 AM

August 26, 2013

Nandaja Varma

GSoC – Weekly status update #9

The work of mine has been correcting the reference glyph files and developing a web interface for the proposed framework. I had tried and made the reference files least buggy as possible. I have gone through the glyph names of almost all the 243 words in 4 fonts. I had to invest a lot of time on this especially due to one minor misunderstanding of mine on the multiple correct renderings of the words. And I hope it will get much refined after Rajeeshettan proof read it for 2 fonts as he has suggested.
(I have changed the renderings of words with repham in Rachana such that the dotreph comes first. So words like these,, although looks correct, will be in the wrongly rendered words list by harfbuzz.)

The next part of this weeks work was developing the web interface (Excuse my poor design, I am cleaning it up as I write). It doesn’t actually spits output to the user now or doesn’t make it easier for the user to open files. I am hoping to make it run the script well in a week’s time and don’t think it is ready yet for the review. So I would like another week to make it ready for reviewing.

And finally about the C code I have added to the repo. I will start working on a new code in C++ once I am done with the webpage as I find the present code massively buggy and really inefficient. I hope I’ll be able to update it the week after next.

My code here:

by Nandaja at August 26, 2013 12:30 AM

August 25, 2013

Ershad K

GSoC 2013: Week 10 of Grandham project

Last week I’ve been working on admin review feature to incorporate the new changes happened in the user end.

Screen Shot 2013-08-26 at 1.56.09 AM

With the addition of in-place editing feature, admins can now approve minor edits by actually looking the difference. They also have options to replace author/publisher if the previously set author was different.

Along with that, we now have an option to upload book cover. It can be found in ‘Add new book’ form. In the long run, it will be also appearing under each book cover(in book page) where user can upload a cover just like they edit other information.

Screen Shot 2013-08-26 at 2.03.44 AM

by ershad at August 25, 2013 08:35 PM

GSoC 2013: Week 9 of Grandham project

In Week 9, I rewrote the complete crowdsourcing functionality of Grandham from a submission based approach to micro-edits based approach. Earlier we used to store the entire snapshot while recording modifications but now we store only the ‘edit’ (similar to diff, but in a structured database table) and pass it to admins for reviewing. This approach has some significant advantages including the easy generation of history of book pages.

In-place editing was integrated during the same week. Now participants can click on a field and edit it.

by ershad at August 25, 2013 08:20 PM

August 17, 2013

Nandaja Varma

GSoC Weekly status update #8

I have changed the framework interface from its previous form, although the previous front end is still present in the repo. Now the new interface,, need all the file names to be provided as command line arguments. The user gets the convenience  of using the tab completion this way. The user will have to give as command line arguments 6 files (font  file, test cases file, reference file, rendering output and files to store output) and an optional directory name(if the engine is harfbuzz).
 If the rendering engine is harfbuzz, user can run the script  along with the test cases file and font file as parameters, to create the rendered output file. If that is not the case, the user will have to create this file as well in the prescribed form.

Now, the algorithm that actually test the rendering was a bit buggy and was giving certain wrong outputs for words with multiple rendering engines and I have cleared this error. This feature gives correct output now for the files I tried it with.
The next thing I am working on is the web interface and I am using Flask framework. Will make this code public as soon as I get the script running from the page.

by Nandaja at August 17, 2013 01:14 PM

August 11, 2013

Ershad K

GSoC 2013: Week 8 of Grandham project

Last weekly I mainly worked on Search feature and admin interfaces. Here’s a quick review:

  • Experimented with various search engines like Sphinx, Ferret, etc and finally decided to use Solr with sunspot gem as it worked well with unicorn data without any configuration.
  • Wrote a general search backend interface for Grandham. We can plugin other search engines anytime as long as it communicated the way Grandham needs it.
  • Added Admin interfaces managing Authors and Publishers.

by ershad at August 11, 2013 06:47 PM

GSoC 2013: Week 7 of Grandham project

I couldn’t post the weekly updates regularly for the last two times since I was kept more busy than I had expected and the festive holiday that came in between. Here’s a quick review of what happened during the 7th week of GSoC.

  • Grandham got an UI revamp!
  • Integrated new theme.
  • Separate books / authors / publishers lists were implemented
  • Updated user sign in / sign up pages
  • Integrated database clear and fixed failing specs (It’s green now, yay!)

by ershad at August 11, 2013 06:40 PM

Nandaja Varma

GSoC Weekly update #6 & #7

The past two weeks has been a blur with a lot of travelling and minimal Internet access. The following are the works I have been doing so far:

The following modifications were asked to be made on the existing framework by my mentor after a Hangout session as part of the evaluations:
1. Modify the comparison algorithm so as to show positive results for the words with multiple correct renderings – This modification is made. Now, the user can give multiple glyph names separated by comma in the reference file and if the rendering matches any one of these, the framework will return a positive response.
2. Modify the reference glyph file, adding the glyph names of words with multiple correct renderings. Also some corrections were asked to be made in the existing reference file.
3. Modify the framework such that the user can even test by giving the file names as parameters. This one needs a little more work as I didn’t give options in argument parser for all the necessary file inputs. Will update this soon.
Along with these some minor fixes were asked to be done on the script and all those are taken care of.
As for the further developments, planned to create a web interface for this framework. I am trying to create this interface using Flask and I am currently working on it.
After that, the framework will be implemented in C. I have added a partially working implementation of this in the repo.
After the completion of all these, if time permits, references for other fonts are also planned to be made.
Will keep posted on further developments.

by Nandaja at August 11, 2013 10:42 AM

July 28, 2013

Ershad K

GSoC 2013: Week 6 of Grandham project

This week I’ve been mostly fixing bugs, refactoring code and building admin features. Grandham has built in checks to avoid duplication in Authors/Publishers now.

Submission Review Interface Grandham review page

We have a new interface this week –  A screen to review crowdsourced information submissions. Administrators can use this feature to control the information displayed to user. Currently every review item has 3 actions – Approve, Archive or Comment. Out of these, ‘Comment’ is a new feature which needs to be implemented. It will be helpful for the task force to generate discussions around specific submissions.


After a couple of rounds of refactoring, Grandham got a Code Climate score of 4.0 from 1.61! :)

by ershad at July 28, 2013 07:53 PM

Nandaja Varma

GSoC weekly update #5

The works this week has been a little slow with college exams and assignments. This is what I have done so far this week.

I have completed the list of reference files containing glyph names of 243 words from four fonts each. Fonts being: Rachana, Meera, Suruma and Lohit-Malayalaam.

The code has been modified to equip not only harfbuzz renderings but renderings from other engines line Uniscribe, provided the user will produce the output of the rendering engine herself/himself. I have created a Python package containing 2 modules each for testing and creating output. The main script  will make use of this package to test and give the final result. To test the framework, one can just run ./automated_rendering_testing and then provide the necessary  information, when asked.

Coming to the tester, first it will compare the reference file and the rendering output. The it will create a file named result.txt containing the wrongly rendered words along with the number corresponding to the word in test cases’ file. This file is used only to create the png file of the wrongly rendered words, if the engine is harfbuzz. Other wise this file is ignored. Now the actual output is a file test_result.txt with the format:

Sl.No Word Rendering status(correct/wrong)

User can view this file, see the status and see the wrongly rendered word.

The framework works this way now: Image

And this would be the output.png file. (As I chose harfbuzz here)


And the test_result.txt file would look like this:


The agenda for this week is to re-write the whole code in C.

My code is available here:

by Nandaja at July 28, 2013 10:33 AM

July 26, 2013


Bookmarklet to solve math captcha on Calicut university results page

With last update on pareeksha bhavan page of Calicut university website, they introduced a simple math captcha, which I am tired of typing for last few days. I don’t know why they introduced this. After looking at the source code of the page, within 1-2 minutes, I found a method to overcome captcha and view result without even entering the sum value. Anyone with basic knowledge about html and js can easily do the same. So this doesn’t prevent any bots from collectting information.
Calicut university catpcha

To help everyone who tired of solving captcha every time/every register number they enter, I created a small bookmarklet script which will solve the captcha in a click. All you need to do is, drag following link to your bookmark bar of your browser. and click on it while results page is open.


If you want to see un-minified code, check my github gist.

Howto videos

Adding bookmarklet

Using bookmarklet

by Jishnu at July 26, 2013 02:28 PM

July 21, 2013

Ershad K

GSoC 2013: Week 5 of Grandham project

Last week, I implemented different parts of the application including the basics of user authorization. Also did a work on refactoring the code base, our tests are clean now.

New features

We now have a page to display information of a specific book, which can be navigated from the books list. This page will eventually contain all the information, including location information and links to download the entire MARC data.

User authorization has been added to Grandham using the gem ‘devise’. Devise provides beautiful forms required for various user-authorization needs, I customized them to work with the look and feel for Grandham. Some of them are here:

Grandham sign in 2Grandham registration




(Social login needs to be implemented in coming weeks)

Our test suite was starting to clutter and due to a problem in factories the CI has been failing randomly. I’ve refactored the test suite and now it all works fine.


In other news, we have switched the browser to run tests from selenium – firefox to poltergeist - phantomjs. It helps us to run tests faster. Also I’ve updated our API and data import script.

by ershad at July 21, 2013 02:11 PM

July 20, 2013

Nandaja Varma

GSoC Weekly report #4

This week my main task was to migrate my code to Python. As of now I have implemented my algorithm in Python. Here is the link to the repo :

I have expanded my test cases’ list a bit. Now it has 243 Malayalam words. I have manually created files with glyph names of these test cases in four fonts: Rachana, Meera, Suruma and Lohith-Malayalam in files names rachana-glyph.txt,  meera-glyph.txt etc. (It is still a bit buggy, so haven’t pushed the latest commit of this yet).

What the code basically does is, it will ask the tester which font she/he wants to test in. Say it is Meera. The code will look for the reference file which we manually create and the file with harfbuzz rendering of the test cases, names as hb_meera_rendering.txt. This file can be created by running script with proper font files in the current directory. The main script will scan both these files and compare the glyph name corresponding to each word and stores the wrongly rendered words to a new list. Finally hb-view will be executed on the words inside this list and a file named output.png will be generated in the same directory that contains all the wrongly rendered words.

The baseline glyph names’ files aren’t ready yet with complete glyph names of all the 243 words. Will be able to complete it within 1-2 days.

by Nandaja at July 20, 2013 08:09 PM

July 14, 2013

Ershad K

GSoC 2013: Week 4 of Grandham project

Last week, I worked on edit book feature and design mockups.

Edit book feature

As you know from previous posts, we have Submission model to store every contribution from users. When an user submits a correction or an edit, it gets stored as a new Submission in submissions table which needs approval from task force to live. ‘Edit’ component of this feature was implented last week.

We have a few routes associated with this feature.

The following route is to post details for adding a new book. It requires language_id (language short code such as ML or EN) to associate the book to that language. Grandham creates new Submission and a new Book instance (with auto generated grandham_id) if submission to this route was successful.

 POST language_submissions_path - /language/:language_id/submissions

Next route is the edit book feature’s route. It requires book_id (grandham_id of the book) to accept information. It creates just a new Submission for the exising book. This submission will be available for task force to approve.

 POST book_submissions_path - /books/:book_id/submissions

Design mockups

Like I mentioned in one of my previous posts, I had drawn the design mockups for basic features of Grandham. The application will be in a state to go live when the features in design mockups are done.


We now have a live instance of app running in Heroku –

by ershad at July 14, 2013 11:16 PM

GSoC 2013: Week 3 of Grandham project

In Week 3, I was mostly designing routes and developing the submission interface for Grandham.

Submission Interface


Grandham should have two interfaces for data submission.

  1. Interface for normal users
  2. Interface for advanced users

The first interface, the form to input basic details of a book has been implemented. All the information entered through this form directly goes to ‘Submission’ model with ‘approved’ = false. Later when the task force changes ‘approved’ value to true, all other submission will get disapproved and this submission details would get featured in Book page.

We are storing Author and Publisher information in different models connected to Submission using a has_many :through association and we use the rails feature accepts_nested_attributes_for to input them in the same Submission#new interface.


We now have language based navbar in which the links would change according to the language selected. This would help users to quickly navigate to Book, Authors, Publishers and Libraries. It will be an UX enhancement to show selected Language in navbar, will do that.

We have a very basic 2 column books listing now, it’s mainly for development purposes and testing. We will have a proper books listing on the way.

In other news, I got Travis working with selenium integration specs. It required some additional bits of configuration like this -

  - "export DISPLAY=:99.0"
  - "sh -e /etc/init.d/xvfb start"

by ershad at July 14, 2013 10:49 PM

GSoC 2013: Week 2 of Grandham project

Week 2 of Grandham was filled with more architecture decisions and implementations.

Solving the versioning problem

It’s quite essential to store different user contributions on the same subject separately if the application supports crowdsourcing. We cannot let the user to overwrite the existing data without any moderation. Hence in Grandham, we have a ‘Book’ model with many ‘Submissions’ out of which one will be an approved submission. A book’s individual page basically has the detail from this approved submission.

Book has many submissions

It will be task force (a set of users with advanced privileges) who would approve submissions. They will have options to comment or even edit a submission.


Thanks to Travis CI, Grandham project now has a Continuous Integration server. We also use Gemnasium to track dependency packages.

by ershad at July 14, 2013 10:11 PM

GSoC 2013: Week 1 of Grandham project

The first week of development which started on 17th of June essentially comprises requirement analysis, planning and API implementation.

Requirement Analysis

Though the basic requirements for Grandham were discussed a month before, it was necessary to have more clarity on the subject. I had a series of discussions with mentors on various aspects of application, especially on how this project would attract information from contributors of different competency. It was sorted out that normal user could provide just the basic information such as Title, Author(s), Publisher(s), Year, Pages, Edition and Description. Advanced users, who are competent with MARC21 format could contribute advanced bibliographic information through a specially designed interface.

As mentioned in the previous post, we had a meeting with Sri K. H. Hussain. Apart from inspiring and guiding us, he made us aware about the importance of having an API and integration with various library systems in existence. I especially remember seeing a live instance of Koha and its super complex MARC21 data input form. It will be really great if it could consume Grandham API and vice versa so that we would have proper data sharing between two information resources.


I had little confusions around how to store information. I was thinking of extracting basic information from complex MARC21 data to display in individual books page. But since it was decided that users feed them differently, we could easily store basic information separately and use them. Separate data models to store information as Key/Value pair were written, but I removed them all for the sake of readability and easiness. It was this period when we decided to integrate Bootswatch for front end CSS framework.

API Implementation

Books and Fields API were written during period using jbuilder. The data importer script was updated to meet the changes in the application.

by ershad at July 14, 2013 09:32 PM

Nandaja Varma

GSoC Weekly update #3

This week I’ve been working on generating a baseline glyphs file for 4 fonts: Rachana, Meera, Suruma and Lohith-Malayalam. I have selected some malayalam words from harfbuzz tree and Santhosh Thottingal’s test cases which I thought would be enough to test rendering problems. Then I started listing the glyph names of these files for each fonts in separate text files. To get the corresponding Unicode code point of each word, I wrote a small Java code. So I executed the script on each word, found all the code points and made 4 text files that contains the corresponding glyph names of the four fonts I mentioned earlier. 

Although my mentor did tell me that it is not possible to generate glyph names automatically, I wasted more than a couple of days on a Font Forge script to make it automatically output the glyph names. But that gives the glyph name only if we click on each character, which became terribly disappointing. So instead I used it to make the baseline glyphs file in the structure I want if I click on the necessary characters. But this code is trivial as far as rendering testing is concerned and will leave it out from now (Just noting it down as it wasted a very non-trivial amount of my time ;-) ).

I have modified the main C code such that it will ask the tester which font she wants and after choosing the one she needs it will output the result based on the words I have given.

But my mentor pointed out that it looks quite messy looking at codes in 3 different languages for a single framework so I’ll be re-writing my code in Python this week.

You can find my code here: (although the README is not up-to-date)

by Nandaja at July 14, 2013 11:52 AM

June 29, 2013

Nandaja Varma

GSoC Weekly update #2

Coding period for GSoC has started the past week and I have been working on a very simple implementation of the proposal in C and two tiny bash scripts. My code is available here:

The first thing to be done to test using these scripts is create a file that contains a set of words to be tested to see if their rendering is correct. Here I have taken a sample test data file created by SMC a while ago (ml-harfbuzz-testdata,txt). Now pass this file through the script along with the necessary font file. That is:

./ ml-harfbuzz-testdata.txt /path/to/fontfile

This will create a file named rendered_glyphs.txt that contains the output of hb-shape function of harfbuzz, i.e. the glyph name followed by some additional numbers (which will be ignored for now).

Now create a file that contains the actual glyph names of the words in the the test data wordfile. I got the data from font forge. This has to be created manually and, as of now, obeying the following structure:






Also make sure that glyph names of each word is in the same order as that of the corresponding words in the test data file. I have named it orig_glyphs.txt Once this is done, we can pass the above two files through the executable of the script rendering_testing.c, say rendering_testing. That is:

./rendering_testing orig_glyphs.txt rendered_glyphs.txt

This script will compare the glyphs in order and if it find any pairs that doesn’t match, it will write to a file, result.txt, the line number in which the word appears in the test data file. Otherwise it will tell you the renderings are perfect.

Once this is done, to see the words with wrong renderings we will have to run the third script It takes as input the result.txt file, the test data file and also the font file. That is:

./ result.txt ml-harfbuzz-testdata.txt /path/to/fontfile

This script will create png images of the wrongly rendered words in the current directory.

That is all about my scripts. But the C code is very much inefficient. It even spits segmentation faults with some files. Once I make sure that I am on the right path after discussing with my mentor, I will be working on improving my algorithm and making this code better. That would be my next week’s work.

by Nandaja at June 29, 2013 10:15 PM

June 10, 2013

Nandaja Varma

GSoC – Community engagement period

GSoC 2013 approved project list was published on May 27th and the community engagement period was started from May 29th onwards. During this period the students are supposed to bond with their mentors, read the documentations and finalize your plans so you can have a head start with your project. The project topic for which I have got accepted for is “Automated rendering testing” and I will be completing that project under Swathanthra Malayalam Computing. I could learn a lot a new stuff so far during this community bonding period with a heavy deal of help from my mentor Rajeesh K Nambiar, although I haven’t started actual coding yet. I will try to explain my proposal status and further steps here, in detail.

Basically, my project idea is to create an automated way to test the rendering of Indic fonts by rendering engines like harfbuzz. The procedure I wish to follow here is quite simple. Create a test file that contains a set of words, mostly characters with ligatures that will be used for testing the rendering. Along with that I will be maintaining a file that contain the glyph infos of the words/characters in the test file for a particular font, say Malayalam font Rachana. As of now I am preparing it manually, can switch to font forge scripts if required.

Once I have got all the test data, my main script will accept the entries in the test file and render it using Harfbuzz for the font Rachana. The words will be rendered using hb-shape and the output glyph values will be compared with the original glyph indices of these words that I have collected manually. If the glyph indices doesn’t match, an error flag will be set for that particular word. At the end of the comparisons, the words with error flag set can be rendered using hb-view and stored in another html file. This file can be looked up to see for rendering issues.

This is what I will be implementing first. Depending on its efficiency, will move to any other solutions. In the above procedure, the most inefficient step, I think, is collecting the test file step and collecting the glyph index step. We can resolve the latter by, may be, using a scripts for extraction or using the .ttx file of the font (which is quite complex). But the former is a real issue. If the user wants to check for rendering issues in a font, she will have to create this file with a set of words manually. Will have to think of a way to overcome this issue.

That’s it for now!

by Nandaja at June 10, 2013 02:31 PM

April 29, 2013

Nandaja Varma

Bangalore Diaries

I remember times when I used to eagerly wait for my school final exams to get through with, so that I can enjoy the long summer holidays that follows. I have been missing that feeling for a while now. But this year I was impatiently waiting for summer to arrive because I knew what was waiting for me this summer season. A long month ahead filled with knowledge, fun and freedom. An internship in Bangalore! But once  I reached Bangalore city, I could feel that my all my excitement was turning into ashes. My nerves started kicking in (As it always does) and I started wondering ‘What the heck am I doing here?’. I am joining as a temp intern in this cool Australian Software company called Bang the table . I don’t know Ruby on Rails or even Ruby without which basically all I am eligible to apply for is probably the post of an office boy/girl (Which is already taken, FYI). I got a small place (very small) to live which I knew I would love from the first sight of it and got three amazing roommates, who have been trying so hard to make my Hindi speaking skills better till date.

So I joined my office exactly on April 1st ( Which date could be more appropriate than this, eh? ). All the faces were extremely welcoming and warm, and some of which quite familiar too, most of them being mallu faces. I had great fun shooting people with laser guns on my first day itself. Thanks to Ershad for his awesome birthday treat. My timing was just perfect.


My internship started off pretty smoothly. Although I didn’t know Ruby I managed to understand their code base to a very small extend and started poking around with it. Office has been just awesome. To add to the fun, there is a refrigerator for you to raid whenever you are hungry and a coffeemaker which refreshes you with lattes and cappachinos (which I’ll miss very badly) :-(

I completed my first week pretty smoothly and was wondering what to do during weekends in this anjaana shehar.  Luckily for me, as two of my friends Hrishi and Adhil were free those days, I did hang out with them and it was great fun. We just did roam around  Bangalore city (Not to mention, got lost at many points), ate good Kerala  food and happily wasted a whole day. :-D

The following weekend also I met with my friends here (more of online friends) like Jishnu, Praveen, Anivar, Joshina and many others which was basically a Swathanthra Malayalam Computing meet-up and had fun then as well.

On the week next to it, We had our Australian directors visiting us (Again perfect timing of mine). The whole bang the table team went out, played paintball (which again involves shooting people) and had an awesome party at the end of the day. I consider myselves quite lucky that I got the chance to meet all those amazing people. That day will definitely stay in my memory for a long time to come.

That was about my office. Now coming to my hostel, it is an entirely different scene here. I have been living in hostel for the past 3 years but the hostel life here was quite different. The thing I loved the most is, the level of intimacy is really high here. I am not used to roomies who take so much care of each other just like sisters do. I am really going to miss these guys.

So what I achieved within this one month period. Difficult to answer. Definitely would have regretted if I missed this opportunity my entire life. So now gratitude time. :-) Thanks to Vamsee who offered me the internship in the first place. Thanks to my parents for letting me go, although they were a little hesitant in the beginning. Thanks to my senior from college Haris, who gave me the courage to go for it (He has been doing it for a while now and my biggest regret is that I couldn’t meet with him in person). Thanks to my friends Hrishi, Adhil, Jishnu and all the others who didn’t make me feel alone at all in this new place.

(Does that sound like a pageant show winner’s speech? Ugh! To all those who keep nagging me to write, In your face! :-P )

Anyway, I have packed my bags and am about to leave this place tomorrow and Boy, Am I sad going back home? :-P

(Hope the title is creative commons)

by Nandaja at April 29, 2013 09:59 PM

March 17, 2013

Santhosh Thottingal

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.

by Santhosh at March 17, 2013 03:38 PM

March 11, 2013

Nandaja Varma

MiniDebConf at NIT-C

Ever since I started loving FOSS, I really wanted to attend a FOSSMeet. And last month I got extremely lucky and could attend FOSSMeet at NIT-C. This year along with FOSSMeet a MiniDebConf was also arranged. A month prior to it, I was asked to give a Ruby gem packaging session at this MiniDebConf. I was quite nervous because this was the first FOSS event I ever attended and I was asked to give a session. But I knew it would be a great experience, So I decided to go with it.

FOSSMeet was conducted from 22nd to 24th of February and my session was scheduled for 24th. I reached Calicut town on 23rd morning (Obviously unprepared) and when I was just about to hop into a bus to NIT, one of the MiniDebConf organizers, Vipin called me and said that my session was preponed to that day afternoon. I started freaking out because I still had to prepare slides and decide what all to include in my session. As soon as I reached NIT, I had to go to my relatives’ place at the NIT apartments, where I was supposed to stay for the next two days ( I preferred hostel, but whatever!). After that I rushed to NIT campus, got my speaker’s ID card from the registration counter and started roaming around the campus searching for the MiniDebConf venue. Finally I found that it was going on at the networks lab and got there. When I entered Pavi and Shirish were giving talks on debian releases and stuff and I quite honestly didn’t know how to introduce myself. ‘Hey, I am Nandaja. I am a speaker here’ didn’t sound polite enough. So I followed a guy, who assigned me a system in the lab thinking I am a delegate there. So I sat there and started preparing slides for my session until the lunch break.  Once I reached the hall were lunch was being served, I decided to socialize. I met some cool SMC people who were really easy going and friendly and then I met Praveen, whom I was more than happy to meet. After the lunch, we went back to the NSL lab and there Praveen introduced me to Shirish and Pavi, two Debian gurus. It was the time for Debian installation workshop. Pavi asked me to help the delegates with the partitioning and stuff, which I tried doing and I don’t think the students who listened understood much. We clapped for the teams who successfully completed the installation. The session lasted till evening and it was supper time soon after. So my packaging session was again rescheduled for the next day. I again met some cool geeks there. There was a really nice Aaron Swartz memorial talk by Vishnu later that night. Following that was hack night and a talk by Praveen on open source contributions. It was getting too late and had to get back to the relatives’ place. So I missed it (The reason why I preferred hostel).

So it was day-2 and my session was scheduled as the first event at MiniDebConf, that day. I got into NSL and heard all of them had real fun last night, albeit it wasn’t that much of a ‘hack’ night. It was supposed to be a full day packaging session at MiniDebConf, which me and Praveen decided to do together. But as many other interesting events were happening simultaneously, only very few came. So we decided we’ll start packaging session once all other interesting events are over. But unfortunately, the students who showed up started leaving one by one. Luckily for me, a very enthusiastic girl showed up, who missed first day’s session and wanted to learn more about Debian. I started giving a private session for her. But around half an hour later, she said she has got a farewell party to attend and left (Yeah! She literally ran away :-P ). Till the lunch time we sat there chit-chatting. We even went to the 3D-Blender workshop but as soon as the speaker’s lap screen showed a windows desktop we left (Come on, It’s FOSSMeet, man!). After lunch, we exactly had 6 people at the packaging session and we decided to do it anyway. Hrishi started off the session with an introduction to diaspora. Then me and Praveen together started explaining packaging. There were some really cool people there, like, Vamsee Kanakala, the Executive developer at Bang The Table, a government employee, whose sole intention was to attend the packaging event and four other enthusiastic students. The session proceeded pretty well and they were picking it up pretty fast. Almost by the end of the session, Vamsee asked me if I would like to do an internship at Bang The Table and I accepted the offer right away. :-) We couldn’t cover the whole packaging process because it was time for the closing ceremony. Anish, Praveen Vamsee and many others gave the feedback. Vamsee was really kind and he even mentioned my name at the feedback session. I was also asked to give the feedback and honestly I don’t remember what the heck I said there. All of us speakers got a beautiful momento. I bought a FOSSMeet t-shirt and was about to leave.

Just then, Vipin, Jaseem, Pavi, Praveen, Shirish, Akshat, Jishnu and Anish were planning to have a group dinner and invited me as well. It was pretty cool. I never though I would have so much fun hanging out with such uber geeks. After that, it was time for us to bid farewell and all of us went on our own ways.

As it was late, I couldn’t go back home that day. I left Calicut the day after. Quite frankly, I was pretty sad that the FOSSMeet was over. But I was really happy too at the same time, because I made some new geeky friends, got an internship offer at Bangalore and had a lot of fun. Plans for the next MiniDebConf were going on. I am so looking forward to attend that one and hope it happens soon. :-)

by Nandaja at March 11, 2013 07:48 AM

January 26, 2013


Brightness issue in Linux mint 14

I recently installed linux mint 14 (Nadia)   in my office laptop (HP Notebook 450 ). after installation when I booted into the os , the screen brightness was set very very low which I was able to adjust using the brightness function key.  Later I had the same problem when Ubuntu 12.10  was installed on the same laptop.  after little  duckduckgoing
I found this stackexchange question.  by following the accepted answer , I fixed the issue.


  • Current brightness value  was stored in  /sys/class/backlight/acpi_video0/brightness  file.
  • Maximum brightness value was  stored in  /sys/class/backlight/acpi_video0/max_brightness file.
  • I added the following line to /etc/rc.local init script.

    cat /sys/class/backlight/acpi_video0/max_brightness > /sys/class/backlight/acpi_video0/brightness 

in the end my /etc/rc.local init script was

#!/bin/sh -e
# rc.local
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will “exit 0″ on success or any other
# value on error.
# In order to enable or disable this script just change the execution
# bits.
# By default this script does nothing.

cat /sys/class/backlight/acpi_video0/max_brightness > /sys/class/backlight/acpi_video0/brightness
exit 0

After rebooting everything was fine..





by Stultus at January 26, 2013 07:37 AM

December 24, 2012

Pirate Praveen

Everyday rape

I took a while to mark a first reaction to the gang rape of 23 year old paramedical student in Delhi. I watched people screaming for death penalty and the sudden indignation and outrage people felt. First post I shared was Akshi Singh’s post in Sify titled “We are all part of the rape culture“. What amused me is how easily people jump up to taste blood of someone without realising their part in creating and sustaining the rape culture.

Everyday people are exploited, humiliated and violated and they had to wait till they saw the height of this rape culture to wake up. It would have been okay for many if it weren’t this brutal and right in the middle of the city. If you are outraged at least now of the injustice happening around us and want to see this culture end, I have a suggestion and that is not blood of these animals as sacrifice to quench the thirst of revenge, but it included every one, including you and me. Repeat after me.

If you are a male, “I will treat every women with respect and I will not let them be treated like an object or anything less than how I want to be treated”

If you are female, “I will not accept any one treating me anything less than equal and I will fight till every woman can live in respect”.

Take this pledge with me and take this to everyone you know. It is not an easy solution as it means we have to change our ways and not just scream for blood, but it is the only lasting solution I see.

Now this is not a short cut, but an intent of where we should go, ie, not a blood thirsty society but a civilized one.

Another interesting post series was by Vivek Kaul in First Post “Why women would continue to be raped in India” part 1 and part 2.


by Praveen A at December 24, 2012 02:50 AM

November 21, 2012

Pirate Praveen

To write or to riot?

Sajan Venniyoor wrote in an email discussion list yesterday,

Times of India (21 Nov) lists the charges levelled by Palghar police against those who vandalized Dr. Dhada’s hospital:

IPC 143: Unlawful assembly – imprisonment up to six months, or fine, or both.
IPC 147: Rioting – imprisonment up to two years, or fine, or both.
IPC 336: Act endangering life or personal safety of others – imprisonment up to three months, or with fine up to Rs 250, or both.
IPC 427: Mischief causing damage to the amount of Rs 50 – imprisonment up to two years, or fine, or both.
IPC 451: House-trespass to commit any offence punishable with imprisonment – imprisonment for 2 years and fine.

66A of the IT Act (“causing annoyance”) could get us jailed up to three years with fine. Couldn’t we just assemble unlawfully, riot, break into people’s homes and endanger the life and personal safety of others? It seems so much safer.

I think it is a very important comparison on the quantum of punishment. It also reveals the fear of the people in power – what they fear the most. And it won’t be a surprise if most people would agree to it – we are an intolerant country and we are more worried about how other people say and live than our own situation. And this trend is only increasing. We need more efforts to fight intolerance and also teach people to value freedom over getting offended on their believes.

Another important thing for the netizens to do is reach out to the people who are not on the internet and teach them the virtues of it, tell them that they now have a voice that can reach anyone on the world with a fraction of the cost of any traditional media out there.

Some ideas: Help more people write blogs, teach them about tools of anonymity like tor, understand their fears – I think most of it is the fear of technology itself. We have to make posters, cartoons, videos and use any opportunity to debunk the myths of internet if we want to make a broad movement to protect the internet.

And here is the update about PIL in Madras High Court challenging 66A

Mr. Justice Basha told the petitioner’s counsel A. Rajini “You must remember that even you would not be able to invoke the provision in case you are genuinely aggrieved against some communication made by another individual,” the judge said before ordering notices.

I think this is the common response from anyone who is not using the internet already to speak up. How can we protect ourselves? This is a much tougher struggle to win, something we need a cultural campaign for.

There are many ways your can join the campaign today and make a difference.

One idea we are currently working on in the campaign is a survey on the Internet – how people use internet, how they perceive it, what are their fears etc

Share your thoughts and ideas here or on the campaign page.

by Praveen A at November 21, 2012 04:49 PM

November 04, 2012


CyanogenMod contribution!

My commit to cyanogenmod has merged today. It is available on today’s nightly onwards.

Long press on $ symbol reveals ₹ symbol. It will be available on any device which has CyanogenMod 10.

by Jishnu at November 04, 2012 01:21 PM

October 20, 2012


Packaging Diaspora for Debian : IRC Log 21-October-2012

* Topic for #debian-diaspora is: gem2deb session | More info @
* Topic for #debian-diaspora set by ChanServ! at Sat Oct 20 19:05:26 2012
* You are now known as stultus
-NickServ- This nickname is registered and protected. If it is your nickname, you may
-NickServ- authenticate yourself to services with the IDENTIFY command. You are
-NickServ- getting this message because you are not on the access list for the
-NickServ- stultus nickname.
* copyninja waves at stultus_
>NickServ< identify ****
* stultus sets mode +R stultus
-NickServ- You are successfully identified as stultus.
<copyninja> s/stultus_/stultus
<stultus> copyninja, hi :)
<copyninja> whats up
<j4v4m4n> copyninja: heya
<copyninja> j4v4m4n: finally :)
<copyninja> j4v4m4n: met kartik today
<copyninja> or he came to my place
<copyninja> and I registered to
* frogonia ( has joined #debian-diaspora
<j4v4m4n> copyninja: so many awesome news at a time!
<copyninja> j4v4m4n: :)
<j4v4m4n> copyninja: lets meet later to plan our action for
<copyninja> j4v4m4n: sure just join in at #debian-in
<j4v4m4n> copyninja: already in 2 meetings from mobile, will come there sometime after announcing on list :)
<j4v4m4n> who are all here to learn packaging raise their hands :) or just shout :)
<balasankarc> ME!!!
<Sourezo> o|
<j4v4m4n> balasankarc: Sourezo awesome!
<Sourezo> :)
<copyninja> j4v4m4n: didn’t knew you were on mobile ;) you rock
<j4v4m4n> we’ll be doing step by step method for packaging
<j4v4m4n> copyninja: tethered actually :)
<copyninja> j4v4m4n: changed your signature package ?
* aneeshnl (~anish@ has joined #debian-diaspora
* copyninja remembers his first session with j4v4m4n on lekhonee-gnome
<j4v4m4n> copyninja: now starting with a real package :)
<j4v4m4n> Sourezo: balasankarc so I will give some abstract steps and you are supposed to complete it
<j4v4m4n> aneeshnl: for packaging?
<aneeshnl> yes
<j4v4m4n> may be before we start every one can share their diaspora or friendica profiles
<aneeshnl> I have an ITP registerd an year ago
<aneeshnl> I couldn’t complete it till now
* j4v4m4n is
* copyninja is dreaming? did j4v4m4n just told friendica
<stultus> lekhonee-gnome might be the most packaged package
<j4v4m4n> aneeshnl: you can continue from there :)
<balasankarc> i am a beginner here…is that a problem?
<j4v4m4n> stultus: possibly :)
* copyninja
<j4v4m4n> balasankarc: no problem
<aneeshnl> That had some problems packaging that
<aneeshnl> I don’t remember that
<j4v4m4n> balasankarc: every one starts somewhere
* copyninja sorry previous was wrong
<balasankarc> ok…
<Sourezo> I’m quite a beginner too
<copyninja> j4v4m4n: if you can help me finish friendica package it would be great :P
<j4v4m4n> aneeshnl: you can find that bug from
<j4v4m4n> copyninja: sure :) let me get this diaspora packaging in a sustainable mode first
<aneeshnl> I have that bug id
<j4v4m4n> Sourezo: no problem
<copyninja> heh.. j4v4m4n friendica is almost complete package just needs to automate installation
<copyninja> or atleast somebody needs to test the package
<aneeshnl> 623897
<j4v4m4n> Sourezo: balasankarc first step is finding a gem that you need to package
<balasankarc> ok
<j4v4m4n> Sourezo: balasankarc find one gem from that is not yet packaged
<copyninja> j4v4m4n: if people are using linux encourage them to use gobby to connect to that page
<copyninja> j4v4m4n: it is more reliable way.. browser disconnects
<j4v4m4n> copyninja: tell it yourself :)
<balasankarc> is gem_plugin (0.2.3) not packaged one? its not striked
<copyninja> j4v4m4n: you are the guru :P
* copyninja is a spectator
<j4v4m4n> balasankarc: you can find it from
<j4v4m4n> copyninja: every one is a guru at something :)
<balasankarc> i searched for it and found no results….so it may be unpackaged right?
<balasankarc> in
<j4v4m4n> balasankarc: you may search with – instead of _ too
<aneeshnl> Will this session will be there tomorrow also?
* j4v4m4n getting a rice kanji refill :)
<balasankarc> still no results
* ajinkya_bhosale (~ajinkya@ has joined #debian-diaspora
<j4v4m4n> ajinkya_bhosale: heya!
<ajinkya_bhosale> hi .
<j4v4m4n> balasankarc: ok check if someone is working on it already
<copyninja> balasankarc: it is packaged
<copyninja> as gem
<copyninja> apt-cache search gem-plugin
<j4v4m4n> aneeshnl: tomorrow would be different :)
* frogonia has quit (Quit: ajax IRC Client)
<aneeshnl> I really can’tmultitask
<j4v4m4n> balasankarc: did you search for packages or searched the debian website?
<aneeshnl> I have to get to pirate party or here. :(
<j4v4m4n> aneeshnl: you choose :)
<balasankarc> debian website
<aneeshnl> Pirate Party
<aneeshnl> Bye
<j4v4m4n> balasankarc: doh :(
<j4v4m4n> balasankarc: strike that and try another one :)
* aneeshnl (~anish@ has left #debian-diaspora (Leaving)
<copyninja> j4v4m4n: remember to strike it from piratepad :)
<j4v4m4n> copyninja: can you help ajinkya_bhosale to file an itp so that I can go to pirateparty for a while :)
<balasankarc> jammit (0.5.4) is also not striked… but google god told me its already packaged… actually when was piratepad list last updated?
<copyninja> ajinkya_bhosale: which gem are you packaging
<j4v4m4n> balasankarc: whenever someone tries to package a gem :) like now!
<ajinkya_bhosale> @copyninja : multipart-post
<copyninja> ajinkya_bhosale: prepare ITP in this format
<copyninja> in a text file and paste it some where so I can review
<copyninja> you can use
<j4v4m4n> balasankarc: listen to copyninja, you have to do the same steps once you find a gem
<Sourezo> Seems like net-ldap is already packaged as ruby-net-ldap
<ajinkya_bhosale> copyninja : ok
<copyninja> balasankarc: jammit doesn’t look like packaged
<copyninja> can you post link which told you that it is packaged?
<j4v4m4n> Sourezo: strike it and look for another :)
* j4v4m4n checking #piratepin for a moment, be back here soon
<balasankarc> search for “added a jammit package”
<copyninja> balasankarc: doh! he meant ruby class
<copyninja> balasankarc: Jammit.package
<copyninja> balasankarc: he didn’t mention debian any where
<copyninja> balasankarc: you are lucky take up jammit
<balasankarc> ohk… my bad…i’ll take it…
<copyninja> every one it is good idea to search for the gem name in too
* balasankarc has quit (Quit: ajax IRC Client)
* balasankarc ( has joined #debian-diaspora
<copyninja> in case if some one already filed itp we shouldn’t duplicate their work
<balasankarc> so is it ok for me to take jammit?
<copyninja> balasankarc: as of now yes
<j4v4m4n> balasankarc: did you search in
<copyninja> gah give me irc network again j4v4m4n
<j4v4m4n> copyninja:
<j4v4m4n> copyninja: #piratepin
<copyninja> j4v4m4n: thanks
* copyninja will be on other window ajinkya_bhosale balasankarc if anything needed ping me
<balasankarc> no search results for jammit
<ajinkya_bhosale> copyninja:ok
<copyninja> balasankarc: go ahead
<balasankarc> copyninja: k
* Balu (~balasanka@ has joined #debian-diaspora
* balasankarc ( has left #debian-diaspora
<Balu> sorry..its me balasankarc… my chrome crashed…so now from xchat…so used the nickname balu
* Balu is now known as balasankarc
* vivek (~vivek@ has joined #debian-diaspora
<j4v4m4n> balasankarc: did you check in
<balasankarc> yup
<vivek> j4v4m4n: Hi
<balasankarc> no results
<j4v4m4n> vivek: hi
<j4v4m4n> balasankarc: looks clean then, follow the copyninja now :)
<balasankarc> j4v4m4n: i searched for jammit and got no results
<j4v4m4n> Sourezo: found anything? ajinkya_bhosale and where are you?
<balasankarc> how to follow him?
<j4v4m4n> balasankarc: follow what he says :)
<balasankarc> he isn’t saying anything… :)
<ajinkya_bhosale> yeah ..
<ajinkya_bhosale> i am working
<Sourezo> j4v4m4n: well, it looks like aws isn’t packaged. I even looked at
<copyninja> j4v4m4n: do you want them to start packaging first or ITP?
<ajinkya_bhosale> j4v4m4n: yeah .. working on what copyninja said to do . i’m little bit slow :-(
<copyninja> ajinkya_bhosale: that is fine
<j4v4m4n> Sourezo: look at too
<ajinkya_bhosale> j4v4m4n : i have one question .
<j4v4m4n> copyninja: itp :) yeah I know :) but we can reclaim all forgotten itps any time :) like I did two days back
<j4v4m4n> ajinkya_bhosale: shoot
<copyninja> balasankarc: i already gave a sample ITP for ajinkya_bhosale please follow same prepare a text document
<copyninja> and paste it some where I can see
<copyninja> use
<balasankarc> pls give the link again
<ajinkya_bhosale> copyninja :
<ajinkya_bhosale> copyninja : what is wnpp ?
<ajinkya_bhosale> copyninja : what it means ?
<copyninja> work needing perspective packages
<copyninja> s/perspective/prospective
<balasankarc> copyninja: pls give tht sample itp again
<copyninja> ajinkya_bhosale: what is that reported in Version: field?
<copyninja> balasankarc:
<copyninja> ajinkya_bhosale: try to keep one liner in Description: field
<copyninja> like multipart form addon to Net::HTTP or something similar
<copyninja> please read the readme of software and understand what exactly lib does before writing oneliner
<ajinkya_bhosale> copyninja: ok .
<copyninja> and on next line it would be good if you can provide the bit more description about the gem
<copyninja> unless if there is no more explanation like in the ITP i filed (link which I gave for reference)
<copyninja> Sourezo: which gem are you packaging?
<Sourezo> copyninja: aws
<copyninja> there is one ruby-amazon-ec2 in Debian see if its same
<copyninja> apt-cache show ruby-amazon-ec2
<copyninja> or !dpkg ruby-amazon-ec2 using
<copyninja> just type !dpkg ruby-amazon-ec2 in search field
<balasankarc> sorry, but i didnt get what i should do…as i said, i’m a newbie here
<copyninja> balasankarc: you should prepare an Intent to package first
<copyninja> as I said refer the link I gave prepare in similar format in a text file
<copyninja> paste it to and give me link like ajinkya_bhosale gave
<ajinkya_bhosale> copyninja: what should be the more description about the gem ? which points should be there ?
<copyninja> ajinkya_bhosale: if you can guide balasankarc it would be great
<copyninja> ajinkya_bhosale: see apt-cache show ruby-amazon-ec2
<copyninja> see the description
<copyninja> if you can provide similar description it would be good
<Sourezo> I didn’t see ruby-amazon-ec2, thanks. i’ll see if it’s the same
<copyninja> ajinkya_bhosale: place your own one liner in Description: field
<copyninja> combine Description: and FEatures: in github readme for the project in second paragraph
<balasankarc> what should i give on Upstream author, url and license
<ajinkya_bhosale> copyninja : ok .
<copyninja> balasankarc: please find out required fields from gem’s project page
* copyninja doesn’t know anything about jamit
<copyninja> Upstream Author is author who wrote jamit and license is what license author declared for jamit
<copyninja> url is place where you can download jamit
<copyninja> these are hints
* aslam ( has joined #debian-diaspora
<balasankarc> actually, i also dnt know what it is… then how do i know who is the author?
<copyninja> balasankarc: use the hints and find it out
<copyninja> balasankarc: try your google god ;)
* aslam has quit ()
<Sourezo> copyninja: the “aws” gem is, but ruby-amazon-ec2 is So it’s not the same :/
<copyninja> Sourezo: fine go ahead with filing itp then
<copyninja> use the same method I just told ajinkya_bhosale and balasankarc
<Sourezo> balasankarc: try, it could be the homepage
<Sourezo> ok copyninja
<balasankarc> ok sourezo…thnx…it was the one
<Sourezo> balasankarc: cool :)
<Sourezo> What if there’s multiple author ? Should we only fill in the main author ?
<copyninja> Sourezo: no you can separate with ,
<Sourezo> ok
<balasankarc> how to findout license?
<copyninja> balasankarc: search the same webpage dude
<ajinkya_bhosale> copyninja : here is the modified version of my previous ITP –
<balasankarc> in the sample u have, it is written OFL license…
<balasankarc> this is the license i found –
<copyninja> ajinkya_bhosale: seems fine to me now
<copyninja> you should create a mail now
<copyninja> ajinkya_bhosale: do you use gmail?
<ajinkya_bhosale> yes
<ajinkya_bhosale> copyninja : yes
<copyninja> while composing choose plain text
<copyninja> and paste this in text area
<copyninja> remember plain text don’t format using html
<ajinkya_bhosale> copyninja : ok .
<copyninja> ajinkya_bhosale: you have missed owner field
<Sourezo> balasankarc: this is the MIT License (see
<copyninja> Owner: should be your name and <email address>
<copyninja> balasankarc: link which I gave was only for reference
<copyninja> ajinkya_bhosale: check in link which i gave to see format of owner:
<balasankarc> copyninja:
<copyninja> balasankarc: owner: is empty please fill
<copyninja> second format it properly
<copyninja> long description restrict the line to 80 characters
<ajinkya_bhosale> copyninja :
<copyninja> meaning split it to multiple lines
<copyninja> balasankarc: important you should use : not =
<copyninja> ajinkya_bhosale: paste this in compose are of your mail
<copyninja> ajinkya_bhosale: subject should be ITP: ruby-multipart-post — provides multipart form post capabilities to Net::HTTP
<copyninja> once you are done with this let me know
<balasankarc> now –
<copyninja> balasankarc: after Description: give one extra line
<copyninja> I mean blan line before giving long description
<ajinkya_bhosale> copyninja : done
<copyninja> and if you can put : after word with one space it will be great :)
<copyninja> ajinkya_bhosale: hope you are using plain text and not html formatting
<copyninja> now put in To: field
<copyninja> and hit send
<ajinkya_bhosale> copyninya : i am using plain text .
<copyninja> Sourezo: how is your ITP coming?
<balasankarc> copyninja:
<copyninja> balasankarc: great!
<copyninja> now prepare a mail but remember to do it in plain text format
<ajinkya_bhosale> copyninja : done . your message has been sent :-)
<balasankarc> sorry… version was incorrect… corrected –
<balasankarc> in gmail?
<copyninja> balasankarc: remove “” ” from field values
<copyninja> balasankarc: in whichever your primary mail provider
<copyninja> balasankarc: why 0.5.4?
<balasankarc> what should be the content?
<copyninja> I see latest is 0.6.1
<copyninja> whatever you just created and showed me
<balasankarc> the one in is 0.5.4
<balasankarc> i chose that…
<j4v4m4n> balasankarc: change that :)
<balasankarc> is 0.6.1 already packaged?
<j4v4m4n> balasankarc: its like a rough sheet of paper, change anything that is not correct anymore :)
<balasankarc> in website, latest is .6.5… how do i know it is already packaged or not?
<balasankarc> *0.6.5
<ajinkya_bhosale> copyninja : i got mail with this subject line ” Message with no Package: tag cannot be processed!”
<Sourezo> copyninja: My ITP is almost ready. Should the Upstream author always provides email adresses with names ?
<copyninja> Sourezo: not necessary
<Sourezo> ok
<copyninja> ajinkya_bhosale: eh did you misspell Package:
<copyninja> ?
<ajinkya_bhosale> copyninja : i put space between package and colon ( : ) is it because of that ?
<copyninja> ajinkya_bhosale: may not be because of that
<copyninja> ajinkya_bhosale: but your paste doesn’t have space
<copyninja> try resending removing that space
<ajinkya_bhosale> ok
<j4v4m4n> ajinkya_bhosale: it has to be Package: without space
<ajinkya_bhosale> copyninja : ok .
<balasankarc> so mine is jammit 0.6.5… couldn’t find it in
<j4v4m4n> balasankarc: we are checking if a package is there in debian or not here
<j4v4m4n> balasankarc: if there is an older version we just have to update it
<j4v4m4n> balasankarc: no need to file itp
<j4v4m4n> balasankarc: so when you package it for the first time, you pick the latest version
<j4v4m4n> balasankarc: that pirate pad document was created sometime back and version there are indicative only, it should be updated if new versions are there
<balasankarc> so i searched, and couldnt find jammit…
<balasankarc> so i am clean to go, no?
<ajinkya_bhosale> copyninja : got the Acknowledgement mail .
<j4v4m4n> balasankarc: yes
<j4v4m4n> ajinkya_bhosale: what is bug url?
<ajinkya_bhosale> copyninja : with subject line – Bug#691051: Acknowledgement (ITP: ruby-multipart-post — provides multipart form post capabilities to Net::HTTP)
<Sourezo> copyninja: Here’s my ITP right now Isn’t the long description too long, and should it refers to “ruby gems” or “ruby library” ?
<balasankarc> what should be my subject line?
<copyninja> Sourezo: perfect ITP!
<j4v4m4n> ajinkya_bhosale: superb!
<ajinkya_bhosale> j4v4m4n : they have not sent any url in the mail
<copyninja> Sourezo: long description should give as much information as it can
<copyninja> Sourezo: ruby gem should be correct mail
<j4v4m4n> ajinkya_bhosale: you can just go to<bug number>
<copyninja> eh s/mail/word
<j4v4m4n> ajinkya_bhosale: now start packaging gem2deb multipart-post
<Sourezo> ok copyninja :)
<copyninja> Sourezo: please send a mail to as I told to ajinkya_bhosale just now
<balasankarc> i sent the mail as per instructions
<copyninja> balasankarc: okay wait for bugzilla to respond back with ACK
<Sourezo> I used « Library » in short description and let « gem » in the long one. Does it matter ?
<copyninja> j4v4m4n: I nove hand over 3 ITP’s to you ;)
<j4v4m4n> copyninja: you rock!!! thanks a lot!
<balasankarc> copyninja: ok
<copyninja> Sourezo: better use gem every where to avoid confusion
<copyninja> and I think in ruby term they call it gem than library
<Sourezo> ok copyninja, i’m correcting this
<copyninja> Sourezo: ok
<copyninja> j4v4m4n: no problem :)
<copyninja> j4v4m4n: i’m out of date on ruby packaging..
<balasankarc> got acknowledgement
<copyninja> j4v4m4n: would you be interested in taking over my 3 gem packages?
<Sourezo> Yep, they say gem, but the ruby-amazon-ec2 used « library », so I was a but confused. But ruby-amazon-ec2 may not be pure ruby, so…
<copyninja> j4v4m4n: which was long time back dependency of diaspora
<copyninja> Sourezo: possible
<Sourezo> s/but/bit/
<balasankarc> but whe i used plain text, my formatting is lost…should i send another mail?
<balasankarc> copyninja:but whe i used plain text, my formatting is lost…should i send another mail?
<ajinkya_bhosale> j4v4m4n : … got my bug nuber :-)
<j4v4m4n> copyninja: they are team managed :)
<j4v4m4n> copyninja: so when I get time I will update some gems
<j4v4m4n> copyninja: some people already updated some of the gems I uploaded :)
<j4v4m4n> ajinkya_bhosale: cool!
<j4v4m4n> ajinkya_bhosale: now run gem2deb command
<copyninja> j4v4m4n: true but I plan to orphan from my list as I don’t really get intrested in ruby
<cha1tanya> hey j4v4m4n can i work from fedora for debian packaging?
<j4v4m4n> cha1tanya: you can if you are ready for some adventures :)
<cha1tanya> :) ya
<balasankarc> j4v4m4n: my bug –
<j4v4m4n> cha1tanya: start with finding a gem ajinkya_bhosale balasankarc Sourezo can you help cha1tanya find a gem he can package?
<Sourezo> my mail to is sent (composed and adapted as described for ajinkya_bhosale)
<Sourezo> I’ll try, j4v4m4n
<ajinkya_bhosale> j4v4m4n : first i have to fetch gem of multipart-post . sudo gem fetch multipart-post . am i right ?
<j4v4m4n> balasankarc: awesome!
<j4v4m4n> ajinkya_bhosale: gem2deb does that for you
<j4v4m4n> ajinkya_bhosale: gem2deb multipart-post
<ajinkya_bhosale> h4v4m4n : i’m not getting
<j4v4m4n> ajinkya_bhosale: run the command ‘gem2deb multipart-post’
<ajinkya_bhosale> j4v4m4n : ok
<Sourezo> cha1tanya: looks like muli_xml isn’t packaged (i checked on and with different names like multi-xml, etc.) homepage is
<cha1tanya> Sourezo: i am thinking of sinatra
<j4v4m4n> cha1tanya: check if that is already packaged
<Sourezo> cha1tanya: there’s a ruby-sinatra package
<ajinkya_bhosale> j4v4m4n : Test “ruby1.9.1″ failed. Continue building the package? (Y/N)
<j4v4m4n> cha1tanya: use the sites he mentioned
<j4v4m4n> ajinkya_bhosale: ah!
<j4v4m4n> ajinkya_bhosale: you got an interesting package?
<j4v4m4n> :)
<ajinkya_bhosale> :-)
<cha1tanya> ya
<j4v4m4n> ajinkya_bhosale: use the full error message
<ajinkya_bhosale> j4v4m4n :
<balasankarc> j4v4m4n: got ma deb file
<j4v4m4n> balasankarc: wow! you’re lucky :)
<balasankarc> ruby-jammit_0.6.5-1_all.deb
<j4v4m4n> balasankarc: celebrate now :)
<j4v4m4n> balasankarc: but we need to do more polish on it
<balasankarc> k…
<j4v4m4n> balasankarc: check lintian on .changes file
<balasankarc> lintian?
<copyninja> j4v4m4n: better use lintian -iIEcv –pedantic –color auto
<copyninja> than just lintian or create an alias
<j4v4m4n> balasankarc: as copyninja says :)
<Sourezo> \o/ my ITP has been registered :
<j4v4m4n> balasankarc: its a command to check debian packages
<j4v4m4n> ajinkya_bhosale: /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require’: cannot load such file — test/multibyte.txt (LoadError)
<cha1tanya> Sourezo: j4v4m4n jasmine ?
<j4v4m4n> ajinkya_bhosale: looks like a package bug
<j4v4m4n> ajinkya_bhosale: gem bug I mean
<cha1tanya> i checked on
<balasankarc> j4v4m4n: did it
<ajinkya_bhosale> j4v4m4n : googling the error …
<j4v4m4n> ajinkya_bhosale: report it as n issue with upstream
<j4v4m4n> ajinkya_bhosale: or you can try to fic it too
<j4v4m4n> ajinkya_bhosale: like you are doing
<j4v4m4n> balasankarc: got many warnings and errors?
* cha1tanya (~user@ has left #debian-diaspora (ERC Version 5.3 (IRC client for Emacs))
<Sourezo> cha1tanya: I haven’t found any debian package for jasmine either. homepage is
<copyninja> Sourezo: nice please do gem2deb <gemname>
<balasankarc> j4v4m4n: ya
<copyninja> Sourezo: and hope for best ;)
<Sourezo> copyninja: ok :) I’m on my way to do it.
* Sourezo hope
<j4v4m4n> Sourezo: btw what is your diaspora profile?
<j4v4m4n> balasankarc: you have to fix those now
<Sourezo> j4v4m4n: it’s
<j4v4m4n> balasankarc: see;a=log and look for commitdiff to see the changes I made to another gem
<ajinkya_bhosale> j4v4m4n : in one post someone suggest to install ruby1.9.1-dev package . should i install ruby1.9.1-dev and then try
* j4v4m4n checking Sourezo’s profile
<j4v4m4n> ajinkya_bhosale: try that
<Sourezo> btw, should we build on debian stable ? I only have testing installation right now…
<j4v4m4n> ajinkya_bhosale: if that works, you’ll have to add that package as a build dependency in debian/control file
<Sourezo> hmm, never mind, I bet it’s a silly question…
<j4v4m4n> Sourezo: we are supposed to build on unstable
<copyninja> Sourezo: basically we build it on unstable
<j4v4m4n> Sourezo: but we can use tools like pbuilder
<copyninja> Sourezo: but I don’t know if gem2deb works now a days
<j4v4m4n> Sourezo: there is no silly questions :) only questions and answers
<Sourezo> is it ok whith testing or should I upgrade to unstable ?
<Sourezo> ok, thanks j4v4m4n :)
<j4v4m4n> Sourezo: work with what you have
<j4v4m4n> Sourezo: then use pbuilder to build on unstable
<j4v4m4n> Sourezo: before you upload
<copyninja> Sourezo: testing is fine.. there are tools like pbuilder cowbuilder sbuild which create clean chroot of unstable
<ajinkya_bhosale> j4v4m4n : ruby1.9.1-dev is already the newest version. :-(
<copyninja> for package building
<ajinkya_bhosale> j4v4m4n : i have to try something else
<Sourezo> ok j4v4m4n & copyninja, thanks
<balasankarc> j4v4m4n: my error –
<j4v4m4n> ajinkya_bhosale: try if you can find a solution, if not ask help from developers if the gem by reporting it as a bug/issue with full error message
<j4v4m4n> balasankarc: those are self explanatory :)
<ajinkya_bhosale> j4v4m4n : where to report bug ?
<balasankarc> where should i change them, like Uploader address etx
<balasankarc> *etc
<balasankarc> am i the uploader? or the author of jammit?
<ajinkya_bhosale> j4v4m4n : i don’t know much about ruby ? can i ask help to ruby irc channel ?
<j4v4m4n> balasankarc: oh yes
<j4v4m4n> balasankarc: you will have a ruby-jammit-version directory
<j4v4m4n> balasankarc: inside you have a debian directory
<j4v4m4n> ajinkya_bhosale: look at that gems homepage
<j4v4m4n> ajinkya_bhosale: not a good idea
<j4v4m4n> ajinkya_bhosale: if that gem has a specific irc channel you can
<j4v4m4n> ajinkya_bhosale: is the homepage on
<j4v4m4n> balasankarc: check debian new maintaner’s guide (search for it online) for description of each file inside debian directory
<ajinkya_bhosale> j4v4m4n : ?
<ajinkya_bhosale> j4v4m4n : what should now i look for ?
<j4v4m4n> ajinkya_bhosale: seach for that gem
<j4v4m4n> ajinkya_bhosale: in that page there will be a link to gem’s homepage
<j4v4m4n> btw can every one blog about what you learned today with steps?
<j4v4m4n> we can collect it as a tutorial for new people
<ajinkya_bhosale> j4v4m4n :
<ajinkya_bhosale> j4v4m4n : got it
<j4v4m4n> there will be option to report issues
<Sourezo> ok, I’ll try to blog it tomorrow, j4v4m4n

by Stultus at October 20, 2012 07:11 PM

October 19, 2012


On Democracy

Democracy is not about voting for representatives, nor was it ever so.
Neither Athens, nor the Swiss cantons which practiced democracy, had representatives.
Democracy means the power of the people, not the process of giving it up. Assuming, of course, that they had any power in the first place to give up.
The system of representation was the system used by ruling elites among themselves to best resolve their differences.
The Parliamentary system is so well loved because it protects the interests of the ruling elite well.
One chooses ones representative from the choice available based on the information and impressions which one has received from the press.
Since the rich control the media, they control the information and the “impressions” that the voters may have of the parties and candidates.
One does not vote for laws. One votes for a gang – yes, that is essentially what a political party is – and trusts them on the basis of what they have said and done in the past.
Unfortunately, this choice of gang is usually a choice of the “lesser evil”.
This trust in the parliamentary system is provenly misplaced.
The conservative and liberal parties of Germany voted for a dictatorship in 1933, just as the British Parliament voted for one when they handed all power to Cromwell after the English Revolution.
Present day events have shown the same pattern with European parliaments giving away their (the people’s?) sovereignty to a non-elected authority in Brussels and to the USA.

Please stop repeating the mantra that the parliamentary system has something to do with democracy.
It is a classic case of Orwellian newspeak.


Comment by Harry Haller  on Diaspora

by Stultus at October 19, 2012 04:46 AM

October 08, 2012

Pirate Praveen

Collecting people, some thoughts and ideas

I would like to share some ideas and thoughts about collecting people for social change based on my recent experiences in setting up a computing center in Pandav Nagar Pune. You can see details of each step here.

  1. Don’t restrict yourself to what you currently can. Aim bigger and then you’d see it natural to ask people for help because you can’t do it alone.
  2. Have a minimal backup plan which you can do if you don’t get much help. Things you cannot do should not stop you from doing things you can.
  3. These two may look conflicting ideas at first but they are not. You might already know about the high jump analogy people say – set your bars higher. Sometimes you won’t be able to cross it if its too high, but unless you don’t set it high, you’ll never reach new heights.

  4. Don’t be afraid of the challenges. There will be many, but if you don’t even try, you’ll never overcome those.
  5. When your actions affect others, be open to them. If you’re genuine they would understand.
  6. In this particular initiative there was always a risk that I won’t be able to find enough people to help me. So my backup plan was, I would teach alone if I don’t find people. I actually reached that stage once when no one was ready to commit after many talks. But I was pleasently surpriced and overjoyed when I saw a surge of interest from the Free Software community it Pune. It was really heart warming when you had a new person telling me they are interested every day for almost 2 weeks! We have about 14 people in the team and last Saturday 7 of us went to Hutatma Rajaguru school for our first class and installation session.

  7. You have to ask for help. If you don’t ask people won’t know they can help. Many of the times if you can ask for a specific help, it more likely that it would be done. Make it easier for people to understand and break down the big tasks.
  8. So when I was talking about a computing center people have many things in their minds and they may not understand what it is. But when I broke it down to “GNU/Linux installation in a school”, many people felt they could do it and said they want to help.

I will keep updating this blog as I learn more or get more ideas. Share your thoughts in comments. I would like to hear what you think and your experiences doing similar activities.

by Praveen A at October 08, 2012 02:29 AM

September 11, 2012

Pirate Praveen

Defend your rights NOW!

Aseem Trivedi is in jail fighting for our rights. It is now our responsibility to stand up for him and join this fight to defend our freedoms. He is being silneced because he spoke against the government for the people, for you and me. Our people have fought hard for years to secure our freedoms from British. Now the same freedoms are being taken away from us, by a few of our own people in power. It is now on us how we respond to this. Are you ready to join this fight to protect our freedoms?

I was fortunate to be with him when he was arrested and I met him when he was in police custody. I’m moved by his courage and don’t want to let his personal sacrifice for us, for you and me, to go waste. I need your help, comment here if you can help out any way. Its even better if you organize yourself. I’m sharing Aseem’s note here, which I was fortunate to have personally witnessed. His friend Alok Dixit, Mayank Gandhi from IAC and his lawyer Vijay Hiremat were also present.

This is the letter written by Aseem when he was in the police lock-up at Bandra Police Station in Mumbai.

साथियो, मैं इस देश का एक सच्‍चा नागरिक हूं। कोई देशद्रोही नहीं हूं।

साथियो, अगर सच बोलना देशद्रोह है तो मैं देशद्रोही हूं। हां, मैं देशद्रोही हूं अगर देशप्रेम और देशद्रोह की परिभाषाएं बदल चुकी हैं। मैं भी देशद्रोही हूं अगर गांधी, भगत सिंह और आजाद देशद्रोही थे। दोस्‍तो, मेरा मकसद देश का एक छोटा बच्‍चा भी समझ सकता है। मैं अपने देश के नागरिकों और संविधान के अपमान का विरोध करता हूं और अपने कार्टूनों के माध्‍यम से मैं देश के प्रतीकों और संविधान के अपमान का विरोध करता आया हूं। दोस्‍तो, कला और साहित्‍य समाज का दर्पण है और मैंने अपने कार्टून्‍स में वही दिखाया है, जो अपने चारों ओर देखा है।

दोस्‍तो, भारत माता कोई और नहीं बल्कि हम और आप जैसे भारत के 125 करोड़ नागरिक ही हैं। और हमारा अपमान भारत मां का अपमान है।

मेरी पूर्ण आस्‍था भारतीय संविधान और संविधान निर्माता डॉ अंबेडकर के साथ है। इसलिए संविधान का अपमान होता देख मुझे कष्‍ट होता है। और मैं अपने कार्टून्‍स के जरिये इसे रोकना चाहता हूं।

मैं गांधी के रास्‍ते पर चल रहा हूं और स्‍वयं को कष्‍ट देकर देश की सेवा करना चाहता हूं। मेरे जेल में होने से परेशान न हों। अन्‍ना जी कहते हैं कि देश के लिए जेल जाना तो हमारा भूषण है। इसलिए मैं जमानत नहीं मांग रहा। क्‍योंकि मैंने जो किया, उस पर मुझे गर्व है और मैं बार-बार करूंगा। मैं कोई अपराधी नहीं हूं कि पैसे जमा कर के जमानत लूं। जब तक देशद्रोह जैसा तानाशाही और ब्रिटिश राज का ये कानून नहीं हटाया जाएगा, मैं जेल में रह कर ही 124 (A) और सेंसरशिप के खिलाफ लड़ाई लड़ता रहूंगा।

असीम त्रिवेदी
बांद्रा पुलिस लॉक अप, 2:10 PM, 10.09.2012

This is the text of a statement issued by ASEEM TRIVEDI from inside a jail in Mumbai. Trivedi has been remanded to judicial custody till 24 September for displaying and publishing cartoons that are allegedly seditious, insult national honour and, under the IT Act, are “grossly offensive” and of “menacing character”.

Translation by Shivam Vij


I am a faithful citizen of this country, not someone who has committed sedition.

If speaking the truth is sedition, then I have indeed committed sedition. If raising one’s voice against injustice is sedition, then I have committed sedition. If nationalism and the definition of nationalism have changed, then you could say I have committed sedition. If Gandhi, Bhagat Singh and Azad were seditious so am I.

Even a small child of this country can understand my motive. I oppose the insulting of the people and the Constitution of India. I have been opposing the insulting of the people and the Constitution of India through my cartoons.

Art and literature are a mirror to society. I have only depicted in my cartoons what I have seen all around me. Mother India is nobody but 1.25 billion citizens of India, people like you and me. When we the people are insulted, India is insulted.

I have nothing but respect for the Constitution of India and its key drafter, Dr Ambedkar. I am pained when I see the Constitution insulted. Through my cartoons I seek to prevent exactly such affront.

I am walking in the footsteps of Gandhi and I want to serve the nation through my own suffering. Do not be disturbed by my going to jail. Anna Hazare ji says that going to jail for the country is like wearing a jewel. That is why I am not asking for bail. I am proud of what I have done. I will say this again and again. I am not a criminal that I will deposit some money to get bail. Until such time as sedition, an authoritarian British Raj law, is not repealed, I shall remain in jail. I will fight against Indian Penal Code Section 124A (sedition) and against censorship from within jail.


Aseem Trivedi
Bandra Police Lock-up,
10 September 2012, 2:12 PM

by Praveen A at September 11, 2012 01:33 AM

August 12, 2012

Pirate Praveen

GNUs found grazing at Palakkad Fort

I was supposed to be taking shell scripting session yesterday, but we couldn’t get a hall arranged and we had to cancel it. So I tought of meeting some students if they were interested. Three students from NSS Palakkad – Ashik, Manoosh and Lal Krishna, turned up 4 O’clock as announced. I could reach only at 4.30. We sat down inside Fort above the temple. We started discussing about problems they faced with Free Software. Ashik mentioned about mp3 not working with totem player on Debian Squeeze and codec install option not popping up. I’m not sure what is missing here. As per my information mp3 coded should be installed by default and totem should ask for codec installation. I told him to try wheezy, anyway they are computer science students and they should be the ones fixing these issues.

Ashik asked the often asked question of being rewarded for one’s hard work and being able to support oneself by selling software. I compared it to knowledge and asked them if Newton was asking money for using his third law (every action has an equal and opposite reaction) when launching rockets? Another example I gave was example of custom software, where some one will have to maintain it (like software for a bank). Free Software would not take away jobs in service industry.

Then they said to contribute to Free Software one should have another job. I asked them why someone go to a lawyer when they can argue their case themselves? They said its for expertise. I told them its the same way Free Software service work. Another example was how teachers help when students can read the text book themselves.

Then I asked them what do they know about Free Software. They had some confusion about how Open Source is different from Free Software. I gave up insisting people use Free Software instead of Open Source sometime back itself. I tell them to understand the difference and choose what they feel comfortable associating themselves with. I also told them to look online for the difference and understand it. Let’s see if they come back with more questions.

At 6 they were closing the inside gate to the Fort. The security guy lost a bit of cool and asked us what did we think when he was visling whether he was calling us for food :) We clearly were at fault as we knew they would close at 6, so I didn’t argue and smiled at his words.

Adhil joined us by then and we continued our discussion about difference between Open Source and Free Software. Some one told them Open Source means some part is hidden and Free Software means everything is free!

For explaining the difference I had to ask them about copyrights. We discussed origin of copyrights and how it is different from a patent. Copyright prohibits copying same code (it doesn’t apply when same thing is created independantly) where as patents prohibit implementing same ideas by different people without license from patent holder.

Then we discussed what licenses are and compared it with a driving license. There are certain conditions for a driving license like you have to follow traffic rules. I told them every license has conditions attached to it. Free Software Foundation and Open Source Initiative both maintain a list of licenses which match their definitions of Free Software and Open Source. Except for one rarely used license every other license on both lists match and practically all Open Source Software are also Free Software. The difference is in their philosohies. When people say Open Source they are interested in the practical aspects only and they don’t want to talk about Freedom.

We also discussed about a program on Septermber 29th in memory of first anniversery of losing our dear friend Jinesh to Lukemia. We will publish a book of his writings and also organize an SMC get together. I also told them we would like the new folks to take initiative and conduct this program. They have offered to take session on introducing Free Software and Malayalam computing. They have also offered to promote this event in their college. I have suggested them to use slidify and latex/beamer to make their presentations.

Ashik and Adhil opened their fast and we joined them for lime juice and samosa. We ended the meeting there. Hoping to see more involvement from them. I hope they will contact me when they get stuck somewhere.

Update 1: Added link to Lal Krishna’s blog.

Update 2: Lal Krishna’s post on the meeting

Update 3: Ashik’s post on the meeting

by Praveen A at August 12, 2012 04:43 PM

August 08, 2012


How to fake Google Doodle game score

For last few days, Google is creating simple games as Doodles, and everyone is going nuts behind it. My friends are fighting each other to get high score. I thought why can’t I fake it. I faked and shared with believale value, by simple HTML edit. At the same time, one of my friend shared a screenshot, with an unbelievable value, using Chrome’s default inspect element tool. He couln’t able to produce G+ post as evidence. Because when sharing to Google+, it is not taking value from div element.

Google Doodle Game hurdles

I took that as a challege, again faked it, but now with proof.
Few of my friends asked me how to do it, and here is how.

Google doodle game

First of all, you need Firebug (I guess, same is possible with Chrome’s default Inspect element tool). Follow the steps

1. Open or any other local google domain.
2. Play Game

3. When showing score, click G+ share.

4. Right click on the element which shows your score and click Inspect element with Firebug.

5. Find src pararmeter of iframe.

Following are the decoded parameters from the src javascript element.{"items":[{"type":"","id":"","properties":{"description":["I played basketball! #GoogleDoodle — Score: 16"],"url":[""],"name":["Basketball"],"image":[""]}}]}&prm=md&sts=h5m1wzh1&susp=true&wpp=1&jsh=m;/_/abc-static/_/js/gapi/__features__/rt=j/ver=QjqA6j1hPhE.en./sv=1/am=!y-LKr2sJxIeZAIaJUQ/d=1#id=I1_1344408175776&parent=,_close,_open,_resizeMe,_renderstart" name="I1_1344408175776" id="I1_1344408175776" vspace="0" tabindex="0" style="" marginwidth="0" marginheight="0" hspace="0" allowtransparency="true"

Score and image parameter are what we need to edit. For the image parameter, “basketball12-hp-share1.png” is the image with 1 star, and basketball12-hp-share2.png, basketball12-hp-share3.png for 2 and 3 star respectively.

6. Edit it to what ever you like. (You can also edit by right click and selected edit HTML, But I found that G+ share de-activates if you do that.)

7. Done!

by Jishnu at August 08, 2012 07:07 AM

July 29, 2012


Google G|India 2012 Chennai

I got chance to attend G|India 2012 Chennai edition. Here are my selected tweets from the event.

Session: Key Note

Session: App engine

Session: G+ API

Session: Engineering opportunities

Session: Panel Discussion- Product development challenges

My Conclusions

by Jishnu at July 29, 2012 08:33 AM

June 17, 2012


Top 15 must have Chrome extensions

Here is my list of top Chromium or Google Chrome extensions.

Adblock Plus

adblock chrome extension

Adblock Plus is a community-driven open source project that aims to make the internet better for everyone. It was originally created for the Firefox browser and with more than 100 million downloads it has become the most popular browser extension in the world. They are now offering Adblock Plus for Google Chrome as well and the community is working hard to produce the same value you know from the Firefox version.

Install Adblock Plus

Better History

Better history for chrome

This extension replaces the default history viewer and give a better look at your browsing history. It provides best searching, the sharpest interface, and the most useful filters – for your history.

Install Better History


Clearly for Chrome

Clearly makes blog posts and articles clean and easy to read. Clearly eliminates all distractions from your online reading experience, and even allows you to browse multi-page articles in one, seamless view.

Install Clearly


Context for Chrome

Take a look at your extensions, do you really use all of them all the time? Rather not. Do you know that these unused extensions are taking resources and space from you? They may also bug you with distracting icon animations and notifications. With Context you can stop that. Simply put extensions that you use for work, fun, shopping, socializing etc. into different groups (“contexts”) and with one click switch between them.

Install Context

RSS Feed Reader

RSS Feed Reader for Chrome

A simple and pretty way of keeping track of your latest RSS and Atom feeds. The best RSS Feed Reader extension for Chrome.

Install RSS Feed Reader

RSS Subscription Extension (by Google)

RSS Subscription

RSS feature is default on almost all browsers, but in chrome we need this extension. This extension auto-detects RSS feeds on the page you are reading and upon finding one will display an RSS icon in the Omnibox, allowing you to click on it to preview the feed content and subscribe.

Install RSS Subscription Extension


SearchO for Chrome

SearchO makes it super-easy to switch among the most widely used search options, so that searching the same terms on different search engines is just one-click away. Also we can define our own custom search websites.

Install SearchO


StayFocusd for Chrome

StayFocusd is a productivity extension for Google Chrome that helps you stay focused on work by restricting the amount of time you can spend on time-wasting websites. Once your allotted time has been used up, the sites you have blocked will be inaccessible for the rest of the day.

It is highly configurable, allowing you to block or allow entire sites, specific subdomains, specific paths, specific pages, even specific in-page content (videos, games, images, forms, etc).

Install StayFocusd

Awesome Screenshot

Awesome Screenshot for Chrome

Screenshot tool to capture the whole page or any portion, annotate it with rectangles, circles, arrows, lines and text, blur sensitive info, one-click. This one is the most feature rich screenshot app for Chrome.

Install Awesome Screenshot

Session Buddy

Session Buddy for Chrome

This extension help to view and save the state of all open browser tabs in the current or past browser sessions. Quickly restore your tabs and resume your web surfing after a browser or system crash. Also edit the sessions you’ve saved and restore them into the desired set of windows at any time.

Install Session Buddy


PanicButton for Chrome

PanicButton makes it easier for you to hide all of your tabs at once just by clicking on a button. They are then saved as bookmarks in a separate folder. Afterwards, the PanicButton turns green and shows you how many tabs are currently hidden.

Install PanicButton

Speed Dial 2

Speed Dial 2 for Chrome

Speed dial 2 is an extension which replaces original New tab page. Save your favorite pages in one place with quick access to apps, bookmarks and browsing history.

Install Speed Dial 2


Any.DO is basically a to-do list manager that helps you remember everything you have to do.

Install Speed Dial 2

Keep MORE Opt Outs

Permanently opts your browser out of online ad personalization via cookies for over 150 tracking companies
This extension is based on Google’s “Keep My Opt Outs” extension, which covers around 60 tracking companies.

Install Keep MORE Opt Outs

Facebook Disconnect

Facebook is notified whenever you visit one of the more than one million sites on the web that use Facebook Connect and has a history of leaking personally-identifiable information to third parties. Turn off the flow of your data to them! Facebook Disconnect blocks all traffic from third-party sites to Facebook servers but still lets you access Facebook itself.

Install Facebook Disconnect

by Jishnu at June 17, 2012 05:44 PM

May 02, 2012

Pirate Praveen

An idea for revolution

I wrote this as I was traveling to MES Kuttippuram, Kerala for Debian Utsavam. I read it out before I strted my session.

“I start with an idea today. I will tell you and you tell me what do you think about it.

I would like all of you to write about this two day event – how did you hear about it, what was good, what was bad, how to mke it better next time, what you learned, how you are going to use what you learned, how you are going to teach others…

If you have a blog, post about it, if you wish to start a blog, start now, ask people who already post about how it is. Or if you don’t want a blog, just write an email to any mailing list, smc, debian, mes fsug, or even add it directly in the wiki, read what others have written and comment on it, add all links to wiki, create a press release as a team. These are possible, it all depends on our will, today lets make a small history make this two days memorable for ever, not just for you, but a wonder and inspiration for so many. It is possible, and much more is possible, challenge ourselves not limit. I would be happy if some of you start maintaining packages, very happy if all of you do it, I would happy if you teach other to package and teach them to teach others :) this is how we write history, this is what revolution is, when people realize how much they are capable of and start acting like they believe in themselves and shed all their fears, just see how Tahrir Square changed history or Egypt. You believe you are part of something great and you belive you are making a difference and you tell others what you believe and what you do and you will see the difference. And we achieve something it will energize us to do even more. You might know the story of birds trapped in a net, there is a song in Vietnam Colony how they escape. This is our inspiration to change things together and build a new world based on collaboration. You can decide it today.”  

by Praveen A at May 02, 2012 01:54 PM

April 30, 2012

Pirate Praveen

Debian Utsavam at MES Kuttippuram, Kerala


I was thinking about another Kerala trip as my friend and NIT Calicut classmate Pramod invited me for his marriage on 1st May. Since it is a long trip of more than 24 hours from Pune to Kerala by bus, I thought I should plan some Free Software talk so that I have more motivation for such a hard trip. I was very happy to see great enthusiasm for gnome release party on my last visit.

debian folks

Group Photo of Debian Utsavam participants

I asked a few people if it would be possible to organize something on such a short notice. I was happy to get a positive response and we fixed the event for 28th and 29th at MES college of Engineering, Kuttippuram. But I can reach there only on Sunday if I leave Pune on Friday and take one day transit in Bangalore (I take this option because I get to meet my friends during day and I have to travel only at night). I asked around if someone can volunteer to take some basics session on Saturday so that particiants will be ready for the packaging session on the next day.

Nakul readily volunteered to take command line and shell scripting sessions. Since Ershad was coming, he agreed to take Free Software introduction. I have to mention his great grassroots Free Software promotion work here. Though he doesn’t post much about it on smc or plus lists I came to know about it from people who attended the sessions. (A request to Ershad to blog and talk about it on mailing lists). Since Labeeb was also there in Kerala he agreed to introduce Debian.

Haris volunteered to take a session on building from source. He is very enthusiastic and he writes beautiful blogs. Read his account of the two days here.

Since I was not present on day 1 you can read about it from Haris’ blog. Raju sir told me I could stay with him and I went to his place directly on Sunday morning. I reached Mannuthi at 3.45 am and he picked me up. I slept a bit and after breakfast we came to MES. One thing I really liked there was the fluroscent moon and star (I guess there were planets too) stickers on the wall! You feel like you are watching the sky at night!

We reached MES by 10.20 and they had already started discussing about personal privacy and tracking on the internet. I started with reading a note I wrote the previous night in the bus.

Read the full note here.

I asked them about what they learned on the previous day and I asked them a few questions like why we need to package software, who creates packages etc. I started discussing basic ideas around a package’s lifecycle from upstream tarball to a stable release. A few points I covered include “how and when a package first enters debian. Concepts of RFP, package maintainer, team maintained packages etc were covered.”


There are many Free Software projects out there and role of a distribution like Debian is to provide a collection of these software in an easy to distribute and manage format. Distributions like debian make sure the software is in good condition and pass it through thorough testing before it is given out as a supported software. Since there are many distributions out there with different policies and packaging formats (deb, rpm, ebuilds etc). Also each of this distributions may be including different versions of its dependencies. So people specialising in packaging makes the job of upstream developers easier by making an easy to install version of the software available. Distributions include many Free Software but every day more Free Software is released. So who creates these debian packages? How does a person ready to create a package know there is a new software? What do one do when a software they need is not available as a package? How can one install such a software if it is not packaged?

Package life cycle in Debian

Life cycle of a Software in Debian

Most Free Software projects release their work as a tarballs – a compressed file of all the source code with instructions to compile them. Many times people read about new software from news sites and some of them savvy enough start building it from source. If you are already familiar with development tools it may not be difficult to do. Some of those users may create a debian package. Sometimes people just request a software to be packaged. It is done by submitting a wishlist bug against ‘wnpp’ pseudo package. wnpp stands for Work Needing and Prosective Packages. Such requests for packages are commonly referred as RFPs. So there are two ways a package enters debian.

1. Some one who know about debian packaging creates a debian package from a source tarball provided by upstream developers.

2. Someone files an RFP in debian bug tracking system and people come to know about it via wnpp and then creates a package.

For small packages a single person may create a debian package alone and maintains it by providing newer packages when some bug is fixed or a new version is released. Sometimes there are many applications created by one project (eg GNOME, KDE) or packages are similar (for example packages written in one particular language like perl, python, ruby) or they are used in one particular area (for example software useful for medical doctors or useful in schools), in these situations a team maintains these packages.

I really like this team maintenance idea because you can help updating any package when you have time and other team members take care of it when you are busy. With teams distributed around the world most of the time there is someone available usually to take care of the packages. But more hands to help is always welcomed by the teams as it helps spread the load to more people and reduces work for each person.

“when does a package move to testing. Package priority and condition of release critical bugs were explained.”

All packages are normally uploaded to unstable branch. When a package is uploaded, their maintainer tells how important this upload is. For normal uploads a priority of ‘low’ is set and for critical fixes ‘medium’ and for security fixes ‘high’ priorities are used. Packages are kept for review in unstable branch for 10 days for low priority packages, 5 days for medium priority packages and 2 days for high priority packages.

Many people including this author use unstable distribution as their main operating system every day. When they encounter bugs they report them. I have to clarify what unstable means here, it means always changing and each software itself is stable (either the upstream developers or debian developers decide it is stable enough for every day use). For software which not stable for every day use experimental branch is used.

After 10, 5 or 2 days depending on package’s priority their status is checked (this is done by a software called britney) to see if they can be moved to testing branch. First condition it checks is if there is any release critical bug reported against this package. Second condition is its dependencies are already in testing. If both these conditions are met it will be moved to testing. So new packages keep coming to unstable and testing all the time except when testing is frozen for next release. So we can call both unstable and testing branches as rolling releases.

Every time a stable version is released goals for next stable release is set by the project after discussions with different teams. Each team may want a particular version of their software in the next release or project as a whole may decide on a new feature. These release goals are collected by release team and published early in the release cycle. When testing is very close to achieving these release goals release team declares testing is frozen.

At this point britney keeps all packages in unstable and only bug fixes are allowed into testing. Sometimes release team allows a few exceptions, but usually freeze time is spent on fixing bugs by all developers. When all release critical bugs are fixed in testing a copy of testing is released as stable. At this time normal movement of packages from unstable to testing is resumed and preparation for next stable release starts. Stable release is officially supported by the project and recieves security updates only, no new versions are uploaded into stable.

“when does it goes to stable. I told them about release goals and freeze. I told them we release when we are ready and that means zero release critical bugs.”

This time I did not take my favorite package lekhonee-gnome and instead I chose to introduce gem2deb tool. We took mixlib-log gem and easily created a deb file with just one command gem2deb mixlib-log. But there was a catch, they were running squeeze and gem2deb was not present in the normal repositories.

I just told them to install gem2deb, some people tried to install it from sid repo but failed matching correct dependencies (most of systems had a messed up sources.list file, presumably from yesterday’s apt session). Some figured they can install it from source and they downloaded gem2deb tarball from github and followed instructions in README file to build it. First application of what they learned yesterday. And dpkg-buildpackage -us -uc command given there came in very handy when they had to rebuild mixlib-log package.

Every one created a deb package with one easy command ‘gem2deb mixlib-log’. On some systems proxy was not set correctly so gem2deb could not download the gem file using ‘gem fetch mixlib-log’. So gem file was downloaded from and them gem2deb was run against this file.

Every one used lintian to check what is missing in packaging as per policy and they used help of New Maintainer’s Guide to fix those errors and warnings.

[TODO] chosing a new gem file to package or update to gem2deb based packaging.

(Posting it as incomplete, I may add more points and few more details later)


  1. Wiki page of the event
  2. Photos
  3. Debian Handbook – a complete book on Debian


30/04/2012: First draft, outline

01/05/2012: Expanded on debian development stages

02/05/2012: added link to Haris’ blog, editing changes, splitted big paragraphs to small paragraphs.

03/05/2012: Link to the note I wrote added.

10/05/2012: Diagram from Debian Handbook describing the release process added.

PS: I think, I better make a book out of it because its going to be a big post otherwise :)

Note: I was just trying to dump my thoughts as I wrote this and I was in a hurry on the way to a friend’s wedding, plus it was typed in my almost-dead ‘first android phone’ my phone. So excuse if you see anything not in place. Thanks to Shirish for some corrections.

by Praveen A at April 30, 2012 07:18 PM

March 10, 2012

Santhosh Thottingal

New version of Malayalam fonts released

Swathanthra Malayalam Computing project announced the release of new version of Malayalam unicode fonts this week. In this version, there are many improvements for popular Malayalam fonts Rachana and Meera. Dyuthi font has some bug fixes. I am listing the changes below.

  1. Meera font was small compared to other fonts. This was not really a problem in Gnome environment since fontconfig allows you to define a scaling factor to match other font size. But it was an issue in Libreoffice, KDE and mainly in Windows where this kind of scaling feature does not work. Thanks to P Suresh for a rework on glyphs and fixing this issue.
  2. Rachana, Meera and Dyuthi had wrong glyphs used as placeholder glyphs. Bugs like these are fixed.
  3. Virama 0D4D had a wrong LSB that cause the cursor positioning and glyph boundary go wrong. Fixed that bug
  4. Atomic Chilu code points introduced in Unicode 5.1 was missing in all the fonts that SMC maintained because of the controversial decision by Unicode and SMC’s stand against that. Issues still exist, but content with code point is present, to avoid any difficulties to users, added those characters to Meera and Rachana fonts.
  5. Rupee Symbols added to Meera and Rachana. Thanks to Hiran for designing Sans and Serif glyphs for Rupee.
  6. Dot Reph(0D4E) – The glyphs for this was already present in Meera but unmapped to any unicode point. GSUB Lookup tables added to the glyphs according to unicode specification.

For a more detailed change description see this mail thread. There are some minor changes as well.

Thanks to Hussain K H (designer of both Meera and Rachana) , P Suresh, Hiran for their valuable contribution. And thanks to SMC community and font users for using the fonts and reporting bugs. We hope that we can bring this new version in your favorite GNU/Linux distros soon. Wikimedia’s WebFonts extension uses Meera font and the font will be updated there soon. Next release of GNU Freefont is expected to update Malayalam glyphs using Meera and Rachana for freefont-sans and freefont-serif font respectively. We plan to update other fonts we maintain also with these changes in next versions. There are still some glyphs missing in these fonts with respect to the latest unicode version.


by Santhosh at March 10, 2012 01:24 PM

February 12, 2012

Anivar Aravind

ഇന്ത്യയുടെ അദൃശ്യ ഇന്റര്‍നെറ്റ് സെന്‍സര്‍ഷിപ്പ്

അനിവര്‍ അരവിന്ദ്

മാധ്യമം ആഴ്ച്ചപ്പതിപ്പ് 2012 ഫെബ്രുവരി 13

സെന്‍‌സര്‍ഷിപ്പ് എന്നു തെളിച്ചു പറയാതെ ഇന്റര്‍നെറ്റ് സെന്‍‌സര്‍ ചെയ്യാനുള്ള ഇന്ത്യാ ഗവണ്‍‌മെന്റിന്റെ ശ്രമങ്ങള്‍ സജീവമാവുകയാണ്. ഐ.ടി ആക്‌റ്റ് 2008 ന്റെയും കഴിഞ്ഞ വര്‍ഷം ഏപ്രിലില്‍ പുറത്തുവന്ന ‘ഇന്റര്‍മീഡിയറി ഗൈഡ്ലൈന്‍സ് റൂള്‍സ്’ എന്ന നോട്ടിഫിക്കേഷനിലുടെയും ഈ ശ്രമം പകുതി വിജയിച്ചു കഴിഞ്ഞു. സോഷ്യല്‍ നെറ്റ്‌വര്‍ക്കുകളില്‍ പോസ്റ്റ് ചെയ്യുന്ന വിവരങ്ങള്‍ക്ക് ‘സ്വയം നിയന്ത്രണം’ കൊണ്ടു വരണമെന്ന പ്രസ്താവനയും വിവരങ്ങളുടെ നശിപ്പിക്കല്‍ ഉടന്‍ സാധ്യമാക്കാനുള്ള ഒരു കൂട്ടിച്ചേര്‍ക്കല്‍ കോപ്പിറൈറ്റ് നിയമത്തില്‍ കൊണ്ടുവരാനുള്ള ശ്രമങ്ങളും ഒക്കെയായി  സെന്‍സറിങ്ങിന്റെ എല്ലാ തെളിവുകളും കൂടി നശിപ്പിച്ചു കളയാനുള്ള ശ്രമങ്ങള്‍ വിവരവിനിമയ സാങ്കേതികവകുപ്പു മന്ത്രി കപില്‍ സിബലിന്റെ നേതൃത്വത്തില്‍ സജീവമായി നടക്കുന്നു.

കൂട്ടത്തില്‍ എരിവുകൂട്ടാനായി ദല്‍‌ഹി ഹൈക്കോടതിയില്‍ 21 ഇന്റര്‍നെറ്റ് കമ്പനികള്‍ക്കെതിരെ ‌_അക്‌ബാരി_ എന്ന ഉര്‍‌ദു പത്രത്തിന്റെ പത്രാധിപര്‍ വിനയ് റായ്‌ കൊടുത്ത കേസും. ഇന്റര്‍നെറ്റിനുമേല്‍ അമേരിക്കന്‍ ഭരണകൂടം കൊണ്ടുവരാന്‍ ശ്രമിക്കുന്ന SOPA, PIPA നിയന്ത്രണങ്ങള്‍ക്കെതിരെ വെബ്‌സൈറ്റ് അടച്ചുപൂട്ടി ഇന്റര്‍നെറ്റ് ലോകം സമരം പ്രഖ്യാപിച്ച അതേ സമയത്തുതന്നെയാണ്‌ ഇന്റര്‍നെറ്റിലെ അഭിപ്രായസ്വാതന്ത്ര്യത്തിനു കൂച്ചുവിലങ്ങിടാനുള്ള ശ്രമങ്ങള്‍ ഇന്ത്യയില്‍ ശക്തി പ്രാപിക്കുന്നത്.

ആശയപ്രകാശനത്തിന്റെ പുതുവഴി വെട്ടിത്തുറന്ന്, തൊണ്ണൂറുകളുടെ അവസാനത്തോടെ ഇന്ത്യക്കാര്‍ക്ക് പരിചിതമായിത്തുടങ്ങിയ ഇന്റര്‍നെറ്റിന്റെ ഇക്കഴിഞ്ഞ ദശാബ്‌ദം നമുക്കുമുന്നില്‍ തുറന്നുതന്നത് ആശയവിനിമയത്തിന്റെയും അവനവന്‍ പ്രസാധനത്തിന്റെയും കൂട്ടായ വിവരനിര്‍‌മ്മിതിയുടെയും പുതിയ സാധ്യതകളായിരുന്നു. ഇന്റര്‍നെറ്റിന്റെ ഈ പടര്‍ന്നുകയറല്‍ നമ്മുടെ അച്ചടി-ദൃശ്യ മാധ്യമങ്ങള്‍ മറച്ചുവെക്കാന്‍ ശ്രമിച്ച പലതും തുറന്നുവെച്ച് ചര്‍ച്ചയാക്കി. സ്വതന്ത്ര ആശയപ്രകാശനത്തിന്റെ തള്ളിച്ചയും വാര്‍ത്തകളെ നിയന്ത്രിക്കാനുള്ള ഭരണകൂട ശ്രമങ്ങളുടെ പരാജയവും പല സ്വേച്ഛാധിപതികളുടെയും ഉറക്കം കെടുത്തി. ഒരു ഭാഗത്ത് പുതിയ സഹവര്‍ത്തിത്വത്തിന്റെയും കൂട്ടായ്‌മകളുടെയും നിര്‍മ്മാണത്തിന്‌ ഇടംനല്‍കി ഇന്റര്‍നെറ്റ് പടര്‍ന്നപ്പോള്‍ ചൈനപോലെ പല രാജ്യങ്ങളും അതിനെ സ്വന്തം വരുതിക്ക് കൊണ്ടുവരാന്‍ കടുത്ത നിയമങ്ങളും ഫില്‍‌റ്ററിങ് ശ്രമങ്ങളുമൊക്കെ ഏര്‍പ്പെടുത്തിനോക്കി. കുത്തക മാധ്യമ ഭീമന്മാര്‍ ഗവണ്‍‌മെന്റുകളെ സ്വാധീനിച്ച് കരിനിയമങ്ങളുണ്ടാക്കി ഇന്റര്‍നെറ്റ് വഴിയുള്ള പങ്കുവെക്കലുകളെ തടയാന്‍ ശ്രമിച്ചു.

2010 ഓടെ, _വിക്കിലീക്സി_ലൂടെ വിവരജനാധിപത്യത്തിന്റെ വിസ്‌ഫോടനങ്ങള്‍ കണ്ട ജനാധിപത്യ രാജ്യങ്ങള്‍ ഇന്റര്‍നെറ്റിനെ നിയന്ത്രിക്കാന്‍ ശ്രമങ്ങള്‍ സജീവമാക്കി. 2011 വിവരജനാധിപത്യത്തിന്റെ യഥാര്‍ത്ഥ പോര്‍‌മുഖങ്ങള്‍ ദര്‍‌ശിച്ച വര്‍ഷമായിരുന്നു. വിക്കിലീക്സിനെതിരെ ഇന്റര്‍നെറ്റ് കമ്പനികളെയും ബാങ്കുകളെയും ഉപയോഗിച്ച് അമേരിക്കന്‍ ഭരണകൂടം നടത്തിയ പോര്‍‌വിളികളെ കൂട്ടായ്മയുടെ സംഘബലത്തില്‍ ചെറുത്തുതോല്‍‌പിച്ചതില്‍ നിന്നുതുടങ്ങി, അറബ്‌വസന്തത്തിന്റെ മാധ്യമമായി മാറിയതിന്റെ നേര്‍‌ക്കാഴ്ച്ചകളിലൂടെ സഞ്ചരിച്ച്, അമേരിക്കയുടെ മൂക്കിന്‍ തുമ്പിലെ വാള്‍‌സ്ട്രീറ്റ് പിടിച്ചെടുക്കലിലെത്തി കേന്ദ്രരഹിത ജനസഞ്ചയ വിപ്ലവങ്ങളെ സാധ്യമാക്കുന്ന പ്രധാനഘടകമായി വളരുകയായിരുന്നു ഇന്റര്‍നെറ്റ്. ഇതോടെ അതിനും അതിലെ സോഷ്യല്‍ നെറ്റ്‌വര്‍ക്കുകള്‍ക്കും കൂച്ചുവിലങ്ങിടാന്‍ അമേരിക്കമുതല്‍ ഇന്ത്യ വരെ എല്ലാ രാജ്യങ്ങളും ശ്രമിക്കുന്ന കാഴ്ച്ചയാണിന്ന് നമ്മള്‍ കാണുന്നത്.

ഇന്ത്യയുടെ ഇന്റര്‍നെറ്റ് ഭരണം

ഇന്റര്‍നെറ്റും അതിനുമീതെയുള്ള ഭരണകൂടനിയന്ത്രണവും ഇന്ത്യയില്‍ ചര്‍ച്ചയാകാന്‍ തുടങ്ങുന്നത് 1999ല്‍ കാര്‍‌ഗില്‍ യുദ്ധസമയത്ത് പാകിസ്താനി പത്രമായ _ഡോണി_ന്റെ വെബ്‌സൈറ്റ് രാജ്യത്ത് നിരോധിച്ചതോടെയാണ്‌. 2003ല്‍ ഒരു നോര്‍ത്ത് ഈസ്റ്റ് പ്രസ്ഥാനത്തിന്റെ യാഹൂ ഗ്രൂപ്പ് നിരോധിച്ചതും ചര്‍ച്ചയായി. അതിനുശേഷം ഇന്ത്യാഗവണ്‍‌മെന്റ് ഓരോ ഭീകരാക്രമണങ്ങളും ഇന്റര്‍നെറ്റിനെയും മറ്റു കമ്യൂണിക്കേഷന്‍ സൗകര്യങ്ങളെയും നിയന്ത്രിക്കാനുള്ള വടിയായാണ്‌ കണ്ടത്. 2006ല്‍ മും‌ബൈ ഭീകരാക്രമണത്തിനു പിന്നാലെ ബ്ലോഗ്‌സ്പോട്ട്, ടൈപ്പ്‌പാഡ് ബ്ലോഗുകള്‍ അപ്പാടെയും യാഹൂ ജിയോസിറ്റിസ് എന്ന വെബ്‌സൈറ്റുകള്‍ നിര്‍മ്മിക്കാന്‍ ഇടം നല്‍കിയിരുന്ന സര്‍‌വീസും അടക്കം 17 വെബ്‌സൈറ്റുകള്‍ ഇന്ത്യയില്‍ നിരോധിക്കപ്പെട്ടു. ബ്ലോഗര്‍മാര്‍ ഇതിനെതിരെ ‘ബ്ലോഗേര്‍സ് എഗൈന്‍സ്റ്റ് സെന്‍സര്‍ഷിപ്’ എന ഗ്രൂപ്പുണ്ടാക്കി സമരം തുടങ്ങുകയും ഈ ബ്ലാങ്കറ്റ് ബാന്‍ പിന്‍‌വലിക്കപ്പെടുകയും ചെയ്‌തു.

പാര്‍‌ലമെന്റ് ചര്‍ച്ചകൂടാതെ പാസാക്കിയ ഐ.ടി ആക്‌റ്റ് 2008 ഇന്റര്‍നെറ്റ് സെന്‍സര്‍ഷിപിനും ആക്റ്റ് ഉപയോഗിച്ചുള്ള അപകീര്‍ത്തിക്കേസുകള്‍ക്കും നിലമൊരുങ്ങി. പുണെപൊലീസും ബാല്‍‌താക്കറെയും നരേന്ദ്രമോഡിയും സോണിയാഗാന്ധിയും വരെ ഈ വാളെടുത്ത് വെളിച്ചപ്പാടായി. സോഷ്യല്‍ നെറ്റ്‌വര്‍ക്കുകളിലെ ആശയപ്രകാശനത്തിനു ക്രിമിനല്‍ നടപടികള്‍ കൊണ്ട് കൂച്ചുവിലങ്ങിടാന്‍ ആവോളം ശ്രമം നടന്നു. ഗൂഗ്‌ള്‍ ട്രാന്‍സ്പെരന്‍‌സി റിപ്പോര്‍ട്ട് പ്രകാരം ഇങ്ങനെയുള്ള സ്ന്‍സര്‍ഷിപ് ശ്രമങ്ങളില്‍ വന്‍ വര്‍ധനയാണ്‌ ഇക്കാലത്തുണ്ടായിട്ടുള്ളത്.

ഐ.ടി ആക്‌റ്റിന്റെ 69എ വിഭാഗം അനുസരിച്ച് സര്‍ക്കാരിന് ഇപ്പോള്‍തന്നെ സെന്‍സര്‍ഷിപ് അവകാശങ്ങളുണ്ട്. 2011 ജനുവരിക്കും ജൂണിനുമിടയില്‍ മാത്രം നീക്കം ചെയ്യാനാവശ്യപ്പെട്ട 358 ഇന്റര്‍നെറ്റ് പോസ്റ്റുകളില്‍ 261 എണ്ണവും ഗവണ്‍‌മെന്റിനെ വിമര്‍ശിക്കുന്നവ എന്ന വിഭാഗത്തിലാണ്‌. ഇതില്‍തന്നെ വെറും ആറെണ്ണം ഒഴിച്ച് 255 എണ്ണവും (71 ശതമാനം) ഒരു കോടതി വിധിയുടെയും പിന്‍‌ബലമില്ലാതെയാണ്‌ ഇന്റര്‍നെറ്റില്‍ നിന്ന് മായ്ക്കപ്പെട്ടത്. ഗവണ്‍‌മെന്റിനെ വിമര്‍ശിക്കല്‍ എന്നത് കുറ്റകരമല്ലാതിരിക്കെയാണ്‌ ഗൂഗ്‌ള്‍ സര്‍ക്കാര്‍ ആവശ്യമനുസരിച്ച് വിവരങ്ങള്‍ മായ്ച്ചതും.

ഇതോടൊപ്പം തന്നെയാണ്‌ ഇന്ത്യ ബ്ലാക്‌ബെറി, ഗൂഗ്‌ള്‍, ഫേസ്‌ബുക്ക് തുടങ്ങിയ സേവനദാതാക്കളോട് അവരുടെ സെര്‍‌വറുകള്‍ വഴിയുള്ള ആശയവിനിമയം നിരീക്ഷിക്കാനും അത് ആക്‌സസ് ചെയ്യാനുമുള്ള സൗകര്യം നല്‍കാനാവശ്യപ്പെടുന്നത്. ഇതോടൊപ്പം തന്നെയാണ്‌ അക്കൗണ്ട് വെരിഫിക്കേഷന്‍ ഉത്തരവാദിത്തം ഈ കമ്പനികള്‍ക്കു മേല്‍ ഏല്‍‌പ്പിക്കുന്നതും ഫോണ്‍ നമ്പര്‍ വെരിഫിക്കേഷന്‍‌വഴി അവ അത് കഴിയുന്നത്ര ലഭ്യമാക്കുന്നതും. അതും പോരെന്നു കരുതിയാണ്‌ 2011 ഏപ്രിലില്‍ പാര്‍ലമെന്റില്‍ പോലും ചര്‍ച്ചക്കുവെക്കാതെ, ഭരണഘടനഅവിരുദ്ധമായ പല നിര്‍‌ദേശങ്ങളുമടങ്ങിയ ഐ.ടി ഡിപ്പര്‍ട്മെന്റ് തയ്യാറാക്കിയ ഇന്റര്‍‌മീഡിയറി ഗൈഡ്‌ലൈന്‍സ് റൂള്‍സും സൈബര്‍കഫേ റൂള്‍സും നോട്ടിഫിക്കേഷനായി പുറത്തിറങ്ങുന്നത്. ഗവണ്മെന്റിനു മാത്രമല്ല, ഇന്ത്യയിലെ ഏതു പൗരനും ഇന്റര്‍നെറ്റ് സെന്‍സര്‍ ചെയ്യാന്‍ അവസരം നല്‍കുന്നു എന്നതാണ്‌ ഇതിന്റെ പ്രത്യേകത. അതായത്, നിങ്ങള്‍ക്ക് ഏതെങ്കിലും ഒരു ഇന്റര്‍നെറ്റ് പരാമര്‍ശം വിലകെടുത്തുന്നതായി (disparaging) തോന്നുന്നുവെങ്കില്‍, അല്ലെങ്കില്‍ കുട്ടികള്‍ക്ക് ഹാനികരമാണെന്ന് സമര്‍ത്ഥിക്കാമെങ്കില്‍, ചൂതാട്ടത്തെ പ്രോല്‍സാഹിപ്പിക്കുന്നതായി തോന്നുകയാണെങ്കില്‍ നിങ്ങള്‍ക്ക് ആ പരാമര്‍ശം നീക്കാന്‍ ഇന്റര്‍നെറ്റ് സര്‍‌വിസ് പ്രൊവൈഡര്‍‌മാര്‍ക്ക് പരാതി നല്‍കാം. വെബ്‌സൈറ്റിന്റെ ഉടമയോട് ചോദിക്കുകപോലും ചെയ്യാതെ ആ പേജ് 36 മണിക്കൂറിനുള്ളില്‍ മായ്ക്കുക എന്നത് സര്‍‌വിസ് പ്രൊവൈഡര്‍മാരുടെ ഉത്തരവാദിത്തമാണ്‌.

ഉദാഹരണത്തിന്‌, മാധ്യമം ആഴ്ച്ചപ്പതിപ്പ് കുറച്ചുകാലത്തിനു മുമ്പ് പ്രസിദ്ധീകരിച്ച ‘ചുതാട്ടക്കാരല്ലാത്തവര്‍ക്ക് പ്രവേശനമില്ല’ എന്ന സുരേഷ് പി. തോമസിന്റെ നോവല്‍ ആഴ്ച്ചപ്പതിപ്പിന്റെ ഓണ്‍‌ലൈന്‍ പതിപ്പില്‍ പ്രസിദ്ധീകരിച്ചുവെന്ന് വെക്കുക. അത് കണ്ട ഒരാള്‍ പ്രസ്‌തുതഭാഗം ചൂതാട്ടത്തെ പ്രോല്‍സാഹിപ്പിക്കുന്നു എന്നു പറഞ്ഞ് പരാതിപ്പെട്ടെന്നും കരുതുക. മാധ്യമത്തിനോ സുരേഷ് പി. തോമസിനോ സ്വന്തം ഭാഗം ന്യായീകരിക്കാന്‍ അവസരം പോലും നല്‍‌കാതെ ആ പേജ് ഇന്ത്യയില്‍ ഇന്റര്‍നെറ്റില്‍ നിന്ന് അപ്രത്യക്ഷമാകും. ഇന്റര്‍‌നെറ്റിന്റെ ഓര്‍മ്മയില്‍ നിന്ന്, സെര്‍ച്ച് എന്‍‌ജിനുകളില്‍ നിന്ന് എല്ലാം അത് നീക്കം ചെയ്യപ്പെടും. (ഈ നിയമം ഭരണഘടനയുടെ 19(1)(a), 19(2) ആര്‍ട്ടിക്കിളുകള്‍ ഉറപ്പു തരുന്ന അഭിപ്രായസ്വാതന്ത്ര്യത്തിന്‍ വിലക്കുകല്‍‌പ്പിക്കാനുള്ള ശ്രമമാണ്‌. അതോടൊപം പുസ്തകക്കടകളില്‍ ലഭ്യമായ ഒരു പുസ്തകം ഇ-ബുക് ആവുന്നതോടെ ഒരു അടയാളം പോലും ഇന്റര്‍നെറ്റില്‍ ശേഷിപ്പിക്കാതെ അത് സെന്‍സര്‍ ചെയ്യാനുള്ള അവസരവും പുതിയ ഓര്‍ഡിനന്‍സ് നല്‍കുന്നു.

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

ബംഗളൂരുവിലെ ഒരു ഇന്റര്‍‌നെറ്റ് റിസര്‍ച്ച് സിവില്‍സമൂഹ സംഘത്തിലെ സുഹൃത്തുക്കള്‍ ഈ നിയമം എങ്ങനെ പ്രവര്‍ത്തിക്കുന്നുവെന്നറിയാനായി ഒറ്റ വായനയില്‍‌തന്നെ അടിസ്ഥാനരഹിതമാണെന്നു മനസ്സിലാക്കാവുന്ന ഏഴു പരാതികള്‍ എഴുതി ഇന്റര്‍മീഡിയറികള്‍ക്കയച്ചു. ഏഴില്‍ ആറിലും ആവശ്യപ്പെട്ടതില്‍ കൂടുതല്‍ സെന്‍സറിങ് നടക്കുകയുണ്ടായി.

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

സ്വയം നിയന്ത്രണം എന്ന സെന്‍സര്‍ഷിപ്പ്

കേന്ദ്രമന്ത്രി കപില്‍ സിബല്‍ കഴിഞ്ഞ നവംബറില്‍ ഇന്റര്‍നെറ്റ് കമ്പനികളുടെ രഹസ്യയോഗങ്ങള്‍ വിളിച്ചുചേര്‍ത്ത് ഉപയോക്താക്കളുടെ പോസ്റ്ററുകള്‍ സ്വയം നിയന്ത്രിക്കണമെന്ന് ആവശ്യപ്പെട്ടത് ന്യൂയോര്‍ക്ക് ടൈംസ് വഴി ഡിസംബറിലാണ്‌ പുറത്തുവന്നത്. സെന്‍സര്‍ ചെയ്യുന്നുവെന്നു പറയാതെ സെന്‍സര്‍ ചെയ്യല്‍ എന്ന പദ്ധതിയാണിവിടെ. ഇങ്ങനെ മറയ്ക്കപ്പെടുന്ന പോസ്‌റ്റുകള്‍ ഇന്റര്‍നെറ്റില്‍ ലഭ്യമല്ലാതാകും. വര്‍ധിച്ച പ്രതിഷേധം കണ്ട് സിബല്‍ പിന്മാറിയെങ്കിലും ട്വിറ്റര്‍ ഇത്തരമൊരു സം‌വിധാനം കൊണ്ടുവരാന്‍ പോവുകയാണെന്ന് പ്രഖ്യാപിച്ചു കഴിഞ്ഞു. ഇതോടൊപ്പം‌തന്നെയാണ്‌ ഇപ്പോള്‍ രാജ്യസഭയില്‍ ചര്‍ച്ചയിലിരിക്കുന്ന കോപ്പിറൈറ്റ് നിയ്മത്തിന്റെ പുതിയ് ഡ്രാഫ്‌റ്റില്‍ 52(1)(c) എന്ന പുതിയൊരു ഭേദഗതി ചേര്‍ത്തിരിക്കുന്നത്. ആരെയെങ്കിലും അയാളുടെ/അവളുടെ കോപ്പിറൈറ്റ് ലം‌ഘിക്കപ്പെട്ടുവെന്ന് പറഞ്ഞ് ഒരു ഇന്റര്‍നെറ്റ് കമ്പനിക്ക് പരാതി നല്‍കിയാല്‍, ശരിയോ തെറ്റോ എന്നുപോലും നോക്കാതെ കമ്പനി അത് ഉടനെ മാറ്റീയിരിക്കണം. ഇല്ലെങ്കില്‍ ശിക്ഷ കമ്പനിക്കാണ്‌.

ജനങ്ങള്‍ക്ക് അധികാരം നല്‍കുന്നുവെന്ന വ്യാജേന, സ്വന്തം ഇഷ്‌ടങ്ങള്‍ സെന്‍സര്‍ഷിപ് എന്നു പറയാതെ നടപ്പാക്കാനുള്ള വഴി കണുകയാണ്‌ സര്‍ക്കാര്‍. ഇങ്ങനെയൊരു കരിനിയമം വന്നാല്‍ ഇന്റര്‍നെറ്റിന്റെ മരണത്തെക്കുറിച്ച് കൂടുതല്‍ സംശയം വേണ്ട.

ദല്‍‌ഹി ഹൈക്കോടതിയിലെ കേസ്

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

ദല്‍ഹി ഹൈക്കോടതി ജഡ്‌ജി സുരേഷ് കൈറ്റാവട്ടെ ഒരു പടികൂടി കടന്ന് “ചൈനയിലെപ്പോലെ ഇന്ത്യന്‍ നയങ്ങള്‍ക്കു നിരക്കാത്ത വെബ്‌സൈറ്റുകളെല്ലാം തങ്ങള്‍ക്ക് ബ്ലോക്ക് ചെയ്യാനാവു”മെന്നാണ്‌ പ്രതികരിച്ചത്. ഇന്റര്‍നെറ്റ് നയം സംബന്ധിച്ച് ഒരു ജനാധിപത്യരാജ്യത്തിലെ ജഡ്‌ജിയില്‍ നിന്ന് കേള്‍ക്കുമെന്ന് പ്രതീക്ഷിക്കുന്ന പ്രതികരണമെല്ല എന്തായാലും ഇത്. ദൈവങ്ങളുടെ നഗ്നചിത്രങ്ങളും മറ്റു വൈകൃതങ്ങളും നിയന്ത്രണകാരണമായി വിനയ്റായ് ചൂണ്ടിക്കാട്ടുമ്പോള്‍ കപില്‍ സിബല്‍ പോണോഗ്രഫിയും മറ്റുമാണ്‌ പറയുന്നത്.

എന്നാല്‍, ഗുഗിള്‍ ട്രാന്‍സ്പെരന്‍സി റിപ്പോര്‍ട്ട് പ്രകാരം മിക്ക നീക്കം ചെയ്യല്‍‌ അപേക്ഷകളും ഗവണ്മെന്റിനെതിരായ വിമര്‍ശനത്തിന്റെയും അപകീര്‍ത്തിപ്പെടുത്തലിന്റെയും പേരിലാണ്‌. വെറും മൂന്ന് അപേക്ഷകള്‍ മാത്രമാണ്‌ പോണോഗ്രഫി എടുത്തുമാറ്റാന്‍ ആവശ്യപ്പെട്ടുള്ളത്. ഒരു അപേക്ഷ മാത്രമാണ്‌ ഇതേ ആറുമാസക്കാലത്ത് ദേശസുരക്ഷയുമായി ബന്ധപ്പെട്ടുണ്ടായത്.

ചൈല്‍ഡ് പോണോഗ്രഫി, ദേശസുരക്ഷ, തീവ്രവാദം, സൈബര്‍ യുദ്ധത്തിനെതിരായ പ്രതിരോധം എന്നൊക്കെയുള്ള കാരണങ്ങള്‍ എല്ലാകാലത്തും പുതിയ ഇന്റര്‍നെറ്റ് നിയന്ത്രണങ്ങള്‍ കൊണ്ടുവരാനായി എടുത്തുപയോഗിക്കാറുള്ളതാണ്‌.

ചുരുക്കിപ്പറഞ്ഞാല്‍, ഇന്ത്യയുടെ ഓണ്‍‌ലൈന്‍ സെന്‍സര്‍ഷിപ്പ് ഒരു യാഥാര്‍ഥ്യമാണ്‌. 11 ആം പഞ്ചവല്‍സര പദ്ധതിയുടെ കാഴ്ച്ചപ്പാടനുസരിച്ച് 100 മില്യണ്‍ ഇന്റര്‍നെറ്റ് ഉപയോക്താക്കളുള്ള ഇന്ത്യയില്‍ കൂടുതല്‍ ജനങ്ങളിലേക്ക് ഇന്റര്‍നെറ്റ് സാമീപ്യത വര്‍ദ്ധിപ്പിക്കാനുള്ള പ്രവര്‍ത്തനങ്ങള്‍ നടക്കേണ്ടതിനു പകരം, ഗവണ്മെന്റിന്റെ ശ്രദ്ധ ജനങ്ങളുടെയും വെബ്‌സൈറ്റുകളുടെയും നിയന്ത്രണത്തിലാണ്‌. ഇ-മെയില്‍ സര്‍‌വെയ്‌ലന്‍സും ഇന്‍‌വിസിബ്‌ള്‍ സെന്‍സര്‍ഷിപ്പും ആധാറുമൊക്കെയായി ജനതയുടെ ബയോമെട്രിക് വിവരശേഖരണവും അവരുടെ അടിസ്ഥാന അവകാശ നിഷേധവും ഗവണ്‍‌മെന്റ് ഒരുപോലെ കൊണ്ടുനടക്കുകയാണ്‌. കമ്പ്യൂട്ടറുകളുപയോഗിച്ച് ജനതയുടെ അഭിപ്രായസ്വാതന്ത്യത്തെയും സ്വകാര്യതയെയും ഒക്കെ തച്ചുടച്ച് സമൂഹത്തെ ഡാറ്റാബേസ് വിവരശേഖരത്തിന്റെ അടിസ്ഥാനത്തില്‍ നിയന്ത്രിക്കാമെന്നു കരുതുന്ന ഡാറ്റാബേസ് പൊലീസ് സ്റ്റേറ്റായി ഇന്ത്യന്‍ ഗവണ്‍‌മെന്റ് അതിവേഗം മാറിക്കൊണ്ടിരിക്കുകയാണ്‌. ഇത്തരം ശ്രമങ്ങളെ പ്രതിരോധിക്കേണ്ടതുണ്ട്. അമേരിക്കയുടെ ഇന്റര്‍നെറ്റ് കരിനിയമമായ SOPA, PIPA എന്നിവക്കെതിരെ വെബ് സമൂഹം പടപൊരുതുന്ന പോലെ ഇന്ത്യയിലെ കരിനിയമങ്ങളെയും പൊരുതിത്തോല്‍‌പ്പിക്കുക തന്നെ വേണം. ഡിജിറ്റല്‍ കാലഘട്ടത്തില്‍ അരിയുന്ന ഓരോ ശബ്‌ദവും നാവുമരങ്ങളാകേണ്ടതുണ്ട്.

ഈ ലേഖനം ക്രിയേറ്റിവ് കോമണ്‍സ് ആട്രിബ്യൂഷന്‍ ഷെയര്‍ എലൈക് 2.5 ഇന്ത്യ (CC-BY-SA 2.5 In) പ്രകാരം പുനപ്രസിദ്ധീകരിക്കാന്‍ അനുമതി നല്‍കുന്നു.

by anivar at February 12, 2012 05:47 PM

February 01, 2012

Pirate Praveen

Little bit playful!

Rishma Damodar

Hearing about the life of Kani, daughter of social activist Maithreyan and Dr AK Jayashri is wonderful…

Kani Kusruthi‘I call my dad Maithreyan only. And my mother Jayashrichechi (chechi is elder sister in Malayalam). They are not legally married. Rather, I call Jayashri chechi’s father and mother as dad and mom. I lived with them till I was 15. In a very conservative atmosphere. Maithrayen and chechi lived two houses far.” Kani remembers it with a smile in her small house.

This daughter is also in a different path as her parents. Started acting in plays since 15. Kani acted in movies when she felt it was not enough to live.

”There is only one thing Maithreyan and Chechi told me, don’t respond if you are asked about caste or religion. None of the school certificates have my caste or religion.”

Your father and mother seems different?…

Certainly. They have given me all the freedoms. In our country when a girl has to ask so many people for permissions even when choosing a frock. I’m not saying that is bad. But, there won’t be a place for that girls wishes.

But, it is not like that in my case. Even if I feel like smoking a cigarette, I don’t have to ask anyone. That doesn’t mean I believe smoking cigarette is a bad thing. But even that wishes I don’t have to let go.

Maithreyan and Chechi will tell about its bad effects. but, they never push their decisions on me. I’m not saying there is no difference of opinions. We criticize each other and get angry. But, only for a small time. If I feel like doing something, they only say ‘do it if you like’. But, suppose I do something on my own. If there is a problem in that, they won’t move aside saying, ‘you decided it, you deal with it’. They will be with me.

Are you also opposed to marriage like them?

I have not decided anything now. My dad and mom won’t say ‘you are this old, why don’t you get married’. They will say live with anyone you like. It is my choice.

How did you get into acting in plays?

I used to participate in Sanskrit festival in school. I used to act Kavalam Narayanappaniker’s plays.

Even before that, feminist movement in Thiruvananthapuram ‘Sakhi’ organized many street plays. When mom and dad goes for that, I used to go with them. I was studying in 5th then. I did not have any reluctance to act like this, then.

I learned about requirement of a girl actor in ‘Abhinaya’ theater research center of Thiruvananthapuram when I was in 10th.

By then I had a feeling that play is good. Then, as I grew up, I became very body conscious. I was not in a state to decide anything. After seeing my state, Jayashri Chechi said, ‘you just go and check there. Don’t act if you don’t like. I started liking plays when I reached ‘Abhinaya’. I thought I can make a it my profession.

At last, I went to study in Thrissur school of drama. I acted in one or two plays. it was then that play director Abhilash Pillai came to take ‘Khasakinte Ithihasam’ (History of Khasak). He told me about ‘International school of Jacques Lecoq‘. So I joined a one year course.

Kani Kusruthi with familyI learned more about acting when I went to France. Perspective about life also changed a lot. I only wanted everyone to talk good about me. I even moved aside even small things I wanted to do. But life in France changed all that.

Here we do even things we like secretly saying it is against culture. A small example. I go to a public space. Boys can drink there openly. But if any girls drink at all? It will be a big problem. Earlier I used to give up even if I wished to do it.

But, after that I occasionally drank as part of socializing. But, I don’t drink now. I don’t like its taste, that’s the reason. I don’t think there is anything bad in drinking.

In short you became a rebel after coming back from France?

I don’t think living as one wish is rebelling.

There was a letter from Maithreyan, recently. It read like this, ‘you also have a right to smoke and drink like anyone. Smoking cigarette is comparatively bad. Because, it affects others too. There is nothing wrong in drinking socially. But please don’t drink like it is bad in secret.

I don’t compromise on things I like. I am careful to create a space for that always. Suppose when I travel at night and someone try to grab me. I will try not to provoke him by saying ‘I don’t like anyone touching me’. There were many experiences like that. When traveling at night, one or two men come to me and ask ‘where are you going this night?’. I say something like ‘Aiyyo, sorry brother, I came here by mistake’ and leave.

When you decided to try a hand at movies?

When I was back from France, Shankar Ramakrishnan asked me to act in Island Express in ‘Kerala Cafe’. After that I did ‘Cocktail’. It was the role of a prostitute. Then, Naxal girl in ‘Shikar’ (Prey), then small roles in ‘Karmayogi’ and ‘Urumi’.

Do anyone come with you in film-play sites?

I go alone wherever it is. I didn’t feel girls are not safe be it in play or films. So, if someone likes me physically. When I say I’m not interested, I have seen only people who say ‘ok’ and leave, in both fields. Nobody behaved badly with me.

Name also seems different like the person?

Maithreyan and Chechi named me Kani. When I was enrolled in school, Principal asked, ‘What is her initials?’, so Chechi added an initial just like that, ‘Kani K’. When I reached 10th, teacher asked me, ‘I need expansion of your name.’ When I came home and narrated this, Maithreyan and Chechi told me ‘you pick anything you like.’ So I chose ‘Kani Kusruthi’. (Kusruthi means playful in Malayalam). My passport and all has that name.

Future endeavors?

There is a famous theatre group. Footsbarn. I’m with footsbarn for 2 years. Go inside and outside India with play acting. That is my plan.

Originally appeared in Malayalam daily Mathrubhumi

by Praveen A at February 01, 2012 09:13 PM

January 24, 2012

Pirate Praveen

SOPA and PIPA are not Dead.

Some of you are probably pretty happy around now. You’re probably saying to yourself, “Yay, we’ve defeated SOPA and PIPA! Yay, victory us!!!”

Actually, you’ve lost. You’ve lost this war, because you… along with everyone else in this half-decayed republic of ours, allow a specific hot button issue to cloud your judgement and allow public sentiment to be unanimous concerning one specific topic.


You may be wondering what the hell Pedophiles have to do with Internet Censorship. The answer is; Everything. You cannot win, you are going to lose your internet freedom. You will be monitored, you will be followed and every act and idea you commit to the web will be logged and archived in the halls of Government.

All because you’re afraid of Pedophiles. If you aren’t, then maybe I am using the Royal “YOU” to comment on the public at large; the ignorant Baby Boomers who don’t understand the interwebs, the vacuous youth who haven’t learned the hard way that real opinions don’t make you many friends and often alienate you.

The sort of “YOU” that cannot argue that Pedophiles, just like Homosexuals, have a right to Exist.

It’s that “YOU” that is responsible for the death of the internet.

“But Wait, Heretic,” You might say. “The Net isn’t DEAD yet, we beat SOPA! We Beat PIPA!”

Wrong. You’ve insured your defeat. Consider the following;

No no. Follow the link. Copy-pasta if you must. You read it. You understand it… and realize that it is from the same corporate schill that propose SOPA and PIPA.

“What is this thing?” You might ask. Well if you’re part of the vast illiterati, I’ll explain you the thing (Bad grammar intentional).

H.R. 1981 is titled “The Protect Children From Internet Pornographers Act of 2011″.

It is a bill that requires the following; Your real, legal I.D. name, personal home address, IP address, browsing history, search terms you’ve searched and the complete details of your online habits are to be made trackable and must be logged by all ISP’s.

“Wait a second!” You might argue, “That has nothing to do with Children!”

At this point in the discussion is where I typically chime in with; I told you so.

For the last twelve years of my life, I’ve been arguing rationality in the face of rampant, frothing at the mouth hatred concerning Pedophiles and the various scaremongering news articles that are propogated and proliferated across the news media services and sites.

I recognized that this one topic, out of any topic, is where people lose any sense of proportion or reason; people cease thinking or functioning when a discussion starts involving, “People that diddle children”. Or people that might, hypothetically, because of pornography they look at, decide to diddle children.

“That’s monstrous, Heretic,” You might say. “Why would you defend people such as this?”

The answer is I am defending you. I am defending humanity, because if you allow a portion of humanity to become classified as sub-human, you allow the Government to abuse that concept for it’s own gain.

I am defending Pedophiles as human beings, because if I don’t, someone will be next. And then another. Who would it be? The Furries? People into BDSM? Japanese Hentai fans with their schoolgirl fetishes?

It turns out, no. They didn’t just move on to other fetishists and people with peculiar or abnormal paraphilias. They skipped them and decided to bilk the public.

Oh, fat surprise.

This bill will pass. It will pass because nobody in the Congress or House will vote against it. They won’t vote against it because it’s to protect children from Pedophiles.

And there you have it, folks. Because Pedophiles are universally reviled by society, you have your reason that all of your freedom gets to be stripped away.

Not because you are guilty, and it certainly isn’t because you might have child pornography on your computer.

H.R. 1981 isn’t for pornography, it’s the mechanism of control. It is the perfect tool to combat piracy, to punish the public and to create… as some writers would term it… Total Criminality.

You’re a criminal because you’re on the internet.

Who is to blame for this? You are. You are because you didn’t defend the most reviled people in society, did not argue for their rights, did not protect them from having their human rights stripped away.

You can blame yourself for the death of the Internet, because you never put yourself on the line to take the stand nobody else would take.

But I’m sure it’s fine. I’m sure you’re okay with this, because after all, some of you MIGHT be pedophiles.

So when your children ask you when the internet died, you can look them straight in the eyes and tell them it was murdered by everyone who couldn’t stand to think of Pedophiles existing on earth, and how the very idea of such a thing was enough for us to hand our betrayers the keys to the house.

If, on the other hand, you aren’t okay with this bill… I encourage you to fight against it. I say this while laughing, because good fucking luck; the entirety of the U.S. super-ego will crush you into a fine powder rather than hear anyone object to a bill protecting kids from Pedophiles.

Oh, and if you do want to fight the destruction of the internet, why don’t you share this with everyone you know. Print it and give it to your mum, pass it out to the elderly and the infirm, read it to your teenage children, make people understand.

Though I don’t have much hope of THAT happening.

This has been your Heresy of the Day.

Note: Repost of a diaspora update by The Heretic Of Ethics

by Praveen A at January 24, 2012 01:11 PM

December 29, 2011


Unicalbot – Twitter bot which tweets notifications from Calicut University website

This post is for a newbies, If you know how to setup mobile SMS service for twitter or facebook, you may need not to read the whole post, just follow @unicalbot or unicalbot fb page.

You can get updates on mobile via twitter or facebook.

1. via Twitter

Register an account at if you dont have one. Please note that Twitter only supports Airtel, Reliance, Docomo and Videocon. To register your mobile, Got to settings -> Mobile. add you mobile number and select carrier. Click “Start” and confirm your number.

Adding Mobile number in twitter

After verifying your number, go to @unicalbot and @unicalbot_btech and follow them. You can even click follow button on right side of following tweets.

To enable mobile notification service, got to profile pages @unicalbot and @unicalbot_btech and turn on mobile notifications. Check screenshot below,

If you have new twitter interface, subscribing mobile updates on new twitter

2. via Facebook

Like Unicalbot page on facebook or click like button in following frame.

To get notification via SMS, go to bottom of the page and click “Get updates via SMS” (You need to add mobile number on Account Settings -> Mobile)

subscribe sms updates on facebook

Source code of these bots are available in my Github account. Waiting for your comments, suggestions and feedbacks about this project.

NB. Sorry for my dumb writing.

by Jishnu at December 29, 2011 04:57 PM

November 18, 2011

Pirate Praveen

ओकुपै वालस्ट्रीट आन्दोलन में हमारी भूमिका क्या है?

अमेरिका में न्यूयोर्क शहर में दो महीनों से चलने वाली ओकुपै वालस्ट्रीट आन्दोलन के बारे में सब सुना ही होगा। अब वह न्यूयोर्क के बाहर अमेरिकी शहरों में ही नही पूरी दुनिया में फैली है। अमेरिकी समाज में आज हम को बहुत खैर बराबरी दिखाइ देगा, बहुत सारे लोगोंको अपना घर और नैकरी आज नहीं है, बहुत युवा लोग अपनी शिक्षा के लिए जो खर्चा लिया वो वापस कर नहि पा रहा है, उनको अच्छी नैकरी की प्रतीक्षा भी नहीं है। यह सभी लोग यह अन्याय व्यवस्था खतम करके एक न्याय समाज लाने के लिए आज रस्ते पर आयें है। यह लोग आज पूरे दुनिया के लिए – हम सब के लिए लड रहें है। जो लोग आज एक न्याय समाज और सच्ची लोकशाही का सपना देखते है, उन सबको आज इसमें शामिल होना है और उनकी आवाजको हमारे समाज में पहूँचाना जरूरि है, क्योंकि ये हमारी ही लडाई है। हम भी इधर एक नया समाज बनाने की कोशिश शुरू करेंगे। हम यह लडाई जीत सकेंगे की नहीं ये मुझे पता नही, एक बात तो पक्कि है, हम कोशिश ही नहिं करेंगें तो बदलाव नहीं होने वाला है। कम से कम ये मुद्धे हम सबकी बातचीत और सोच में ला सकते है। जब और लोगोने इसपर सोचना शुरू किया तो शायद कुछ जवाब मिल सकता है। पूरे दुनिया में आज बदलाव के लिए लोग अपने घर और ओफीस के बाहर आकर रस्ते पर आ चुका है, और सबके मन में बदलाव की आशा मजबूत है, आज हमारे सामने यह एक ऐतिहासिक मोका है, हमको इसका पूरा फायदा उठाना है। आप भी हमारे साथ इसमें जुडें।

अधिक जानकारि के लिए देखे।

PS: Thanks to Sandeep for spelling and grammar help!

by Praveen A at November 18, 2011 04:32 AM

September 22, 2011


Top 10 Must have Firefox Addons

Add-ons have a major role in making Firefox one of the most popular web browser. It add bells and whistles to Firefox. Here are some interesting Firefox add-ons.



DownThemAll is a Mozilla Firefox extension that adds new advanced download capabilities to your browser. dTa is easy-to-use,powerful,fast and reliable. By using DownThemAll you can download all the links or images contained in a webpage and refine your downloads to get only what you really want. DownThemAll features an advanced accelerator that increases speed up to 4x and number of parallel connections at any time. You can pause and resume downloads at any time. Once of the best feature is the ability to add meta links or mirrors manually to download a file from different servers at the same time. DownThemAll is open-source and freeware.

Install DownthemAll

Adblock Plus

Adblock Plus

Primary goal of Adblock Plus is blocking advertisements while browsing. This add-on thus allows you to regain control of the Internet and view the web the way you want to. For removing advertisements, it will block all requests made for ads. Since it blocks from the root we can save bandwidth.

Adblock Plus contains over forty filter subscriptions in dozens of languages which automatically configure it removing online advertising and blocking all known malware domains. Adblock Plus also helps you to customize your filter by providing a variety of useful features like context option for images, block tab for Flash and Java objects and a list of blockable items to remove scripts and stylesheets.

Install AdblockPlus


Video Download Helper

DownloadHelper allows you to download and convert web videos directly from your browser with minimum effort. While surfing the Web , when DownloadHelper detects, the icon gets animated and a menu allows you to download files by simply clicking an item. You can download anything from YouTube, MySpace, Google videos, DailyMotion, Porkolt, iFilm, DreamHost and others.

For instance,just go to the YouTube page,you can now directly download the video on your file system. You can automatically convert the downloaded movies to your preferred video format too. Video DownloadHelper gets stronger with every new version.

Install DownloadHelper



FabTabs introduces a new option to color your Firefox Tabs for identifying and distinguishing different websites. This extension takes a small screenshot of the currently opened website, finds out the most commonly used color from that screenshot, then applies that unique color to the tab. The standard tab color is thus replaced and you can now easily identify the websites by just looking the color of the tabs.

Install FabTabs

Awesome Screenshot

Awesome Screenshot

Are you an active blogger? Then I think Awesome Screenshot ‘ll be really awesome for you!!!. Awesome Screenshot is a screen capture add-on that captures the entire page or crop any portion, annotate it with rectangles, circles, arrows, lines and text,erase sensitive information, save to Local or upload to and get a shareable link.

Install Awesome Screenshot

Personal Menu

Personal Menu

Creates a personalized menu of your choice. You can organize your Firefox Menu by creating toolbar-box, sub-menus and split-menus. And there by you will be able to make a menu with a list of options that you frequently in need of. Bookmark Items, History Items, Configuration(about:config), Restart can also be added to the Personal Menu.

Install Personal Menu

Tab badge

Tab Badge

Are you fed up with switching between the tabs just to check whether there is an update or not ? Use the Tab Badge add-on and see the number of new items at a glance.

Tab Badge

Tab Badge adds a small badge to your tabs to notify you about your new messages, e-mails or new items in your RSS feed. It is displayed even when the tabs are pinned. If you have opened Facebook,Twitter, Gmail, Google Reader, or any such website you can see the count without opening each tab. Tab Badge works only in Firefox 4 or greater

Install Tab badge



When the satus bar from Firefox 4.0 was removed, Mozila did not find a new home for all the items. Some of them who found new homes may be moved to the place where you might not like. Progress/links/status in the location bar were newly introduced during the development of Firefox 4.0, but unfortunately they were not in the final release.


Status-4-Evar aims to solve these problem by bringing back the missing items like status text, progress bar and download status items, thus providing you with more control over the built-in Firefox features. These toolbar items can be customized. Extension preferences controls the behavior of the tool bar items and other additional settings.

This extension can also act as a replacement for the Fission extension. Apart from the tool bar items, there are preferences to show links, status, and progress in the location bar.

Install Status-4-Evar

Blank Your Monitor + Easy Reading


Blank Your Monitor : A typical web page will have a black text over a white background. In order to invert the usage of white and black colors, BYM provides a simple mechanism to change color. A white pixel uses energy like a black dot on a piece of paper uses the ink of you pen. BYM gives you a white text over a black background. You can save a little amount of energy, if you have a CRT monitor.

Easy Reading : ER provides a simple mechanism to isolate and highlight the text for easy reading. Select the text, right-click, select the “Easy Read” entry in the context menu or press Ctrl-Alt-Z. You will get a new tab filled with the selected text (white text over a black background). ER uses the color combination defined for BYM.

Install BYM+ER


Instant Fox

InstantFox Quick Search combines Firefox address bar with search box. It provides automatic suggestions and instant results.

Install InstantFox

by Jishnu at September 22, 2011 11:36 AM

August 20, 2011

Santhosh Thottingal

SVG Fonts

This post is some notes on the current state of SVG Fonts.

SVG is not a webfont format. The purpose of SVG fonts is to be embedded inside of SVG documents  (or linked to them), similar to the way you would embed standard  TrueType or OpenType fonts in a PDF.  SVG fonts are text files that contain the glyph outlines represented  as standard SVG elements and attributes, as if they were single vector  objects in the SVG image. Unlike EOT, WOFF, TTF formats , SVG is plain text uncompressed file.

Even though it is not webfont format, some browsers will accept svg in the @fontface css3 declaration.

Firefox and IE does not support SVG Fonts. Here is the bug on Mozilla bugzilla about this with a lengthy discussion -  This is one of the reason why Firefox does not score ACID3 test – . Developers argue that WOFF is sufficient and SVG Fonts does not give any advantage.  Support for SVG Fonts in the web development and font communities has been declining for some time. There’s already been discussion without objection of dropping SVG fonts from the Acid3 test. The community has put forth a proposal in the SVG Working Group to give SVG Fonts optional status.

Browser Support Matrix for SVG Fonts  IE and FF do not support it. Webkit based browsers support it – Chrome, Epiphany. For browsers not supporting svg features natively there is a flash based javascript library named svgweb

Limitations of svg fonts:

  • Not all of the opentype features are available in SVG specification
  • For example Indic fonts require many opentype features for correct rendering – see opentype spec of Malayalam
  • Even though SVG Fonts are support is available in some browsers, practically they cannot render SVG fonts for complex scripts such as Indic – Here is a sample svg file with Meera font defined in it – As you can see, rendering is wrong.
  • The main drawback to SVG fonts is there is no provision for font-hinting. The SVG standard states: “SVG  fonts contain unhinted font outlines. Because of this, on many  implementations there will be limitations regarding the quality and  legibility of text in small font sizes. For increased quality and  legibility in small font sizes, content creators may want to use an  alternate font technology, such as fonts that ship with operating  systems or an alternate WebFont format. –”

There is an alternate proposal to use opentype features of the font and use svg just for the glyphs

Fontforge can be used for creating SVG Fonts. But the created SVG font works only for simple scripts like Latin. Fails to export GPOS/GSUB tables to the SVG- bug report – GSUB issue can be solved either by handcoding the unicode sequences for glyphs or by writing an external script. But , more important opentype features- Vowel sign(matra) reordering issues persists.

Eventhough svg fonts by defining font data inside svg itself does not seem to have much interest from developers, using webfonts inside for svg has some importance. Just like web pages, webfonts can be used to render the text inside the svg. The webfont format depends on the browser. Example: (Have a look at the source code of the file)

by Santhosh at August 20, 2011 03:56 PM

June 11, 2011

Santhosh Thottingal

Malayalam Wikisource Offline version

Malayalam Wikisource community today released the first offline version of Malayalam wikisource during the 4th annual wiki meetup of Malayalam wikimedians. To the  best of our knowledge, this is the first time a wikisource project release its offline version. Malayalam wiki community had released the first version of Malayalam wikipedia one year back.

Releasing the offline version of a wikisource is a challenging project. The technical aspects of the project was designed and implemented by myself. So let me share the details of the project.

As you know a Wikisource contains lot of books, and each book varies in its size, it is divided to chapters or sections. There is no common pattern for books. Each having its own structure. A novel presentation is different from a collection of poems from a Poet. Wikisource also has religious books like Bible, Quran, Bhagavat Geeta, Ramayana etc.  Since books are for continuous reading for a long time, the readabilty and how we present the lengthy chapters in screen also matters. Offline wikipedia tools for example, Kiwix does not do any layout modification of the content and present as it is shown in wikipedia/wikisource. The tool we wrote last year for Malayalam wikipedia offline version also present scrollable vertical content in the screen. Both are not configurable to give different presentation styles depending on the nature of the book.

What we wanted is a book reader kind of application interface.  Readers should be able to easily navigate to books, chapters. The chapter content will be very lengthy. For a long time reading of this content,  a lengthy vertically scrolled text is not a good idea. We also need to take care of the width of the lines.  If each line spans 80-90% of the screen, especially for a wide screen monitor, it is a strain for neck and eyes.


Screenshot of Offline version. Click to enlarge

The selection of books for the offline version was done by the active wikimedians at Wiksource. Some of the selected books was proof read by many volunteers within the last  2 weeks.

The tools used for extracting htmls were adhoc and adapted to meet the good presentation of each book. So there is nothing much to reuse here. Extracting the html and then taking the content part alone using pyquery and removing some unwanted sections from html- basically this is what our scripts did. The content is added to predefined HTML templates with proper CSS for the UI. CSS3 multicolumn feature was used for book like interface. Since IE did not implement this standard even in IE9, for that browser the book like interface was not provided. Chrome browser with version less than 12 could not support, because of these bugs: and For easy navigation, mouse wheel support and page navigation buttons provided. For solving non-availability of required fonts, webfonts were integrated with a selection box  to select favorite font. Reader can also select the font size to make the reading comfortable.

Why static html? The variety of platforms and other versions we need to support, necessity to have webfonts, complex script rendering, effort to develop and customize UI, relatively small size of the data, avoiding any installation of software in users system etc made us to choose static html+ jquery + css as the technology choice. The downside is we could not provide full text search.

Apart from the wikisource, we also included a collection of copyleft of images from wikimedia commons. Thanks to Nishan Naseer, for preparing a gallery application using jquery. We selected 4 categories from Commons which are related to Kerala. We hope everybody will like the pictures and it will give  a small introduction to Wikimedia Commons.

Even though the python scripts are not ready to reuse in any projects, if anybody want to have a look at it, please mail me. I am not putting it in public since the script does not make sense outside the context of each book and its existing presentation in Malayalam wikisource.

The CD image is available for download here and one can also browse the CD content here.

Thanks to Shiju Alex for coordinating this project. And thanks to all Malayalam wikisource volunteers for making this happen.  We have included poems, folk songs, devotional songs, novel, grammar book, tales, books on Hinduism, Islam-ism, Christianity, Communism, Philosophy. With this release, it becomes the biggest offline digital archive of Malayalam books.

by Santhosh at June 11, 2011 09:11 AM

June 02, 2011


മലയാളം വിക്കിപ്രവർത്തകരുടെ സംഗമം 2011 – പത്രക്കുറിപ്പ്


വിക്കിമീഡിയ ഫൗണ്ടേഷന്റെ വിവിധ മലയാളം വിക്കിസംരംഭങ്ങളിലെ സന്നദ്ധ സേവകരുടെ ‘വിക്കിപ്രവര്‍ത്തകസംഗമം 2011’ ജൂണ്‍ 11 ശനിയാഴ്ച രാവിലെ 10 മണി മുതല്‍ മുതല്‍ 5 മണി വരെ കണ്ണൂര്‍ ജില്ലാ ലൈബ്രറി കൗണ്‍സില്‍ ഹാളില്‍ വച്ച് സംഘടിപ്പിക്കുന്നു. ചടങ്ങ് ജൂണ്‍ 11-നു് രാവിലെ പത്തു മണിക്ക് കേരള സര്‍വ്വകലാശാലയുടെ മുന്‍ വൈസ് ചാന്‍സലറും, സാമൂഹ്യ പ്രവര്‍ത്തകനുമായ ബി.ഇക്ബാല്‍ ഉദ്ഘാടനം ചെയ്യും. മലയാളം വിക്കിപ്രവര്‍ത്തകര്‍ സംഘടിപ്പിക്കുന്ന നാലാമത്തെ വിക്കി സംഗമമാണിത്.
കണ്ണൂര്‍ ജില്ലാ ലൈബ്രറി കൗണ്‍സില്‍, കേരള ശാസ്ത്ര സാഹിത്യ പരിഷത്ത് കണ്ണൂര്‍ ജില്ലാഘടകം, മലയാളം വിക്കിപദ്ധതികളുടെ പ്രവര്‍ത്തനത്തില്‍ തല്‍‌പരരായ വിവിധ സന്നദ്ധസംഘടനകള്‍ തുടങ്ങിയവയുടെ സഹകരണത്തോടെയാണ്‌ ഇപ്രാവശ്യത്തെ മലയാളം വിക്കിസംഗമം സംഘടിപ്പിക്കുന്നത്. സജീവമലയാളം വിക്കിപ്രവര്‍ത്തകര്‍ക്കു പുറമേ വിക്കിമീഡിയ ഫൗണ്ടേഷനെ പ്രതിനിധീകരിച്ച് ടോറി റീഡ്, ബിശാഖ ദത്ത, ഹിഷാം മുണ്ടോല്‍ എന്നിവര്‍ പങ്കെടുക്കുന്നു എന്നതാണ് ഇത്തവണത്തെ സംഗമത്തിന്റെ പ്രത്യേകത. പരിപാടിയുടെ വിശദാംശങ്ങള്‍ താഴെ:

മലയാളം വിക്കിപ്രവര്‍ത്തകസംഗമം 2011
രാവിലെ 10.00 മണി മുതല്‍ വൈകുന്നേരം 5:00 മണി വരെ
ആര്‍ക്കൊക്കെ പങ്കെടുക്കാം?
വിക്കിമീഡിയ ഫൗണ്ടേഷന്റെ വിക്കി സംരംഭങ്ങളില്‍ പ്രവര്‍ത്തിച്ചു പരിചയമുള്ള ആര്‍ക്കും പങ്കെടുക്കാം.
മലയാളം വിക്കിസംരംഭങ്ങളുടെ പ്രവര്‍ത്തന റിപ്പോര്‍ട്ട്, മലയാളം വിക്കിഗ്രന്ഥശാലയിലെ തിരഞ്ഞെടുത്ത ഗ്രന്ഥങ്ങള്‍ ഉള്‍ക്കൊള്ളുന്ന സി.ഡി.യുടെ പ്രകാശനം, മലയാളത്തിലുള്ള വിക്കിസംരംഭങ്ങളുടെ പ്രസക്തിയെ കുറിച്ചുള്ള സെമിനാര്‍, പത്രസമ്മേളനം.
ജില്ലാ ലൈബ്രറി കൗണ്‍സില്‍ ഹാള്‍, കാല്‍ടെക്സ് , കണ്ണൂര്‍ – 2
എത്തിച്ചേരാനുള്ള വഴി
കണ്ണൂര്‍ നഗരത്തിലെ കാല്‍ടെക്സ് ജംഗ്‌ഷനു സമീപത്തുള്ള ഇന്ത്യന്‍ കോഫീ ഹൗസിനു തൊട്ടടുത്താണ് കണ്ണൂര്‍ ജില്ലാ ലൈബ്രറി കൗണ്‍സിലിന്റെ കെട്ടിടം സ്ഥിതി ചെയ്യുന്നത്.
പരിപാടിക്ക് രജിസ്റ്റര്‍ ചെയ്യാന്‍ എന്ന വിലാസത്തിലേക്കു് ഇമെയില്‍ അയക്കുകയോ, 9747555818, 9446296081 എന്നീ നമ്പറുകളില്‍ ഒന്നില്‍ വിളിക്കുകയോ ചെയ്തു് പങ്കെടുക്കാനുള്ള താങ്കളുടെ താല്പര്യം അറിയിക്കുക.

വിക്കിമീഡിയ ഫൗണ്ടേഷന്റെ വിക്കി സംരംഭങ്ങളില്‍ പ്രവര്‍ത്തിക്കുന്ന എല്ലാവരേയും പരിപാടിയിലേക്ക് ക്ഷണിക്കുന്നു.
മലയാളം വിക്കിപ്രവര്‍ത്തകര്‍
2011 ജൂണ്‍ 2

 ഞാന്‍ പങ്കെടുക്കുന്നുണ്ട് !! നിങ്ങളോ‌ ?

by Stultus at June 02, 2011 05:03 PM

May 17, 2011

Santhosh Thottingal

Mediawiki Berlin hackathon

I am just back from Mediawiki Berlin Hackathon. On May 13 to 15, Mediawiki developers attended the hackathon and squashed many bugs and discussed many features. Members of language committee had its first real-life meeting in parallel with hackathon. It was a nice event, learned a lot, talked to many awesome hackers and linguists.


by Santhosh at May 17, 2011 04:16 PM

May 07, 2011

Santhosh Thottingal

Creating a new Language ecosystem- Sourashtra as example

Sourashtra is a language spoken by Sourashtra  people living in South Tamilnadu and Gujarat of India. Originated from Brahmi and then Grandha, this language is mother tongue for half a million people. But most of them are not familiar with the script of this language. Very few people knows reading and writing on Sourashtra script. Sourashtra has a ISO 639-3 language code saz and  Unicode range  U+A880 – U+A8DF

Recently Sourashtra wikipedia project was started in the wikimedia incubator : and Mediawiki localization started in translatewiki Since the language did not had any proper fonts or input tools, this was not going well.

When we add a  new language support in Mediawiki or start a new language wikipedia,  we need to develop the language technology ecosystem to support its growth. This ecosystem comprises of Unicode code points for the script, proper fonts, rendering support,  input tools, availability of these fonts and input tools in operating systems or alternate ways to get it working in operating system etc.

Sourashtra language had a unicode font developed by Prabu M Rengachari, named ‘Sourashtra’ itself. The font had problems with browsers/operating systems. We fixed to make it work properly. The font was not licensed properly. Prabu agreed to release it in GNU GPLV3 license with font exception. He also agreed to rename the font to another name other than the script name itself.

The font was renamed to Pagul, meaning ‘Footstep’ in Sourashtra and hosted in sourceforge

Once we have a font with proper license, we wanted it to be available in operating systems. I filed a packaging request in Debian. Vasudev Kamath of Debian India Team packaged it and now it is available in debian unstable(sid).  Parag Nemade of Fedora India packaged the font for Fedora and will be avialable in upcoming Fedora 15.

To add a new language support in operating system, we need a locale definition. In GNU Linux this is GLibc locale definition. With the help of Prabu, I prepared the saz_IN locale file for glibc, and filed as bug report to add to glibc. I hope, soon it will be part of Glibc.

Well, all of these was possible since it was GNU/Linux or Free software. Things are a bit difficult on the other side, proprietary operating system world. There is nothing we can do with those operating systems. Since there is no ‘market’ for these minority language, it won’t come to the priority of those companies to add support for these languages. Users will see squares or question marks when they visit sourashtra wikipedia.

We are working on a solution for this, not only for sourashtra, but a common solution for all languages. We are developing a webfonts extension for Mediawiki to provide font embedding in wiki pages to avoid the necessity of having fonts installed in user’s computers. The extension is in development and one can preview it in my test wiki. For Sourashtra, we added webfonts support(preview) .

Input tools needs to be developed and packaged. For mediaiwki, with the help of Narayam extension, we can easily add this support.

With the silpa project, I added a server side, PDF/PNG/SVG rendering support for Sourashtra as well.


by Santhosh at May 07, 2011 06:31 AM

April 21, 2011


GNOME Shell themes


1. Atolm

This is a GNOME Shell theme based on the Atolm GTK2 theme.
Atomlm Gnome Shell theme

Atolm can be downloaded from here

Deviant Art

This is a GNOME Shell theme based on the deviantArt website.
DeviantArt GNOME Shell theme

This theme can be downloaded from here

Smooth Inset

This is a smooth looking GNOME Shell theme using new features like inset.
Smooth Inset Gnome Shell theme
Download Smooth Inset

Upcoming GNOME Shell themes

1. Tron Legacy

Tron Legacy Gnome Shell theme

2. Orta GNOME Shell Theme

Orta Gnome Shell theme

Orta theme for GTK2 can be downloaded from here

by Jishnu at April 21, 2011 02:54 PM

April 12, 2011


Blender Add-on – Integrated Library Update

After releasing the first version, I didn’t get much time to update my blender add-ons with the API changes of 2.5 version. A friend Ivo updated Integrated Library add-on to the new API. His mail is as follows.

Hi Jishnu,
i found your script extremely useful and i updated it to work with the
latest version, you should submit it to the bf-extensions repository,
so it would be included with the official blender version eventually.

Since he is not familiar with Git, he told me to update it. Now this add-on will work with current 2.5 beta version. I tested it in the latest SVN checkout and worked for me.

This is the power of Free and Open Source, even if original developer unable to provide new updates, users can be able to modify or update it.

There are still some bugs need to be fixed. I will try to fix those bugs whenever am free. You can download latest version of the add-on from

by Jishnu at April 12, 2011 04:59 PM

April 03, 2011

Santhosh Thottingal

Cross Language Approximate Search on Indic Languages- A demo

A demo of cross language approximate search in Indic text:
click to enlarge
The Malayalam word സാമ്പാര്‍ is compared against a paragraph from
In the bottom half, words marked in yellow color are search results.
You can see that a Kannada word ಸಾಂಬಾರ್‍ is matched for Malayalam word. And that is why this is called cross-language.
The inflections of the words സാമ്പാര്‍ – സാമ്പാറും, സാമ്പാറു etc are also found as results.
This is the kind of search we need in Indic languages, not just the letter by letter comparison we do for English.

Another example showing all inflection forms of the noun പാലക്കാട്, and the same word written in Tamil, Telugu, Hindi. The search shows the results in those languages too. – click to enlarge

You can try it here:

This is a Fuzzy string search application. This application illustrates the combined use of Edit distance and Indic Soundex algorithm.

By mixing both written like(edit distance) and sounds like(soundex), we achieve an efficient aproximate string searching. This application is capable of cross language string search too. That means, you can search Hindi words in Malayalam text. If there is any Malayalam word, which is approximate transliteration of hindi word, or sounds alike the Hindi words, it will be returned as an approximate match. The “written like” algorithm used here is a bigram average algorithm. The ratio of common bigrams in two strings and average number of bigrams will give a factor which is greater than zero and less than 1. Similarly the soundex algorithm also gives a weight. By selecting words which has comparison weight more than the threshold weight(which 0.6), we get the search results.

by Santhosh at April 03, 2011 11:27 AM

February 26, 2011

Santhosh Thottingal

Tamil Collation in GLIBC

A  few months back, we started fixing the collation rules of Indian languages in GNU C library. Pravin Satpute prepared patches for many languages and I prepared patches for Malayalam and Tamil. Later Pravin enhanced the Tamil patch.

You can read the rules used for Malayalam collation here[PDF document]. Tamil patch was applied to upstream, but the bug is still open since there is some confusion on the results.

Before reading the below discussion, please read the discussion happened in the bug report : [ta_IN] Tamil collation rules are not working in other locales

Since many Tamil friends can give valuable comments on this, I am giving an explanation for my patch here. K Sethu gave some interestin his comments on the patch and I would like to hear from others also. Since collation is a very important component on Tamil support, I feel that an open discussion and consensus  should happen among language speakers outside bug trackers.

This is the logic used currently in Tamil and Malayalam Collation rules also follow the same logic.

  1. Consider each consonant as pure consonant + implicit a vowel. ie க= க் + அ   and த= த்+ அ
  2. Similarly கா = க்+ ஆ, தி = த்+ இ
  3. From #1 and #2, க் < க, த்< த , We get this output for example:அ
    But K Sethu questions this order in his comment here.According to him
    ( consonant1+ virma+ consonant2 ) < ( consonant1+ vowel + [consonant2] )
    or The correct sequence should be அ, அக், அக்கம், அக்கு, அகம், அகால
    But as per my patch
    ( consonant1+ virma+ consonant2 ) > ( consonant1+ vowel + [consontant2] )
    ie, all conjuncts for consonant1 happens after all consonant1+vowel + * sequences.
    So let me try to explain this behaviour.
  4. let us take க்த and கத:க்த = க்+ த்+ அ
    கத = க்+ அ+ த்+ அ
    considering the weight comparison logic(decreasing weight from left to right)
    this comparison becomes between
    க்+ த்+ அ and க்+ அ+ த்+ அ
    since க் is common in first weight, removing it. so it becomes
    த்+ அ and அ+ த்+ அ
    Since த் > அ
    த்+ அ > அ+ த்+ அ
    and there by
    க்த > கத
    So conjuncts comes after the cosonant+vowel pairs. hence the result given in #3

Apart from these, equal weights are assigned for ோ (0BCB), ௌ (0BCC), and their canonical equivalent forms.

If anybody interested in testing the patch, get ta_IN and iso14651_t1_common files from here, back up those file in /usr/share/i18n/locales, and place these two files there. reconfigure your locale using “sudo dpkg-reconfigure locales”. Sort some random file using “LANG=ta_IN sort yourfile”. If your distro is not debian based, follow the instructions from here

There is an easy way to test this. Silpa project provides an online application for Indic language collation. You can try it from here. It is a Unicode Collation algorithm implementation. The Unicode collation definition has many mistakes but we have a patched version. You can compare the results between original and patched version.

Feel free to inform this discussion to anybody interested on Tamil Computing. I would be happy to help in the implementation if we  reach  a consensus.

by Santhosh at February 26, 2011 12:29 PM

January 08, 2011

Santhosh Thottingal

Identifiers In Indic Languages

Recently, while preparing a critique for  IDN Policy for Malayalam language prepared by CDAC,  I noticed that ICANN does not allow control characters in the domain names.  Sometime back I noticed Python 3 identifiers also does not allow control characters in the Identifiers. This blog post attempts to analyze the issue by looking at the Unicode and ICANN specifications about these special characters.

Apart from the existing characters in Indic languages,  Zero width Joiner and Zero width non joiners are widely used in Indic languages to control how the ligatures are formed. For some samples on how they are used, refer the wikipedia links. Being control characters and invisible characters, they are often removed while doing normalization , particularly before doing a string comparison, or collation (sort).

Identifiers, the strings that uniquely represent some data often has a policy on what kind of characters it can contain. For example, email address is an identifier, which unambiguously defines somebody’s email address, does not allow ‘space’ characters in between. Some examples for this kind of identifiers are: email ids, web domain address, variables in programming languages etc.

Gone are the days where identifiers can be represented only using English characters. Python 3.0+ allows  you to define a variable in program using any words that can be represented in Unicode. For more details on this Python feature read PEP 3131 – Supporting Non Ascii Identifiers . Some samples : Program written in Malayalam. In tamil , and In Hindi

Same is the case of Web addresses. With the advent of Internationalized Domain Names(IDN) that allows you register web addresses in your own languages, the English only web address scene is changing.

But this change brings some issues in the definition of ‘Identifiers’ – just like English, what are the characters allowed in using a domain name or programming language identifier that can be used? Standards and specifications are being drafted on this for each language. For Internationalized domain names in Indian languages, CDAC is drafting the policy. For python, the PEP 3131 has specification.

As a general rule, Unicode standard and the standards based on Unicode does not allow you use Unicode control characters such as zwj and zwnj in identifiers. Based on that The Internet Corporation for Assigned Names and Numbers (ICANN) , in RFC 3454 , it prohibits a list of control characters. RFC 3454 is used as a specification for converting a Unicode encoded domain name to its Punicode version for doing the validation.  For example,Thottingal, in Malayalam- തോട്ടിങ്ങല്‍ (0D24 0D4B 0D1F 0D4D 0D1F 0D3F 0D19 0D4D 0D19 0D32 0D4D 200D), when converted to punicode becomes xn--fwcaqax2g2d7dtadc . This conversion excludes the zwj at the end of the word. If I do a reverse conversion from xn--fwcaqax2g2d7dtadc to unicode what I get is തോട്ടിങ്ങല് (0D24 0D4B 0D1F 0D4D 0D1F 0D3F 0D19 0D4D 0D19 0D32 0D4D). Note that codepoint 200D – ZWJ is removed. That means I cannot register my domain in Malayalam properly. You can verify this using ICU online converter.  Now another example, Tamilnadu – in Malayalam തമിഴ്‌നാട് (0D24 0D2E 0D3F 0D34 0D4D 200C 0D28 0D3E 0D1F 0D4D) becomes xn--lwcjmx4a2de7id. When I do a reverse conversion, I getതമിഴ്നാട് (0D24 0D2E 0D3F 0D34 0D4D 0D28 0D3E 0D1F 0D4D) . Now ZWNJ(200C) is missed. Try yourself using the converter . This means one cannot register a website with Tamilnadu written in Malayalam properly. The IDN policies for Indic languages are based on this exclusion rules for zwj, zwnj.

For python 3.0+ ,  you cannot have an identifier in programming language with zwj, zwnj  or any control character in it. See this bug report for more details: Issue 5358

All of the above issues are because of the assumption that zwj,zwnj is prohibited from Identifiers for all cases. But that is not true. Look at the Unicode Standard Annex 31 – “Unicode Identifier and Pattern Syntax”(TR31). TR31 is based on Public Review 96 – “Allowing Special Characters in Identifiers”

This annex describes specifications for recommended defaults for the use of Unicode in the definitions of identifiers and in pattern-based syntax. It also supplies guidelines for use of normalization with identifiers. [...]

default-ignorable characters are normally excluded from Unicode identifiers. However, visible distinctions created by certain format characters (particularly the Join_Control characters) are necessary in certain languages. A blanket exclusion of these characters makes it impossible to create identifiers with the correct visual appearance for common words or phrases in those languages. Identifier systems that attempt to provide more natural representations of terms in modern, customary use should allow these characters in input and display, but limit them to contexts in which they are necessary. [...]

But since the characters are invisible, to meet the security considerations,  It should be clearly defined where and all we can use them. What if a domain is registered with 5 zwnj  continuously in it? It will look same to a string with 4 zwnjs. So TR31 defines 3 valid cases where zwnj and zwj can be used in an Identifier.

  • Allow ZWNJ in breaking a cursive connection
  • Allow ZWNJ in a conjunct context (example:  തമിഴ്‌നാട് , ദൃക്‌സാക്ഷി)
  • Allow ZWJ in a conjunct context (examples:  ന + ് + zwj -> ന്‍ ,  क+  ् +  zwj -> क्‍ )

These 3 cases covers all zwj,zwnj usage patterns in our languages.

So now it is clear that Unicode standard allows them in Identifiers. In that case, there should not be a conflict between Unicode Identifier policy and ICANN policy or any other identifier policy such as PEP 3131. Blanket exclusion of these characters are not allowed. So RFC 3454 should be compatible with TR31. The IDN policy of Indic languages should be based on that new specification and not based on the existing RFC 3454. Since CDAC is responsible of Indic Domain policy, they should take responsibility for bringing this change.

For making a change in PEP 3131, myself and Baiju M started a wiki page explaining what change need to be done. Read it from here.

Having said that, is it desirable to have  two domains,  one with a valid zwj/zwnj usage and another without them? Of course, they will be visually different, avoiding any possibilities for spoofing. Now the question is whether those  two words represent two words in the language?

As far as Malayalam is concerned there are three cases here:

  1. Missing ZWJ is considered as a spelling mistake – തമിഴ്‌നാട് (correct), തമിഴ്നാട് (incorrect) pair is an example for that.  Should we allow both domains ? I don’t know any case where a missing ZWNJ form another valid word with different meaning.
  2. Missing ZWJ means , the word is a different word with different meaning. This is very rare – വന്‍യവനിക , വന്യവനിക pair is often cited an example for this. But many people argues this is not a valid case.
  3. Missing ZWJ never means a spelling mistake, but just a writing style. There are many examples for this. നന്‍മ-നന്മ is one obvious one.

So the question is whether a domain differing by a valid zwj/zwnj use  to an existing registered domain to be allowed or not? I would suggest to use existing policy for domain comparison for this. ie, If the collation weights of existing domain and to-be registered domains are same ,  don’t register the new one. ZWJ, ZWNJ are characters with zero collation weight and in collation or string comparison they are ignored.

by Santhosh at January 08, 2011 11:27 AM