Internet is a global network, with total freedom. Well, that is soon going to change, unless you act now. While you are reading this, someone is trying to control what you see, read, download, listen or write on the internet by taking control over the sites you can access! Don’t wait for that moment to happen. Act now, and protect Net Neutrality by signing in for the petition.

What is the matter with Net Neutrality anyways?

First, read the TRAI consultation paper ( 118 pages ). Don’t worry you want to read it all of the pages to understand what their intention is. For example read this:

2.10 - At one extreme, some argue that TSPs should focus exclusively on their role as “bit pipes” (carriers of data through the pipes) rather than remain integrated companies that provide services and infrastructure. However, there is another side to the story. Building such networks will require substantial investments by the TSPs. With more users connecting to the iternet, the network of the TSP is under constant strain and there is the risk that the back - end server will reach its capacity very fast, thus compelling constant upgrades, the costs of which are to be borne exclusively or for the large part by the TSPs which build such networks.

What? If TSPs are going to invest in infrastructure, we are going to pay for better internet, anyways. Like 3G is costlier that 2G, 4G will be costlier and so on. But not at the cost of freedom. Who wants to trade their freedom for money?

Implications are easy to understand. Check out for these videos for more:

Here are the steps:

  • First, go through the TRAI Consultation Paper.
  • Second, and most important step is send in your comments to TRAI, as mentioned on Page 2 of the Paper:

Stakeholders are requested to send their comments preferably in electronic form by 24 th April, 2015 and counter comments by 8th May 2015 on email id For any clarification / information, Shri A. Robert. J. Ravi, Advisor (TD & QoS) may be contacted at Tel. No. +91-11-23230404, Fax: +91-11-23213036.

Go to and send in your respose via email. The deadline for submission is 24th April 2015.

I have be trying to configure Google App Engine with ManagedVMs on Linux for a few days.

We will perform these steps on Ubuntu ( can also be done on Fedora ):

  • Install Google App Engine SDK
  • Install Latest Docker
  • Install VirtualBox
  • Install Boot2Docker CLI

Install Google App Engine SDK

Download Google App Engine SDK ( you may want to keep the defaults as is )

$ curl | bash

Now in a new terminal

$ gcloud auth login
$ gcloud components update gae-python
$ gcloud components update app

Install latest Docker on local machine

Install the latest Docker

$ curl -sSL | sudo sh

Install VirtualBox

Install VirtualBox

$ sudo apt-get install virtualbox

Install Boot2Docker CLI

Download a prebuild binary of Boot2Docker CLI ( version 1.3.2 )

$ wget -c
$ chmod +x boot2docker-v1.3.2-linux-amd64

Setup the Boot2Docker Image

$ ./boot2docker-v1.3.2-linux-amd64 init
Latest release for boot2docker/boot2docker is v1.4.0
Downloading boot2docker ISO image...

Add port forwarding in the range {49000, 49900} to VirtualBox VM

$ wget -c

$ chmod +x
$ bash -x

Obtain the DOCKER environment variables. These are used for accessing the Docker daemon inside Boot2Docker VM, from localhost

$ ./boot2docker-v1.3.2-linux-amd64 up
$ ./boot2docker-v1.3.2-linux-amd64 shellinit
Writing /home/tuxdna/.boot2docker/certs/boot2docker-vm/ca.pem
Writing /home/tuxdna/.boot2docker/certs/boot2docker-vm/cert.pem
Writing /home/tuxdna/.boot2docker/certs/boot2docker-vm/key.pem
export DOCKER_HOST=tcp://
export DOCKER_CERT_PATH=/home/tuxdna/.boot2docker/certs/boot2docker-vm

You must note down the three export commands, and use them to set these environment variables.

Setup GAE ManagedVM environment

Use the Boot2Docker environment variables obtained earlier

$ export DOCKER_HOST=tcp://
$ export DOCKER_CERT_PATH=/home/tuxdna/.boot2docker/certs/boot2docker-vm

Now begin setup

$ gcloud preview app setup-managed-vms

Ideally this should just work, but if not, then read on.

When there are problems

This will not work right away as you may not have access to different Google registries such as google/docker-registry.

Get a SSH shell inside Boot2Docker VM, and pull the registry

$ ./boot2docker-v1.3.2-linux-amd64 ssh
$ docker pull google/docker-registry

You need to perform the following steps inside your local machine

Find your refresh token

$ gcloud auth print-refresh-token

Cretae a registry-params.env file

$ cat > registry-params.env 

Now use this file to run `google/docker-registry’

$ docker run -d --env-file=registry-params.env -p 5000:5000 google/docker-registry

And again try to run the setup

$ gcloud preview app setup-managed-vms

While these are the steps I have followed, I am still trying to make it work. Hopefully it will work very soon.


Open questions:

This is a simple C program to check memory limit on a server.

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char* argv[]) {
  const int KB = 1024; /* bytes */
  const int MB = 1024 * KB; /* bytes */
  const int GB = 1024 * MB; /* bytes */
  long size = 0;
  void *p = NULL;

  int ctr;
  int j;
  int times = 100000;
  long sum = 0;
  for(ctr = 0; ctr < times; ctr ++ ) {
    size = 10 * MB;
    printf("Allocating %zu bytes memory \n", size);
    p = calloc(1, size);
    if(p != NULL) {
      sum += size;

      for(j=0; j<size; j++) {
  ((char*)p)[j] = 1;

      if(sum < GB) {
  printf("Total allocated so far: %ld MB\n", sum/MB);
      } else {
  printf("Total allocated so far: %ld GB\n", sum/GB);
      if(sum > (1*GB) )  break;
    } else {

Here is how you run it. On a UNIX/Linux machine do the following:

$ make memory
cc     memory.c   -o memory
$ ./memory
Allocating 10485760 bytes memory 
Total allocated so far: 10 MB


Allocating 10485760 bytes memory 
Total allocated so far: 550 MB
Allocating 10485760 bytes memory 
Total allocated so far: 560 MB
Allocating 10485760 bytes memory 
Total allocated so far: 570 MB
Allocating 10485760 bytes memory 

Yikes! One of your processes (memory, pid 1130) was just killed for excessive resource usage.
Please contact Support for details.


Today I attend the inauguration ceremony of MACLUGMaharaja Agrasen College, GNU/Linux Users Group. I was honoured to have been invited among many esteemed guests to light the lamp of this wonderful new beginning. This reminded me how nine years ago I along with a bunch of enthusiasts started JMILUG.

I shared my thoughts on “Freedom – Community – Science – Innovation”

Four Freedoms

Let me begin with the Four Freedoms. A program is free software if the program’s users have the four essential freedoms:

  • The freedom to run the program as you wish, for any purpose (freedom 0).
  • The freedom to study how the program works, and change it so it does your computing as you wish (freedom 1). Access to the source code is a precondition for this.
  • The freedom to redistribute copies so you can help your neighbor (freedom 2).
  • The freedom to distribute copies of your modified versions to others (freedom 3). By doing this you can give the whole community a chance to benefit from your changes. Access to the source code is a precondition for this.

Why are these freedoms important?

It won’t take much to realize how these Four Freedoms are. For example, lets take parallel between Four Freedoms and other things that affect our lives daily. Take note that these freedoms are applicable for more things than just software programs:

  • Science – standing on the shoulder of the giants
  • Literature and entertainment – Comics books turned into Super Hero TV Series and Movies
  • Internet – wouldn’t be possible if Tim Bernes Lee didn’t share his idea and the technology

What if Newton or Einstein and many other scientists didn’t share their theories? There wouldn’t be modern science. What if all the literature was kept secret? There wouldn’t be no entertainment. And list would go on and on.

We must be aware of the freedoms we carry with chores of daily life.

How do we take these freedoms forward?

We can spread the awareness of the Four Freedoms only through a Community. Community is a social unit of any size that shares common values. The people invest with shared capital ( such as belongingness ) and people communicate ( via words, art, emotions etc ) to share their views. Community consists of creators ( or contributors ) and consumers. All of the people have different roles and it better be organic, so that it can thrive based on these parameters:

  • Motivation
  • Passion
  • Goals

We need to ensure a thriving community keeps everyone aware of these freedoms. I am confident that MACLUG students have these qualities, and I wish them good luck.

Welcome to the world of Free and Open Source Software :-).

For references:

I wanted to view all the different chat windows and the buddy list side by side in a single window. There is no such feature in stock Pidgin installation. Fortunately I found a plugin for same from this ticket.

This plugin is available on Github project dm0-/window-merge ( thanks to David Michael / dm0- for creating it ! ).

You can find the build / install instructions on the wiki, however here is how you can do it on Ubuntu 14.04 and other OSes.

First install Pidgin development headers

sudo apt-get install pidgin-dev

Now build the plugin

git clone
cd window_merge
mkdir m4
autoreconf -fi
make install plugindir=~/.purple/plugins

Once it is installed, you have to enable it from Tools -> Plugins, then enable “Window Merge”. Here is a preview of window merge in action:


In the year 2006, I had created a project as a part of my academics. I finally managed to find the source code and complete project report which I have uploaded to Github. Mainily, I have updated the source code to use cmake build tool. The project documentation is in Asciidoc. Although it is quite an old piece of code, it works:

plyloviz — Phylogenetic Trees Visualization

phyloviz: phyloviz is Phylogenetic Trees Visualization tool. For more details visit Generation and Visualization of Phylogenetic Trees.

Technologies: C, C++, Qt4, ClustalW 1.83, Coin3D, Bioinformatics

I hope it is useful for someone already working in the field of Bioinformatics / Computational Biology.

Everytime I load a heavy application such as Eclipse or Thunderbird, I see this annoying message which keeps repeating even if I press “Wait”.

"Eclipse" is not responding.
You may choose to wait a short while for it to continue or force the application to quit entirely.
[Force Quit] [Wait]

I tried to search for a solution and found that the question is unanswered in both Ubuntu forum as well as Fedora forum.

So I decide to figure out what code is making the popup window appear. It turns out that the function named delete_ping_timeout_func is called whenever a timeout happens. Code with exact line number is present here .

However I didn’t find any code which reads a timeout value from some configuration file. Is there a mechanism using which I can configure the delete window timeout value? Essentially I would like to make the timeout value to about 4 minutes.

As an aside, I see that metacity developers mailing list has not had any post since year 2011. So is it worth asking it on that mailing list?

OAuth2.0 supercedes OAuth1.0 protocol, specifically in making it simpler to use. It supports different workflows as described in its specification RFC-6749. The most concise pictorial representation I found is here.

I created a Play! 2.0 Application in Scala which supports server to server token exchange using OAuth2.0 Protocol. You can find the project source code on GitHub at play-oauth2-server. Its a complete working server codebase, with:

  • Basic User login
  • Client registration with Callback URL
  • Auth Code generation
  • Authentication Token and Refresh Token generation

This application also demonstrates the following:

  • Twitter Bootstrap library using WebJars
  • Typesafe Slick 2 library for database access
  • Scoverage for Scala code coverage
  • and Specification Tests

To play with it, folow project README document. Please report any issues here.

This post is about the talk I was supposed to give at Ruby Camp 2014, Delhi/NCR. After all the preparation, slides and code I missed it. Unfortunately, I fell sick overnight and I couldn’t make it. Apologies for that.

The best I could do is upload all the material online on GitHub and my website.

  • the code is on GitHub at this repository: tuxdna/rubyml.
  • the generated slides are also online here

Thats all!