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: http://blog.jr0cket.co.uk/2010/08/my-favourite-estimation-technique.html

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 script.py

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

WFH

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.

Pros:

  • 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 :P

Cons:

  • 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.

DSC_0475

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 socket.io and redis pubsub.

I have written a tutorial for the same https://github.com/roshansingh/realtime-notifications.

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.

 

uptime

$uptime
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.

3M-Ergonomic-Mouse_1

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"

/org/freedesktop/Hal/devices/usb_device_4b4_60_noserial_if0_logicaldev_input

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"
EndSection

Then restart X or reboot.

Original Source: http://www.conrad.id.au/2011/08/middle-mouse-button-scrolling-on-linux.html

Follow

Get every new post delivered to your Inbox.