Aam Aadmi Party online propaganda tricks used in the Assembly Elections 2015

Aam Aadmi Party (AAP) won the 2015 assembly elections with resounding mandate. I looked into some of the reasons that helped to achieve this spectacular win and its implications. There is also another factor which I haven’t touched in that post, i.e, their clever online campaign.

They outsmarted Bharatiya Janata Party (BJP) easily and created lot of positive perception among the young voters. I will try to sum up what are things they have done or at least I have noticed them doing and what BJP and others should learn from this online campaign.

  1. Twitter: AAP continuously able to make their hashtags trend on top. This is very important because India’s total politics played on twitter these days. Most of the Indian politicians and journalists sits on twitter all day along to gauge the news and mood of the campaign. AAP has created and placed bots and excellent graphics on the twitter stream to shine their voice. If you can imagine the details, this doesn’t cost much money and few systems with proxies setup can automate all this work.
  1. Graphics: I am guessing AAP has good designers continuously made very huge number of propaganda graphics. I don’t even need to go into details of why good graphics are essential for a political campaign. Their excellent graphics are continuously trended all over twitter India. I can safely bet, after looking at many of their works, that the number of graphic designers worked on this task not more than three. Let me give one example to illustrate how smart AAP designers are. Look at the picture they printed all over Delhi at very beginning of their campaign. A happy faced Arvind Kejriwal vs moody face Jagadeesh Mukhi. A very subtle, unnoticeable way of putting AK is the best choice. Its I consider hitting below the belt but hey who stopped BJP in doing that.
  2. disqus comments: All popular news sites use disqus for their comments. disqus comments displayed sorted by votes given to that comment. Unfortunately votes can be easily manipulated. AAP used some javascript code to automatically bump votes up for their comments to bring them on to the top. If you see all popular news sites, top comments will be filled up with AAP propaganda. This is very very cheap and huge impact on ordinary readers of the news sites.
  3. whatsapp/email: Chain emails, whatsapp forwards were also huge. They have created a huge database of email ids and then bombarded propaganda messages to those mails, same with whatsapp and phone numbers.
  4. mobile app: This has minor impact but yet again this shows their intensity of reaching out targeted audience.

In conclusion AAP played well their game in beating BJP or any other in this area. A group of more or less 10 people would have worked for all this very effectively. I think BJP should start embrace some tecno-saavy volunteers to step up their game. Otherwise as India progresses towards more internet penetration, BJP will face lot of difficulties in fighting AAP’s online game.

AAP win, what does it mean for Indian Politics?


Yesterday Aam Aadmi Party (AAP) lead by Arvind Kejriwal (AK) won spectacular win in Delhi assembly elections by winning 67 seats out of 70. The victory of this scale and beyond (Winning 95.7% of seats) is only happened in the tiny state of Sikkim. Sikkim Sangram Parishad (SSP)and Sikkim Democratic Front(SDF) held all 32 seats in 1989 and 2009 respectively.

AAP worked hard to create a positive perception especially among youth. They reached out campaign larger number of youth population than any other party with their spectacular . They offered/promised free Wi-Fi to the youth. They posed as real aam aadmi and reached out to the slum dwellers and generous free poll offerings such as free water and cheap electricity. They also got whole sale support of Muslim and Christian community just to oppose BJP’s victory. AAP also played their fair share of communal, racial, caste and regional politics in the background.

They also had all political parties’ support just to oppose further rising of BJP after their general election win. Interesting part is, both Mamatha of TMC and Left parties which fight each other in West Bengal given their support to AAP just to stop BJP and its winning streak of acquiring more and more states in their fold.

Media played crucial part in making things worst for BJP. Media’s grudge against Central Government shown all the way. They blatantly given one sided support to AAP. I think among all of the reasons, Delhi voters really wanted to test the new party to see how would they go about and thought lets us give a chance to these guys..

So AAP won, its history now. what are the positive and negatives to take away. The positive thing is AAP won the election on Anti Corruption and Clean Election Funding plank. Whether or not AAP maintains those stands (To be fair to them, they were more transparent than others) the politics in India changed in such a way that every political party would need to become more transparent and less corrupt. This is a really good sign for Indian democracy. Another thing I liked about them is they brought many young people into the active politics which is healthy for India where general perception is all politicians are corrupt. Hopefully that will change to some extent.

Not everything is shiny with AAP, there are some concerning things about this win. AAP and Arvind Kejriwal lied with their teeth on some of things, there are some shady funding allegations which were never answered, but worst of all their far left ideology. Their give it for free based approach has very bad economical repercussions especially when India is strongly looking to advance its economy to a greater heights. Anyhow, I or anyone don’t need to be skeptical without giving proper time to Arvind Kejriwal and his team. So I will wait and watch keenly their actions before shouting to the roof.

Finally I will close by saying Good Luck to AAP/AK and real aam aadmi of Delhi.

Emacs minor mode timer-revert-mode

Yesterday instead of writing thesis I was wasting time to write a small minor mode. Fortunately it came good and I put it on github. timer-revert-mode reverts a buffer when its associated files modifies in the background. Yes, there is auto-revert-mode for that. But auto-revert-mode was causing more problems than it solve for my use case.

The commentary from the timer-revert-mode package reveals what it does.:

A minor mode to revert buffer for a given time interval.

This is more like `auto-revert-mode' but with a specified time interval.
see `timer-revert-delay', defaults to 15 seconds.  This is useful because
Emacs' auto-revert-mode doesn't have a facility to tell the frequency.

My use case is while writing latex documents, background running make
needs some time to finish, usually 5 to 10 seconds.  unlike
`auto-revert-mode' which is very eager to load the file as soon as its
modified outside, this one lazily waits for 15 seconds.  For best
experience, if the background process takes 5 seconds then
`timer-revert-delay' should be around 10 seconds.  Okay the logic is not
perfect though but minimizes conflicts.

New blog setup with tinkerer.

I finished migrating this site to tinkerer blog engine from o-blog in the last weekend. With o-blog Even though I liked the idea of blogging with org-mode and the fresh look of o-blog it had few problems. One of major problem is that the site became painfully slow to load the pages because of heavy use of Javascript which is against the point of having a static website. It is also true that the source files are not pure org-mode markup.

Anyhow I decided to move from away from it. Why tinkerer instead of famous jekyll blog engine? well I have some familiarity with python and I liked the idea of Tinkerer is being just tiny layer on the documentation generator sphinx.

The migration was not at all the difficult. I have small number of pages (less than 10 at this point) and turning org-mode source files to rst was semi automatic. Though org-mode doesn’t support exporting org to rst, I made use of org html exporter and html2rst for the conversion and with some manual tweaking and fixing.

One of the main reason for the migration is I want to write more and o-blog was putting me off with its above mentioned problems. I want to reduce any unsolicited friction that hinders me to write.

For the sake of!!!

I got this idea of “for the sake of”.

It started with the idea of “read for the sake of write”. i.e., if you can’t write by which you consolidate learning from reading it whole reading aspect goes waste.


  • learn for the sake of teach.
  • watch for the sake of show.
  • hear for the sake of speak.
  • and so on.

In all cases one should remember that the central idea is here to improve ourselves and the world around us for better but not to acquire false pride.

What would you say.?

Emacs Tip: just-one-space

In writing text or even code in Emacs, lets say you have some thing like this

a friend of mine _        has gone to build a Snow-Man.

The cursor is at _ in the above example. So you need to remove the unnecessary spaces in the sentence.

One way to do this is pressing M-` delete all the spaces in between and `SPC. That is fine what if you have new lines like this

A friend of mine _

        has gone to build a Snow-Man.

Its very painful to bring them to gather.

That is where M-x just-one-space comes in. With a negative argument it takes care of any number of newlines. This is the code I use to handle this

(define-key global-map (kbd "C-|")
  (lambda ()
  "place only one space in between at the point"
  (just-one-space -1)))

Try this, it will definitely come handy. Of course change C-| to your convenient key chord.

Bash navigation is made easy.

Moving between the folders in a bash shell is the most painful thing. How cool it would be to have bookmarks and cd to them without writing all the path name. So here is how you can add bookmarking functionality to your bash shell. works great and I use all the time.

# I got this from http://hayne.net/MacDev/Bash/aliases.bash
# and made few changes by my own
if [ ! -f ~/.dirs ]; then  # if doesn't exist, create it
    touch ~/.dirs
    source ~/.dirs

alias L='cat ~/.dirs'

G () {              # goes to distination dir otherwise , stay in the dir
    cd ${1:-$(pwd)} ;

S () {              # SAVE a BOOKMARK
    sed "/$@/d" ~/.dirs > ~/.dirs1;
    \mv ~/.dirs1 ~/.dirs;
    echo "$@"=\"`pwd`\" >> ~/.dirs;
    source ~/.dirs ;

R () {              # remove a BOOKMARK
    sed "/$@/d" ~/.dirs > ~/.dirs1;
    \mv ~/.dirs1 ~/.dirs;

alias U='source ~/.dirs'    # Update BOOKMARK stack
# set the bash option so that no '$' is required when using the above facility
shopt -s cdable_vars

Put this code in .bashrc in your home directory, then you are good to go.

use S to save a bookmark and cd (or G) to your favorite folder. try these commands you can how easy it is. here $ is your shell PS.

$ mkdir myfavfolder
$ cd myfavfolder
$ pwd
$ S fav
$ L
$ cd
$ pwd
$ cd fav
$ pwd

My work flow is to add a “now” bookmark to current work folder and move around to any folder and come back with cd now current folder. If I found I am accessing two folders frequently to finish the task at hand, I would bookmark them as now and then with addition to all other bookmarks. It works very well for me. what do you think.?

By the way., there is a great bash pulgin called bash_it on github. I added this functionality there as well.

Hosting guide to hcoop

NOTE: This guide is still very much incomplete.

This website is hosted at hcoop.net which is no-profit corporation and maintained by democratically elected community.

Getting membership

apply for membership by filling up the membership form. Remember the password displayed after submitting the form which will be useful to access your account.

Make new members payment

make a payment through paypal or google checkout from “new members payment page” and wait for payment to be processed. you will receive accepted email soon. once this process is done move on to setting up server which needs linux/unix familiarity. here I try to put the step by step as reference for myself and anyone who is starting setup. Infact there is very good wiki you should check out. This is guide mostly summary of that, agiain please remember not a completed one, if any problems you should consult the wiki.

Setup your hosting

Password less login

  • ssh to ssh.hcoop.net (with the above password., or ask for help from admins[at]hcoop.net)

  • change the password

  • I tried to add id rsa.pub ()

  • kerbeos client and kinit (token)

    • install from terminal
sudo apt-get install krb5-user libpam-krb5 libpam-ccreds auth-client-config

File system permissions (AFS).

My five steps.

  • give all permissions to .public

  • get all permissions for myself

  • give only read and list under web for public

  • take off all permissions to other users on the system
    • This may be needed to prevent fellow users on the system poke into your stuff
chmod 700 ~/*

be simple and trust me dont mess with them.

Main fs commands to note

  • grant permission to <USERNAME> to a directory DIR in your $HOME. Use
fs setacl -clear ~/DIR <USERNAME> all
fsr setacl -clear ~/DIR <USERNAME> all # r stands for recursive
  • give permissions to public for public html
fsr sa ~/public_html system:user read # listing and reading

Here is what I used exactly.

fsr sa ~ yagnesh all        #give myself every rule
fsr sa ~ system:anyuser l    # any user can list but cant read yet
fsr sa ~/web system:anyuser read # any user can read(lr) my webroot
chmod 700 *             # any other user cant poke into my Dir
fsr sa ~/.public system:anyuser all # .public for domtool access (I did not put any thing the)

Changing name servers of A domain from registrar (eg: godaddy)

  • hcoop.net nameservers
  • hcoop.net IP since I read the user manual by skimming. I missed this one had to search for lot time.
  • whois lookup

Process domain domtool to get start (bit hairy)

Database creation

dbtool can be used to create new databases. First add username to mysql then create a DB

dbtool mysql adduser

Enter your login password dbtool creates useraccount in mysql. Then simply create a DB

dbtool mysql createdb test

Username test will be created for you.

Access databases

By the your databases are connected from host “mysql” not at “localhost”. From command line get into the mysql interactive session

mysql -p -h mysql DATABASE_NAME

Dropping tables

Droping tables are bit tricky. at first you are not give access to drop a DB or table with in a DB.


Keep in mind that “your token may get expired”