“Complexity is anything related to the structure of a software system that makes it hard to understand and modify the system.” John Ousterhout, The Philosophy of Software Design, Chapter 2 Complexity is also known as technical debt, which quickly grows into technical inflation. Strategic programmers understand that they must do everything to make progams...
Category: Blog
Burkhard on Qt Embedded Systems: No. 10
The September issue of my newsletter went out to 219 people. Please sign up here, if you want to enjoy the full contents. The last three episodes are complimentary for your sign-up. Here is the table of contents of Episode 10 (September 2020). My Blog Posts Breaking Dependency Cycles in Qt Applications. My Thoughts on...
Breaking Dependency Cycles in Qt Applications
A fairly common anti-pattern found in Qt applications is to derive a class MyApplication from QApplication and to have it hand out pointers to a dozen or more major components of the application. Similar to Qt’s qApp macro, these applications introduce a macro myApp pointing to the single MyApplication object. The global variable myApp...
CppDepend: A C++ Dependency Analyser
I evaluated the dependency analyser CppDepend on a real-life embedded application. My goal was to find all dependency cycles between classes in the application. I know that the application contains 50+ dependency cycles. CppDepend only found less than 10% of the cycles. Without rewriting the the source code, CppDepend would have found no cycles...
Webinar: Building Embedded Applications from QtCreator with Docker
In a webinar organised by The Qt Company on 8 July 2020, I showed how QtCreator builds an embedded application against a Qt SDK encapsulated in a Docker container. QtCreator doesn’t know which Yocto version was used for building the Qt SDK and which environment variables must be set for the SDK. QtCreator forwards...
Qt Embedded Systems – Part 2: Building a Qt SDK with Yocto
We want to develop the Internet radio application for the Raspberry Pi in the same way as for a PC. We change the source code in QtCreator and run the application. QtCreator cross-builds the application on the PC for the Raspberry Pi, deploys it with SSH to the Pi and runs it on the...
Qt Embedded Systems – Part 1: Building a Linux Image with Yocto
In Part 1 of the series on Qt Embedded Systems, we build a custom Linux image with Yocto for the Raspberry Pi 3B. When we power on the embedded device, it starts an Internet radio application – called Cuteradio. This QML application is very simple: it can only play a single, hard-wired station. Despite...
Book Review: “Accelerate” by Nicole Forsgren et al.
The book Accelerate – Building and Scaling High Performing Technology Organizations by Nicole Forsgren et al. is an eye opener and game changer for everyone involved in software development. Nicole provides empirical evidence why teams that apply best practices like test and deployment automation, continuous integration, loosely coupled architectures and team empowerment by far...
Docker Builds from QtCreator
On your development PC, you simply hit Ctrl+R (Run) in QtCreator to build and run your Qt application. When you want to run the application on an embedded system, you must perform four tasks: You cross-build the Qt application for the target embedded system in a Docker container. You stop the application on the...
FOSS Qt Releases Delayed by up to 12 Months?
On 8 April 2020, Olaf Schmidt-Wischhöfer wrote in an email to the KDE community (emphasis mine): last week, suddenly informed both the KDE e.V. board and the KDE Free QT Foundation that the economic outlook caused by the Corona virus puts more pressure on them to increase short-term revenue. As...