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!

Thursday, April 29, 2010

Bay Area SIG - 29-Apr-2010

So this was my second Coherence SIG (the first was in New York almost three years ago). This time it was all about monitoring monitoring monitoring. It was nice to meet familiar faces. Few who recognized me right away, including Jon, Peter, and with a slight hick up Desmond and Raanan. Rao from Oracle EM remembered me from my blog photo (I think I still look the same). Ones who did not, included Craig. A few I knew I have met before or worked with was good to see in the Coherence crowd. It was a good presentation from Randy Stafford and his tips were:

  • Monitor everything - CPU, Network, Heap and Application.
  • Different tools for different things - Jamon, sar/ksar, JMX
  • Re-architect if you have to.
  • No comprehensive patterns available for Grid Computing so keep yourself up-to-date
  • Mission Control rocks - May be single biggest reason to use JRockit
Tom from SL.com's presentation was informative and stressed the importance of Monitoring and why it is not an optional piece of the solution. I had introduced them to one of the clients I worked with and was to good to see that they were in their customers list as shown in his slide. It was good to see Tom recognizing features of Oracle EM not offered by RTView. Rao must feel happy. At the end Taylor from Grid Dynamics talked about the proven design patterns also implemented by Oracle Consulting at numerous engagements and was good to see common solutions to common problems by two professional services. Overall was a good night out.

Wednesday, April 28, 2010

Chinese gymnast stripped of Olympics Medal

Now Chinese Government is launching its own investigation - How did she escape the Nike sweat shop?

What is BJP doing wrong?

Its heart breaking to see as a keen self proclaimed political analyst how day by day a national party is dying under its own weight. The recent slap being from Shibu Soren's JMM. So what is this once beloved political front doing wrong?

  • Lack of leadership
  • Coalition of opportunists
  • Inability to prove why Congress is bad for the nation
  • Losing its key constituents to regional parties
  • Becoming agenda-less secular front
So how could they ever come back?
  • Find leaders with mass appeal - The ones who represent not necessarily smart
  • Delhi - You win Delhi, you win India
  • We all know corruption exists. Prove why it hurts?
  • Become secular when you are in power, not when you are out.
  • Grass root Grass root Grass root

Sunday, April 18, 2010

A song by Gumbu and Shumbu


*Animation not self created - downloaded from google