We create Software.

Index About Hire Us Products Blog

Blog

Data initialization in C++

Posted by Olivier Goffart on 16 May 2013

In this blog post, I am going to review the different kind of data and how they are initialized in a program.

Read more ...



Property Bindings and Declarative Syntax in C++

Posted by Olivier Goffart on 28 February 2013

QtQuick and QML form a really nice language to develop user interfaces. The QML Bindings are very productive and convenient. The declarative syntax is really a pleasure to work with.
Would it be possible to do the same in C++? In this blog post, I will show a working implementation of property bindings in pure C++.

Disclaimer: This was done for the fun of it and is not made for production.

Read more ...



iQuassel for iPhone and iPod

Posted by Markus Goetz on 25 February 2013

In our spare time at Woboq, we also do projects that scratch our own itches. For Olivier this was his web-based source code browser, for me it was my Quassel IRC client for iPad.

Read more ...



QMap vs. QHash: A small benchmark

Posted by Olivier Goffart on 19 February 2013

While working on my Qt developer days 2012 presentation (QtCore in depth), I made a benchmark comparing QMap and QHash. I thought it would be nice to share the results in this short blog entry.

Read more ...



You were not doing so wrong.

Posted by Olivier Goffart on 22 January 2013

This post is about the use of QThread. It is an answer to a three years old blog post by Brad, my colleague at the time:
You're doing it wrong

Read more ...



How Qt Signals and Slots Work - Part 2 - Qt5 New Syntax

Posted by Olivier Goffart on 17 December 2012

This is the sequel of my previous article explaining the implementation details of the signals and slots. In the Part 1, we have seen the general principle and how it works with the old syntax. In this blog post, we will see the implementation details behind the new function pointer based syntax in Qt5.

Read more ...



How Qt Signals and Slots Work

Posted by Olivier Goffart on 02 December 2012

Qt is well known for its signals and slots mechanism. But how does it work? In this blog post, we will explore the internals of QObject and QMetaObject and discover how signals and slot work under the hood.

In this blog article, I show portions of Qt5 code, sometimes edited for formatting and brevity.

Read more ...



Browsing C++ Source Code on the Web

Posted by Olivier Goffart on 18 September 2012

As a developer, I write code, but I also read a lot of code. Often the code of other people. It is easy to get lost among all the functions, objects or files. What calls what? What does this function exactly do? Where is this variable modified? It is important that as much information as possible can be presented or easily accessible.

Good IDEs are good at displaying that information and ease the navigation in the source code. But often, I want to browse source code which I don't necessarily have on my hard drive. While I look at code on the web, I am very disturbed by the poor browsing experience. This is why I developed an online code browser.

Read more ...



UTF-8 processing using SIMD (SSE4)

Posted by Olivier Goffart on 26 July 2012

SIMD: "Single instruction, multiple data" is a class of instructions present in many CPUs today. For example, on the Intel CPU they are known under the SSE acronym. Those instructions enable more parallelism by operating simultaneously on multiple data.

In this blog post I will present a method for converting UTF-8 text to UTF-16 using SSE4 compiler intrinsics. My goal is also to introduce you to the SIMD intrinsics, if you are not familiar with them yet.

Read more ...



We are now offering Quassel IRC Hosting

Posted by Markus Goetz on 07 July 2012

In an attempt to bring the things we like to you, we are offering accounts on our Woboq Quasselcore.

Read more ...



C++11 in Qt5

Posted by Olivier Goffart on 11 June 2012

C++11 is the name of the current version of the C++ standard, which brings many new features to the language.

Qt 4.8 was the first version of Qt that started to make use of some of the new C++11 features in its API. I wrote a blog post about C++11 in Qt 4.8 before the 4.8 release which I won't repeat here.

In Qt5, we make use of even more features. I will go into detail about some of them in this post.

Read more ...



QStringLiteral explained

Posted by Olivier Goffart on 21 May 2012

QStringLiteral is a new macro introduced in Qt 5 to create QString from string literals. (String literals are strings inside "" included in the source code). In this blog post, I explain its inner working and implementation.

Read more ...



Signals and Slots in Qt5

Posted by Olivier Goffart on 12 April 2012

Qt5 alpha has been released. One of the features which I have been working on is a new syntax for signals and slot. This blog entry will present it.

Read more ...



On Reviewing a Patch in Qt

Posted by Olivier Goffart on 23 January 2012

While I was working on Qt at Nokia I spent a lot of time reviewing patches from colleagues.

Peer reviewing is an important step, and there is a reason why we do it in Qt.
Code in libraries (such as Qt) requires much greater care than application code.
The main reason is that you need to maintain compatibility for your users. You want to avoid regressions in your library, so code that works continues to work, even if the user did some hack or trick. For the user of the library, it has great value to be able to upgrade it without too much effort. A subtle behaviour difference in the library might introduce a bug in the application that might be really hard to track in the millions of old lines of code of the application.

Read more ...



Qt Developer Days 2011 Videos of our Talks are online

Posted by Markus Goetz on 13 January 2012

Read more ...



Internals of QMutex in Qt 5

Posted by Olivier Goffart on 21 December 2011

You may want to read this blog if you want to understand the internals of QMutex or if you are interested in lock-free algorithms and want to discover one. You do not need to read or understand this article if you just want to use QMutex in your application. I found implementing QMutex interesting and therefore I want to share the knowledge.

I am going to show and explain a simplified version of the real code. If you want to see the real code, you can just browse the Qt source code. This article will help you to understand the concepts.

Read more ...



Introduction to Lock-free Programming with C++ and Qt

Posted by Olivier Goffart on 13 December 2011

This blog post is an introduction to lock-free programming. I'm writing this because this is the pre-requisite to understand my next post. This was also the content of my presentation for Qt Developer Days 2011.

Lock-free programming is the design of algorithms and data structures that do not acquire locks or mutexes.

Read more ...



Qt Developer Days 2011 in San Francisco

Posted by Markus Goetz on 22 October 2011

Read more ...



We are going to Qt Developer Days 2011

Posted by Markus Goetz on 20 October 2011

Read more ...