Friday, May 28, 2010

Mr. Chidambaram - Indian life cannot be this cheap

When a country like India should be working day and night with all its resources in eradicating diseases and spending in Infrastructures that provide safety to life, life of an Indian is getting less and less secure by shear in-action of the current Government. We cannot accept insecurity as part of our daily life as we have accepted corruption in our system. Today anti social organizations like Maoists can blow up tracks and cause massive loss of life and your Government continues to sit idle with no replies to increasing boldness and challenges to our Nation's integrity and the safety of its citizens. And what do we see? Leaders of UPA give statements that "Maoists only kill people who spy on them". Did you dare to ask these Naxal elements in your UPA how many spied who lost their life in yesterday's train sabotage? And why don't you have guts to put these elements in Jail who directly or indirectly support these anti-national elements? Indians today demand your report card on what have you and your Government done to make us more secure? Why an non-combatant's life so insecure? Why terrorists and criminals are allowed to get away so easily? Why has this government become a government of spineless representatives? Don't forget we have always found the alternatives. If you don't believe us ask those who once said we were shining.

Sunday, May 23, 2010

Another hot summer in India

This summer it was hot again. I mean real hot which now has become somewhat expected. What have not been expected were plenty:

  • Cathay Pacific - One of the worst airlines I have ever boarded. After 15 hours of tiring flight to HongKong the connecting flight to Delhi was delayed because they scheduled a bigger aircraft for Delhi which was supposed to go back to Oakland. WTF! Didn't they know that before hand? It was my first experience to see a Chinese service and they scored zero. And the result was painfully missing my connecting flight at Delhi to my home town that I missed by a few minutes that resulted in a 7hr wait at New Delhi Airport.
  • Indian Railways - Another bad bad bad experience. Mamta Banarjee sucks as the new Indian Railway Minister. Even though not spectacular but her predecessor Lalu's work was visible on the platform. I was getting used to clean platforms, clean and hygienic toilets, near on-time train departures and arrivals. With Mamta Banarjee the Railways is faltering. This lady is such a disaster that she blamed the "crowd" after a fatal chaos instead of accepting any responsibility for crowd management. We had to wait for 7 hours at the dirty waiting (AC) rooms, smelly toilets and absent attendants.
  • Internet - I assumed by now Internet would be flourishing all over India. No. There were no free Internet at Delhi Airport which I was amazed to find out missing at this improved airport. Internet connection at home was flaky too.

Saturday, May 08, 2010

Solving Immigration Problem

Its frustrating to see naturalized citizens engaged in act of terror against the same country that provides them livelihood and a quality of life. And then there seems an unending queue of legal, clean, and tax paying residents who are stuck in a never ending residency queue. So as we can't seem to fix the immigration problem, lets come up with some creative ways:

  • Any naturalized foreign national found in illegal activities should lose his/her residency and his/her's green-card should be returned to a pool where a lottery should give it to someone in that residency queue.
  • Any resident who has lived legally in the States for over 10 years should have a separate category. "No EB2 or EB3.. Just "legal residents over 10 years" pool. And they should participate in the lottery system.
  • Only one of the Wife or Husband should have a pending residency application. A lot of clutter can be cleaned of redundant applications.
  • Grade system should increase or decrease the country based quota. If one national of a country is found to abet, support or engaged in terrorism or any other anti-national criminal activity then the country he/she belongs to should have lower quota and that seat should be given to other nations. Let Communities themselves clean those black spots.
I am running out of ideas.. But please listen someone.. This country cannot afford criminal residents.

Thursday, May 06, 2010

Ask the problem first

There is something called "A Problem Statement". No this is not a 20 page business requirement document. Its a single (at most two) line statement that describes what a customer is trying to solve. Believe me the ones who can not give it, don't know what they are doing. With repetitive refinements these are some typical problems you get:

  • To speed up our company's web-site's responses.
  • To stop our application getting bogged down under heavy load.
  • To exercise stocks under xx Milli-seconds.
  • To bring the application back up with x% of data loss with in 't' minutes.
If you look at it a problem statement did not include any implementation details or even functionality details. They were all business problems.

Why a Problem Statement is important?

Nah.. I am not a qualified MBA but I will tell you a story. A business analyst comes to Engineering and asks for a Cassette player for a Car so that the customer can play his songs. Engineering builds it and the player gets integrated in the car. Analyst is happy. Customer is happy and the Analyst moves on (gets a promotion). But was he/she right? No. Because the Customer never asked him to get him a Cassette player. What he really meant was "I need a way to play my favorite music while I drive". So what happens? Cassette players gets outdated and we build CD players. In a few years we build MP3 players and so on. And if not cautious you could end up driving a car with a Cassette player, a CD player and a MP3 player. Believe me its a bad car.

So whats wrong?
The baggage is wrong. Engineering ends up supporting features that has no revenue potential. The better solution is you gave the Customer a Cassette Player in '80s because that was what technologically possible then. In '90s your car only offers a CD player and so on. And in turn you assist a parallel industry or professional services who provide you gadgets to convert your Cassettes to MP3s. The continuous refactoring of your product is as important as providing solutions to the problems. So never lose the Problem Statement. Its not the cassette but the music what Customers are really paying for.

Tuesday, May 04, 2010

How to do Grid Computing right?

Nah.. There are plenty of forums and consultants who would talk and guide you on complex challenges with Grid Computing. Following are seven simple premise to do Grid computing right. No this is not off of a book or a result of any theoretical analysis but my field experience with numerous clients over the last three years of Coherence consulting on high volume systems.

  1. Process where data are - Its a proven fact that processing data where they are is much more efficient than bringing it over the wire and then processing it - A concept popularized by PL/SQL.
  2. Storage Disabled - This challenge I have seen often with products that have embedded Coherence. Application objects competing for the same heap that Coherence uses to manage data. Remember Garbage Collection in Java still remains an unresolved necessity. GC can not be avoided but its affect can be minimized. Make a rule of thumb - Make your application storage disabled member of the Grid if you really want a stable Grid with predictable performance. Application layer can be scaled out independently of storage nodes. Application can go under long GC and the load-balancer can choose another application instance while the Data Grid remains responsive and stable. An effective way of building a high responsive system.
  3. Key Association - In any serious application we always talk about associated data. Person associated with an Address. If computing demands Person and Address to be processed together then keep them together and use Coherence Key Association or partition affinity. Partition affinity can have some major performance impact.
  4. Domain Model - Typically not talked about much. You don't have to put every object of your application in Coherence just because you have them. Put only those objects in Cache that are needed for computation. A stock is associated with an Account which is associated with an address. Why to keep Address in the Cache if it has no bearing on stock's buy or sell? Selective association also trims the composite object size and helps in effective partition affinity.
  5. Thread Count - Make sure you use the Machine to its fullest. Don't just go by some rule of threads and cores ratio. Run the application in real-life-like environment and see which number makes sense? Appropriate thread count with Invocation Service can have real impact.
  6. Backing Map Listeners - If done right BMLs can make the application layer very light weight. BML using Executor service to do asynchronous processing is a proven architecture but take it with salt and see if that makes sense for your application. But when it comes to raw end-to-end computing performance take a stab at it.
  7. Custom Backing Map - By default in distributed scheme, Objects are stored in Binary format. This is the most efficient and effective format to manage partitioned data but it doesn't have to be. If your application requires to minimize deserialization cost during an expensive computation then you can change the Object format to what ever you like it to be or keep them unchanged by writing a custom Backing Map. Work with someone who has done this before because Backing Map should be the most efficient piece of the solution.
I haven't seen a single application that has violated any of these seven rules and have not have had any problems, yet. So Enjoy!