Thursday, October 6, 2011

Why every employee is important, every employee.

For a successful product to be launched the key ingredients are
  • Passion
  • Brand
  • Innovation
  • Technology
  • Care
and the most important and commonly ignored one is
  • EVERY employee
I'm not going to expand on the other terms, as the words are self-explanatory. 

Let me share an incident that happened to me recently-the reason behind writing this blog. I recently planned to buy a headphones, and quite excited from the reviews went ahead to buy it from a mall near by.  From the brand value, I expected a warm welcome to the valuable customer, who is about to buy their innovation. My apparel was casual and hence I was blaunt and did not make a great impression for a warm welcome or at least welcome. There were two sales men and both of them were talking to a customer-a well dressed old man. I could make from his body language that he is not going to buy the product-ofcourse not my job. I waited for ten minutes and requested for an attention. 

One sales man came to me after five minutes and I requested for a demo for the product I am going to buy. He shuffled the products that he had and left. For a second, I was feeling like Dr. Malcolm Crowe in Sixth Sense, unnoticed. I asked him twice and he did not mind to give an attention. 

The moral, "every employee is important" and I walked away.  Sales men are not the only ones, every employee is important. Just think of situations where your friends working for an organization gives a bad review on how it treats employees,  where a person annoys you in an interview, a single 404 page during a transaction (referring to the employee who is responsible for it),  a new joinee give a bad review of the previous employer, etc. 

So, even if every employee gives their best for the product and one employee does anything bad, customers walk away. 

Wednesday, June 1, 2011

Site performance tuning using jMeter and jVisualVm

I recently had to work on a requirement where I had to support (response time  less than 5 seconds) for   500 concurrent users, with 10 million users in database and a single server. I tried going through many forums and open source tools, from which I finalized on jMeter for performance testing and jVisualVm for finding bottlenecks.

This was my approach:
  1. Make sure that the server (hardware can be as per the staging/production requirements) has no other installations that can affect the performance. 
  2. For setting up the users in DB, a procedure can be used and can be called as a part of jmeter test plan.
  3. Install jmeter on a separate machine, so that jmeter won't affect the performance. 
  4. Create a test plan in jmeter (as shown in the figure 1) for all the uri's, with response checking and timer based requests.  
  5. Take the initial benchmark, using jmeter.
  6. Check for the low performance uri's. These are the points to expect for bottlenecks.
  7. Try different options for performance improvement, but focus on only one bottleneck at a time. Some of them can be 
    1. Database index. Use the DB server logging to find the slow queries, use explain plan and improve the sql statements.
    2. Check the configuration parameters for any third party tools.
    3. Check if there are any dead locks (can be checked with jVisualVM as shown in Figure 2).
    4. Profiling the application using jVisualVm(can be checked with jVisualVM as shown in Figure 3).
    5. Data structures, algorithms and loops.
    6. UI components, try advices from YSlow. Try streaming, caching, etc.
    7. Read the hardware configuration and try for any options like cpu cache, jvm tuning, paging, etc. This step does not include hardware scaling.
    8. Check for memory leaks using jVisualVm.
  8. Try any one fix from step 6 and then take an benchmark. If there is any improvement commit the changes and repeat from step 5. Otherwise revert and try for any other options from step 6.
  9. The next step would be to use load balancing, hardware scaling, clustering, etc. This may include some physical setup and hardware/software cost. Give the results with the scalability options.
jMeter test plan
Figure 1: jMeter test plan

jVisualVM run for a sample deadlock program.

Figure 2: jVisualVM shows Thread 1 and 2 waiting for the monitor
Figure 3: jVisualVm showing profile results for memory

Results:

In the end it is better to prepare a complete report from the benchmarks and finally define the performance with details of the hardware, software, maximum db load, maximum number of concurrent users supported(users active every 2 seconds), maximum number of sessions, changes made and the improvement achieved.  Any unimplemented changes can be suggested for improvement, so that the effort to find the bottleneck is improved.


Saturday, December 11, 2010

Originality

I believe the most powerful tool that human beings possess is the mind, that can ignite imagination. Every possible creation in the world is a tangible idea. Every possible idea is the outcome of all or some of the senses, passed through may be a single or billions of neural schemas (referring to the brain). 

Any idea can be referred to some part of the nature (at Universal level). When someone says an idea is original, what is it? I don't understand.  Take for instance, Google search, don't you think it is a matured idea of the search that we do everyday; Facebook, is it not a virtual social network; Virtualization, complete simulation of a natural concept; Photography, light captured with a particular setting (do you own the light or the setting?); Music, captured sound at some desired frequencies; etc. 

I still don't understand, the noun originality, is it the first idea preceding all others in time? In such case, it belongs to the nature. Or is it the first one to file a patent or register it, or is it the first one to show it to the world. Or is it the first one who comes out with some tangible output. What if someone had the idea for long time and could not come with an output or did not express it.

Understanding this, I do understand the considerable amount of work someone puts for coming out with  an idea, which we all feel new. I still wonder if the newness or freshness can be considered as original. I take the concept of wall (which itself is taken from a broadcast or something else) and come out with a specification of wall with only 150 characters max, inclusive all characters and call it twitter (just an example, which is considered as a great idea). Is this original? But, I understand the effort that is put for developing this and the ego of so many developers, and may be testers too.

Why all the software is not made open source? Is it because of security reasons or is it because of the ego of the investors or ego of all the developers, who don't want someone else to directly copy it or reuse it. 

So, definition of originality or original-idea (as it is used) is the ego of the hard-work to build an idea, which creates the feeling of some newness or freshness and belongs to the first one who expresses/shows it to the world.

Actually, originality is nature.

Disclaimer:  I do not copy nor encourage some one to copy any idea, but just sharing my thoughts on my confusion on originality. This is my understanding and welcome your definitions or ideas.