News about BlackBerry 10 development

Some weeks ago I wrote about my efforts do build a BlackBerry 10 app with DominoToGo and Titanium.

I made progress with the app since then. I can synchronize data from IBM Domino using DominoToGo, I can display the data in views and forms. So is everything good?

Unfortunately: no.

During the work on this Titanium based BlackBerry 10 app I discovered several features that were unstable, and I discovered a lot of Titanium features that are simply not implemented for BlackBerry 10. Furthermore, there is no word from Appcelerator that they will continue to support BlackBerry 10 (although there is no word against that, too).

In the end, working on that app felt more and more like riding a dead horse. So my customer and I made a decision: move away from Titanium for this BlackBerry 10 app (while staying with Titanium for another complex, iOS based app).

It’s a tough decision since time is pressing. But what’s an app without future and with potential stability problems good for?

Now I’m re-implementing the app with BlackBerry WebWorks, which is an enhanced Apache Cordova (Phonegap) version for BlackBerry. So basically I’m developing HTML5 now.

One bad thing about mobile development with HTML5 is how to style the app so that it looks and feels like a native app. Yes, there are apps where users accept that they look different, but in most cases users like it when the app looks and feels the way they know.

I looked at Sencha, Dojo mobile, jQuery mobile etc. But for BlackBerry, they all didn’t convinced me. The solution seems to be bbUI.js. That framework not only does a good job in providing UI controls, but delivers an easy to use screen architecture, too. Each screen is simply an HTML file with a special DIV as root element.

Furthermore, each screen can use it’s own JavaScript resources. That way, I can separate UI from logic similar to Titanium’s model-view-controller architecture.

In addition I’m using underscore.js, Backbone.js and the core of jQuery.

I still don’t like Cordova’s way of using callbacks in callbacks in callbacks in callbacks. It’s hard to write clean, readable code when you’re forced to deal with so many callbacks. I understand why they chose this architecture, nevertheless, using too many callbacks lead to code that’s hard to understand.

The good part is that I can re-use much code I already wrote in Titanium, so it’s not a start from the beginning. And so far the performance on an old Z10 device is surprisingly good.

Comments are closed.