MAY
16
2016

Compiling all of Qt5, KF5, Plasma5, kdepim5, apps...

I see a very high value in compiling my own Qt, and on top of it all the KDE-made software that I use. This makes it very easy to fix bugs and add improvements to the software I use on a day to day basis. Nowadays I think many developers use distro packages for Qt or KF5 or even the whole environment except for the one app they're working on, but in my opinion this leads to "silo" thinking, with workarounds in upper layers rather than fixing issues at the right place.

So, here's a working and easy recipe for compiling all the Qt-based software you use.

MAY
3
2016

Installing OpenSUSE on Thinkpad P50

The Lenovo Thinkpad P50 is quite a nifty laptop. However installing Linux required some digging around, so I'm writing this up for others to stumble upon it when looking for answers to similar issues.

APR
24
2016

clazy: Suppressing warnings

Clazy [1][2] just got support for suppressing warnings by reading a special comment in your code.
The syntax is similar to what krazy has.

Ignore the whole file:
// clazy:skip

Ignore the whole file for these checks:
// clazy:excludeall=foreach,qstring-allocations

Ignore these checks at the line number where the comment appears:
(...) // clazy:exclude=qfileinfo-exists,copyable-polymorphic

Enjoy!

FEB
8
2016

HIG about Simple vs. Advanced Settings

Recently the question was asked in the KDE forums how we handle advanced settings. While there is neither a best practice nor a common approach in KDE software, we actually discussed a similar concept in respect to the Plasma control modules (KCM). This post presents a proposal for a human interface guideline (HIG) that generalizes this concept for all types of applications.

FEB
3
2016

Hidden b.k.o-phab links

Well, consider them unhidden now: if you missed a structured place to link bugs.kde.org big/wish reports with KDE Phabricator tasks, look no further.

JAN
23
2016

What we do

Earlier this week, the loved one of a man I used to babysit was pushed into the path of an oncoming subway train car, by a stranger, and soon after died of their injuries.

While the death seems random, even cruelly so, it's one of many like it: Every year, people die on Berlin's various railways. Across Germany hundreds do, many of them similarly at metro train stations.

When disaster strikes, my thoughts soon dwell on analysis and prevention. For this particular case a well-demonstrated solution already exists: Platform screen doors, which I strongly hope the Berlin subway will eventually be retrofitted with.

As engineers, we deal in the makeup of the world all of us collectively inhabit. We help make and hammer away at the stuff of civilization.

We should all be offended by ill effects that may be prevented by means of better engineering. Our labor facilitates culture, but it's also on us to keep culture and its agents - people - safe.

It feels good that we enjoy many opportunities to act on our responsibility: Pick what we work on, weigh our concerns well, work diligently and pass on our knowledge. Make better engineering more affordable and available in this way.

This is true for any application of civil engineering, like a railway system, but just as much for any software system that users commute their thoughts and concerns through, if not their bodies.

NOV
15
2015

New C++/Qt code checks in clazy static analyzer

About two months ago I blogged about clazy, a Qt oriented static analyser.

Since then it has moved to an official KDE repo http://anongit.kde.org/clazy, got an IRC channel (#kde-clazy @ freenode) and also many fun new checks.

Here's a quick dump of the new features (be sure to see the README for the old checks too):

**** Performance related checks ****

NOV
10
2015

Kexi 3 object icons

Intro or what are Kexi objects?

Kexi objects are the top-level entities of type Table, Query, Form, Report, Script or Macro. They are compared to perhaps separate document types except of course they are not physical files (in Kexi nothing touches physical files except the database that handles the actual storage but this is rather an implementation detail).

The latter two objects aren't in official use: Script is experimental and subject to rework; Macros (MS Access style, see old dev docs) are only planned.

If you're new RAD world, for info on what these types of objects are, google for MS Access objects. Many of its concepts and naming make sense with the exception of Modules -- Kexi tends to use Scripts term instead.

NOV
5
2015

QRegExp + QStringLiteral = crash at exit

If you're seeing crashes lately, and they look like:

(gdb) bt
#0 0x00007ffff6790913 in QString::~QString() () from /usr/x86_64-pc-linux-gnu/lib/libQt5Core.so.5
#1 0x00007ffff680fd89 in QHashData::free_helper(void (*)(QHashData::Node*)) () from /usr/x86_64-pc-linux-gnu/lib/libQt5Core.so.5
#2 0x00007ffff6828e14 in (anonymous namespace)::Q_QGS_globalEngineCache::innerFunction()::Holder::~Holder() ()
from /usr/x86_64-pc-linux-gnu/lib/libQt5Core.so.5

OCT
23
2015

Announcement: Marble ships the oldest existent historic Globe

Today I have the pleasure to announce that Marble is the first popular virtual globe that ships and visualizes the Behaim Globe. The Behaim Globe is the oldest surviving terrestrial globe on earth. It was created between 1492 and 1493 - yes at the same time when Christopher Columbus made his first voyage towards the west and "discovered" America.

Pages