Using Qt under LGPLv3

At Qt Day 2019 in Florence, Italy, I gave a talk Using Qt under LGPLv3. In the first part The obligations of Qt LGPLv3: made understandable, I explain in detail, how you must provide the source code, the license texts, the copyright notices, any modification notices and the installation information. You don’t have to provide the installation information for B2B products like driver terminals in commercial vehicles, industrial devices and medical devices in hospitals. In other words, you don’t have to satisfy the anti-tivoisation rule for B2B products.

Continue reading

Running Neural Networks on Microcontrollers

3D face recognition, voice control and image recognition of faulty or fake parts were all the rage at Embedded World 2019. The trend towards performing these applications offline – without access to powerful compute servers in the cloud – was obvious. However, these applications require powerful CPUs with equally powerful GPUs to run predictions on deep neural networks.

I was interested in solutions that run (deep) neural networks (NNs) on microcontrollers (MCUs). And, Embedded World didn’t disappoint! Renesas showed how to predict motor failure by monitoring current and vibration. STMicroelectronics had a demo counting the cars driving by using the characteristic sound of the Doppler effect. That’s what I would call the “edge”!

Continue reading

Using Docker Containers for Yocto Builds

We want to build a custom Linux image with Yocto for the Raspberry Pi 3 model B (BCM2837). The Linux image contains a very simple Internet radio application using Qt 5.11 and the eglfs graphics backend. Our colleagues shall be able to repeat the build easily – now, in three years and even in ten years.

I’ll explain why Docker is an excellent choice to build custom Linux images and give you a step-by-step guide how to do it. At the end of the post, you will be able to run a simple Internet radio on a custom Linux image on a Raspberry Pi 3.

Continue reading

Book Review: “It Doesn’t Have to Be Crazy at Work” by Jason Fried and David Heinemeier Hansson

My favourite business book of 2018 is It Doesn’t Have to Be Crazy at Work by Jason Fried and David Heinemeier Hansson. The reason why people work crazy hours is not that there is

[…] more work to be done all of a sudden. The problem is that there’s hardly any uninterrupted, dedicated time to do it. People are working more but getting less done. It doesn’t add up – until you account for the majority of time being wasted on things that don’t matter.

The authors call out working crazy hours for not being “a badge of honor” but “a mark of stupidity”. Yes, it’s good to hear this from people who know what they are talking about. Jason is the CEO and David the CTO of Basecamp, which they have been running very successfully since 2003. They describe in the book how – at Basecamp – they replaced crazy at work with calm at work.

Continue reading

Third-Party Certification of FOSS Compliance

In my post Seminar “Open-Source Management in Software Supply Chains” five weeks ago, I wrote that the “TÜV is working on […] an external certification but it is not ready yet.” TÜV Süd was busy and became the first third-party authority to certify OpenChain compliance. TÜV Süd certified Hitachi that they have a process in place to ensure that their products comply with FOSS licenses.

So far, companies could only certify themselves according to the OpenChain Specification. Now, companies are certified by a third-party authority.

Linux Foundation Launches Automated Compliance Tooling (ACT) Project

LinuxGizmos reports that the Linux Foundation has launched a project Automated Compliance Tooling (ACT). ACT is an umbrella project for FOSS compliance tools like Fossology, Quartermaster and SPDX.

Fossology is a copyright and license scanner that works on the source code (see my recent post Seminar “Open-Source Management in Software Supply Chains” for a very brief overview). It creates FOSS compliance reports that licensees must pass along with the source code of FOSS packages to customers.

Quartermaster also yields FOSS compliance reports, but it digs deeper than Fossology. Quartermaster hooks into the build process. It finds exactly the packages an executable or library depends on: no extra efforts by checking irrelevant packages. It also finds packages, for which the source code is downloaded during the build. Fossology cannot detect these packages.

SPDX is a file format for exchanging licensing and copyright information. It also standardises the names of FOSS licenses.

High-Speed-Data (HSD) Connectors in Heavy-Duty Vehicles

In a recent blog post, I suggested to replace multiple display computers in a driver cabin by one computer in a silver box with multiple displays. I didn’t specify which connectors and cables to use between computer and displays. I found the answer at Electronica 2018 last week: High-Speed-Data or HSD connectors. You can use HSD connectors for LVDS (including Display Port), APIX, CAN, USB 2.0, USB 3.0, Ethernet and Firewire.
Continue reading

Seminar “Open-Source Management in Software Supply Chains”

On 20 November 2018, the law firm Bird & Bird hosted a seminar about “Open-Source Management in Software Supply Chains – Effective and Consistent License Compliance” in their Frankfurt office. The seminar was organised by Miriam Ballhausen, who is Bird & Bird’s specialist in open-source Licensing.

The seminar offered the opportunity to meet two of Germany’s top lawyers for FOSS license compliance: Miriam Ballhausen and Catharina Maracke. If you have any questions about how to comply with FOSS licenses, Miriam and Catharina will give you invaluable counsel.

The roughly 25 attendees hailed from very different industries: automotive, agricultural, financial, medical, manufacturing and IT services. In late 2018, you cannot escape FOSS: Free open-source software has arrived in the mainstream.

Now, let me give you a summary of the four talks.
Continue reading

Tremendous Speed-Up with SQL Transactions

The function CustomerDatabase::importCustomers reads 500 customers from the list c_customers, creates an SQL query cmd for each customer and inserts each customer into the Customers table of the SQL database db.

void CustomerDatabase::importCustomers() {
    auto db = QSqlDatabase::database("CustomerDB");
    for (auto row : c_customers) {
        auto cmd = QString{"INSERT INTO Customers "
                   "(fullName, street, postalCode, city, phone, email) "
                   "VALUES (\'%1\')"}.arg(row.join("\', \'"));
        auto query = QSqlQuery{cmd, db};
    }
}

On an NXP i.MX6 SoC with four Cortex-A9 cores, this function takes 17.5 seconds! Your user would have to wait more than 17.5 seconds for the import of a CSV file with 500 customers to finish. This is unacceptable. How can you speed up the import to 0.2 seconds?
Continue reading