Monday, June 30, 2008

Books.. books.. books... babalucka books.. books!

In good old days there used to be this tv quiz show hosted by Derek O'brien.. which was so much informative and fun.. I always longed to participate in the same but never knew how at that point in time.. then over time I went round India while I was appearing for various interviews to professional colleges.. which gave me a chance to meet people from all part of the country, long train journeys provided the conducive environment for the leisurely discussions around different concepts.. it was truly enriching.. but here was this guy Manoj Karki, whom I met on my journey to Anand hours later the 'Godhra tragedy' who really sparked the interest in me to read books and also provided an initial list.. upto that point I only used to read new papers and magazines.. he helped me understand that although it is important to remain abreast with the current affairs but then these books give u one concentrated dose of thought.. which is an important exercise to provide diverse flavors to your mind.. here one may find an indicative list of books which changed lives!!

Thursday, June 26, 2008

Ek Muktak: Dedicated to Ekta & Jeevan

प्रीती के संकेत यूँही व्यर्थ तो होते नहीं हैं,
रोष-दग्ध-ह्रदय पर वे करुणा के लोल-शिशिर-कण,
तुम प्रिये बारम्बार मेरा हृदय पुलकित कर देते हो,
नव-प्रभात 'जीवन' में भर देते हो,
ऐसा हो तो संबंधों में 'एकता' होना स्वाभाविक ही है.

Wednesday, June 25, 2008

Jugaad.. call it innovation@work !

Innovation, simply put is the systematic and methodical way of improving the way things are done. Jugaad, on the other end is about making things work! which may be chaotic and may not be sustainable. Almost, always 'jugaad' refers to a quick fix solution that would bring down the operating cost. Having said that, 'jugaad' in itself is symbolic of practical ingenuity available with us. Today this streak of excellence needs to be harvested and channelized in such a way that we are able to create effective products. Recent media reports points that inflation is at an all time high and stock market is witness to its sharpest movement down south. From a macro-economic point of view this is the right time to bring effectiveness in our system. Today we need to move from 'cheap' 'labor intensive' mode of service delivery to low cost product based approach. Note the contrast between two seemingly similar ideas.

Go Cycling

I still remember when my parents gifted me my first cycle, it was Hero Ranger, straight bars were quite new into the market and it was the coolest thing that happened to me at that point in time. Fortunately, my father was transferred to a place called Rihand Nagar. This place is in the vicinity of Kaimoor Hills. I easily remember my countless trips to nearby hills, jungle treks on my 'bike'. It was sheer fun. Later, I got my second one Hercules-MTB with 18 gears, this one was out of necessity as I needed to travel 14 kms one way to my college from home. I used to travel the distance in 15-20 mins. with city traffic. I would not think twice to travel to the other part of the city on my cycle, and I was one proud owner of a geared cycle. Life went for a toss after my graduation, it was then only about getting into a good professional college, then later my work... cycling just went missing... and then I just last Friday I asked Geetha about his plans for the weekend and he says cycling! what the heck do u do cycling? and he showed snaps from his last trip to the big banyan tree on Mysore road.. 80 Kms one way! It feels like I was simply not aware about cycles.. and cycling as an outdoor activity.. I need to get into this now! for health, for saving the environment. Way to go! All thanks to Geetha for rediscovering my lost passion for cycling..

Friday, June 20, 2008

Designing for evolution: Software product versioning

Ever worked with Apache-Axis, you would appreciate the presence of "Happy Axis Page" which helps to validate the Axis installation. This page looks through your environment to determine whether you have all the required libraries. Although, it does not checks for all the configurations but provides a great head-start in dubbing the axis installations.

This article would help us learn about the techniques for exposing dependencies between different packages.

This discussion is important because;
  • Improved confidence to upgrade to a new library version.
  • Independent evolution of independent libraries.
  • Ensure 'backward-compatibility'.
  • Improved efficiency: Faster time to validate the installations will save precious hours in isolating a trivial library dependency.
  • Tool support can be created for supporting the related issues.

Monday, June 16, 2008

Aspectj: can't determine superclass of missing type

can't determine superclass of missing type com.blah.blah.. when weaving type com.blah.blah
when weaving classes when weaving when batch building etc..

the above error consumed quite a bit of my time, which was primarily because the missing type file was not on the inpath for the AJDT AspectJ project.

Friday, June 13, 2008

Aspects: Exploring possibilities

Happy days are here again, my current tasks at hand gives me immense opportunities to dream about a better world where the End-Users (subjective) will have a better software product and developers have better work-life balance.

I read somewhere, you must not learn a new language unless that exposes you to a new way of thinking.

During my recent adventures with AspectJ, I could identify new techniques to address 'seperation of concerns'. Not only this would provide new ways to create reusable modules but also extend them independent of each other, without really bugged by the 'over-engineering-syndrome'. I'm reading AspectJ in Action: Ramnivas Laddad and it provides a real good head start to the subject.

Lest I forget, I would like to document some of my thoughts where AOP techniques can be roped in with other available ones to simplify problem solving for us developers;
  • Rules, for example working with presentation layer often we need to provide localization and personalization of content based upon the user context information, often this spans horizontally across multiple code units. Such rules can be externalized and consumed by the core modules using a rule engine(JBoss Rules, Jess etc.). Such an approach would help creating a modularized solution which is deemed to be agile to future policy changes while ensuring consistency across the e-commerce application.
  • Annotations, can be utilized to generate codes (using XDoclet etc.) for common technical services across the software product based upon architectural decisions. This way architectural decisions do not remain a dead piece of documents. Frequently, annotations can be used to provide services like authentication, security, tracing, ensuring pre/post-conditions etc.
  • Using Reflective APIs reusable aspects could be created for the complete spectrum.
But, most importantly, I need to keep it all simple at this point of time while solving my current performance engineering problems.

Tuesday, June 10, 2008

Performance Engineering: Approaches

As a software developer we continuously need to design and develop solution for the complexity thrown upon them. It is therefore very important for one to keep oneself abreast with different tools, technologies and methodology, while, having said that, I'm not exactly asking to run after them but it makes sense to stop and at least get the central idea about a given tools etc. because you would at least learn a new perspective of solving an existing problem or better still identify a potential problem with the existing solutions.

AspectJ appeared multiple times during my search efficient techniques to profile my application for conducting performance engineering exercise. I decided to take the plunge and try my hands with this methodology.

The underlying theme which the authors have tried to sell this methodology to us developers by exposing the shortcomings with object orientation, according to them, the OOAD methodology shines for solving the core problem but falls short to provide bells and whistles for the enterprise applications efficiently. They refer it to as 'Cross-cutting Concerns', concerns which are not exactly the part of the core problem (subject to the context) and form the supporting functionality. Simplest example is that of logging, frequently logging code is tangled with the core logic itself, thus forcing the developer to focus on far too many things at a time.

This seems to solve the 'Architects- Dilemma' where one is always trying to do the balancing act between the 'Over-engineered' vs. 'Sloppily-designed' systems. AOP seems to provide extension points to the application to provide utilities later. That serves us well because, whenever an extension is required only new code is written without modifying the existing code.

There seems to exist good amount of tooling support AspectJ for Eclipse, JBoss AOP etc. can't really compare and contrast them at this point in time but I have a feeling that AspectJ has fuller support than JBoss.

There are interesting articles available on IBM Developerworks to give a head start to the subject.

Another, technique that needs to explored is JMX that seems to provide JVM level support for application monitoring.

My primary approach to the problem of monitoring application for performance was to create custom class loader using java reflections API but I have a feeling now that this approach although very powerful is also quite complicated and error prone.

May be I should focus on AOP for the time being for better turnaround time in the longer run, also because learning this approach may expose me to solve other problems in a more efficient manner.

Sunday, June 1, 2008

India Premier League

Today we have IPL final there has been much media frenzy all around, the sheer statistics about the marketing revenue the patholgical atracion to bollywood stars to the tall and migh of business and politics all indulged into this new form of cricket. People needed to question there loyalty when shane warne would take Sachin's wicket, it amounted to blasphemy. There were much hue and cry abou the Royal Challenger's loss and bloated accounts of tussle between Shahrukh and Gangooly dada. All in all, there was just too much of cricket(or was it the anti-cricket) all around.

I feel it is good for the not-so-well-known cricketers to gain good exposure to high pressure and quality cricket with lots of money to make them feel financialy secure. The question can this form of IPL is sustainable in the longer run? How long can our star owners devote time to this form cricket towards cheer-leading their teams? How much of time saving have we done with so many matches in one go? How much is too much? It's going to be interesting from the acaedemic point view :)