Published:

Jarle Aase

Monthly update, September 2025

bookmark 4 min read

These monthly updates may be a bit technical. They’re written for my future self (to remember how I spent the month and to motivate me to do at least something remotely interesting), for friends and colleagues (past and future) to give them an idea of what I’m working on, and, of course, for potential clients of my C++ freelance business and fellow software developers.

The picture shows my workspace.

Projects

Boost changes its API. Again.

Boost 1.89 broke pretty much all my projects. It took about three workdays to update and test all my active open source projects.

NextApp

NextApp is a GTD/productivity application for desktop and mobile.

Android

A beta user notified me that the Android version on Google Play crashed immediately when the application started. It turned out that the bundle hack I bragged about in July had silently stopped working, and Google Play did not catch the error in their automated validation of new packages. I published the version, and this user installed it before I was aware that the new version was available in the Play Store. For some reason, Google doesn’t notify developers when they approve a new release. I have to log on to the developer portal and check it manually.

Anyway, I figured out how to build a bundle from Qt Creator and pushed an emergency update that was approved swiftly by the Play Store.

qt creator

If you look carefully at the image, there is a "Build Android App Bundle" checkbox there. And counterintuitively, if you run CMake with -DQT_ANDROID_ABIS:STRING=armeabi-v7a;arm64-v8a;x86;x86_64, it will make a bundle with all the architectures, even if the "kit" you are using only supports one of those architectures.

It took me another day to get the automated Jenkins job to build the Android bundle correctly.

I tested NextApp with Qt 6.9.2. It worked with Linux, but the app immediately crashed on Android. This was a new error. As far as I can tell, it happens when C++ calls into Java with an invalid Java function. I disabled all Java calls from my code, and the app still crashes. So something must have changed in Qt. Unfortunately, there is no trace logging available in the Qt code that calls into Java. I posted on the Qt forum My Android app crashes upon startup with Qt 6.9.2., but there are no answers yet.

In Qt Creator 18 beta-1, I found a regression for Android where Qt Creator could no longer build and install the .apk.

And on Google Play, I get warnings that NextApp uses native libraries that are not aligned to support devices with 16 KB memory page sizes. These devices may not be able to install or start your app, or your app may start and then crash. Apparently, this is fixed in Qt 6.9.3, so I should get busy trying to get NextApp there.

Usability

I made a number of usability changes. The one with the largest impact was a small thing I just wanted to test out. It took less than an hour to do, and it totally changed the app. Until now I have had an icon to the left of all the actions that was an orange circle with a check inside. The color of the check signaled the priority. When the action was done, the color of the circle changed to green. I changed the colors to show the state of the actions, so that actions that start in the future have a grey color, actions that can be worked on (active) have various colors depending on how much time is left (years, months, weeks, days), and a red color if the action is overdue. A very simple and obvious thing that completely changes how I perceive the actions.

Another useful feature I added was a database info popup in import/export. It shows the number of rows in the local database cache for the various tables, and a checksum for the local data. This makes it possible and trivial to verify that the local cache on one device is equal to the local cache on any other device.

New Beta release

I also released a new beta. It's free to check it out. I would love to know your thoughts about this application. You can download the app from GitHub or install the Android version from Google Play.

logfault

logfault is a simple-to-use, header-only C++ library for application logging on all major platforms.

I spent some time last month stabilizing Logfault as well. I use it on all its target platforms, and sometimes code breaks in the most unexpected ways. For example, I added a lookup table in a function that escapes JSON strings to determine how to handle individual characters, instead of doing a series of logical operations on each character in the string. The table is a std::array<char, n>, and for characters that just needed to be prefixed with a backslash, I used the char value -1. Then, when the library was compiled for the ARM architecture on Android, char was unsigned and the code broke.

This library, which contains low-level code and is used on lots of platforms, constantly reminds me that I don’t know everything.

Freelancing

I have put my freelancing on hold for a long time. First, I needed to recover from a pretty damaging burnout. Then I decided to get NextApp into a state where it’s generally usable before I start looking for something new. I turned down a handful of potential clients in the last year.

I have been talking about NextApp to friends and colleagues for a decade, and I don’t want to be that guy who is all talk and no results. I talked a lot about DarkSpeak too, but eventually I decided to put it on hold. It’s just too dangerous to release something like that while living in a Western country. The arrest of Pavel Durov in France proved my concerns right. But there is nothing controversial about NextApp, so I wanted to see it all the way through.

Now I need to create some income again. If you know someone looking for an experienced and quite passionate C++ freelancer, please get in touch!