Spring Roo Impressions

At Esberi, we widely used Spring MVC and other products from the SpringSource stable, to build enterprise web applications. Been an RIA consulting company by nature and heavily working on the Flex front-ends, Spring-BlazeDS Integration always comes handy, and regular components like Spring Security, JMS integration and ORM support using Hibernate, are regular nuts and bolts of a generic enterprise web application at Esberi.

The initial part of the project kick-off is spend on Project Configurations, which is kinda tedious to handle during the initial phases due to component versioning. Maven does come to rescue but misses on closed project component templates. This bring us to another exciting yet to mature project from SpringSource called Spring Roo. Spring Roo is RAD development tool, which makes life easy for J2EE developers to work with Spring based project configurations. It helps you build model/domain driven Spring projects and generates the code based on the model/domain specified. Its just not a code generetion tool, but does all the code plumbing to integrate various components like, security, jms, logging, mvc, testing etc. which means the developer concentrates more on the entities rather than component internals.

Spring Roo heavily relies on AspectJ and Maven for most of its behind the curtain scenes. My initial reaction when I got started with Spring Roo was “Holy Grails, it does make life easy.”, but after closing looking at the code generated, its meant for prototyping and not for production deployments (just like Adobe Flash Catalyst design-to-code conversion, ugly and fat). So it does what it promises, and then I had to roll up my blue sleeves to make the code production ready. When working with Spring Roo here are my realizations :

1. The usage scope of Spring Roo is limited, doesn’t makes sense in collaborative enterprise project development.

2. Good for simple data models, not meant for complex ones. Also the domain modeling needs be visually enabled as it is in case of SkyWay Builder.

3. Code back-tracking is a mess, developers just don’t write code in incremental fashion.

4. Hard to sync up code when modified with further Spring Roo generation, generated code overrides your customized code.

5. Been working with Flex/J2EE projects for quite sometime, I am used to DAO design pattern, sadly this is missing in the code generated by Spring Roo, for a good reason, but still I am a spoiled one. Will take some time to accept the change.

6. Generates unit test cases and integration test cases, makes easy for QA and relies on Selenium for web application testing. (GOOD)

7. Generates the web tier for you to perform object CRUD operations, and relies on Tiles framework. (GOOD)

Further I must say Spring Roo does impress me from the point that it makes project configuration easy and the ability to bring in your own add-ons, no more getting paranoid with WEB-INF XMLs and dependency management. Considering the project timeline of Roo, I am sure the best is yet to come, for now limiting its application to prototyping itself.

NOTE: I have still got to put Spring Roo to further testing scenarios. Will write on my experience evolution soon.


Ah, actually I am sneaking out at work to post this, and the reason been is that I feel guilty of not keeping the blog running the way its suppose to. Anyways I somehow broke away from the ignorance, but what kept me away is something I have been thinking about since one of my colleague asked me “Khan, is your blog dead ?”, I wasn’t sure what to respond to him. He knows my work schedule, knows very well how I have been traveling and endowing three different roles within the same organization, I didn’t expect to be questioned by an insider. But I guess he did it right, at least it got my attention and made me realized how ignorant I have been.

Official designation, Principal Consultant, in last 150 days, I have been working as part of the Consulting Business Development Team, heading Product Development, and conducting the signature ACE Training Program of Esberi #ACE45 in Chennai. Amidst all these I have to run between Chennai & Hyderabad often, and frequently fly out of country to propose or work with Adobe Enterprise Solutions along with clients and partners.

Too much to handle, but I AM LOVING IT, why ? Of all the three roles, I get to interact, travel and inspire people, how ? Inspire clients and partners to adopt Adobe Enterprise Solutions and how it can solve their business problems, Inspire internal product team to deliver beyond their expectations, and Inspire trainees to learn/adopt Adobe development tools, make them feel passionate about technology & their skills, and vision out the possibilities in life. Recursively of all what I do, it Inspires me.

Hope I continue to do what I do best and not stay away from posting this long. By the way what’s your take on Adobe vs. Apple ? From Business point, I favor Apple, from community and developers stand, I am in favor of Adobe’s motion. #DoubleStandards.


Working with UX Design

Been working on a product development had made me realize that its always tough to get best of the combined tribes, Developers & Designers. The whole success factor depends on how well they have been integrated in the process, and how user experience and development is perceived. The occurrences where product developers and user experience designers collaborate poorly can easily be improvised. Which would mean incorporating a more dynamic & integrated product development process where both teams work together on key phases and in shorter and more frequent cycles rather than long, inflexible phases. What I have outlined below are some observations and tried out mechanisms which have been taken to accomplish a more integrated process.

  • Treat the specifications and user experience design documents as breathing documents.
  • Regularly the development and user experience design teams should exchange feedbacks, and incorporate collective notes.
  • User experience designers should stick to constraints defined by product developers, should consider the viability of their design in the context of implementation and marketability, and should consult with product developers on viability of features.
  • Product developers should not seek to define how each feature should work, but should rather define the broader project goals and product requirements.
  • Both user experience designers and product developers should be involved in identifying opportunities, competitive analysis, market and user research, feature design, design refinement, implementation.
  • Both teams should utilize an iterative and dynamic product design process instead of rigid, linear approach.

Moreover, I believe that the optimal product design and development process necessitates both product development and user experience design methodologies. I call this approach “product experience development” to emphasize the equal rolls of both fields in the overarching process. Product design and development focused on only one of the fields is incomplete and ineffectual.


Last few days at work had been crazy, been spending almost 15 hours at office and getting back home early in the morning, blame it partly to offshore accounts and then to internal activities like rolling up a training program. After getting back home today (5AM in the morning), all I wanted to do before I kick-start my SNOOZY weekend, was to get this post up. For last few weeks we have been working on a AR concept, and you can say this just a small inspiration for me to work with Processing more often.

Processing is more like declarative creativity, it lets you program animation, illustrations and patterns using open source language, which can be executed within the Java Virtual Machine (JVM). This post and demo was alot inspired by James Alliban’s video post. I here used a simple live video color tracker and added the random 2D ribbons. As I am a dead meat now, will post further details in coming week, till then will await for your feedback and have a great weekend.

Color Marker Guided 2D Ribbons from Mohammed Khan on Vimeo.

Will update the source code here soon, need to work on the lag.


At the Adobe Dev Summit 2009, Hyderabad, I gave a presentation on Data Visualization Beyond Flex Charts, and the best part came after my presentation, was flooded with queries on how-to’s and also met some cool developers from Sierra Atlantic who shared their experiences with Oracle BI Suite and how Flex Framework has added value to their solution. Overall I believe that Adobe Dev Summit 2009, was well received, with 650+ developers, and 15 speakers, it was a scoop blockbuster. Hats-off to Harish S Krishnan, Sujit G, Ramesh S Ragahavan, Arijit Chatterjee and others from Adobe team who made this event possible and having me as part of it. Will look forward to be part of it again in 2010 (if I don’t miss the call, as I did this year).

UPDATE: You can find the above slide deck on Slideshare here.


With today’s release of Flash Player 10.1 Beta, Adobe has made delivering Contextual Applications for Mobile possible.  In theory Contextual Applications are Smart Rich Internet Application, practically these applications adapt to the execution environment. If an application needs to adapt to certain factors, firstly it should be aware of them. And the guidelines set for developing Conceptual Applications are based on three awareness context.

  1. System Aware: Adapt to hardware specific factors, resolution, interaction mechanism and extended features of the hardware such as Accelerometer, GPS etc.
  2. Network Aware: Adapt to bandwidth, and optimize content delivery mechanism. Also determine state of connection (Online/Offline) and accordingly switch instances for persistence.
  3. User Aware: Adapt to User’s preferences and social circle, and accordingly suggest/deliver content.

On the Adobe Labs you can find an AIR app called WorkFlowLab, and in the pre-installed workflow templates you can find the Contextual Application Workflow developed by Ryan Stewart, which pretty much gives the outline of the whole design & develop toolset for working with Contextual Applications.

Contextual Application Workflow

Contextual Application Workflow

With Flash Player 10.1 on Mobile, it would be possible to design and develop using Flash CS 4/5 platform, that would make applications understand various soft and hard context, and accordingly adapt. Further to this note, it would be exciting to see collaborative and contextual applications hitting our devices and hence making the Rich Unified Applications theory much more practically possible.


Post Adobe MAX 2009, I have been working on a solution design for a company based out of UAE and part of the solution involved Oracle Primavera P6 V7 EPPM Platform. Primavera is a Enterprise Project & Portfolio Management solution widely used by large-scale engineering companies across globe. One of the new feature of the P6 v7 platform is event notifications, which makes it possible to integrate Primavera with other enterprise systems for Business process Automation. To use the Event Notification feature of the Primavera P6 v7 platform, first you would need to downlaod and install a JMS server, and for this example I am using ActiveMQ (because it’s easy to get started) but for my client’s requirement we are using Websphere MQ. So go ahead and download ActiveMQ latest stable version from here and once downloaded, unzip it and start the Message Broker by executing the activemq command under the bin directory of the unzipped activemq package. Now we would need to create a queue called P6WS7, for this once you started the ActiveMQ, navigate to http://localhost:8161/admin and under the Queues section, enter the new queue name as P6WS7 and click Create.

With this we have got the Queue created and pretty much configured the ActiveMQ, now we would need to configure the Primavera P6 eventing system, so that it will post all the events triggered on to the message queue we created in ActiveMQ. For this login into your Primavera Administrator Console and navigate to your P6 Database Instance and configure the Eventing and Directory Services. Below is the attached screenshot with needed field-values that you will need to enter in order to post the events on to the ActiveMQ message queues.

Primavera P6 V7 Eventing Configuration

Primavera P6 V7 Eventing Configuration

Once you have entered values as defined in the image for Eventing and Directory Services section, you can test the configuration by right clicking on Eventing title and click “Test Connection” form the menu. This will dispatch a test message to the P6WS7 queue which you can view it in the ActiveMQ web admin console. Hope this info helps you out, as none of the documentation that comes along with the Primavera P6 v7 platform has this defined, even not in the documentation thats on the support CD pack.


It all started with Flex Data Service, and since then Adobe has made significant progression in enterprise computing. For me, enterprise computing doesn’t mean complex business use-cases, instead manageable enterprise objects (can be a document or a form or a data-set). Adobe LiveCycle Enterprise Suite has been pretty much successful to engage enterprise computing around the PDF document type. And on other side, an extension of the LiveCycle ES, the LCDS has made it possible for RIA developers to build mission-critical and collaborative applications. Last week at The ActionScript Conference 2009 which was held in Singapore, I made a presentation with the same title, and not sure how well it went with audience (more of designers & flash developers, also post lunch Zzzzz).

As in my earlier post I mentioned, Fiber is a suite of technologies which helps you do model driven development using Flash Builder 4 (with modeler plugin) and LiveCycle Data Services 3. And the major part of the Fiber is the Adobe Data Model, which lets you build data models, create services and bind services to data controls. Below are the slides attached which I used at the TAC 2009 and also find attached source code which was used for demos at the conference.

In order to work with attached codes, you will first need to setup and get started with Livecycle DS 3, about which you can find it here.

Demo II : Getting started with FB4 & LCDS 3
Demo III : Working with Annotations & Styles
Demo IV a : Working with Filters : Criteria based Filters
Demo IV b : Working with Filters : Pass-through Filters


In continuation to my last screen cast, this one deals with Annotations and Styles declarations using Adobe Data Model, LCDS 3 Beta and Flash Builder 4. In the next screen cast I shall try to cover working with various types of Filters using Fiber suite.

Model Driven Development using LCDS 3 – Annotations & Styles from Mohammed Khan on Vimeo.

You can download the the source code which was used in the above screen cast here, and the sample MySQL database script here. When importing the project into your Flash Builder 4, you will need to change the LCDS 3 turnkey path in the Flex Compiler settings, also the RDS username and password would change accordingly. If you have any issue in getting started, feel free to share.


In the following screen cast, I discuss about the tools required to head start MDD using LCDS 3, also how to configure the lcds 3 turnkey solution to enable RDS management, declare data source for the lcds web application and define user security at servlet container level, I hope it helps you get started. In the next part of this screen cast series, we will explore the Fiber suite and Adobe Data Model, where we shall work with Styles, Filters and Annotations.

Getting started with Model Driven Development using LCDS 3 from Mohammed Khan on Vimeo.

UPDATE: The next part of this screen cast titled “Model Driven Development Using LiveCycle DS 3 Beta – Annotations and Styles” is available here.