Update on Work

As some of you know, I work for Pelagicore. We do in-vehicle infotainment using open source, Linux and Qt. I’m not in Las Vegas right now, but a whole bunch of colleagues are there, showing of at CES.  This year, we’re doing loads of demos together with various partners. We demo together with Visteon (makes infotainment hardware, and more), Digia (makers of Qt), GENIVI (infotainment platform standardization organization), Cinemo (media indexing, rendering and streaming) and Rightware (cool 3D UIs).

IMG_20130108_111108

One of the fun parts of working at Pelagicore is that you get to see cool hardware. I’ve personally worked with Qt on Intel prototype systems, Freescale iMXs, TI’s OMAPs and more stuff that I can’t mention. This year’s demo setup for CES is based on iMX6. The UI has been developed with DesignIt, our design partner company. Let’s face it, those who enjoy coding generally do not excel at polishing pixels. With their help, we’ve been able to make something really beautiful. The picture I’ve got of the UI itself does not say much of the look and feel, but it has a nice reflection of my kind colleague taking the photos, so I’ll use it to say thanks to him and give some credits ;-).

IMG_20130108_111352

The demo is built around Qt and QtQuick (what else is there :-P) on a Linux platform. It integrates our core platform with all the services you might need. For CES, we have some new stuff in there. I have been involved in the integration of technologies from two other companies.

First, we have Righware and Kanzi, a nice 3D engine with an easy to use studio to create the scenes. The car shown below spins around as you change position with nice lighting and material effects. The demo is integrated as an element in the QML scene, and it is possible to bind to and from Kanzi properties, as well as hook into events from Kanzi UI elements, e.g. 3D slides and buttons.

IMG_20130108_111440

The second piece of technology is Cinemo’s media platform. It indexes, renders and streams video and audio. For instance, you can sync multiple devices showing the same video stream, so that you can share the audio through the main speakers. Again, the video stream is integrated into the QML scene, so you can do all sorts of fancy things with it. The images below show an iPad and our demo system sharing a video stream. As you can see, you can control it from either device, and they are always in perfect frame sync.

IMG_20130108_111136+7

From a business standpoint, I guess CES is one of the highlights of the year. We really get to show our stuff to a large audience. However, since I’m not in sales, to me it means overtime, but also having a chance to work with companies making awesome technology. Also, as an added bonus this year, we got to work closely with our team of former Trolls based in Munich, which always is good fun.

So, to all of you at CES. Come visit our demos! To the rest of you, look our for our platform in your next car!

Components Growing

Looking past the irony that QML will be available for all platforms but WP8 in the short-term, and Nokias previous involvement in the development of QML, it is nice to see the platforms being created.

The last in the row is Ubuntu Phone, others are Jolla’s Sailfish, RIM’s BB10 Cascades, KDE’s Plasma and Nokia’s Components for Harmattan and Symbian. Qt seem to unlock the future UIs for devices.

What is striking is the interaction patterns being established. Nokia Swipe, Sailfish as well as Ubuntu Phone seems to rely heavily on swiping from the sides of the screen. This is, in my experience, the key to a truly one-handed device.

Using Android, you are constantly forced to hold the device in awkward angles or use two hands to reach the home button, be it physical or on-screen. Swiping with the thumb is always possible when using one hand (as long as you have an opposable thumbs), while the two-handed user can swipe using the index finger without feeling hindered by the interface.

From a development perspective, it is interesting to see how the different QML Components are shaped. Ubuntu seems to have some interesting ideas for theming going on, and the other platforms have their own strong points.

One interesting comparison is to look at the API for a single component. Comparing the CheckBox elements of Ubuntu Phone, BB10, Harmattan, Symbian and Plasma gives the following API (only looking at the properties and signals that I regard as relevant to the comparison in question).

Properties

  • text (BB10, Symbian, Harmattan, Plasma)
  • checked (BB10, Symbian, Harmattan, Ubuntu Phone, Plasma)
  • enabled (BB10, Harmattan)
  • pressed (Symbian, Harmattan, Ubuntu Phone, Plasma)
  • hovered (Ubuntu Phone)

Signals

  • onCheckedChanged (BB10, Symbian, Harmattan, Ubuntu Phone, Plasma)
  • onClicked (Symbian, Harmattan, Ubuntu Phone, Plasma)
  • onPressAndHold (Ubuntu Phone)

Where does this leave us? For all platforms, one can use the checked property and its onCheckedChanged signal to act. The rest is in up in the air. Ubuntu Phone seems to split the text from the checkbox while the others keep them together. The enabled property is missing from most platforms. Here, even Symbian and Harmattan, both from Nokia, seems to differ.

Still, as the concepts seems similar, the work to create a cross-platform set of components wrapping the components of each platform should not be an impossible task (looking at checkboxes only, that is). Hopefully the end result will not be a too fragmented API landscape and the involved parties will work towards a common setup of basic properties and signals.

Either way, I’m happy seeing that 2012 was a bad year, 2013 looks very exciting. Seeing all these innovative phone user interfaces being created with QtQuick, I’m happy to work at a company innovating in the automotive space using the same technology.

Disclamer! These findings are based on the API docs only. Feel free to correct me by commenting.