Tuesday, September 01, 2009

Palm webOS Development First Impression

Yesterday, I got a chance to pair-program on a Palm Pre application with my colleague Roy Kolak, author of the iPhone music bookmarking application NoteWorthy.

The application being built connects to a web service in order to list media offerings available for playback on the device.

Given my non-existent experience with development on the Palm Pre or any mobile device for that matter, I was a little worried about the learning curve, but I was delightfully surprised by how productive I was in helping Roy with the application.

While a part of the reason is Roy's good pairing skills, like explaining things before jumping into code, listening to all questions and suggestions openly, and taking turns driving with the keyboard, another big factor was certainly the Mojo SDK, which enabled me to leverage my existing Javascript/XHTML/CSS web development skills to write code for the Palm webOS without having to learn any new languages.

Additionally, Roy factored the code in such a way that maximizes separation of business logic from the view, enabling us to do true test-driven development with JSSpec (a Javascript spin-off of Ruby's famous rspec). In fact, the Mojo SDK encourages code structure that follows a variation of the familiar MVC pattern.

I asked Roy what he thought of development on the webOS in comparison to the iPhone OS. His response was that it took him several months to truly get how things worked with iPhone development whereas it took him less than a month to figure out Palm webOS development.

Palm sure has a lot of inertia to go against with its platform as the iPhone is a lot more mature and has a very big following. But, given that development on the webOS takes a fraction of the time of that on the iPhone OS, will the platform pay off for Palm in the long term? Only time will tell.

In any case, thanks to Palm's engineers for building such an elegant platform for us developers to quickly deliver value to consumers.

No comments: