What's brewing
Wednesday
Apr072010

Teammate departing before launch day is not a disaster.

The Bad News



A new product (let's call it "Messenger") is scheduled to be finished in 2 months but a core team member is telling me he is departing for another opportunity.

Instead of 2 months, I only got about 10 more days to work out the remaining with him. Scraping up the project is the last thing I want and I decided to compete with time.

Constraint becomes your friend


Time become my constraint. I go back to the drawing board and look at Messenger again. I focus on the following area and soon, I found myself having Messenger 2.0.

Garnish looks great but your product won't die from not having it
Cross out everything on the feature list - except those which will render the product non-functional if gone missing.

There's a scheduler engine in Messenger which works similar to crontab. The original design aims to make it generic throughout the entire product line and provide flexibility to define how frequent the scheduled tasks should run. Indeed, the scheduler engine is re-designed to only cater job that runs per day or per minute which are the two settings that Messenger needs.

Spoon and fork VS chopsticks
If your product is already focused in doing one thing, can it be done even simpler?

Messenger is a product to take care of message exchange. User can customize the way to communicate and one of the setting is where in the file system to pick up data for delivery. Instead of allowing the user to define, we eliminated this field and request them to put everything in a pre-defined location. The fewer settings we provide, the less validation effort is required and the less likely to have bugs.

Re-use it if you can
Look around, you might already have some components developed and well tested. But don't over doing this by patching it up as a "make-do".

There are some DB operation needed in Messenger. Instead of writing new DB classes, we reuse the existing DAO and modify to suit the specific needs. The transaction is well taken care of and we can even reuse the unit test cases.

Iterate and iterate fast


The last thing I see essential is working as closely with the developer as you can. This ensure your decision is well executed. And communicating directly helps to address things fast, but of course, keeping things on issue tracker is still necessary.

When my teammate finished anything, he will notify me through IM and I will check it out right away. I shall give him instant response so that he knows if any amendment is needed.

All goes well


Luckily, by the time when my teammate departs, Messenger 2.0 is done. It certainly is a challenge to both of us but having it accomplished is not as difficult as one would imagine. Try to turn the bad into your good.
Monday
Apr052010

Floating in the AIR

When I saw the releasing of AIR back then, I am very excited (and still am) by the interface and the new way of developing desktop application. But the apps available are scarce and the best are those demo apps from Adobe.

Time went on and AIR apps can now run on all major platform (Windows, Mac and Linux). And there seems to be more "real" apps available, which is written to solve a problem, instead of just showing off the capability.

I have came across two apps that really helps my work. The first one is Balsamiq Mockup from Balsamiq Studio. It is a tool that helps to speed up creating application prototype. It enable the user to draw wireframe for the interface and it provide a library of pre-drawn component which you can just drag and customize.

Wireframe of EMP This is a wireframe I drew with Balsamiq Mockup, the table, the heading, the text box are all pre-drawn components.

Another application written in AIR that I have tried is PreziDesktop, it is an application to build "Prezi". Instead of using Power Point to illustrate your idea, it allows the user to convey in a more natural approach. Imagine having a canvas of unlimited size, you can draw and orient text as desire. You can zoom in when you want to drill into the details and pull out when you want to see the big picture. Prezi is a web application which you can edit through the browser and the AIR application is a companion tool which enable user to edit and present when they are offline.

Both tools make good uses of the UI capability, installation can be done very easily through a simple click on the install button from the webpage.

I believe this would be the trend for desktop application development for the following reasons,

  • Cross platform support

  • Enable the reuse of component that can be used both online and offline.

  • Leverage the capability of Flash

  • Rollout easily as installation could trigger from webpage



Let's see what can we see next.

Thursday
Jan222009

Using RCLI in Gentoo AMD64

We are operating a VMWare ESXi 3.5 server and is looking for way to perform operation on the VM via command line.

VMWare provides an API (which is a set of perl script) called RCLI (Remote Command Line Interface) and it provides the script in two flavor - Windows and Linux.

We want to issue the command on our Gentoo box which is running in 64 bit but the RCLI linux deliverable failed to deploy in 64 bit. Googling around noticed a patch to get around this.

Apply the patch by the following command

patch vmware-install.pl vmware-viperl-distrib.diff
After that, just install the script by,
./vmware-install.pl


It goes OK except a warning explaining the failure to bind with the perl module Crypt::SSLeay.

I guess it doesn't exist on my box and thus I emerge this right after. Upon doing so, when I try to issue the command "vmware-cmd", I was greeted with the following,

builder vmware-rcli-distrib # vmware-cmd
Can't load '/usr/lib64/perl5/site_perl/5.8.8/x86_64-linux/auto/XML/LibXML/Common/Common.so' for module XML::LibXML::Common: /usr/lib64/perl5/site_perl/5.8.8/x86_64-linux/auto/XML/LibXML/Common/Common.so: wrong ELF class: ELFCLASS32 at /usr/lib64/perl5/5.8.8/x86_64-linux/DynaLoader.pm line 230.
at /usr/lib64/perl5/site_perl/5.8.8/x86_64-linux/XML/LibXML.pm line 12





No help to google around but I suspect it's again the missing of a proper perl module, so I emerge it again and try. Turns out I am right but I am seeing yet another error message on a different module. I repeat until I can execute "vmware-cmd" without an error.

Below is the list of module I have emerged,

  • emerge Crypt-SSLeay

  • emerge libxml-perl

  • emerge XML-LibXML-Common

  • emerge XML-LibXML

  • emerge Class-MethodMaker


After that, all is running well.
Wednesday
Jan142009

Internet booming in China

Came across an annual report about internet development in China today and notice a significant adoption of internet usage in China.

Also, internet access is no longer for people living in big city. The increment in rural area and villages has outgrown those in the bigger city (60.8 vs 35.6%). What's more, most of them are using broadband for internet access (around 90%), and surfing on the mobile phone has a significant gain as well (133%).

I think the explosion can be seen in two fold, one is the general public adoption while the other is the booming of our own internet application. We are now having all kinds of localized web application, which break down the language barrier for the user adoption.

Talking about web application, it is found that about 24% of the web site hosted in China is using PHP, which is the most popular languages among all.

The report is very informative and I am seeing that the internet user in China is now more comfortable in using this media to do things more than web browsing. The penetration of using the internet to do ecommerce might be coming soon.
Sunday
Jan112009

The iPhone that never sleep


Mobile Blogging from here.


I like my iPhone, the apps and games are wonderful. But I can only realize the true power after subscribing to a data plan.

See the above? I can now blog at anywhere, locate myself at any time and what's more is to get the latest information on the road.

But are we not getting connected enough? Now, other devices, such as the digital camera or portable gaming console, can also gain access to the net.

I wonder when would we feel exhausted in sending update to our friends round the clock.

Before that, I will enjoy the using of my iPhone. :)