What I think. http://blog.vinayvinay.com For as a man thinketh in his heart, so is he. posterous.com Tue, 13 Sep 2011 21:33:00 -0700 ubuntu Network Manager showing 'Enable Wireless' in grey and makes it unclickable http://blog.vinayvinay.com/ubuntu-network-manager-showing-enable-wireles http://blog.vinayvinay.com/ubuntu-network-manager-showing-enable-wireles

i've run into this issue multiple times in ubuntu while waking up from a suspend / hibernate like operation. right clicking on the Network Manager on the notification area shows 'Enable Wireless' but unclickable and in grey. you can fix this by making following changes to file:

/var/lib/NetworkManager/NetworkManager.state

and making sure it looks like:

 

[main]

NetworkingEnabled=true

WirelessEnabled=true

WWANEnabled=true

 

sometimes a "sudo service network-manager" is enough after the previous step to reflect the change, but on other occasions i've had to reboot my machine.

give this a try when you're stuck and let me know if it works.

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/1172776/tmp_98952158.jpeg http://posterous.com/users/heOPKTWF0shQK Vinay Patel vinayvinay Vinay Patel
Sat, 09 Jul 2011 04:35:00 -0700 the only program that i follow on Indian television - Sa Re Ga Ma Pa - Little Champs http://blog.vinayvinay.com/the-only-program-that-i-follow-on-indian-tele http://blog.vinayvinay.com/the-only-program-that-i-follow-on-indian-tele

i believe it is the sacred duty of television, radio, literature, and other such media, to
introduce its audience to the expanding possibilities of life. it goes without saying that
they don't agree to my belief. but seldom, some do.

for anyone who can appreciate music, this show - Sa Re Ga Ma Pa - Little Champs,
is a blessing. who would have thought these children aged 10-14 would be such fabulous
singers? i'm mesmerised each time i hear them; and so is Lata Mangeshkar, as conveyed
by her through SMS to the show. i'm sure they are not even mature enough to understand
how exceptional they are and how their performance influences thousands of viewers.

the performances are so pure and straight from the heart. i feel pity for those in my 
generation, who survive on base pleasures, and cannot appreciate such purity and divinity. 

maybe it's because the show is not as sophisticatedly packaged, as lets say the X-factor or
CokeStudio @ MTV. the children are not elegantly dressed-up, they don't have that 'cool-dude' 
attitude that other shows try to popularize. they don't sing thumping chart-busters everytime,
nor do they necessarily dance or 'perform' (as it is referred to on other channels), while they sing.

this doesn't mean the people behind the show don't care about these things. this conveys
what they value above all is the sur in the performance, and also: 

  • providing a platform to the hidden talent so as to encourage them,
  • bringing back the glory of hindustani classical music in films, and
  • inspire the viewers.

over the course of the show, these children get trained by gurus who have made a name
for themselves in the industry and can share valuable experience with them.

here's one particular performance, by Sanjana, that stirred my soul and brought tears to
my eyes today. the lyrics of the song - Sai, by Sartaaj - are not easy to comprehend and
appreciate especially at such an age. but, the expressions on the little girls face and in
her singing clearly tells us how well she appreciates it. i'm happy the producer took the
effort of reaching out to her modest background and making people aware of it.

it's such a humbling experience.

the show provides numerous examples of the truimph of human spirit against the issues of 
gender bias, poverty or ignorance of some parts rural of India. which drives home my point 
about the sacred duty of media.

thank you Zee TV, Sa Re Ga Ma Pa, and every performer on the show for being true entertainers.

God Bless all of you!

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/1172776/tmp_98952158.jpeg http://posterous.com/users/heOPKTWF0shQK Vinay Patel vinayvinay Vinay Patel
Wed, 01 Jun 2011 21:55:00 -0700 how i used udev, udevadm, and a shell script to automate syncing of media files between my android phone and computer http://blog.vinayvinay.com/how-i-used-udev-udevadm-and-shell-scripts-to http://blog.vinayvinay.com/how-i-used-udev-udevadm-and-shell-scripts-to

udev provides powerul rules that can be used to perform custom tasks whenever there is activity on usb ports. here's what i created in /etc/udev/rules.d/99-sync_music_files_on_android_devices.rules:

    ACTION=="add|change", ATTR{size}=="31114240", ATTRS{vendor}=="SAMSUNG", ATTRS{model}=="GT-I9003", NAME="galaxy_s_external_sd", RUN+= "mkdir /media/galaxy_s_external_sd", RUN+="mount /dev/galaxy_s_external_sd /media/galaxy_s_external_sd", RUN+="/home/vinu/bin/sync_music_files_on_android_device.sh" ACTION=="remove", RUN+="/bin/umount -l /media/galaxy_s_external_sd", RUN+="/bin/rmdir /media/galaxy_s_external_sd" LABEL="sync_music_files_on_android_devices_end"

the first line registers an action to add/change event of a usb device that has attributes as size: 31114240 and parent device having attributes of vendor: "samsung" and so on. you can find the attributes related to your device by using udevadm as:

$ udevadm info -q all -n /dev/{device_label}  

udevadm is pretty interesting and can provide a lot of information about devices, shows all applicable rules for a device, and also allows testing your rules using triggers. see the udevadm man page for details.

i've also asked the device label to be custom (NAME) as: galaxy_s_external_sd so that i can refer to it that way in RUN which creates a mount point and mounts the device at the desired location. then i RUN the shell script that actually syncs the media files and logs the activity:

#!/bin/bash rsync -r -t -v --progress --delete-before /home/vinu/Music/sync /media/galaxy_s_external_sd/Music >> /home/vinu/log/rsync.log

interesting isn't it? let me know if you try this out, or if you've done more interesting stuff related to udev or, in general with linux, through comments.

references:

http://reactivated.net/writing_udev_rules.html

http://wiki.archlinux.org/index.php/Udev -- lots of examples

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/1172776/tmp_98952158.jpeg http://posterous.com/users/heOPKTWF0shQK Vinay Patel vinayvinay Vinay Patel
Mon, 09 May 2011 07:33:00 -0700 I'm attending RubyConf India 2011 http://blog.vinayvinay.com/im-attending-rubyconf-india-2011 http://blog.vinayvinay.com/im-attending-rubyconf-india-2011

I'm attending RubyConf India 2011

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/1172776/tmp_98952158.jpeg http://posterous.com/users/heOPKTWF0shQK Vinay Patel vinayvinay Vinay Patel
Tue, 26 Apr 2011 02:16:00 -0700 the gem bundle i'd like to begin with on my next rails3 project http://blog.vinayvinay.com/the-gem-bundle-id-like-to-have-on-my-next-rai http://blog.vinayvinay.com/the-gem-bundle-id-like-to-have-on-my-next-rai

here's my choice of gems (my toolset):

# authentication
gem 'devise'

# http calls to external api's
gem 'restfulie' # or
gem 'http_party'
gem 'curb'

# performance management
gem 'newrelic_rpm'

# indexing data
gem 'sunspot_rails'

# structuring data as tree
gem 'ancestry'

# image attachments
gem 'paperclip'

gem 'haml'

# ui fanciness
gem 'jquery_rails'

# organizing top-level navigation
gem 'simple-navigation'

group :development do
  # for generating sql queries from migrations for my dba
  gem 'paraphraser'
end

group :test do
  gem 'rspec'
  gem 'rspec-rails'
  gem 'shoulda'

  # bdd, cuking it right
  gem 'cucumber'
  gem 'cucumber-rails'
  gem 'webmock'
  gem 'pickle'
  gem 'parallel_tests'

  # test data setup, say yes to factories, no to fixtures
  gem 'factory_girl_rails'

  # testing JS
  gem 'jasmine'
end

if you're doing rails without these superb gems, you must give them a try.

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/1172776/tmp_98952158.jpeg http://posterous.com/users/heOPKTWF0shQK Vinay Patel vinayvinay Vinay Patel
Fri, 22 Apr 2011 03:03:00 -0700 nature never ceases to amaze - lake shore at Chicago http://blog.vinayvinay.com/nature-never-ceases-to-amaze-lake-shore-at-ch http://blog.vinayvinay.com/nature-never-ceases-to-amaze-lake-shore-at-ch

"There is a pleasure in the pathless woods,
There is a rapture on the lonely shore,
There is society, where none intrudes,
By the deep sea, and music in its roar:
I love not man the less, but Nature more."

- Lord Byron, Childe Harold’s Pilgrimage

to relieve my mind of the urban sophistication and superficiliaty whenever i took a walk on Lake Michigan Shore in Chicago, i echoed the sentiment expressed in these lines. everytime i started from my home in 151N Michigan, walked through Millenium Park, crossed over the BP Bridge and reached the shore at the Chicago Yatch Club. from there on i either used to go right towards the Museum Campus to the Adler Planetarium to get a splendid view of the skyline, or go left to the Navy Pier; and all this right in the middle of the freezing winter of the windy city. the cold seemed to freeze all the noise in my mind and i felt tranquil.

solitude is best at such times, but be choosy about who's accompanying you. on most of these photowalks i used to be accompanied by my friend and avid photographer Abhinav.

i highly recommend the Lakefront Trail to any nature lover visiting Chicago.

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/1172776/tmp_98952158.jpeg http://posterous.com/users/heOPKTWF0shQK Vinay Patel vinayvinay Vinay Patel
Thu, 21 Apr 2011 04:00:00 -0700 top 3 ways to mess-up a cucumber functional test suite http://blog.vinayvinay.com/top-3-ways-to-mess-up-a-cucumber-functional-t http://blog.vinayvinay.com/top-3-ways-to-mess-up-a-cucumber-functional-t

on a recent project we used cucumber extensively for functional testing of our rails app using selenium webdriver to run it in the browser. all of us are convinced that it's a great tool, but there are many a things worth keeping an eye on otherwise it can lead to pain. 

here i list top gotchas that we targetted and brought sanity back; but before i start, i'd like to point-out that these problems arise from the misuse of the freedom that cucumber gives us. cucubmer scenarios are plain english, and hence there are as many styles of writing scenarios as there are members on the team and that trickles down to steps as well.

it is hence imperative that all those who are working on the suite start with establishing a set of guidelines that they want to follow to preserve sanity and not go beserk.

so here's a list of the top (obvious) things that are easy to miss-out on:

  • not having a unified way to create setup data / assert / do common tasks:

    we had steps that looked like:

        Given I have 2 products with 2 facets
        Given I have 2 products with 2 facets and 2 parts and 3 designers

    step definitions of both the above examples look similar, that they use factories to setup data. but the issue is code not being DRY and hence it brings along it's own set of problems. it's well said that - "if you're writing 'and' in your step, then you're doing something wrong".

    to solve this issue we added pickle to our suite. though i find it to be a little short of what all i expect from it (eagerly waiting for more features to be added) for now it totally eradicates the need to write steps that create data. not having a way is having a unified way, right? :) in addition to this pickle also allows you to do assertions on data that it has created for you in really smart ways.

  • not having a guideline for putting steps in the place it belongs to:

    in the steps quoted above, the first was created when products index page was cuked and second was created when the designers index page was cuked. it's highly likely that you do the same mistake of assuming that the product_steps.rb is for testing product related pages and designer_steps.rb is for designer related pages. that was how the step and feature files evolve if everyone is not on the same page.

    this makes searching for step definitions a pain and many people will steps that do exactly the same thing if there is not one pre-decided place to put them in and look for them.

    to solve this, we took the much repeated advice across the internets, that is to maintain model related step files. put product related steps in product_steps.rb and designer related in designer_steps.rb.

  • not consolidating scenarios regularly:

    this one's the last in the list but is very important if you use cucumber to do proper BDD as we did :) during story development we try and write scenarios that are small and more-or-less correspond to one AC in the story. but someone should ensure that once the story is development complete or has reached a certain state where it solidifies in terms of development, these tiny steps are consolidated into one flow. as that is what feature files should have otherwise it can lead to astronomical regression build times which in turn leads to delayed feedback. also the feature files become increasingly elaborate and maintainence nightmares.

here's a list of resources that helped me in arriving at solutions to these issues. worth a study:

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/1172776/tmp_98952158.jpeg http://posterous.com/users/heOPKTWF0shQK Vinay Patel vinayvinay Vinay Patel
Sun, 13 Jun 2010 10:33:00 -0700 Don't miss in Mahabaleshwar: Tiger Path http://blog.vinayvinay.com/dont-miss-in-mahabaleshwar-tiger-path http://blog.vinayvinay.com/dont-miss-in-mahabaleshwar-tiger-path

especially for those who are troubled by the fact that Mahabaleshwar is increasingly and uncontrollably becoming too commercial, don't miss this trail called tiger path (2.25kms, Bombay Point to Polo Ground). it is virgin jungle, but has the bare necessity one would want there, a clearly marked trail and milestones at the right places to indicate the direction to take. it starts just a few steps away from the parking for Sunset (Bombay) Point, and is marked by a green metal board indicating its length and direction. a word of caution, it is easy to get lost in there, so for the weak-hearted ones, do this track on a horse-back so you get the directions. if you don't mind getting lost, go ahead, but make sure done in broad daylight and less rain, else it can get complicated. to get a preview of tiger path, one can also try the trail starting from the same place, from Bombay Point to Lovers' Point (500mts).

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/1172776/tmp_98952158.jpeg http://posterous.com/users/heOPKTWF0shQK Vinay Patel vinayvinay Vinay Patel
Sat, 29 May 2010 05:49:00 -0700 the best way to upload photos to facebook from (k)ubuntu http://blog.vinayvinay.com/the-best-way-to-upload-photos-to-facebook-fro http://blog.vinayvinay.com/the-best-way-to-upload-photos-to-facebook-fro

Its been a well known issue that the facebook uploader fails miserably in ubuntu, and hence these packages rock! first i installed phatch

$ sudo apt-get install phatch

next, f-spot

$ sudo apt-get install f-spot

though i know that f-spot allows one to batch update photos, i preferred the intuitive and simple interface of phatch for doing so. i used f-spot's Facebook upload plugin (which is deactivated by default) to upload to Facebook. the f-spot plugin can be activated from Edit > Manage Extensions and used from File > Export > Facebook. happy photo uploading!

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/1172776/tmp_98952158.jpeg http://posterous.com/users/heOPKTWF0shQK Vinay Patel vinayvinay Vinay Patel
Fri, 30 Apr 2010 16:01:00 -0700 Driving skills http://blog.vinayvinay.com/driving-skills http://blog.vinayvinay.com/driving-skills

As a child i used to curiously observe the rhythm with which my Dad used to press the pedals (even before i knew they were called accelerator, brakes and clutch) while he was driving. Looking back, that experience of sitting next to the drivers' seat taught me more about the use of those pedals, hand-to-eye co-ordination and judgement, than what i learnt when i actually sat on one. I often wonder (mostly, when on a narrow road, in middle of a traffic jam caused due to irresponsible driving), with all these Motor Driving Schools springing up like mushrooms and people being the first drivers in their family (EMI culture), it is getting increasingly rare that people get exposure to decent driving habits. How about carpooling till one gets a knack of this before she actually begins to drive her own car out the garage?

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/1172776/tmp_98952158.jpeg http://posterous.com/users/heOPKTWF0shQK Vinay Patel vinayvinay Vinay Patel
Sat, 20 Mar 2010 08:58:00 -0700 kde extended desktop not working? http://blog.vinayvinay.com/kde-extended-desktop-not-working http://blog.vinayvinay.com/kde-extended-desktop-not-working

here's what lspci tells me about my on-board graphics card and the xrandr (primitive command line interface to RandR extension) i executed to get my extended desktop on:

$ lspci | grep VGA
00:02.0 VGA compatible controller: Intel Corporation Mobile GM965/GL960 Integrated Graphics Controller (rev 0c)

$ xrandr --output LVDS1 --auto --rotate normal --output VGA1 --auto --rotate left --left-of LVDS1

after endless attempts to get this working from the Display Settings (and then realizing that these options don't exist in there) Rajat helped me get this working. the above xrandr configures outputs as:

  • laptop display - LVDS1: auto configuration, no rotate
  • additional display - VGA1: auto configuration, rotate left and to the left of my laptop

if you don't know what the outputs are, run:

$ xrandr -q

another reason why command-line absolutely rocks!

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/1172776/tmp_98952158.jpeg http://posterous.com/users/heOPKTWF0shQK Vinay Patel vinayvinay Vinay Patel
Thu, 31 Dec 2009 19:49:00 -0800 Letter from pearly gates http://blog.vinayvinay.com/letter-from-pearly-gates http://blog.vinayvinay.com/letter-from-pearly-gates

This is a letter I had written for Swaroopi's (my sister) friend, when she lost her father. Grief-stricken Vaishali was obviously not up for exams starting next day. What if her father wrote her a letter from eternity, and comforted her by assuring that he was at peace and not lost in oblivion? So our attempt to condole her took this form:

Media_httpi180photobu_qqehm
Divine Postal Network (was the stamp on the envelope) Dear Vaishu, I'm writing from God's Divine home (now, my new home). Never before have I felt as peaceful and happy as I am feeling now. Here, everyone shows enormous affection and care for me. Yes, but I miss you all. I had a long chat with God, Which ended just now. He said- "Apologize to Vaishu on my behalf because I invited her daddy forever to my home." Even God, the Almighty, was confused a few hours back. But he took a decision that only he can take. The reason he was confused was:

  • He cares for me a lot and wanted me to relieve my body from all the incurable pain it was going through.
  • On the other hand, he knew you would feel completely lost and shattered if that would happen.

But he had to make a choice, and I'm glad he did. I said to him, "Thank you very much God, you relieved me of all my pain, but I will miss my family and they will miss me too. How will you compensate for that? You just cannot." But I was wrong. God had already thought about this problem and we have struck a deal:

  • He has allowed me special powers so that I can see you as if you were in front of me, always.
  • He has agreed to play postman. Whenever you have anything to say to me just close your eyes and pray to God. He'll pass on the message to me just as He has passed on this letter to you. As a bonus? He will answer all your prayers.
  • Now this one is the best deal; He has promised to take my place in your life to take care of you as I did and will always keep you smiling and far away from trouble.

It was so nice for me to hear all this. Vaishu I don't know whether you will completely understand this now. The best lesson that God taught me was this:

"There are innumerable pains and restriction on you till you are trapped in your body. Anyone on earth cannot escape this.

But now be freeing you from your body, it is not only your bodily, but each and every worldly pain of yours which I have cured. I am the only doctor who can do this.

And remember, miles can't separate you from the one's you love, one's you wish to be with which is called soul connection. If you want to be with Vaishu you are already there, same goes for Vaishu."

No wonders, after knowing all this, I feel so light and have forgotten what sadness and pain was. This inspired me to write this letter to you. Now after knowing all this, I am sure you will feel the same. Lovingly yours always, Daddy

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/1172776/tmp_98952158.jpeg http://posterous.com/users/heOPKTWF0shQK Vinay Patel vinayvinay Vinay Patel
Sun, 29 Nov 2009 06:08:00 -0800 Make JBossAS 4.3 GA follow symlinks in your deployed app http://blog.vinayvinay.com/make-jbossas-43-ga-follow-symlinks-in-your-de http://blog.vinayvinay.com/make-jbossas-43-ga-follow-symlinks-in-your-de

If you are doing a deployment like: JBOSS_HOME/server/[config]/deploy/app.war where,

  • app.war is a symlink to an exploded directory, or
  • app.war contains symlinks to directories

then you will not see a successful deployment till you instruct JBoss to follow these symlinks by tweaking your JBOSS_HOME/server/[config]/deploy/jboss-web.deployer/context.xml in this the Context element should have:

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/1172776/tmp_98952158.jpeg http://posterous.com/users/heOPKTWF0shQK Vinay Patel vinayvinay Vinay Patel
Fri, 24 Jul 2009 18:21:00 -0700 Why think crooked? http://blog.vinayvinay.com/why-think-crooked http://blog.vinayvinay.com/why-think-crooked

Yesterday I had been to Malaka Spice, Lane 5, Koregaon Park. We were about 20+ people who enjoyed the food and the chatter happening over it. It was when I was leaving the scene that this dialogue happened: crooked thinker > "Hey Vinay how are you going home?" "Well my Activa." crooked thinker > "Don't tell me you're going to get wet, or you have a raincoat." "I do have one. I keep it with me just so that I don't reach office wet. But I prefer not wearing it when I am going home so that I can enjoy the rain." crooked thinker > "Ha! You could have just said that you don't have a raincoat." I don't understand what in the world made him think that I was cooking up a story to hide the fact that I don't have a raincoat. I wanted him to come to my vehicle and see for himself that I did have a raincoat. What I was saying was the plain fact that the only way I can enjoy the rain is when I ride back home and get drenched in it. What pricks me the most is the way people think, the way they perceive simple facts. Why so crooked? I don't seem to find any justification for the same. Help me with your comments if you can find any. Turns out that he wasn't alone: another crooked thinker, with a sarcastic laugh (he is from the US, so see his perspective) > "Well, you better enjoy it, 'cause you get lots of it. Its all wet. Eeeeesh!"

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/1172776/tmp_98952158.jpeg http://posterous.com/users/heOPKTWF0shQK Vinay Patel vinayvinay Vinay Patel
Thu, 28 May 2009 08:07:00 -0700 Windows Vista not booting on a Dell Inspiron 1420 after an Ubuntu install. http://blog.vinayvinay.com/windows-vista-not-booting-on-a-dell-inspiron http://blog.vinayvinay.com/windows-vista-not-booting-on-a-dell-inspiron

Well this issue is commonly observed on Dell lappys where I install Ubuntu by changing the default disk partition configuration. Windows fails to reach the login screen and exits after displaying a BSOD for a fraction of a second and reboots to show the options for booting Windows after it fails to boot. SOLUTION: The cure to this wierd behaviour is also weird. If you notice this happens only if your boot is not a cold start, as may be a reboot.

  • What you can do is press the power button on your lappy for a few seconds so that it completely powers-off.
  • Then press power button to 'cold' start it.
  • Windows boots as normal.

Till the time I reach a permanent solution to this issue, this is what works for me; when I do, I'll puts it here. It surely has something to do with the disk partitions.

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/1172776/tmp_98952158.jpeg http://posterous.com/users/heOPKTWF0shQK Vinay Patel vinayvinay Vinay Patel
Sat, 28 Mar 2009 13:15:00 -0700 A story of courage ... a real one. http://blog.vinayvinay.com/a-story-of-courage-a-real-one http://blog.vinayvinay.com/a-story-of-courage-a-real-one

Here's a post that I had written on a personal blog few months back. It deserves a place in public too, so ... read on. ~ Hello, Today, I'll share a story that Chachu told us over dinner. I almost cried, right in the middle of the restaurant; and so will you when you hear. It left me pondering: "What gives me the right to be enjoying this sumptuous dinner, or living this lavish lifestyle?" It will leave you pondering too. I was half way through my dinner we were busy chatting. Chachu said: "If I can just borrow 2 mins. of yours I'd like to share the experience I had today on MG Road." Assuming it to be some real comedy that Chachu is expert at coming up with at such times, I dropped my spoon and said: "Ha Bolo! Bolo!" Chachu happened to come for dinner after having done some extensive shopping at MG Road with Chachi. There, just when he had stepped out of the Titan Outlet, he heard a faint voice from behind. "Sir, please get your shoes polished. Just Rs. 2 Sir. Please." (Well, let me tell you, I am not writing this dialogue in english because that's the limitation of this blog; but because surprisingly it did happen in english.) Chachu turned around and found a small child with a sling bag on his shoulder, and yearning eyes. He was astonished to hear him speak such english. Chachu's instant reaction was to ignore and move forward. But, that chap followed him for about another 20 steps, saying the same thing: "Sir, please get your shoes polished. Just Rs. 2 Sir. Please." "Sir, trust me I'm good at it." "Sir, please." (all in english, haan!) Well Chachu noticed the fluent english and stopped. He had to. He asked that chap: "How do you happen to speak english?" "Sir, I study, I go to Sadhana High School." "Which class are you in?" "Sir, IIIrd standard." "Where are your parents?" "Sir, my mother is at home. I have a little sister too." "Your father?" "He's in Rajasthan, mother left him because he was very rude to her. I've seen it." "Was he a drunkard?" "Yes, Sir. Please get your shoes polished Sir, just Rs. 2." Chachu removed his shoe and that guy was immediately at his job. Chachu was thoroughly impressed and equally moved. Chachu told me: "Vinay, you should have seen that chap, he was not begging. Every word he spoke was confident, correct english. He spoke each word with a sense of august. Not with the intent to make people sympathize with him. He was not ashamed of his state. But he had a sense of pride to be able to take control of it." In the mean time that chap continued: "Sir, please buy me a wooden box." "What for?" Chachu couldn't understand. "Sir, today I make about Rs. 50 to 60 a day on an average. But if I have a wooden box then I can make twice the same." Chachu realized that it was a wooden box which  polishwaalas use as a stand to work on. "How much does it cost?" "Rs. 250" "Will you buy me one? The shop's just round the corner." Chachu felt so unfortunate. Normally he's the one who is used to keeping excessive cash with him. But just when he needed it the most, there wasn't enough. You can understand he had been out shopping with Chachi.  "See beta, I can't buy one now." "Sir...". And that chap just stopped. Looked up and said. "Its the same story everyday. People tell me they'll buy me a wooden box tomorrow, and I never see them again." "No, what's your name?" "Sir, my name is Vijay." "See, Vijay, I want to help you. I'm out of cash today. I'll surely come tomorrow and buy you that wooden box. Trust me. What time are you available here?" "Sir, I go to school in the morning at 7:30 and till 11:30 I am in school. Then 12:00 to 6:30 I'm here working in this area between Aurora Towers and Wonderland." "Vijay, I'll meet you tomorrow for sure." "Thank You, Sir. Please come tomorrow. I'll be waiting." Chachu gave him the Rs. 50 he had. He asked the parking slot waala guy: "Is this guy genuine?". Parking waala said: "Oh yes sir, kya english bolta hain! Kamaal hain!". Chachu was convinced and he came for dinner. I just stopped eating. Vijay. What a hero! I'm raring to go to meet him tomorrow. I've decided. I'll sponsor his education. I'll go to his school and set everything. It has been a defining moment in my life. God has taught me a great lesson today. Whenever I'll be bogged down by my troubles, I'll surely remember God, but I'll also remember Vijay. Don't wait for someone to bail you out of trouble. Be the change you wish to see in this world. Take initiative. Take control of your life. However helpless you may feel you are, but you are never that incompetent to not take control of your life. It was real guys, not a story. It was real.

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/1172776/tmp_98952158.jpeg http://posterous.com/users/heOPKTWF0shQK Vinay Patel vinayvinay Vinay Patel
Sun, 01 Mar 2009 08:33:00 -0800 Problem: .net framework initialization error http://blog.vinayvinay.com/problem-net-framework-initialization-error http://blog.vinayvinay.com/problem-net-framework-initialization-error

Over the (million dollar) weekend I was working at restoring a desktop application at one of my customer's office after their disk was formatted due to a virus attack. It is a VB.net exe and was reluctant to start because of this problem: .Net framework initialization error Unable to find a version of the runtime to run this application. This is the message the dialog box gave. An obvious start to troubleshooting this is to Google it which returned following results: http://www.smartcomputing.com/techsupport/detail.aspx?guid=&ErrorID=22283 http://www.computing.net/answers/windows-xp/net-framework-initialization-error/83887.html http://social.msdn.microsoft.com/Forums/en-US/clr/thread/12588739-83ba-48a0-9cdd-31c38cec3607/ http://www.vbdotnetforums.com/net-framework/22473-net-framework-initialization-error.html http://www.experts-exchange.com/OS/Microsoft_Operating_Systems/Windows/Windows_Vista/Q_22683447.html Now most of these advise reinstalling the required .Net framework with latest updates and checking compatibility. I tried all these and still couldn't get it to work even after spending almost 7 hrs. Then the solution: I checked that the latest .net framework was installed and updated. I noticed that the 'Date Modified' attribute of the executable in my application (06-01-2009) was not the same as the last time I had built it (31-05-2007). I guess that the virus or some other process had modified the executable to give a framework initialization error. I replaced the exe with the one that I had generated on the last build. Bingo! Alternatively, one can also rebuild the application to solve this issue.

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/1172776/tmp_98952158.jpeg http://posterous.com/users/heOPKTWF0shQK Vinay Patel vinayvinay Vinay Patel
Mon, 23 Feb 2009 12:41:00 -0800 Top 3 learnings from Project Simulation in ThoughtWorks University http://blog.vinayvinay.com/top-3-learnings-from-project-simulation-in-th http://blog.vinayvinay.com/top-3-learnings-from-project-simulation-in-th

The ThoughtWorks University programme is over and I'm back in my home office Pune. It was an experience of a lifetime :) On the last day when the week-long project simulation was over we were doing a retrospective of the week that was and a group brainstorm came-up with these top 3 learnings from the activity.

  1. Customer Commitment.
  2. Communication and Collaboration.
  3. Managing customer expectations.

The project simulation is supposed to be the most significant part of the University programme. Here we are expected to apply all the consulting skills, developer/analyst specific learnings, and agile practices that we learn through the programme. Trainers double-up as customers and are constantly watching us at work. It is set-up to give us a feel of how projects are done in ThoughtWorks. As a Developer in the team, I was expected to work on the stories that the BAs cooked-up in consultation with the customers in the previous week. Our customer was very picky about the User Interface of the product. Being one of the few resources on the team of 23 who was comfortable working with CSS/XHTML, I took up the job of working on the UI part and most of my time in the project was dedicated to the same. That's enough for setting the context, so getting to the point of top 3 learnings:

  1. Customer Commitment: While on the project, if you lose focus of your customer even for a moment, that's harmful to the health of the project as well as to TW's impression in the mind of the customer. We had many many instances in the project when most of us were busy doing research on the technical stuff that were blockers to the development. Our customer was thinking - "What the hell am I paying these guys for if they are more interested in adding to their technical knowledge than delivering the product to me?". Instead, we should have discussed these with team members who had done the same stuff earlier and could have been more productive for the customer. If no one on the team knew we should have consulted experts immediately rather than trying to be the superman who can bail the team out of the problem.

    Another aspect to customer commitment is requirements and their priority. I asked the BA once if they could push-back on the rounded corners on the text-boxes and other costly features as in the consulting sessions we are told to ask "Why?" to all things you are asked to do and know how it is of value to the customer. But once I was convinced that this was how the customer's marketing department representative saw value in the product and not otherwise, there was no other option but to deliver. One of our simulated customers was representing the Resource Management team in his company. We didn't deliver any stories he had asked for in the first few days, and eventually were about to commit a suicidal act of pushing back on all stories that he had requested (good we didn't). But the day we showcased his requested story he jumped out of his chair and hugged all developers who had worked on RM stories. We should never have even thought of skipping the story that was so important to the customer just because we found it tough to develop.

    The essence is, put self aside and see everything from the customer's eyes.  

  2. Communication and collaboration: I've already touched upon this in the previous point. For more productivity and smooth flow of the project, communication within the team and with the customer is uncompromisable. Almost into the 4th iteration when I was acting Tech Lead, we introduced something called the Dev Huddle where all Devs got together in the middle of the room and discussed if they had any blockers and if someone could help them with a solution. We did this twice in the day and on both occasions we were able to match problem with a solution. Had the developers researched on their own they would have ended up doing redundant work. Imagine the amount of time saved for the customer. How we wished we had done this earlier. Better still; just shout out if you see a problem.

    We still did a lot of redundant work because pairs working on related stories didn't chalk out the details of what they were doing. Once someone picked up a story they ran to their machines and started to write code. Pairs working on related stories should have discussed who is developing which part, what the naming conventions will be, who will test what and how; otherwise you endup doing refactoring which was easily avoidable. Prepare flip charts, use white boards and draw the database mappings, tables and what have you. Don't assume that all parties to the discussion have clearly understood whatever has been discussed till the time it is put on paper. As on many occasions, we have seen that once on paper people realize that what they were thinking about others' thinking was totally wrong.

    In addition, keep card walls updated and prepare burn-up charts. These information radiators help the customer, it gives him sufficient information so that he knows where his money is going and is assured of project success.

  3.  Managing customer expectations: In iteration 2 our customer was yelling at us in the showcase as for the last 2 iterations our velocity was 1, whereas, we had promised him close to 3.5 (infact,  we ended-up delivering 32 points in the last iteration with an average velocity of 7.12 as a result of this yelling :) ). Learning was, don't tell the customer that you will get a story signed-off today if you are not sure of it. Be practical in estimating and convey the same to the customer.  If it will only be showcased say so. We learnt this the hard way. If this is tough, undercommit and then deliver more. This is better than not delivering your promises.

These are only a few gems I've shared here. The learnings from TWU are numerous and we can always talk about it when we meet. This is good time to thank our trainers for imparting the same.

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/1172776/tmp_98952158.jpeg http://posterous.com/users/heOPKTWF0shQK Vinay Patel vinayvinay Vinay Patel
Sat, 31 Jan 2009 18:03:00 -0800 Roy http://blog.vinayvinay.com/roy http://blog.vinayvinay.com/roy

God is the best planner. Just when you need them the most, He brings to you people who have the power to change you. These people bring to you God's message, which orients you to the right direction in the journey of life. A few years back I used to believe that only money is the measure of a man's greatness. Bill Gates, Warren Buffet, Azim Premji, Mittals and a few more are considered renowned in the world, apparently, because of their wealth. This deceived me. I had set a goal for myself that: If I'll be this rich then only will I consider myself successful. But in the last few years, I've become wiser. I heard Steve Jobs:  (Commencement Address @ Stanford in 2005). Heard Randy Pausch:  (the last lecture, achieving your childhood dreams) and a few more personalities. Courtesy: You Tube. Their thoughts changed my mind. Here are people who are successful, they are renowned personalities, but what distinguishes their success is that they've had fun all the way. Robert Pirsig, in Zen and the art of motorcycle maintenance, says: Its the side of the mountain that sustains life, not the top. This is where people miss out. Glad that I'm not going to. But what is it that makes the side of the mountain so interesting? It is about having fun in whatever you engage yourself in. This same philosophy resonates in most of the success stories at ThoughtWorks. TW is meant to be a home for knowledge workers. People who value their intellect more than most of the things in life. ThoughtWorks values reflect the same:

  • Customer commitment
  • Social responsibility
  • Uncompromising principles-respect, humility and openness
  • Best people
  • Fun
  • Entrepreneurialism
  • Global-Transnational team

An embodiment of all these values is our founder, Roy Singham. We had Roy come to ThoughtWorks University for a session on Wednesday, 28th January, 2009 (which could be named nothing else but 'Roy'). Then we had Roy address the whole TW Bangalore Office. This was followed by Roy's dinner with TW University Graduates. It was a special evening. In the first post about TW, I mentioned that I was elated to meet our Regional MD (Dharmarajan Sitaraman) right in my initial days. Now imagine how I must be feeling to have the opportunity to dine with our Founder and Chairman, Roy. As for the name ThoughtWorks, Roy drew inspiration from Dee Hock's notion of 'thoughtware' from his book, The Birth of the Chaordic Age. Roy very aptly describes himself when he says that he's crazy. He has a deep interest and awareness of politics, technology, economics, different cultures, people and obviously all about ThoughtWorks. He's a global citizen and keeps traveling for business or as a part of his social responsibility. The best part about him is that when he was with us, not for a moment did he make us feel that he was the founder of TW. At the dinner table he kept chatting with us as if he was friends with us for the past 3 years. I remember him patting my shoulder atleast 5-6 times. I had an amazing time being with him and getting to know him better. So here's another person, a Godsend, who further clarified my belief that having fun in life does work. It completely awes me when I think of how one person can bring such an enormous difference to the 1000+ lives which work at TW. Thank you Roy, for having us with you that evening and more significantly for having created ThoughtWorks. (Roy, please let me know if you read this post by adding a comment.) Words of wisdom: One can select either paths to success:

  1. Create business value, or
  2. Create intellectual value.

In the former, one benefits only at the cost of the other. But in the latter, knowledge created spreads in all directions and benefits everyone that it touches. Thank you God!

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/1172776/tmp_98952158.jpeg http://posterous.com/users/heOPKTWF0shQK Vinay Patel vinayvinay Vinay Patel
Tue, 13 Jan 2009 18:06:00 -0800 ThoughtWorks University Chautauqua on Diversity http://blog.vinayvinay.com/thoughtworks-university-chautauqua-on-diversi http://blog.vinayvinay.com/thoughtworks-university-chautauqua-on-diversi

Chautauqua, let me speak about it first. Webster's defines it as:  any of various traveling shows and local assemblies that flourished in the United States in the late 19th and early 20th centuries, that provided popular education combined with entertainment in the form of lectures, concerts, and plays, and that were modeled after activities at the Chautauqua Institution of western New York. But if you read Robert Pirsig's Zen and the art of motorcycle maintenance, you know why this applies to ThoughtWorks University sessions. Its not about what a Chautauqua was intended to be (as described above), but what it actually did that matters. It was influential. (The dictionary needs to be updated.) But, how did Robert Pirsig come into the picture from out-of-the-blue? Its an unbelievable coincidence that occurred. I'll explain: We've come so far in the university: Day #1: Welcome to TWU, Introduction to TWI, TW Values, TW History. Day #2: Client choices and consulting responsibility, Consulting in context, Software delivery model, Diversity. I wouldn't delve into the depth of each: we got a warm welcome to TW and an idea of what TWU is going to be like, some ground rules; why TW is unique, its values, some lessons on how TW does business and delivers value. I'll elaborate on the Diversity in TW, as it struck me the most today, and which is why this post started the way it did. (Deepali and Mike did a splendid job at helping us internalise this value and so did other trainers when they spoke). Its just that this topic gave more flight to my mind (which is of a dreamy, thinker kind). Just after my University sessions I spent some time at the office, came back to my apt., changed, picked-up the book, went-out, and continued reading from where I had left it in Pune. I was sitting in the garden of Diamond District by the pool (well, that's dried up. Which explains why I was able to read a philosophy book there :) ). Intermittently, I was reflecting at what all we had covered today, specially diversity. I happened to hit a particular Chautauqua (a term used by the author to describe his philosophical discussions), which talked about human understanding being of 2 kinds-classic and romantic. I'll quote him: "A classic understanding sees the world primarily as underlying form itself. A romantic understanding sees it primarily in terms of immediate appearance. ... Romantic mode is primarily inspirational, imaginative, creative, intuitive. Feelings rather than facts predominate. ..." Why it connects is because I've begun to realize, and am sure will see more of it, that ThoughtWorks has a romantic understanding of Software Consulting. Further blogs on TW will surely help you believe that, I'm sure. But what snatches the priority today is the tail of this Chautauqua in the book, which coincidentally speaks of diversity and discrimination. We had a healthy discussion in the last session about diversity today:

  • Why TW embraces diversity?
  • How does diversity at TW make business sense?
  • How diversity in TW differ from diversity at other companies? (Sheena's question)
  • How the thin line between diversity and discrimination is handled? (Rajeev's question)
  • and more...

Well, it goes without saying that we learn the fun way and all the learning just sticks. (next time just consider it by default, I won't write it). Interestingly, the Chautauqua in the book had these lines too: "We take a handful of sand from the endless landscape of awareness around us and call the handful of sand the world. Once we have the handful of sand, the world of which we are conscious, a process of discrimination goes to work on it. We divide the sand into parts. This and that. Here and that. Black and white. Now and then. The discrimination is the division of the conscious universe into parts. The handful of sand looks uniform at first, but the longer we look at it the more diverse we find it to be. Each grain of sand is different. No two are alike. Some are similar in one way, some are similar in another way, and we can form the sand into separate piles on the basis of similarity and dissimilarity. ... The process of creating piles goes on and on. Classic understanding is concerned with the piles and the basis for sorting and interrelating them. Romantic understanding is directed towards the handful of sand before the sorting begins. ... What has become of urgent necessity is a way of looking at the world that does violence to neither of these two kinds of understanding and unites them into one. Such an understanding will not reject sand-sorting or contemplation of unsorted sand for its own sake. Such an understanding will instead seek to direct attention towards the endless landscape from which the sand is taken." If I had a functionality to block further surfing till the above quote is read at-least trice I'd go for it. :) But, ... Interpretations are left to you. Its in such a perfect adherence to the day I've had at TWU, thought I'll share. I feel as if I'm unknowingly joining-the-dots and getting a fanciful, complete picture at the end. TW has a romantic understanding of Software Consultancy. For sure!   ~ Afterthought: I'll introduce Robert Pirsig's book to you. Its about life and technology (similar to what this blog is about). He uses the motorcycle as a proxy to technology and talks about human interactions with technology and with his self, in philosophical discussions spread throughout the book. I've barely finished 20%, but hit this spot today and thought of sharing it here. Its a tummy-full serving of philosophical delicacy.

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/1172776/tmp_98952158.jpeg http://posterous.com/users/heOPKTWF0shQK Vinay Patel vinayvinay Vinay Patel