Saturday, July 10, 2010

Integrating OACurl With A Java Desktop Application

In my previous post, I introduced the Google Buzz API and the technologies surrounding it. In this post, I will be emphasizing on how to integrate OACurl with a Java Desktop Application to make the authentication process simpler. Before I continue, let me categorical state that this method is good for small student projects; but for serious production applications, OACurl integration isn't a good option.

OACurl is primarily an OAuth aware wrapper around the popular cURL command line utility. If you are wondering what cURL is, it is a software project providing a library and command-line tool for transferring data using various protocols like HTTP, FTP, HTTPS, LDAP, IMAP, POP3, etc. The beauty of cURL is that it simplifies the process of data transfer using these protocols to a very large extent. OACurl is an extension to this utility which supports OAuth, the authentication/authorization protocol of the Google Buzz API. OACurl provides an easy way to experiment with the Buzz API.

Before I start with OACurl Integration, let's see how we can connect a desktop application to the Google Buzz API without OACurl. As I mentioned in the previous post, the OAuth token request and authorization process takes place through a Web Browser. So the desktop application should open the Browser and allow Google to verify the user credentials. Then Google issues an authorized token to a Callback URL as specified by the application. This has to be detected by the application and it has to regain focus. For a more detailed view on this, check out - http://code.google.com/apis/accounts/docs/OAuthForInstalledApps.html.

The biggest challenge in this process is that in devices like Gaming Consoles, Setup Boxes, etc., where a Web Browser isn't available the entire procedure goes haywire. Google is working on a solution for this, until then we have to adjust with the Web Browser technique.

OACurl is a pretty easy tool to work with. It is available as a Java Archive with multiple classes for various operations like Logging in, Fetching data from URLs, etc. To use OACurl directly from the command-line, refer http://code.google.com/apis/buzz/v1/oacurl.html.

To use OACurl within a Java Desktop Application, add a reference to the jar file from your project. Now there are two classes which do the entire thing for us - Fetch and Login. Both of them contain a main method; actually it is these classes that are being used in the URL mentioned above. But instead of using classes from the command-line, we will directly call the main method in them from our Java program.

A bit of reverse engineering makes it clear that the flags like "-buzz", "-X", "POST", etc. are being sent as command line arguments. So we can create a String array of these flags and sent it to the main method.

com.google.oacurl.Login.main (new String[] { "-buzz" });
com.google.oacurl.Fetch.main (new String[] { "-X", "POST", URL });

The main methods push the output content to the default output stream as specified by System.out. By default, this is the user screen. If we want to use this output, we can transfer this output into a temporary file and read from this file.

File temp = File.createTempFile ("output", null);
PrintStream output = new PrintStream (temp);
System.setOut (output);

Similarly, the main methods read the input from the default input stream as specified by System.in. By default, this is the keyboard. If we have to send our input, we can create a temporary file, write the content into it and make the file the default input stream.

File temp = File.createTempFile ("output", null);
// Write into the file
PrintWriter writer = new PrintWriter (temp);
System.setIn (writer);

This way we can use the Google Buzz API within our Java Desktop Application without having to worry anything about the authorization process. Developers curious to know how this works can explore the OACurl project hosted on Google Code at http://code.google.com/p/oacurl/. The complete source code of the Login and Fetch classes as well as the Callback Server and other classes is available at the link.

Before I wind up, here is a small project developed in NetBeans which reads the latest buzz and publishes buzz content.

Saturday, June 26, 2010

The Google Buzz API

It's been a month Google released their Buzz API at Google I/O and I have been dying ever since to write an article on it. Finally got an opportunity today and really hope that the posts live up to my expectation :)

In this post, I am going to introduce the Google Buzz API and the technologies surrounding it like OAuth, REST, AtomPub and JSON. And in my next post, I will be emphasizing on how to integrate OACurl, an OAuth wrapper, with a simple Java Desktop Application. Most of the information in this post is pretty basic and if you are comfortable with these technologies, I would recommend you to skip the post.

Google Buzz

Google Buzz is a social networking and messaging tool from Google, designed to be integrated into Gmail. Google Buzz was an attempt by Google to compete with micro-blogging services like Twitter. After the release of the Buzz API, it has been well received both as a platform and as a service.

The Google Buzz API revolves around two main concepts - Authentication which is done through Open Authorization (OAuth) and Service Usage which is managed using the REST architecture with data formats like XML (through AtomPub) and JSON.

Authentication

OAuth is an open standard that allows users to share their private resources like photos, videos, etc. stored on one site with another site without having to hand out their username and password. It works through the exchange of tokens which provides access to a specific site for specific resources for a defined duration.

Most of Google Data APIs like the Google Calendar Data API, Blogger Data API, Google Contacts Data API, etc. use OAuth for authentication. The authentication process is done through a Web Browser for web applications as well as desktop applications using the APIs. A browser pops up and users are authenticated with respect to their usernames and passwords directly by Google and then the control is returned back to the application which can proceed accordingly.

A major disadvantage of this process is that a web-browser should be available for authentication even for desktop applications.

Service Usage

Data transfer for the Buzz API is done primarily on the basis of REST (Representational State Transfer). It is a style of software architecture for distributed hypermedia systems such as the World Wide Web. The crux of REST is that is uses the basic HTTP methods like GET, POST, etc. for resource manipulation (getting a resource, saving a resource, etc.)

Google Buzz API returns data in two formats - XML and JSON. XML is sent in the form of AtomPub. AtomPub (also known as APP) stands for Atom Publishing Protocol. It is a HTTP-based protocol for creating and updating web resources. It uses an XML language known as the "Atom Syndication Format" (ASF) and is very popular for web feeds. The Atom Syndication Format and AtomPub form the Atom Standard. The ASF is primarily an XML format with tags like feeds, links, etc.

Google Buzz API can also return back data in the form of JSON. JSON, standing for JavaScript Object Notation, is an open standard designed for human-readable interchange. Despite its strong relationship to JavaScript, it is language-independent with parsers available for almost every language.

The major reason for Google Buzz API to offer JSON besides ATOM was that JSON parsing is comparatively faster than XML parsing in JavaScript. So in web applications which might pull data from the Google Buzz API using JavaScript and AJAX, JSON parsing will be a major performance gain.

A Quick Example

Navigate to https://www.googleapis.com/buzz/v1/activities/userId/@public to see your latest public buzzes in the ATOM format and to https://www.googleapis.com/buzz/v1/activities/userId/@public?alt=json to see them in the JSON format.

There are several URLs like these available at the Google Buzz API site - http://code.google.com/apis/buzz/v1/using_rest.html. However most of them require authentication before they show the results, which means that without authorization by OAuth, a URL based mechanism will not fetch the data.

To know your userId, you can do the following steps -

  • Login to GMail and go to the Buzz tab
  • Click on your name which is displayed at the upper-left corner of the Buzz tab
  • The last handle (the string after the last /) is your userId

Saturday, June 19, 2010

NetBeans 6.9 - The JavaFX Composer Rocks

NetBeans 6.9 has finally been released a few days back, June 15th 2010 to be exact. It was a very special release in the NetBeans community as this was the first major revision after Oracle's acquisition of Sun Microsystems this January. Check out the release notes at http://netbeans.org/community/releases/69/relnotes.html.

Along with NetBeans, a minor revision of GlassFish, GlassFish 3.0.1 has also been released. The minor revision contains several bug fixes and the GlassFish Server Open Source Edition 3.0.1 has been integrated with NetBeans 6.9.

There are several new features which been added to NetBeans this time, like the support for Zend Framework on PHP, Ruby on Rails 3.0 Beta support, Spring Framework 3.0, JavaFX SDK 1.3, CSS Refactoring and Code Completion, support for JDK 7 and several other features. The complete feature enhancement list is available at http://wiki.netbeans.org/NewAndNoteworthy69.

But personally, I felt the best feature addition to NetBeans this time was the JavaFX Composer. For people who are new to JavaFX, it is a Java platform for creating and delivering Rich Internet Applications (RIA) that can run across a wide variety of connected devices like computers (as browser-based and desktop applications), mobile phones, TV set-top boxes, gaming consoles and Blu-ray players.

The JavaFX Composer is a visual layout tool similar to Project Matisse for Swing. Initially released as a plugin for NetBeans 6.8, it has now been completely incorporated into NetBeans 6.9. The primary features of the JavaFX Composer are -

  • Visual editor for a form-like UI using components
  • Dynamic design editing based on states
  • Data access to Web Services, databases and local storage
  • Support for JavaFX binding
  • Simple animation editor
  • Multi-screen-size editing

Create a new JavaFX project using the JavaFX Composer by navigating to File, New Project and choosing a JavaFX Desktop Business Application or a JavaFX Mobile Business Application under the JavaFX category depending on the requirement. Give a project name and the UI editor opens for creating the UI from the JavaFX components.

Drag and drop components from the palette and create the user-interface as you want. Here's a small echo application which echoes what has been typed in the text-box. To be honest, this is my first application in JavaFX and I could finish it by typing only a single line of code and that too a JOptionPane.showMessageDialog and I had help from the auto-complete feature of NetBeans for this :), rest of the work was done the JavaFX composer. That actually reflects the ease of development which the composer and NetBeans are driving. On a whole, a big thumps-up for the JavaFX composer and the entire NetBeans development team for integrating this into the IDE.

Download the project here.

If you give the JavaFX Composer a try, check out the huge arsenal of features which the palette possesses like Shapes, Effects, Charts, etc. You will definitely love them.

This blog-post was shown as a featured article on NetBeans -

Friday, June 04, 2010

Capital IQ - An Interns View

Successfully, my 6 months intern at Capital IQ which started on December 14th has come to an end on May 31st. These six months are a few of the best days in my engineering life which I can never forget.

After hiring us during Campus Placements at our college, Capital IQ gave us an offer to work for six months as an intern at their company. I was working for three days (Wednesday, Thursday and Friday) at Capital IQ and three days (Monday, Tuesday and Saturday) I had to attend classes at my college. I personally felt that this was a perfect blend of enjoyment and work.

I learnt a lot at Capital IQ and enjoyed more than what I learnt. I was a part of the Web Mining team and was working on a very critical project for the company at that time. I guess we were lucky to be in the team as we learnt a lot of technologies and understood a lot about the dynamics of the corporate world - bottom-lines, dead-lines, project management, etc. But as we were interns, there wasn't any pressure on us :)

The three days at office were fun and work. However, the remaining three days at college was completely fun :D. In fact, I think we bunked more classes than we attended :P

The project at college was another exciting thing, as we weren't allowed to submit the project which we were doing at Capital IQ, I had to work on a separate project. Though it was exciting to manage office, project and classes together at the same time, it did become very hectic.

On a whole I had a great time at Capital IQ along with the other interns (Aishwarya, Dinesh, Jame, Rohan, Sasikiran, Simantha, Sneha and Suvansh) and I joined Capital IQ on June 1st (the next day we completed our internship) as a full-time employee :)

Sneha and Suvansh - best of luck for your future, we will be missing you here and for the rest, nice to be working with you again. And before I sign out, a big thanks to the Placement Office of Osmania University and the entire hiring team of Capital IQ for the opportunity.

Monday, May 17, 2010

Cloud Computing Portal For SMEs - Curtain Raiser

As our final year project, two of my classmates (A. Raghuveer and G. Nishanth) and I are working on a project (Cloud Computing Portal for SMEs) under the domain of Cloud Computing.

In this blog-post, I will be introducing the domain of Cloud Computing and give a small overview of our project. In a few days, I will be unveiling the code along the documentation at - http://cloud-smes.appspot.com/, so keep checking this space for more updates.

Here's a short video about the project -

Cloud Computing

Cloud Computing is a paradigm in the field of computing. Technically, Cloud Computing is defined as -

"A computing capability that provides an abstraction between the computing resource and its underlying technical architecture, enabling convenient on-demand network access to a shared pool of configurable resources that can be rapidly provisioned and released with minimal management effort or service provider interaction."

From a customer's perspective, Cloud Computing is a cost-effective solution offering flexibility in usage at low investment costs. From a vendor's perspective, Cloud Computing helps in reducing the operational costs of a data-center with a high degree of customizability. Cloud Computing allows vendors to reach more and more customers with a low cost of delivery.

Cloud Computing is mainly built on its delivery mechanisms which define the service being provided by an application running in a Cloud Computing environment. There are hundreds of delivery mechanisms available like Infrastructure as a Service (IaaS), Platform as a Service (PaaS), Software as a Service (SaaS), and Data as a Service (DaaS).

Advantages of Cloud Computing include Reduced Costs, Increased Storage, High Levels of Automation, Flexibility, More Mobility, etc.

Cloud Computing Portal for SMEs

Small and Medium Enterprises (SMEs) are companies whose headcount or turnover falls below certain limits. In most economies smaller enterprises are greater in number. In many sectors, SMEs are responsible for driving innovation and competition. In India, the Micro and Small Enterprises sector plays a pivotal role in the overall industrial economy of the country.

Every organization consists of several applications like -

  • Financial Accounting
  • HR Payroll
  • Inventory Control
  • Management Systems

Every organization makes a certain investment in its core infrastructure for these applications and for scalability and expandability of this infrastructure; Cloud Computing Centers are viable solutions.

This approach is very useful in high-risk SMEs where the requirements are high, stability is low and sustenance is risky. This methodology allows such organizations to outsource their mundane housekeeping tasks to Cloud Computing Centers and pay as per their usage. This reduces their initial investments for hardware and software, minimizing their risk. As time progresses and things stabilize in the organization, situation can compare the available options and proceed accordingly.

Cloud Computing Centers benefit from the fact that they leverage their hardware and software across multiple SMEs. With appropriate planning, the breakeven point can be reached easily and as time progresses the center can profit from such a venture.

Understanding this potential market, the project concentrates on SMEs by providing them with business applications on demand. These applications form a web portal, which is distributed across multiple Cloud Computing environments to avoid vendor lock-in.

The applications covered as a part of the project are -

  1. Self-Managed Repository
  2. Name Finder
  3. Knowledge Management System
  4. Sales Management System
  5. Appraisal Management System

These applications are the primary requirements of any organization, irrespective of its sector - Education, IT, Banking, Automobiles, etc. and every organization needs them for its proper functioning.

Sunday, April 11, 2010

James Gosling Quits Oracle

Finally, James Gosling confirms the rumors that were going around the internet of his resignation from Oracle. On 9th April, he confirmed that he resigned from Oracle a week back (April 2nd, 2010).

The news struck as a big blow to the millions of Java developers and fans across the world. When asked about his decision of leaving the company, his response was truly terrifying. Here are the actual words he wrote at his blog -

"Just about anything I could say that would be accurate and honest would do more harm than good"

I personally think its high time Oracle comes out and does something to instill confidence in the huge developer-base of Java.

Thinking positively, I believe Java is mature enough to sustain itself and a single person leaving the company cannot kill the product.

Anyways, let wait and watch how the story unravels at the Oracle camp.

Check out his resignation article at his blog - http://nighthacks.com/roller/jag/entry/time_to_move_on

Thursday, April 08, 2010

Running Chromium OS In VirtualBox

If you would like to try Chromium OS without disturbing your system or without going through the trouble of downloading the source code and building it, this blog-post is for you.

The Chromium OS has been built and bundled as a VMWare image (.vmdk). This image can be used with VMWare workstation, but this piece of software isn't free. So in this blog-post I will be targeting the free virtualization application - VirtualBox.

Oracle VM VirtualBox is an x86 virtualization software package originally created by a German software company Innotek, purchased by Sun Microsystems and now being developed by Oracle Corporation as a part of its family of virtualization products. Download VirtualBox from http://www.virtualbox.org/wiki/Downloads

Download the VMWare image of Chromium OS as a zip file at - http://uploading.com/files/ff856c8d/chrome-os-0.4.22.8-gdgt.vmdk.zip

Extract the VMWare disk image from the zip using a compression utility like WinZip, WinRar or IzArc. Fortunately .vmdk images can be used in VirtualBox without any prerequisites, so we don't need a VMWare workstation to use the image.

I couldn't find a proper .vdi image when writing this article. If you find one, please post a link in the comments section. Either way, the series of steps will still be the same.

The following steps will get Chromium OS running in VirtualBox as a Virtual Machine.

  1. Start VirtualBox

  1. Create a new Virtual Machine

  1. Name the Virtual machine as Chromium OS and select the operating system type as Other/Unknown

  1. Allocate certain RAM for the operating system to run

  1. Use the existing available hard-disk (the image which we have just downloaded)

  1. The Virtual Media Manager ups on clicking the button beside the drop-down list

  1. Add the image file which was obtained after extraction

  1. The new image becomes the hard-disk for the virtual machine now

  1. Click on Finish to complete the process

  1. You can now see a new virtual machine docked on the right-hand panel of the window

  1. Double-click on the VM and Chromium OS boots up

  1. Login using your Gmail

That's it, Chromium OS is up and ready. Explore it!!!

Chromium OS

Chromium OS is the open source development version of the Google's Chrome OS. The source code of Chrome OS was released on November 19th, 2009 under the BSD license as Chromium OS.

Chromium OS aims to build an operating system that provides a fast, simple and more secure computing experience for people who spend most of their time on the web. It targets to build a powerful platform for developing a new generation of web applications.

Chromium OS is the name of the project and Google Chrome OS is the name of the product. But the developer builds are still termed as the Chromium OS.

But the advent of the Chrome OS has led to a bigger question – Do we really need a new Operating System? More specifically - Why Google Chrome OS?

The traditional boot-up process that we go through everyday involves a series of steps like -

  • Loading the BIOS
  • Hardware detection
  • Loading and starting the Boot-loader
  • Loading and starting the Kernel
  • Starting the OS primitives
  • Running the startup applications

Even the fastest computer in the world takes about 45 seconds for this to happen.

This was the focal point of Google while building the Chromium OS. For millions of naïve users who use their netbooks/laptops mostly for internet, 45 seconds is a lot of waiting time. Google plans to make the web browser the Operating System for fast boot-up and this OS is the Chromium OS. In fact Google is claiming a 7 second boot-up for the Chrome OS and in certain instances the boot-up time has been as low as 3-4 seconds.

The Chrome OS hasn't been released yet and the expected release date of the Chrome OS is late 2010 or early 2011. But technical enthusiasts can still get first impressions through the open-source Chromium OS project.

Google Chrome OS is built on the Linux kernel and is expected to be free on release, but then what’s the economy model of Google? - Chrome pushes Google web applications like Google Docs, Google Calendar, Picassa, Youtube, etc. The major revenue stream of Google is through its advertisements. More users of Google applications will yield more revenue to Google through advertisements.

All the applications utilized by the Chorme OS are cloud based applications. A major drawback is the customer trust on Google. All our documents – text docs, spreadsheets, and presentations are all on the Google cloud. How can an individual be sure that his documents are secure from unprivileged users? The recent crash of Gmail has strengthened the apprehension and has caused a panic about the cloud based OS of Google.

Major Drawbacks

  • Google is considering Chrome OS as a companion device. It is assuming that every user will have another work-station at their disposal
  • Vague support for working offline. Google is planning to provide a little support through Google Gears and local caches, but every the idea has to be solidified
  • Android applications are incompatible with Chrome OS
  • Chrome OS requires internet access for everything
  • Every application which users desire cannot be integrated into the cloud
  • Browser lock-in. No other browser can be used expect for Google Chrome

The Brighter Side

  • Speedy boot-up
  • Security by default
  • Support for both x86 and ARM architectures
  • Several applications are available by default like Google Docs and Microsoft Office Live
  • No need to install anything. Just plug-n-play

On a whole, Google has created a lot of buzz about its new Operating System. Let’s wait and watch. I recently was a part of a presentation around the Chromium OS - check it out here.

If you would like to try out Chromium OS for yourself, either follow the build instructions at http://www.chromium.org/chromium-os (or) check out my next post - Running Chromium OS in VirtualBox.

Sunday, March 28, 2010

Demystifying A Geek, A Nerd And A Dork

There have been a lot of misconceptions surrounding the usage of these three words - geek, nerd and dork. In fact they are considered offensive by many people.

Unfortunately, most of them don't even understand the difference between them. Here's a Venn diagram that shows how they relate to each other.

As evident from the Venn diagram, the classification deals with three major criteria - Intelligence, Obsession and Social Ineptitude. One major point to be noticed here is that the usage isn't restricted to education. A person who is obsessed with Cricket and is intelligent with respect to the game of Cricket can be considered as a Geek at Cricket. So the general stereotype of a guy with glasses reading a book for a geek isn't really a great notation.

Terming oneself as a geek/nerd/dork needs a really broad mind. On a whole being termed as a geek or a nerd need not be as offensive as it sounds and people with a really really broad mind might even take it as a compliment.

Coming to myself, I am not sure if I am intelligent, but I am definitely not socially inept. I am considered addicted to Computers and PC Games but not really obsessed, I guess.

I actually stumbled across the Venn diagram when one of my friends buzzed the link at Google Buzz. Do check it out if you would like to read the original article.

Monday, March 01, 2010

CAT 2009 - A Case Study

Finally, CAT 2009-2010 comes to an end. Most of the people who have appeared for CAT this year called it a debacle. I don't think the entire situation was that bad but the process could have been managed more professionally and more systematically.

For all the readers who have no idea what CAT is - CAT stands for Common Admission Test. It's an all India test conducted by the Indian Institutes of Management (IIMs) as an entrance examination for the management programs of its seven business schools. Besides the IIMs, CAT scores are used in several other B-Schools for admissions.

Last year, it was announced that CAT 2009 would be going online, that is CAT 2009 was becoming a computer based test. As time progressed it was decided that the major decisions regarding the examinations would be taken by the IIMs and the actual management of the exam would be outsourced to Prometric.

The IIMs are a few of the finest B-Schools in India. They produce a few of the best managers in the world and are known for their expertise in management. Prometric is a U.S. company in the test administration industry. Prometric is spread across 135 countries and conducts examinations for several big players in the Computer sector like Microsoft, IBM and also several government organizations.

It's really surprising that a test conducted by the best management academy and the best test administration organization in the world could get into so many controversies.

The CAT exam was conducted in a 10 day window beginning on 28th November 2009 to 7th December 2009 and in addition two more days because of technical glitches - January 30th and 31st 2010. Finally the results were declared yesterday, i.e. 28th February 2010. That's three whole months.

CAT 2009 was a big thing for Prometric. In India, Prometric conducts a lot of exams, but most of them are score-based and a majority of these are qualification exams rather than competitive exams. But CAT was completely different for Prometric India. It was percentile based (rank based) and a national level competitive exam.

A major difference between competitive exams and qualification exams is that in qualification exams performance is absolute and students really don't care about other students. Prometric conducts a lot of exams like this in India, examples include certification exams for organizations like Sun, Oracle, Microsoft, etc. and has been successful in their administration. But, competitive exams are different, the performance of students is relative so every student should be given the same opportunity to show their expertise. The major factors which influence this are -

  • Questions should be never repeated across slots
  • The question paper pattern should be same
  • The difficulty level of the questions should be same

There were a lot of speculations that questions repeated across slots and that questions even came from question papers of previous years.

Though the question paper pattern was the same, it wasn't declared before. However, I don't think Prometric can be blamed for it.

Estimating the difficulty of the question paper is indeed difficult, so methods like Computerized adaptive testing should have been used. I am not sure if Prometric used such techniques in CAT, but if they did, a thumps up to Prometric.

Another major problem faced by the students was that there was a lot of technical problems with the computers. A few technical issues can be tolerated but it was found that 8000 students were allowed to reappear for the exam, which was a huge embarrassment for Prometric. The pathetic part of it was that Prometric attributed this problem to common viruses and what was more surprising was that the test wasn't even internet-based but was LAN-based. Maybe Prometric should have invested on a good Anti-Virus program or at-least installed a free one like Avast on the systems ;)

Personally I faced no problems when I took my test and I believe that despite a few lapses, Prometric did do a reasonably good job.

Now coming to the bigger picture, I didn't understand a lot of decisions that were taking by the administration committee of CAT -

  • Why wasn't the pattern of the paper announced before the exam? This did give an advantage to the students who wrote the exam in the later part of the window as they knew the pattern as opposed to the students who wrote it in the beginning. I guess IIMs were being over-optimistic when they expected that details of the exam won't go out when the students press an "I Agree" button to the terms and conditions.
  • Why were the results declared so late? Initially they said the results would come out in January, then in the third week of February and then finally at the end of February. This did create a lot of frustration in the students.
  • How were the marks allocated? I am sure a lot of students are still wondering how a score of 450 was divided between 60 questions. If this was because of normalization, why wasn't the formula published?

I am sure, the administration committee have their reasons for this.

A Comp. Sci.s view on CAT 2009

Being a Computer Science student, I was very happy when CAT was announced as a computer based test as I assumed it would very efficient and well organized. In fact, I expected the results to be out soon, as once the entire data was available, a formula would have given the results within a day; which of course wasn't the case. During the entire CAT process, I found a lot of features in their software interesting.

During slot reservation, the queue system implemented was very good. It made the process of reserving slots more professional and at the same time eased the load on their server. However the venue details on a few hall tickets were wrong, which created a panic among the students. For example, Andhra Pradesh was misprinted as Arunachal Pradesh in the hall tickets of several students. I was also a victim of this error. Prometric should have done a quality check on the software for such issues as well.

The exam software very good and comfortable for the students. Time and session management were implemented flawlessly. But the students did face some trouble with an "Exit" button, despite the Prometric guys warning everybody about it.

But coming to the results, there were a lot of things which I didn't understand. One big question was - Why didn't they just email the results to the students instead of putting up a server. This would have made the result declaration a lot easy and obviously mail servers of Google and Yahoo wouldn't have crashed on heavy loads. This would have even saved the students from F5 blues.

When they decided to go for a result server, it is surprising why they didn't make sufficient arrangements to accommodate the huge number of requests. In fact, they did implement load balancing and had nearly four servers running, but most of the students didn't know this. However even that wasn't sufficient and within a few hours, the entire system came down crashing.

Another big mistake was that they actually displayed the exception messages outside for the world to see. Here's a screen-shot of one of them -

Does the world really need to know that the IIMs/Prometric servers used a MySQL database? A custom error page would have been a lot better.

Maybe even the best managers in the world need efficient computer engineers ;)

Well, that's the story of CAT 2009. I personally felt the movement towards an online CAT was very good and will be really beneficial in the future.

And for all those who would like to know my percentile in CAT this year - it's 88.47. Not a great percentile, but at the same time not even a bad one.

Before I conclude, I would like to congratulate all the students who are satisfied with their percentile and wish the best of luck to all of them for their interviews at various B-Schools. For the others, I have only statement to make - "Failure is the stepping stone to Success". :)