Palm shook up the mobile world at CES 2009 when they announced the Palm® Prē™ and webOS™. And while webOS™ defines new possibilities for the mobile experience, it is the possibilities for the developer that sold us and led us to pursue a partnership with Palm.
You can create a great application with many platforms, but it can be far from easy for the developer; at times I swear I hear circus music as I jump through an endless array of hoops, in an effort to build my application.
The Mojo Application Framework is built for the developer, just as a BMW is built for the driver. (Not that the passengers get a bad deal either.) Most mobile platforms frustrate me as they seem like the state of the art in desktop development circa the 1990′s. With Mojo, the development experience is more like using Rails or Django and less like using C++.
Pivotal plans to bring our practices to developing with the Mojo framework, such as Continuous Integration, and Test/Behavior Driven Development. Expect to see a variety of open source tools from us to support these efforts.
Gizmodo’s Brian Lam recently wrote, “Palm dropped their new smartphone and their new operating system on us, and it is maybe the most interesting phone I have seen this decade.” Though the Palm Pre definitely evokes intense gadget lust, webOS and the Mojo Application Framework combine as one of the most interesting development platforms that I have seen in some time.
Jon Dahl has a great write-up on Rail Spikes comparing Pivotal Tracker to just about every bug tracking application out there.
He hasn’t had a chance to try it out on longer projects yet, but we use it everyday on projects (like tracker itself) that have been years in development and refinement.
Thanks, Jon, for the thoughtful exploration of the product!
It’s getting hard to keep up with all the Remix activity.
Matt Williams has put together a PHP library for Remix.
$apiKey = '12345678'; // Your API key
$remix = new BestBuy_Service_Remix($apiKey);
// Retrieve a list of stores within 10 miles of a zip code
$result = $remix->stores(array('area(10006,10)'))->query();
// Result objects may be implicitly cast as strings
// Retrieve a list of Movies containing the text "Bat"
$result = $remix->products(array('name=bat*','type=Movie'))->query();
else if(403 != $result->http_code)
// API errors result in an error document with detailed info
// 403 errors do not contain a full error document, only an h1 message
// Retrieve fields from a list of Movies starting with "Bat" in JSON format
$result = $remix->products(array('type=Movie', 'name=bat*'))
// Check for store availability of a Playstation 3 in a given area
$result = $remix->stores(array('area(10006,10)'))