Wednesday, October 19, 2005

What Gurgaon has and Bangalore does not !

While I was traveling in an autorickshaw in Bangalore ( The software capital of India ) over a weekend , we got stuck in a traffic jam in Airport road.. this was mostly because of the flyover work which has been in progress since last 2. years now and is not even 50% complete. Since we were stuck for a long time I started a small conversation with the driver asking him when he thinks the flyover will be built and he started cribbing about the pitiful progress made in that direction and had lost all hopes of its completion.

Weekdays I travel to a client office which is in Gurgaon near New Delhi from my house by a cab. There is again a flyover being built over the NH-8 which links Delhi to Gurgaon and there is almost always a traffic jam. I cribbed a bit about how sad the state of the road was, but to my surprise, the driver said “Saahab , ek do mahina adjust kar lengey, phir dekhna kya mast road hoga, “ ( “Just adjust for a couple of months, and then see how beautiful this road will become”). Such a positive mindset cannot be built among citizens without fulfilling some promises. The Delhi govt. has been on a real flyover spree and has built over 8-10 flyovers in last couple of years, some of them having over 20 passing combinations possible.

Also what struck me was this signboard in Bangalore saying “Flyover work in progress” and this signboard in Gurgaon saying “Flyover work in progress, please bear the inconvenience for a better tomorrow”.

Surely the citizens of Delhi have a brighter tomorrow for their life on the road !

Saturday, October 08, 2005

Laying back and watching the world for a while...

Its been nice to be back as a consultant, to my very own home town. I get to stay with my parents and eat home cooked food ! This is giving me a lot of opportunity to think and rethink certain important things that have been affecting my life , of which i never cared before. Some of these thoughts have led me to look at life at a different angle, which has been pretty cool !
I try to follow a strict 9-5.30 schedule in office which is giving me enough time to spend at home, with family and over the internet. I try to spend as much time reading books or blogs whichever is easily accessible.
So no late night pizzas at office, and no games ! ( No AoE for a while ! )

Thursday, September 22, 2005

The World is Flat...

I just finished reading the book The World is Flat, by Thomas Freidman. It was really an amazing read. Thanks to Vivek Singh for motivating me to read it, by quoting interesting excerpts from the book time and again on our plane ride from Delhi-Bangalore. I am thinking of posting some excerpts from the book, which were really fascinating for me in my later post. While finishing the book at this hour in the night I remembered my childhood prayer

Thank you God for the food we eat..
Thank you God for the water we drink..
Thank you God for the birds that sing.............. and so on..

I think the next generation would most likely be ..

Thank you Man for the electricity we use...
Thank you Man for the internet we have...
Thank you Man for the mobile conn we made...
and Thank you Man that now the world is flat !

Another Blog of mine

I decided to start another blog with quite a weird theme. Its called I might die soon !

Wednesday, September 07, 2005

The Consultant Backpack

I have been traveling quite a lot this time of the year. Earlier it was to the state of New York, and now it is to New Delhi ! So I was wondering what a prefect consultant backpack/toolkit should contain ? For fun sake I thought of jotting down all those..

Lets see…

Laptop (of course !)
Network cable ( a long one if you dont have a wirless router, so that it reached ya bed !)
Wireless router ?
Thumb Drive
Writeable CDs

A decent book. (For the boring plane rides and the airport delays )
Water bottle
A toothbrush (huh !)
Cellphone (For the lonely long walks )
RSA ids ?
iPod
Minor stationary (pen,pencils, sheets..)

Frequent flier cards.
Credit cards.


.. More ?

Disabled due to technology – The shortcut handicap

I am so used to using IntelliJ or Eclipse shortcuts, that I feel handicapped without them. More so if my pair doesnt use them it gets even more irritating. Once it so happened that my pair was typing such a long java variable name, that I felt a strong urge to snatch the keyboard from him and hit the damn Ctrl space ( to use the completion feature in the IDE).

But what if you have all the high quality (read expensive) softwares running on limited hardware..... I have to run the IDE as well as the App Server together on my machine which uses up almost all of my RAM.

Due to the hardware limitations , my IDE runs really slow So earlier I used to find a method in a class using Ctrl F12(IntelliJ) or Ctrl o (Eclipse), but on this slow running version of Eclipse IDE , I have to use Ctrl F ;-)
More so, before I use a particular shortcut, I need to think twice whether its gonna consume a lot of memory and CPU cycles compared to navigating the code manually. Oh God !
Looks like I am heading backwards in time !

Monday, August 29, 2005

No business for BAs.

I actually landed up in a weird situation a few days back when working on a story. The story asked us to implement a certain functionality as-is in the older website which we were migrating. The business asked us devs to find out what the functionality was in the old website, tell them, and implement the same as well in the new site !!! Adding more to it, there was no one to validate whether developer findings were correct or not.
Wonder where this will go .. scary !

Consulting in my own country !

Since last week, I am back into consulting mode. Whats different this time is that I travel within India itself. Most of us on the project do Mon-Fri and are back home on weekends. More than the work, I have been having fun hanging out with ThoughtWorkers after office , over dinner , playing pool etc... Most of us have numerous number of stories to tell by the end of each day !
The major plus point is that I get to have Indian food, and play a client facing role, all at the same time !. So no more surviving on pathetic veg soups / boca burgers for some consulting experience ! Whew !!!

Saturday, July 23, 2005

Flying Kingfisher Class

I recently flew Kingfisher Airlines from Delhi to Bangalore. More than the fact that I could get a pretty cheap ticket on a 4 day notice, there were so many other facts which realy makes this airline different.

What they believe in is to provide an amazing "Flying Experience". So as soon as I entered the airport I was escorted by a Kingfisher crew member who handled everything right from my baggage screening to getting me checked in the flight.

As I boarded the brand new aircraft, I could feel that this flight could be a lot different than many others I had taken. They had individual TV screens for each passenger, with quite a decent line up of TV/Radio programmes. I dont think any domestic carrier in India does this. The food served in the flight was a lot better than any other airline food I have ever tasted.

I booked my tickets through tele-booking which was simple and fast, but I also heard they have an online booking facility on there site which is quite amazing as well.

How can I miss the amazing crew huh ! They had an awsome line up of gorgeous ladies dressed in red and white, truly standing up to the Kingfisher class!

So if you are flying in the Delhi-Bombay-Bangalore sector I would highly recommmend trying out this upcoming airline !

Thursday, July 21, 2005

Lost in Vegas



I had a blast with three of my friends during the long weekend of July 4. We planned to spend the best part of it (all the nights esp. ) on the Las Vegas Strip. Describing the night life in my limited high school english vocabulary would be a waste.. hence a short blog entry ;-) . We also happened to take an SUV to teh Grand Canyon where we tried to get a bit adventurous , trying to click snaps hanging around the cliffs.

Friday, June 24, 2005

XP when 'Working from Home'

After a long time I am back into a project where I work at the client office. Most of my colleagues travel to work on Monday and leave on Friday. Taking a flight every Monday morning and Friday evening , can become really painful in the long run. It becomes tough to sustain the same pace. One solution is that work from home on Friday, or give an option to work from home to get pending work completed.

Sounds fine , but the problem comes when you try to sustain the XP best practices like Pair Programming/Rotation, Collective code ownership etc. I beleive that once the door to "work from home" is opened, it breaks the XP cycle there and then. Since each XP practice is dependent on another practice, for example without pairing, refactoring, it is really difficult to gain the benefits of collective code ownership.

Also it leads to the problem , that newbies to XP , who are sceptical about pairing, might be drifted to the option of working from home, than try out and see whether they can benefit from pair programming.

Imagine the horror, when a fellow developer decides to go on a refactoring spree over the weekend , and checks in all the code , all alone ! Monday morning , rest of the team will have to spend some significant time understanding what has happened over weekend. More problems come up, if some developers disagree to the approach. The cycle breaks, and people start owning pieces of the codebase.This might even give rise to a blame culture which is even more unhealthy for an XP team.

How to solve this issue ?

I am looking for ideas on this..

Off my head I can think of..
  • Remote pairing (using some XP tools available in market) ?
  • Individuals in the team not taking huge tasks alone (like big refactorings)
  • What people decide to work over weekend is decided on Thursday in a developer huddle.
  • People doing any imp stuff over weekend take a small session in the coming week to let the team know about it
  • Maybe have alternate weekends as 3 day weekends, stretch for 9 hrs a day to get stuff done. This way no one works on weekends and gets a long break once in 2 weeks.
  • Decide on core team hours ?

Wednesday, May 18, 2005

Small Tip for Web Services

If you are hosting a webservice on a machine, and want to invoke a method on it from a remote machine through a browser , the browser might not show up the "Invoke" button straightaway.

If you still want it you mite need to uncomment the following lines of code in machine.config which will enable httpget and httppost.



I Found it useful when I am setting up the services from a remote box.

Sunday, May 15, 2005

Answer to Life, The Universe, and Everything ?

If you google for the subject line you get an answer of 42 !

I was tempted to read the book "The Hitchhiker's Guide to the Galaxy'" by certain colleagues in the office who went on and on about the hunor in it. While finishing the first of the series of novels, one of the lessons I learnt was

"Look beyond your immediate surroundings. Dont narrow down your focus to only the problem you are currently working on. Think wider ! "

I started wondering, we keep cribbing about our jobs, friends, money etc... what if tomorrow the world does not exist at all. Indeed a lot of energy we would have wasted in sulking !

Saturday, March 19, 2005

Reverse Engineering C# code to UML ?

All of a sudden , I was pushed into the world of UML for a couple of days. What if you had all the code , and someone wanted UML diagrams out of it.

I had tried this with Java code long back and Poseidon worked really well. For C# , there are not many commercial tools which generate class diagrams with all the relationships out of the box. I tried a lot of tools including Visio, Poseidon etc.. but the best was Visual UML . All I had to do was use the Reverse Engineer option on the menu , and select my project file (.csproj), and within seconds , my class diagram for all the classes in the project is ready. No complex GUI and no cumbersome menu options !

Oh Taxes !

Its that time of the year again, the last month of the financial year. As the accounts guys in office are sending their last reminder to the staff to submit their reimbursement bills, investment proofs etc.. the employees themselves are figuring all new ways to furnish evidences to reduce their taxable income.

I should really say , some of my friends/colleagues have really cool ideas in getting medical receipts, fuel bills and even charity receipts. I see colorful bills scattered all over my table, people filling up weird multi column excel sheets etc...

My team manager had some strong opinions on people with the so called "cool" ideas. According to him , "If they show the same energy and enthusiasm in probably making investments in mutual funds, equities etc... they can earn a lot more than the meagre sum they are trying to save using untruly methods ! ". Great but..whats more important to me than money, is the satisfaction of being honest and truthful.

On the contrary..addding fuel to the fire is the country's finance minister with his new budget. Salaried employees are being taxed more and more. Even fixed deposits in banks are now taxable and... no more corporate perks. "Huh !! atleast ..lemme minimise my taxes to the greatest extent!" - cries todays salaried employee.

Employees cry further more when they find out that they have to pay taxes to the Indian Govt. for income they earned in US/UK etc.. "Gosh , why shud I pay that much to the govt ?, all i get is bad roads and traffic jams , hmpf ! ". The same people file taxes promptly to the US/UK govt. but are reluctant to pay to their own countries governing body.

I just remembered I need to buy a house in Bangalore. With prices soaring to a new high, when will I be able to do that , if I keep paying my taxes religiously ??? :-(








Tuesday, February 08, 2005

Retrospectives and Six Thinking Hats.

I was reading the book Six Thinking Hats. I started thinking of how we can use this method in conducting retrospectives for a team.

According to me, the way Owen has been facilitating retrospectives for our team, it really comes close to what has been proposed in the book.


Blue hat (organizing..)

We lay down the rules of the meeting. No cross talks, participation is optional etc..

White hat (facts..)

Our Iteration Manager gets his funky Excel sheet up to see our velocity in the last Iteration, The stories we played etc..

Yellow hat (Optimistic.. )

We always talk about what went right, and what can go right.

eg:- "We can make the release successfuly " , "If we spend less time in standup meetings, we can be more efficient"


Black hat (Pessimistic, negative..)

We talk about what went wrong in the past iteration

eg:- "If the build machine is not any faster, it will affect our velocity"


Red hat (feelings..)

Everyone expresses there feelings, opinions , towards a certain issue, if they have any.

eg:- "I feel that everyone in the team should pair "


Green hat (new ideas.. )

When most of the issues are on the white board, we as a team put on the green hat to brainstorm on new ideas to solve a given issue.

eg:- "I think we should split the build to make it faster !"


Blue hat (organizing..now optional )

We note down most of our notes, and maybe put it up in the team area so that the team can benefit.

Wondering whether I am missing something here ... ?


Friday, February 04, 2005

I feel like a resource !

I did not know whether anyone will understand this but well.. its my blog so I can write anything.

I am a developer, and most of my job is to deliver a project with passion, with the best possible means,tools, practices and above all quality. I try to do my best everyday at work,mostly by writing nice code.

Sometimes I feel I am being used.. used like a resource.. used by managers of the team of course! Its like they put me on to something 'cos I might have worked on that before. Or maybe I can do it faster, or c'mon, noone else is ready to do it !

Think this happens to everyone. But people who are too focussed on their work do not recogonize it. Or maybe they do not care, or maybe they have given up and accepted it as their fate. Maybe they decided they will do the same when they become managers of that sorts.

I pity such people. Atleast I try to know when I am being used and if I cant do something about it, I feel bad about it, and can blog about it. :-)

Whats the solution ? What can I do ? Maybe become a manager next ? Will I be the same to the developers working with me ? Will I get carried away ? Dunno.

Till then.. as one Sports Illustrated catchline goes.." I will be playing poker.. and they will be playin me !"


Monday, January 31, 2005

Manipulating Binded Datasource at runtime is tricky..

Its not that easy as we think to manipulate a collection that is bound to a combobox/listbox. This works out of the box if you are using a DataView but if you are using something like an ArrayList to bind you comboBox control, then the changes in the binded collection will not directly update the control collection.

However you can force this by calling SuspendBinding() and ResumeBinding() on the BindingContext. You might need to do something like this everytime you manipulate the collection..

{

// code...

BindingManagerBase bindingManagerBase = BindingContext[_documentTypeDTOList];

bindingManagerBase.SuspendBinding();

_documentTypeDTOList.Add(documentType); // manipulating and adding a new type at run
time.
_documentTypeComboBox.DataSource = __documentTypeDTOList;

_documentTypeComboBox.DisplayMember = "Name";

bindingManagerBase.ResumeBinding();

}

DataBindings in C# .net

I found this interesting in C# the other day I was working on some GUI code. One can actually bind a widget (eg:- ComboBox to an IList ). The IList can be a collection of objects of any custom class, maybe even a DTO.

So if I have my custom class as

class DocumentTypeDTO
{
....
public string Name
{
get
{
return _name;
}
}
public string Type
{
//Getter
}
public string Code
{
//Getter
}
}

I can actually bind my control to an array of DTOs .

_documentTypeComboBox.DataSource = documentTypeDTOs;

To specify what member has to be used for display, I have a DisplayMember setter on my widget which takes a property name string.

_documentTypeComboBox.DisplayMember = "Name";

I can also define the value which will get picked up on the selection of a combobox item by:

_documentTypeComboBox.ValueMember = "Code";

Apparently .net uses reflection to get the members out . Sweet !!



Sunday, January 30, 2005

Pair Programming with Pair rotation

My colleague Vivek once blogged about the way we pair in our team. I would say it is like an acquired taste, some people like to pair and some do not. I used to hate pairing earlier , until in this project we started rotating pairs frequently. You get a chance to work with a different person every day, and get a different view of the codebase. Opinions vary and often new ideas come out.

To contrast what Vivek had written , our team size has scaled down temporarily to only 2 developers. Hence I am "stuck" with the same pair. What now happens is that we have developed almost the same kinds of opinion about the code. Over a period of time , it becomes really boring because you for sure know what your "life long" pair is thinking. So if this pair does not beleive in test-first development, you will never get a chance to do that as long as you pair with the same pair. That is probably why I feel we should change pairs after a max of 2 days. Best is to rotate pairs , when finished with a reasonably sized chunk of task.
There is definitely something to learn from every team member. Pair rotation gives you a chance to learn by working with each member closely.
Brent, Paul and I came up with 6 commandments for Pair Programming in our team .
  1. No story work without a pair ..... ever.
  2. Switch pairs often, ideally at the end of a reasonably sized task.
  3. No heroes in the team. ( Everyone knows about the codebase well enough )
  4. After pair switch , newbie to the story must drive.
  5. Driver cannot drive for more than 10 minutes straight.
  6. Driver should think out loud especially if it relates to lunch. ;-)

This worked well for a small sized team , a max of 4 pairs. Wonder what are the experiences in larger XP teams ...?

Standup meeting - Talking token

One of the most common practices in XP teams is to have Standup meetings. Each team member starts by giving an update on what they did yesterday, what they are going to do today and any issues they are facing without actually trying to solve them in the meeting.

This works fine till one of the team member starts discussing a critical issue (eg:- "Oh the build machine is not working because...") , and every member starts voicing there own opinions. Sure recipe for a meeting hijack and future chaos !

We used something called a Talking Token. It can be something from a Kush Ball to a Hockey Stick. The token must be passed around, and each team member has the right to talk if he has the token. If you wish to voice an opinion, on an issue which someone else is discussing, wait for him to finish, and signal (mostly non verbal gesture preferable) for the token. This way we ensured that when one person talks everyone in the team listens patiently. More importantly , in big team standups, they atleast know who is talking.
I had read somewhere that a talking token should be a really heavy object (Like a 10 pound ball ?), and the speaker should hold out the token by stretching his hand. This would ensure that a person cannot speak for more than the ideal 3 minutes or so. Whew!


Sunday, January 23, 2005

A nice end to my birthday

Something different which I did to spend yesterday evening, was to watch a set of plays by Naseeruddin Shah called Katha Collage. This was the first time I had gone to watch a play, and to tell you what , the experience was amazing.

The dialogues, the sets, the music , and above all the acting was indeed mind blowing. No take, no retake, putting up such an awsome and hillarious performance , definitely deserved a standing ovation from all of us in the audience!

Wednesday, January 19, 2005

Working for a Services Firm in India isnt always fun..

I work for an American services/consulting company , which has one of its offices here in Bangalore. In my past 2 years, I have been through a lot of projects and met a lot of new consultants.

The most weird part of the services industry is that most of the Indian consultants, just want to go client sites ("go abroad", "go onsite", whatever u wanna call that ) and make a quick buck. The passion and even the intention to successfully deliver the project you are currently doing is really missing in these people. All they think is "When will they send me to US ? ", "How can I increase my stay there ?", etc... As a team member , when u see your colleagues working with this kind of attitude, it is very discouraging.

From what I hear from a lot of my friends, I guess it is to a lesser extent in my firm , than in a lot of Indian MNCs, who still encourage body shopping ! Wondering when will that change !
There is more to it when people's priorities are like these. They tend to manipulate at work and try to get into the spotlight of their bosses, which in my opinion, is the worst to happen.

Monday, January 17, 2005

Microsoft Support Rocks !!

It was my first experience with Microsoft Support. We were facing a problem of not being able to debug an Office (Word , Excel etc..) Addin component we were devloping under VS.net. Through some of our contacts in Thoughtworks, we manged to get in touch with an XP Evangelist and BdotNet member Deepak Gulati in Microsoft itself. He promptly put us in touch with Leo, a Microsoft Support Engineer whose expertise was in Development Tools etc..
Leo was amazing in solving the issues we were facing, with regards to following up with us, and even accessing our machine with Remote Assistance to fix the problem.
He also made us understand that we were unable to debug the word Addin due to a conflict of dlls b/w (1.1 and 2.0 beta) . The problem was more so , because we were copying the dlls to the Word install directory for Word to pickup, which was not required, since Word picks it up from the install directory itself.
Now you know that if you are developing using Microsoft Tools and you have a problem which is out of your reach, you know whom to contact with your MSDN subscription.
Microsoft Support Rocks !

Tuesday, January 11, 2005

The Microsoft COM hell

In my current project we have a short release which involves writing addins for Microsoft components like Word, Excel Outlook etc.. It might sound cool until you actually get into writing some COM interop code.

There are some funny things you might need to do when you are calling a class in another namespace from your office addin, i.e doing an interop.

  • Firstly you need to have a Guid for identifiying the interop class. This apparently is used for registering this class as an interop in the registry
  • Secondly you need to set a property at the project level in VS.net, "Register for COM interop = true".
  • If you are using an installer , the you need to make sure that in the properties of this project , you have the property "Register" set to "vsdraCOM".

If that is not enough, if you do not do any of the above, you do not get any pretty error messages that tell you to do so. Your addin might just stop working all of a sudden or will work on one box and stop working on the other. Hmpf!!

To add to all this, the documentation for COM is really pathetic , even in MSDN. The best resource for you are blogs of those unfortunate developers , who have suffered the pain and agony of working with Microsoft components

Sunday, January 09, 2005

We are still backward in Urban India

For quite some time I have been wondering about how mature is the thinking of people in our Urban households. I got reminded of the same when I was watching the movie Swades. We show in big screen that a lot of castism and bias based on religion is prevalent in rural areas of the country. I went ahead asking myself the same question , in the context of our urban households.
For an important thing as marriage, we are still looking for bride/groom from the same caste , relegion sect etc.. IMHO this is true for almost 70% of the educated Indian citizens living in big towns and cities. We have still not been able to educate our own parents/relatives/friends to be more mature and broad minded in their thinking., which is really sad.

But there are definitely some people who are trying to do their very bit in the urban society. For example, Times of India Matrimonials, give a 10% discount on ads which do not demand caste and relgion. Way to go Times !

Sunday, January 02, 2005

Development can be fun if the team is Self Organizing

I have been working over 8 months as a developer in an XP team. From the beginning itself the team had been striving to be self organizing, in terms of the tasks we pick up everyday, to how we execute them. A typical day for me started by giving a small update to the whole team , during a standup meeting, then picking up one of the many tasks lined up for the day. This was amazing because every other day, I was allowed to choose what kind of task I wanted to do.

And you signup for the task, with another person and form a pair. When the pair is finished with a reasonably sized chunk of task , we decide to switch pairs, normally this happens the next day.
This allowed us to work closely with all the people in the team, instead of being stuck with one pair for weeks ! (C'mon what if that one pair never took bath..huh !)

Every pair was free to decide how they wanted to go about executing a task in hand. They were free to make any technical decisions. A lot of us , got to the whiteboard at times to draw diagrams, but we were all developers and no one was a so called funky architect. Of course , at a later stage we did form a common metaphor for the project.

Indeed we have an iteration manager for the team, but he was amazing in managing the client expectations, and abstracting the team from a lot of unnecessary client pressure.

Yes there are many ups and downs in such a teams lifecycle which might blog about later. But there is a brief and interesting article here :

http://www.controlchaos.com/download/Self%20Organization.pdf
which some of you might be interested.



Saturday, January 01, 2005

A Silent Welcome to 2005

One of my new year resolutions was to start blogging. And hence this exists.. !