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.


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



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.


Hidden b.k.o-phab links

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


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.


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, 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 ****


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.


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/
#1 0x00007ffff680fd89 in QHashData::free_helper(void (*)(QHashData::Node*)) () from /usr/x86_64-pc-linux-gnu/lib/
#2 0x00007ffff6828e14 in (anonymous namespace)::Q_QGS_globalEngineCache::innerFunction()::Holder::~Holder() ()
from /usr/x86_64-pc-linux-gnu/lib/


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.


Cool features in Kexi 2.9.8

This week database apps builder Kexi that competes with MS Access and Filemaker has been released with cool new features.

Version 2.9.8 finally fixes world's issues with SQL! 22 typical scalar functions now work portably across SQLite, MySQL, PostgreSQL. No other general purpose software I know does this.

Here's the list and it will be growing: