October 31, 2007

High Performance Web Sites

Filed under: Software Design — khangharoth @ 1:24 pm

This is the name of Book written by Steve Souders, Chief Performance Yahoo.

Well it does give another view to the problem , what is seems as most of the time we only for known culprits like Database queries etc whenever we are on any Performance drive. And invariably the responsibility is of back-end developer to increase the performance.

Most of the Stuff was  new to me , as how diverse the problems can be .

Haven’t got the Book Copy : Need to find out ,Its tough to get these kind of books in India!

But to get  Gist , you can go through  this review :

Also this 

Now i am curious as what sort of Architecture these Top sites have : Also Do Java has any role into it ?


October 26, 2007

Software : Finding Right person for the Job .

Filed under: Software Management — khangharoth @ 2:02 pm

This is a hypothetical case study based on my experience in software industry.

Disclamor : Whatever i am discussing below is based on my experience which i admit is very limited ,but intention here to make you think about this aspect of Software Life Cycle.

BackGround : Any Software Work which we do has these inherent factors associated with it.

  • Complexity : How complex the piece of Work.
  • Resource Competence : how competent are the people who will work on this.Compensation for the resource depends upon competence level.
  • Time: What are the time lines.
  • Cost:Total cost which incur to company for this piece of Work.

We will rate all the above parameters on the scale of 10, ten being highest.

Requirement : We have a piece of Work , which say has complexity of level 3.

Resource and Time Planning :

Scenario 1:

We take a Developer with competence level of 3.Now let’s assume he will take 3 unit of time.This means for the work we have to wait for 3 unit of time and it will cost :

Developer Compensation * Unit Of time = Cost To Company.

In our example as compensation is proportional to competence so ,

3*3=9 this is the Cost .

Scenario 2:

Now say Manager wants to hire a person with higher competence so that quality should be higher and work can be finished before time.

So he hires a Developer of Competency level 8.Now to have same cost this guy needs to finish the work in

Cost/Competency=Time 9/8= 1.125 unit of Time.

Everything is fine but this generally don’t happen in real world.

What actually happens is this Developer is not Sufficiently challenged by the work he is doing and so he invariably thinks of more than necessary aspects of the given Problem and would now make given task of higher complexity ,say of level 8.

As now the task is of more or less same level of complexity as developer competence so time will again be of similar magnitude , say 3.

Now let’s calculate the cost 8*3=24.

More than double the cost of original cost.

So if you are Project Manger and you feel that your resources are over competent for the given work , than keep close eye on Scope of the Project.

October 18, 2007

Software : Time and budget estimation.

Filed under: Architecture,Software Design — khangharoth @ 3:30 am

In continuation of my previous blog about “Failure of Software Project” .

This one topic has really amazed me as people are able to estimates such huge building with such good accuracy.How many times you have heard in News that this Stadium will be ready by this date with these functionalities and they do deliver.Also in these situation maximum worst that happen is delay,but vary rarely whole thing gets scrapped,but this happens in Software Industry all the time!

Is it to do with Team-Work as this industry very much reward individualism  and so you will see lot’s of Talented guys who can single handedly deliver a small to Mid Size project.But a team of 5-6 of them fails to deliver some what bigger application.So is this why Failure rate of Software is directly proportional to its size.

And if this is one of the reason why people in other industry can work so well in Teams?                                                             One of the answer i have in mind is  as this Industry pays a lot and this could be a simulator for  Huge Ego and individualism.

Well these are all guesses and it may be that  inherent process of Software development is difficult and hence  this gap’s in estimation’s.

So why estimation of Software is so hard,well the point is “Software is Hard”.In Maths we know that in any equation as we have more and more variables,prediction is less and less accurate from couple of variable values in hand.

To read more on this subject , i regularly search internet and  today stumbles upon this.I think its quite a bold statement and also very close to reality.

It is impossible, by examining any significant piece of completed code, to determine within a factor of two how many man-hours it took to produce that code.

And the corollary:

If you can’t tell how long a piece of code would take when you have the finished product available, what chance do you think you have before the first line of code is written?

My first response to this : am reading the above line’s again and again,Isn’t it true?

October 13, 2007

AspectJ aspect configured by Spring

Filed under: Java,JEE — khangharoth @ 9:34 am

Today i came across a peculiar problem and more importantly it hit me in my face ,the integration tests were breaking and result of this were mail’s flying all across.

We are having a Web-Service which web-client calls and in the server side we are using spring as application framework.We were using aspect of AspectJ for some purpose and it needed certain properties which were available in spring.xml,so we thought to configure the aspect from spring.

Now just to quote a citation

Now I’d like to configure my aspect with a particular exception handling strategy using dependency injection. For this, I can use the standard Spring approach, but with one caveat. Normally Spring is responsible for both creating and configuring beans. AspectJ aspects, however, are created by the AspectJ runtime. I need Spring to configure the aspect that AspectJ has created. For the most common case of singleton aspects such as the RemoteExceptionHandling aspect above, AspectJ defines an aspectOf() method that returns the aspect instance. I can tell Spring to use the aspectOf() method as a factory method for obtaining the aspect instance. Listing 2 shows the Spring configuration for the aspect:

Now what i mistakenly did was put this line of code in my spring.xml.

And everything was fine in Unit-testing and functional level testing.But as soon as client tried to generate the proxies from WSDL,their were number of proxies getting generated which were not even part of our WS interface.

After debugging , i got the cause of  those extra classes in WS interface.As sprin AOP is proxy based framework and it was this that was creating those extra proxy classes.

Need to get more into Spring AOP and how it is different from AspectJ.

October 9, 2007

Overview Of ORM : Hibernate

Filed under: Java — khangharoth @ 8:38 am

I have to give a presentation on ORM and then coming down the days more light on Hibernate.

So the theme across my series of presentation would be first addressing some basic questions about ORM .

q1) What is the problem that ORM solves?

q2) Magnitude of Object-Relational paradigm mismatch.

q3) How people survived before ORM concepts.

q4) How those efforts of traslated to many home-grown ORM frameworks.

q5) Industry wide available ORM solutions.

q6) Why to choose hibernate among all these.

And subsequently moving into internals of Hibernate .

Note:Presentation don’t have much text,if you need full transcript then do contact me.

ORM OverView :Hibernate

Create a free website or blog at