This is my 50th post. In this post I would want to write about couple of projects done over the last 9 months that I am very proud of. My contribution to these has been into initial ideation, brainstorming and design discussions. When the team was in any sort of dilemma they involved me and together we found a way out.
The first project we did was the e-Apps framework. It was designed by my colleague BR. It is one of the cleanest designs that I have come across so far. All credit to BR. The framework allows any delegation based J2EE application to be offline capable. In addition to that synchronization is provided out of the box. Most of the features are configurable and to convert an existing application, the plumbing code to be written is minimal. It has been tested on Enterprise scale insurance application and the concept works marvelously. We still haven’t got a Client in production mode, but the product’s core is robust and all set. It would be a fantastic experience to productize this baby of BR and to go through the entire experience of product management. It could be a life changer, who knows !
Versioning and Transports : Not many mid-scale product companies think about meta-data driven architectures. Among those who do, very few go to the extent of versioning their meta-data. Transports across many version repositories is even rarer. I am extremely happy to be part of an organization that thinks progressively.
We developed the complete infrastructure for versioning in a span of 3 months. We used Apache JackRabbit opensource and built on top of it. Quite a few of the functionalities we needed were not available in JackRabbit and we had to build them ourselves. Once again, I teamed up with BR who single handedly churned out all the code of the version repository. Transports are still under development but it too looks quite promising.
WYSIWG Editors (Eclipse plugin) : Such editors are quite commonplace. We use them and more or less take them for granted. But what about developing an eclipse based Form Editor that is generic, which can be bound to Objects, which can provide sophisticated layouting ? It is hell of a lot of sweat. We are yet to crack it but I am quite confident that we would. The learning for the team has been enormous and the complexity of the Component is well understood by one and all.
Performance Improvement : I was personally involved in a performance improvement exercise of a Enterprise scale Insurance application. The task was to scale it to 2500 connected users with an average response time of 2 seconds. It was a big ask but we undertook the task with gay abandon. This project reiterated the fact of getting one’s basics right. To sum it up, the lessons learnt were
1. Get your data access basics right.
2. Performance improves due to those queries that you never write.
3. Think scalability upfront. With 2500 connected users, think that every query would get fired that many times.
This will force you to look for any reasonable optimizations.
4. Respect memory even though it is Java world. Release references when not needed. Dont take memory management for granted in Java.
5. Log messages could pull you down if you aren’t careful. Use ifDebugEnabled. Be wary of String concatenations.
6. Get the right tools to monitor performance.
7. Know the tools that monitor you database activity and performance. Know the database vendor specific tools. This is an absolute must.
8. Look closely at your application logic. There are several things you could improve there.
Apart from these, there have been quite a few other projects as well. May be I’ll write about them in another post.
Overall, the last 9 months have been quite Good. Quite some learning, lucky to have BR in the team, passionate bunch of folks in the team. I do have a long list of cribs, but that isn’t for public consumption. Looking forward to test our creations in the real big bad enterprise world.