Wednesday, October 12, 2011

Open links from Text-elements in QtQuick

I just finished yet another blog post on my companies blog site. It's about opening external application when clicking on links in QML Text-element.

Read about it here

Thursday, September 22, 2011

Using QtCreator for Arduino development

I just finished a blog post on my company's blog site about using QtCreator as development environment for the Arduino board.

Please head over here to read all about it.

Saturday, September 3, 2011

System 76: Linux Devices and Better Business Values

Guest post by Nadia Jones. Look at the end of the post for more info about Nadia.
To the average computer user there are two types of operating systems: Apple and Microsoft. While for the mass market this basically stands true, computer programmers, developers, and techies also recognize Linux as one of the great computer operating systems. Though Linux is not as widespread or popular as Apple or Microsoft, it is just as well-respected (if not more so). There are several reasons that Linux just hasn't become a mass success like other operating systems have. While there are very few companies that produce computers with the Linux OS already installed, System76 does.

Not only is System76 one of the few companies that sells laptops with Linux preinstalled, they are one of the only companies that sells them at reasonably competitive prices. No doubt, these computers will likely cost more than your average Dell because System76 is such a small outfit, but the prices remain extremely reasonable. Selling laptops, desktops, and servers all outfitted with Ubuntu, System76 is a firm believer in Linux as an operating system. As System76 explains, Linux offers stability, security, and the "freedom to use the software you like, the way you like to use it". One of the other big perks about using Linux and all of its machines is that they are completely free. System 76 will provide you with preinstalled applications such as open office suite, Totem and Xine movie players, GIMP image manipulation, and several others.

Moreover, System76 is unique in that they actually do something with your device before they send it to you. Rather than simply installing Ubuntu on the laptop you order and then sending it to you, the System76 people give you their own drivers and special configurations to make your machine run as smoothly and flawlessly as possible. Along with special attention paid to each individual product they ship out, System76 also pays special attention to each of their customers. Because they are such a small company, they are able to offer exceptional customer service. If there is any sort of software or hardware issue, you can email the company and you will receive a personal email back from someone involved with building your computer.

While not everything about these computers and this company is going to work impeccably, their focus on customer service and better business is noteworthy. System76 offers a unique system with customizable approaches. Furthermore, System76 is dedicated to eco-friendly business values, making them not only reliable, but also current and forward thinking. For Linux enthusiasts and newbies alike, System76 is certainly worth a look-see.
Author Bio:
This is a guest post by Nadia Jones who blogs at online college about education, college, student, teacher, money saving, movie related topics. You can reach her at nadia.jones5 @

Saturday, August 13, 2011

tvmatchen for Nokia N9

I just released a video of my port of tvmatchen for Nokia devices (Symbian^3 and now N9). Tvmatchen is a tv-guide application for live sports and is only available in Swedish.

NokiaGadgets actually wrote a couple of lines about the application, even though the app is in Swedish. The review was very positive and the author wants to see more apps looking like this one. It does feel good in a coders heart when someone writes something positive about your app :)

Link to the article.

And of course the video

Wednesday, June 22, 2011

Nokia N9 and Python

Yet another great day to be a python coder! The new Harmattan/MeeGo device, Nokia N9, will be packed with support for Python!

For more info, look here

Yes, it seems that you can publish your python apps on ovi... Nokia Store too.

Sunday, June 19, 2011

QtQuick - From Bling Bling To Blink Blink

Probably most of you already know that QtQuick is used to create amazing blingalicous UIs without too much effort. The declarative QML language makes it very easy to create object instances and setup property bindings, animation, states etc. Lately I’ve been tinkering with my Velleman K8055 USB experiment board and wanted to create a nice UI to control the board. It didn’t take too long until I was thinking a little bit out side of the box and started experimenting with controlling the board with QtQuick but without a UI. I created a couple of QML components on the C++ side to control the input/outputs of the board and quickly realized the possibilities QML provides even for non-UI applications.

Basically what I did was to create a declarative engine and not a declarative view. By doing this you can have a QML file interpreted and access to the object instances created by the engine from within your C++ code. I see a lot of potential and possibilities, one thing that comes to my mind straight away is to utilize QML as a Dependency Injection container :)
QDeclarativeEngine *engine = new QDeclarativeEngine;
QDeclarativeComponent component(engine, QUrl("qrc:/example1.qml"));
Board *board = qobject_cast<board *>(component.create());
Example code to interpret a QML file
The source code is available at k8055tinker

Check out the video below which demonstrates my code:

I've also tagged this post with Python because it can be of interest for the planet python readers since this can also be accomplished with PySide.

Saturday, May 21, 2011

I wish that I had Jessie's girl...

Rick Springfield had a great hit with a song called Jessie's Girl and the same track is now used for the Nokia N9 teaser ad which popped up a couple of days ago.

I really hope this is a MeeGo device, or to be honest, I just hope it's a Linux + Qt/QtQuick enabled device with some MeeGo compliance.

I've had quite a lot of fun with QtQuick lately (both for desktop and my N8) and I really enjoy using it. It just open so much possibilities and lets you be creative.

Another thing that would be awesome is if Nokia actually puts PySide, the Nokia sponsored Qt-bindings for Python, on the handset. Having Python as a rapid back-end language combined with QtQuick for the view is just too sweet :)

Grr... I hate not knowing, but I just have to wait and see.

Wednesday, April 20, 2011

I won the "Travelling salesman" competition!

Nokia held a mobile app competition at its Nordic blog which I won!

For more info, look here

Wednesday, April 13, 2011

Tips! Kdenlive - A great video editor

I've just started to take a look on how to editing videos and was searching the net to find some tools for Linux.

After trying a couple I found out about the KDE application Kdenlive from some blog post and I must say that this tools looks very promising. It did crash once when I tried it out but I can live with that since I'm not a heavy user of video editing. I just need something for creating youtube videos occasionally.

In addition to the great app there's also a bunch of video tutorials here to help you getting started.

So if you're in the same position as me I think you should take a look at Kdenlive

Tuesday, March 29, 2011

PySide and QML

It has been out there for a while but I haven't had time to try it out, PySide 1.0 with QML support!

This really gives you a ├╝ber rapid app development environment. The power of Python combined with the awesomeness of the declarative language QML from the Qt framework.

Take a look and feel free to play with the example below:
from PySide import QtCore
from PySide import QtGui
from PySide import QtDeclarative

class Message(QtDeclarative.QDeclarativeItem):

    messageChanged = QtCore.Signal()

    def __init__(self, parent = None):
        QtDeclarative.QDeclarativeItem.__init__(self, parent)
        self._msg = u''

    def getMessage(self):
        return self._msg

    def setMessage(self, value):
        if self._msg != value:
            print "Setting message property to", value
            self._msg = value
            print "Message property already set to", value

    message = QtCore.Property(unicode, getMessage, setMessage, notify=messageChanged)

def main():
    app = QtGui.QApplication([])

    QtDeclarative.qmlRegisterType(Message, "utils", 1, 0, "Message")

    win = QtDeclarative.QDeclarativeView()
    win.setWindowTitle("Hello World")

if __name__ == "__main__":
import Qt 4.7 // or QtQuick 1.0 if applicable

import utils 1.0

Rectangle {
    id: main

    signal clicked

    color: "black"
    width: 360; height: 360

    Message {
        id: msg

        message: "Click Me!"
        onMessageChanged: label.font.pixelSize = 40

    Text {
        id: label

        anchors.centerIn: parent

        text: msg.message
        color: "white"
        font.pixelSize: 25

 Behavior on font.pixelSize {
            NumberAnimation { duration: 800; easing.type: Easing.OutBounce }

        MouseArea {
            anchors.fill: parent
            onClicked: msg.message = "Hello World"

For more information point your browser to and download the package for your OS.

You'll also find useful information at

Happy hacking!

Tuesday, February 1, 2011

Guest blog post at Nokia Nordic Blog

I've been invited to write a guest blog post at Nokia Nordic blog. Please check it out if you're interested in Qt-development.,mode=month