Sunday, October 3, 2010

SharePoint Can Be Starting Point for BPM, but Not Much More

Read this article at IT Business Edge and the article is reminiscent of what we have gone through recently. I think it is a great read and anyone who intends to implement a SharePoint Project should at least read this first.

SharePoint Can Be Starting Point for BPM, but Not Much More.

Saturday, October 2, 2010

How do you write a functional CRUD application in 3 minutes?

I came across a wonderful framework recently and was totally blown away by it. The simplicity of the framework, totally boast productivity to a new level.

Grails, an open source web application framework, aims to reduce the traditional XML configuration of Enterprise Java Application Development to the minimum. It favors convention over configuration, and to a programmer like me who hates to see another line of XML, Grails is like a God sent. Grails has been designed based on Spring and Hibernate framework, and it can be used to build Enterprise Grade Application.

The following is a simple design principle taken from Wikipedia:

"XML was initially welcomed as it provided greater consistency to configure applications. In recent years however it has become apparent that although XML is great for configuration it can be tedious to set up an environment. This may take away productivity as developers spend time understanding and maintaining framework configuration as the application grows. Adding or changing functionality in applications which use XML configuration adds an extra step to the change process next to writing application code which slows down productivity and may take away the agility of the entire process.

Grails takes away the need to add configuration in XML files. Instead the framework uses a set of rules or conventions while inspecting the code of Grails-based applications. For example, a class name which ends with Controller (for example BookController) is considered a web controller."

Anyway, you can read up the background and theory later if that interest you. My main goal today is to show how easy it is to build a simple Grails application within 3 minutes.

After downloading the latest Grails from their download pagehere, you can proceed with the few simple steps to it up rather quickly.

OK, lets review our objective today:

  • I want to build a simple Application to track what sort of cars my customers drive

  • To achieve that, I will need a simple customer object - with the usual first name, last name, birthday, income group, and the kind of car he drives.

  • As I want to control the sort of cars I have in my database, I will just create a car object. In which you can find all sort of cars in there.

  • I will also create an income group object. That way this parameter can be configurable as well.

  • So all set. Lets start.

    First thing I do is to create a grails application. This can be done by simply issuing the following command. Lets call our application CIS [Customer Information Portal]:
    grails create-app CIS

    You will see a tons of texts flying out from your screen. That means grails is generating the skeleton of the project for you. At the end of it, you will see the following line and then you know your application has been successfully created:
    Created Grails Application at /Users/lys/Test/CIS

    Now, we need to create three domain class. A domain class in Grails is basically a normal Groovy class. We will get into this in another article. From the above objective, we know we need to create three domain classes, namely:
    1. Customer
    2. Car
    3. Income Group

    So lets get to work. We can simply create the domain class by issuing the simple commands:
    1. cd CIS
    2. grails create-domain-class Customer
    3. grails create-domain-class Car
    4. grails create-domain-class IncomeGroup

    If we now navigate to CIS/grails-app/domain/cis, we can see that three files have been generated by Grails:
    1. Customer.groovy
    2. Car.groovy
    3. IncomeGroup.groovy

    Lets go ahead and define our customer object. Say it has the following properties:
    1. First Name
    2. Last Name
    3. Birthday
    4. Car
    5. Income Group

    This is very simple, eh? So lets go ahead and define it in the customer.groovy file:
    package cis

    class Customer {

    String firstName
    String lastName
    Date birthday
    Car vehicleMake
    IncomeGroup annualIncome


    And we will go ahead to define the other two objects. To make things really simple, I am putting income group as a string. You can always make it more complicated to meet your needs:
    package cis

    class Car {

    String manufacturer
    String model
    Integer displacement


    package cis

    class IncomeGroup {

    String annualIncome


    OK. We are done now. And that barely took 1 minutes. Now lets grails do the dirty work. We need to build those objects now. So issue the following commands:
    1. grails generate-all cis.Customer
    2. grails generate-all cis.Car
    3. grails generate-all cis.IncomeGroup

    We are all done by now, and YES, our application is ready to run! Issue this command and see what you got:

    grails run-app cis

    Grails at this point will start up the web server, and your application is served. You can view your application here:

    Great! All our controllers are there. Click at cis.CustomerController, and you will see a simple list where all the customer are supposed to be. Click at create a new customer, and the following screen came up.

    I have taken the liberty to fill up some of the information I have. Since we have not defined any car make and income group yet, I am going to leave it empty.

    Click "Create". Oh No! I cannot create! Grails is telling me that the car make and income group fields are mandatory.

    But wait! I did not even do a single line of coding. All I did was putting in all the properties for each object only.

    Yes, in that 3 minutes we did this, Grails has generated the web front end, the domain class, the database tables, and the Validation logic for you!

    Ok, now lets put in all the correct properties for Income Group and Car and we can get this over with. The following is the final result. All the data are tabulated in a list. The view can be easily changed if we need to; but this is what we have for now:

    Click at the Id, and it brings me to the detail page:

    Click at the Income group, and it brings me to the income group page.

    Not bad for 3 minutes work huh?

    Tuesday, June 15, 2010

    How much are your emails worth?

    Back then in 2007, IDC estimated that the daily email volume was 97 billion; and based on IBM's estimation, "Every day, 15 petabytes of new information are generated. By 2010, the codified information base of the world is expected to double every 11 hours." Click here to see the report.

    How much is 15 petabytes? Lets put it this way - if I have a penny for every byte of information generated, I will be richer than Carlos Slim Helu & family (the richest man in the world as of today) by 315,000 times in 1 day.

    Few questions I have:
    1. How much do we rely on email for communication today?
    2. How many transactions are committed over Internet today via email?
    3. How much intelligence can we extract from our corporate email today?

    Lots of people are using email archiving solution. Email archiving solution can trim your mailbox sizes and saves you storage cost. However, it does not help you extract information out from the email you have.

    One classic scenario - one of my friends is in the FMCG (fast moving consumable goods) market, and they run promotion with their suppliers like there is no tomorrow. Mind you, they are quite successful and she has got a sizable group of employees running the marketing and promotion for her.

    What happens is that a large volume of transactions are being committed over emails. Some of the suppliers offer rebates or discount if her company hit a certain quota. Due to the large volume of transactions, the sales team only focuses on selling and no one seems to pay attention to the rebate policy from the suppliers.

    Well, if I am meeting my quota and getting a big fat check, why do I care if the company gets its rebate? Let the boss worry about that for a minute, ok?

    To complicate the matter more, these promotions are criss-crossed and multiple promotions with different suppliers can happen at the same time.

    So one day my friend came back from her golfing trip and asked, "How much can we claim from each supplier?" The sales team started to have eye contacts with their palms, while the rest tried to kill the imaginary fly with dead silence.

    The truth is, all the sales are committed over unstructured means - mostly emails. In order to claim back these monies from the suppliers, and to provide proof, she has to go through ten of thousands of emails going back few years to claim back the money.

    It will be cool if there is a solution that could automatically classifies, filters based on keywords, and manages and preserves these golden-information, literally. If such a solution existis, all my friend needs to do is to fire up a search interface, and all the emails that matching the search criteria will be shown, the rest discarded.

    Instead of looking at ten of thousands of emails, she can now look at only those that are relevant. Better yet, she can hire someone to look at those that are relevant, while she goes golfing.

    What would you do if this happens to you? How much monies is hidden inside your emails?

    Is your head in the cloud?

    Read one article from the CIO magazine about how cloud computing help people collaborate better. Check it out.

    If Your Head is in the Clouds, You're Thinking Clearly.

    Good read.

    Sunday, June 13, 2010

    What can we learn from a little kid?

    My wife and I were invited to one of our good friend's house to catch up yesterday. We had not seen the couple for a very long time and it was great seeing them. Anyway, we thought it was a great idea to also make Chinese Zhong-zi while we were there as it's also the time of the year.

    Little did I know that I could learn so much from this little gathering. I think Jaze and Michelle really did a good job raising their kids...

    While we were making the dumplings, Aaron, Jaze's son, took out one of the strings and started playing with it. In his imagination, the string could be a sword, a rope, a knife, a gun, a weapon to justice. Boy, the kid was having such great fun with the simple string. Just look at him. It was sheer joy!

    The daddy was telling me the kid could watch Alvin and the Chipmunks endless time everyday and never got tired of it.

    While I was looking back at the picture earlier, it struck me that there was once we all lived like that too. We could play with a simple match box for hours and never got tired of it. We could read a simple comic books for zillion times, knowing very well what the ending was, but still enjoyed it.

    What has changed in our life? We now demand to use the latest software, the latest mobile, the latest GPS, the latest this and the latest that. We are never contented with what we have anymore. Just upgraded to iPhone 3GS a few months ago, and now my heart itch for iPhone 4. I feel that what I have is never enough; what people did for me are never good enough. We are always on the chase for more and the latest.

    Why do we feel inadequate today when we have so much more? What can we learn from this little kid? Are we demanding too much and giving too little thanks?


    There is a kind old lady who stays at the same block with us. She is 80 years old, and has gone through all sort of hardship in her life. She told us that she used to cycle for more than 20km to go anywhere. When she was younger, she worked as a rubber tapper, hawker or any job that could bring food back to the family. She moved into the city when her sons started family and life got better.

    After she moved to KL, she started collecting old newspapers to sell. It was hard for her but because she treated everyone in the condo very nicely, everyone just donated old magazines, old newspaper, etc to her. And then she would call the lorry to pick up these newspapers. She was like making something like RM 1k a month - although not much, but she got by.

    What astounded me was when she told us she donated RM 10k for charity, as most of the newspaper she got were donated by others too! She only made RM 1k a month, and she donated RM 10k for charity?

    Wow! How many of us who pride ourselves as professional have donated RM 1k for anything?

    What a life of abundance, and what a kind soul. Although she has gone through so much hardship, she chooses to cherish life. More importantly, she chooses to help people in need. She chooses to care, and to love. Although she's an illiterate, she lives a more meaningful and purposeful life than those of us who are supposedly highly educated.

    What a life! And what a wake up call!

    How would Cloud Computing Change the World - Revisited

    After I posted my earlier article , a lot of my friends who are in the financial industry are very concerned and they shared their point of views with me. A lot of these concerns are valid. These points have become especially alarming after the recent reveal of allegedly Apple's Worst Security Breach.

    How can anyone have any faith in cloud computing after all these episodes of security breach?

    Well, in my opinion, cloud computing is still pretty young. As I have mentioned before, there was once upon a time when the Internet was too risky to conduct any business for the Financial Services Industry. However, with the advancement of digital security and the standard for operational risk management such as BASEL II, we have seen the FSI being one of the most progressive sectors in terms of the use of technologies and Internet.

    While we are debating the practicality, security and robustness of cloud computing for the FSI industry, there are already plenty of private cloud in Malaysia whose target customers are the FSI alone. CTOS, CCRIS, myEG and FPX are some prime example. Yes, yes, there have been histories where leakage of information took place, but this is not the fault of the technology, but rather the fault of the people managing it.

    So the risk is more of operational risk, rather than inherent flaws with the technology itself, no? This is like saying since the bank know our spending pattern, we should not use services from the bank. Very valid concern, but each of us has to decide if the level of services provided by each bank is acceptable to us.

    Again, it is not so much of a technology decision, but rather a decision each business has to evaluate for itself. The evaluation process should be not less stringent than how the FSI evaluate all its purchases.

    True, there are holes and questions that even experts from within the industry cannot answer. But, is that not true with all other aspect in life? People still get drowned in swimming pool - something that has existed for ages.

    Perhaps for now, cloud computing is a great platform for SME because of its accessibility at a lower cost. We now have another alternative; we don't have to invest so much on the infrastructure while we expand on our core businesses and innovations.

    Is this a sweet deal? Yes for me, but perhaps no for the others.

    Wednesday, June 9, 2010

    Would cloud computing change the landscape of the industry?

    If you are reading this blog, you are having at least some experience using the Internet. Are you also using some sort of email system such as Hotmail, Gmail, or Yahoo mail? Are you using Facebook? If so, do you know what is the current version of Facebook?

    The more important question is, do you care?

    The answer is most likely no. You may not like the interface, but you will still continue to use it, because it's free, and there are always new features being added, without you needing to do any work.

    Now, that's the coolest thing about it. You, as a user, do not need to install anything to get to use the latest features and functionalities of Facebook.

    Isn't that cool?

    In my own opinion, cloud computing is going to change the world, whether we like it or not. True, there are going to be people who are concerned about whether your personal information will be secured. There are people who worry about losing the control, as the applications are being installed in some big servers somewhere.

    Where exactly?

    Err... Again, do you care?

    Just imagine the cost of we implementing a system such as Facebook ourselves. We will need to put in investment just for the following:
    1. Web Servers
    2. Application Servers
    3. Database Servers
    4. Load Balancers
    5. A group of developers continuously adding new features into the application.
    6. Data center(s)
    7. Buying network bandwidth
    8. A group of system administrators managing the servers
    9. etc

    How much would that cost you? Probably in the range of a couple of million dollars in investments.

    What if someone is willing to foot that bill for that investment, and all you need to do is to come out with a minimum subscription cost to use it? If you don't like it, then you stop paying and that's the end of the story.

    Sweet deal huh?

    Yeah, I think so. For SME, this is especially a sweet deal. Just imagine that instead of spending a couple of hundred grand for a CRM software, I only need to pay a few dollars a month to get to use the software. And whenever there is an availability of new features, I get to use it, for no additional cost.

    So the question is not whether cloud computing will change the world. Rather, the right question is, how would cloud computing change the world.

    This is like when we first discovered the Internet. Everyone knew that it was going to change the world, but nobody knew how. We are probably in a slightly situation today about cloud computing.

    How to justify for the ROI to get more staffs

    An old colleague of mine invited me for dinner the other day, and apparently she was in some kind of trouble at work. She works for a Software Vendor and is the Support Manager based in a big bank in Malaysia.

    One of her staffs was leaving and the already shrinking team may lose another one of its team members as the morale of the team is very low. She has put in request for more head counts but the management has told her that the goal of her team is supposed to be making the most money with the least resources.

    And her request was denied.

    So I asked her a few questions:
    1. How many staffs does she have now? - Answer: 2
    2. How skillful are the staffs? - Answer: Not enough
    3. Are they occupied now with their tasks? - Answer: Yes
    4. What are they busy with? Answer: - Fixing bugs, there are new enhancements coming
    5. How many bugs are there to be fixed? Answers: About 43

    When she was questioned by the management, she told the management that there were three problems without giving them the perspective:
    1. Insufficient resources
    2. Need to do knowledge transfer for the leaving staff to the new staff
    3. Low morale?

    When these problems are presented to management, they would of course think that - well, this is what you are hired to do, no? Just get them solved and I have got bigger problems to deal with.

    However, if the picture has been projected differently, then the situations may have been different. And the following are my thoughts. If the management are made aware that:
    1. The enhancements are worth more than a few hundred thousands
    2. Right now our team are not able to take on the enhancements yet because they are tight up with bug fixing
    3. There are in total 43 bugs in the system, and it will take us 250 man days (for example) to address all of them.
    4. By the time we have fixed all the bugs, the business dynamic might have changed and the enhancements are no longer required.
    5. Right now, the customer is really dissatisfied with our slow on response. They are very concerned whether we can continue to do a good job as a company to provide good support. This can only be addressed with additional head counts with good skill to expedite the problem solving.
    6. Otherwise, the customer may look at other alternatives as they are getting increasingly impatient. In that case, we may lose out the maintenance contract, which will be a blow to the company - financially and as a reference site.

    Once the numbers for potential revenues are put on the table, and the number of the costs to tackle these problems are put on the table, we will know immediately whether there are profit to be made.

    I believe the management will embark on recruitment immediately the moment they see that profit can be obtained with so little head counts.

    Just my two cents, and I am writing this story in the hope that it can help others too. The most important thing is that - for managers, we ourselves need to understand the business dynamic as well. Our communication must be clear and this is not a time to throw tantrums at management if they fail to see your point of view.

    Management only sees facts. So we present facts.

    Sunday, June 6, 2010

    How to justify for the ROI of Enterprise Architecture - Part 2

    How many ways can we justify for the Return of Investments for any projects?

    This is in principle a business question. Do you know how much is your solution worth?

    Contrary to common belief, the same solution is worth differently to different prospect. Solutions, unlike products, are meant to solve a set of challenges faced by the organizations. They cannot be treated as commodities because they are not. Every prospect has its own unique challenges, and therefore can only be addressed differently.

    There are three different ways any solution can help an organization:
    1. It helps the prospect generate revenue
    2. It helps the prospect save cost
    3. It helps the prospect to be compliant with statutory requirements

    We, must first understand where our solution stand in these three categories.

    A solution that helps the organization generate revenues is typically the easiest to sell. A projection of revenues vs the TCO will usually suffice. Take the recent Sport Betting case in Malaysia - it is something that will generate revenue for Ascot Sports and this system is sure to generate more revenue for the organization.

    A solution that helps an organization optimize it resources can be justified by looking at how much cost it can save the organization in the long run. Most of the systems emphasizes on automation falls into this category. For example, a E-Form solution may help an organization shorten the processing of its application from 3 days to 30 minutes. An BPM solution typically falls into this category.

    The third category of solution helps an organization to be compliant with the statutory regulations. If the law says so, you must do it. If the auditors ask for you, you must prove that you have the records. Some example of solutions are Record Management Solutions or Enterprise Content Management Solution fall into this category.

    All these three type of solutions require an in depth planning to leverage on an Enterprise Architecture as all of them require the few characteristics in my earlier post - security, audit trail, business intelligence, etc. The most beautiful things about this is an established EA can be shared across many applications within an organization.

    Is it easy to justify for ROI?

    No - it requires in depth knowledge of the business and where the revenue is coming from.
    Yes - it only requires in depth knowledge of the business and where the revenue is coming from.

    More on this topic later.

    Saturday, June 5, 2010

    How to justify for the ROI of Enterprise Architecture

    I was invited to be one of the panelists for the ITARC 2010 Malaysian Chapter, and the topic in discussion was How to justify the ROI for Enterprise Architecture. Wow, a huge one!

    I still remember during the boom, every single company wanted to develop some system for some part of their business operations. Some applications were meant to promote the company image, some to generate more revenue, and some to make the operations more efficient.

    An IT-literate organizations may have developed tons of applications like this. Email application, Document Management Application, Applications for Finance Department, Applications for Marketing Department, Applications for Support Department, etc, etc.

    Fast forward to a few years later.

    The same IT-literate organizations realize that these applications are all working in silo. They do not integrate well with each other. The irony is that the same applications that were meant to create efficiency is now causing inefficiency - as users are required to login to multiple systems, copying contents from one and pasting to another in some cases, in order for them to complete their jobs.

    If we look deeper into the nature of enterprise applications. They all share the same characteristics to some extent:
    1. Security - Authorization, Authentication
    2. Audit Trail - Non-repudiation
    3. Workflow or processes - The business operations part of the process
    4. Interface
    5. Reports/business intelligence

    If all these silo applications have been planned and built on an infrastructure that make use of, Microsoft Active Directory Services or some directory services that can be integrated with LDAP, suddenly users are not required to login to multiple systems in order for them to do work.

    And if the applications were built on a framework with a powerful BPM engine, applications development could be shortened from months to week. All software developers would agree that business process is the most time consuming portion of the entire software development exercise.

    If we can somehow consolidate all these silo applications on an enterprise-wide framework, suddenly inter-department collaboration becomes so much easier. Instead of building up walls, a properly designed enterprise architecture actually breaks them down.

    And because of that, the time to market has been shortened from months to weeks, or even days.

    How much edge would it give the organization if it is able to adapt to the market demand faster, and as a result create a new product faster? Can the projected revenue cover for the cost of the enterprise architecture?

    More on ROI later.