Codes from my life

My 2x estimation rule

Estimation is an important part of software development and its incredibly difficult to make correct estimation. Over the time, I have realized that on most occasions my estimates were very aggressive despite keeping some buffer time.

Then one day I decided to try out something new. I divided the feature in small tasks and then made best case estimates. Then I added all the individual estimates and multiplied it by two.

This has worked pretty well for me. Still sometimes I run out of time and have to work late night πŸ™‚

Image Source:Β


Today I encountered a weird problem while running a python script with nohup. I was not getting anything in the output file even after waiting for 2-3 minutes which was unusual as I have used nohup on countless occasions with bash scripts and had not seen this issue.

Python itself buffers stdout and stderr which was causing this issue. So you have to explicitly disable buffering when you execute python scripts with nohup.

$nohup python -u

With -u parameter python will disable the buffering and you will get all the outputs as it happens.


After a brief stint at Mountain View, I came back to Bangalore and have been working from home since then. Working from home (rather from a remote location for me, since rest of my team is on the other half of the world) has its own advantages and disadvantages. I am listing down some of the things that I have noticed about myself.


  • You have the liberty of choosing when you want to work.
  • There is nobody to look at what and when you work. It has its own disadvantages.
  • You have time for everything as you save the extra 1.5 to 2 hours of daily commute time. If you live in Bangalore you know how difficult it is to travel during work hours.
  • Have been cooking regularly, and trying out new dishes. Have been looking at lot of cookery videos on youtube. Sometimes I feel as if I have landed in wrong profession πŸ˜›


  • Since I am living alone in my flat, at times I feel the need to talk to people. Have been bugging my friends every now and then.
  • Its difficult to concentrate on work.
  • Collaborating on things become difficult as you don’t get to discuss things on paper or whiteboard.

Anyways its temporary since my team will be back by March. Also we will be looking for office space soon, if you happen to know any startup friendly place in IndiraNagar or Koramangala let me know.

My desk

This is my desk.


So what do we have here:

  • Lenovo Thinkpad T530
  • Dell H2312HM Monitor
  • Microsoft Ergonomic 4000 Keyboard
  • 3M Ergonomic mouse
  • Apple Mini Displayport to DVi Adapter
  • Creative 2.1 Speaker system (not visible in the pic)

All the products are from different vendors. I had not noticed this until I took this pic.

Recently I was working on a real time workflow for a module. I found it really difficult to find good tutorial for the same. I struggled with Flask, gevents and lot of other things and finally settled down to nodejs and and redis pubsub.

I have written a tutorial for the same

The beauty of nodejs is that everything was accomplished in less than 50 lines of code :). Read it and let me know if you have any feedback.



16:00:45 up 5 days, 8:40, 5 users, load average: 0.52, 0.45, 0.28

That’s my Thinkpad πŸ™‚

Yes that is a mouse. I use this at work.


But the default configurations did not let me use the middle button. I wanted to use it for scrolling. So I had to add some custom settings to X.

Before we begin, we need to know the device name:

# hal-find-by-capability --capability "input.mouse"


Then get the product name by

hal-get-property --udi "/org/freedesktop/Hal/devices/usb_device_4b4_60_noserial_if0_logicaldev_input" --key "info.product"

Areson USB Device

On an ubuntu system you need to create a file atΒ /usr/share/X11/xorg.conf.d/42-middle-mouse-scrolling.conf with the following contents:

Section "InputClass"
    Identifier "Middle Mouse Button Scrolling"
    MatchProduct "Areson USB Device"
    MatchDevicePath "/dev/input/event*"
    Option "EmulateWheel" "true"
    Option "EmulateWheelButton" "2"
    Option "XAxisMapping" "6 7"
    Option "YAxisMapping" "4 5"

Then restart X or reboot.

Original Source:Β