Skip to content

Friday, 27 February 2026

Continuing my Season of KDE work on the Mankala game engine, I've completed a comprehensive implementation and benchmarking of five different parallel programming models for alpha-beta search. This post explores the performance characteristics, trade-offs, and surprising results from parallelizing g…
Imagine you’re sending a private message to a friend.

Thursday, 26 February 2026

During this Season of KDE, we made a lot of design changes to the Mankala Engine. We successfully redesigned most of the components including the entire home page, boards and game variants. Now I was in the middle of creating a new cover image to select game variants. I tried to create a natural wooden board for Bohnenspiel, and well, we got most of the things nicely done.

Designing a board

I had used perlin noise and a custom shader to give the wooden-like texture to the board. I used this function in our shader for the random generation of the particles.

glsl
float rand(vec2 n) { 
    return fract(sin(dot(n, vec2(12.9898, 4.1414))) * 43758.5453);
}

To get a smooth, wooden-like surface, I used a function that interpolates between these random points. After experimenting with it a bit, I mixed and blended them with random values and was able to get a continuous noise surface.

glsl
float n = noise(v.yx * vec2(2.0, 12.0));
float rings = sin(v.x * 20.0 + n * 10.0);

Improvements in Wooden Texture

But to get the wood effect, this was still not enough, as if we were to render this directly, then we would have gotten a blurry, cloud-like texture. So, we stretched the noise heavily across one axis to give it a wave-like effect, having a more similar texture to a board. This made a color stretch of dark and light brown.

qml
ShaderEffect {
    anchors.fill: parent
    property real time: 0.0
    property variant color1: "#8B4513"
    property variant color2: "#D2691E"

Final look

Mankala Proposed Home UI

I used QML's ShaderEffect component to compile it and connect it to the MenuCard component in Mankala, which would act as a cover image while selecting Bohnenspiel. At last, I added some shadows and depth to make it more realistic, giving a feel of wood carving to the board.

Here is a sample qml wood generator to try:

You can run the below code in a qml project and see the noise generated in a few simple steps.

import QtQuick 2.15
import QtQuick.Window 2.15
Window {
    width: 640; height: 480; visible: true; title: "Procedural Wood Shader"
    ShaderEffect {
        anchors.fill: parent
        property variant color1: "#3b2310" 
        property variant color2: "#7a4b24" 
        
        fragmentShader: "
            varying highp vec2 qt_TexCoord0;
            uniform lowp vec4 color1;
            uniform lowp vec4 color2;
            
            float rand(vec2 n) { 
                return fract(sin(dot(n, vec2(12.9898, 4.1414))) * 43758.5453);
            }
            float noise(vec2 n) {
                const vec2 d = vec2(0.0, 1.0);
                vec2 b = floor(n), f = smoothstep(vec2(0.0), vec2(1.0), fract(n));
                return mix(mix(rand(b), rand(b + d.yx), f.x), mix(rand(b + d.xy), rand(b + d.yy), f.x), f.y);
            }
            void main() {
                vec2 v = qt_TexCoord0;
                float n = noise(v.yx * vec2(2.0, 15.0));
                float rings = sin(v.x * 30.0 + n * 8.0);
                float woodGradiant = smoothstep(-0.8, 0.8, rings);
                gl_FragColor = mix(color1, color2, woodGradiant);
            }
        "
    }
}

While the small circular pits and the rectangulular spaces use the exact same logic but the rectangles look better due presence of a darker color and use of Drop Shadow which gives it a much more premium and wood like look.

References & useful resources

Thanks for reading :)

Wednesday, 25 February 2026

Today we're releasing Krita 5.2.16. The previous version of 5.2 had issues with saving heif, heic and avif files, and while we are busy preparing 5.3, we decided this was worth it to make another release over.

Download

Windows

If you're using the portable zip files, just open the zip file in Explorer and drag the folder somewhere convenient, then double-click on the Krita icon in the folder. This will not impact an installed version of Krita, though it will share your settings and custom resources with your regular installed version of Krita. For reporting crashes, also get the debug symbols folder.

[!NOTE] We are no longer making 32-bit Windows builds.

Linux

Note: starting with recent releases, the minimum supported distro versions may change.

[!WARNING] Starting with recent AppImage runtime updates, some AppImageLauncher versions may be incompatible. See AppImage runtime docs for troubleshooting.

MacOS

Note: minimum supported MacOS may change between releases.

Android

Krita on Android is still beta; tablets only.

Source code

md5sum

For all downloads, visit https://download.kde.org/stable/krita/5.2.16/ and click on "Details" to get the hashes.

Key

The Linux AppImage and the source tarballs are signed. You can retrieve the public key here. The signatures are here (filenames ending in .sig).

Tuesday, 24 February 2026

I interviewed Robert back in 2017 because he was going to deliver the opening keynote at Akademy that year. He
The SPDX Cryptographic Algorithm List now includes 120+ algorithms and 7 properties. The community is growing, the roadmap is clear, and the list is moving toward the SPDX website. Here is the February 2026 update.
An exploration of things that could be.

Monday, 23 February 2026

While working on the Mankala Next Gen project for Season of KDE, I needed to create two distinct logos: one for the game itself and another for the mankalaengine backend. What started as a straightforward design task in Inkscape quickly became a lesson in SVG optimization when my initial exports bal…

Sunday, 22 February 2026

Overview

The KMyMoney 5.2.2 release contains numerous bug fixes and improvements to enhance stability, usability, and performance of KMyMoney. The focus has been on addressing crashes, improving the user interface, and fixing data handling issues. The source code is available on various mirrors world-wide.

Major Changes and Improvements

Stability Improvements

  • Crash Fixes: Multiple crash scenarios have been resolved:
    • Fixed crash when closing split view (Bug 514619)
    • Fixed crash when closing ledger
    • Fixed crash when double clicking schedule group header
    • Fixed crash when applying unassigned difference to split (Bug 515690)
    • Fixed crash in date entry when data has more than 3 sections (Bug 509701)
    • Prevented crash by eliminating lambda slot issues (Bug 510209)
    • Prevented infinite recursion in amount edit widget (Bug 513883)

User Interface Enhancements

  • Keyboard Navigation:
    • Fixed numeric keypad handling when NUMLOCK is off (Bug 507993)
    • Fixed handling of numeric keypad decimal separator
    • Allow Shift+Return to store a split or transaction
    • Allow the equal key to increment the date like the plus key (Bug 507964)
    • Start editing transactions only with specific keys
  • Editor Improvements:
    • Fixed access to tab order editor inside the schedule editor
    • Fixed access to tab order editor inside the split editor
    • Select payee from completer popup with return key (Bug 516300)
    • Focus out on payee widget takes the selected payee from the popup (Bug 508989)
    • Use modified values when pressing Return key (Bug 510217)
  • Visual Improvements:
    • Improved repainting during reconciliation (Bug 514417)
    • Reduced ‘jumping’ of ledger view
    • Changed method to paint selected ledger items
    • Use different background color for transaction and split editor
    • Improved column selector
    • Use full view size if account view has only one column (Bug 511890)

Reports and Charts

  • Report Fixes:
    • Fixed bug in reports that date column is shown too small (Bug 507843)
    • Fixed pivot reports with transactions in closed accounts (Bug 511553)
    • Fixed display of reconciliation report (Bug 507993)
    • Fixed handling of data range (Bug 512718)
    • Fix handling of tags in reports (Bug 511104)
  • Chart Improvements:
    • Include limit lines in balance chart (Bug 513754)
    • Fixed marker line for credit limits (Bug 513187)
    • Show balance and value based on current date

Data Management

  • Transaction Handling:
    • Don’t clear payee of second split onwards in scheduled tx (Bug 511821)
    • Allow changing the memo in multiple transactions at once (Bug 513948)
    • Select new investment transaction created by duplication (Bug 513882)
    • Fixed generation of payment dates in MyMoneySchedule (Bug 513834)
    • Assign an initial payee to each split
    • Partial match on payee name in credit transfer
    • Fixed removal of splits (Bug 508957)
    • Clear the split model before loading another transaction (Bug 509138)
  • Search and Filter:
    • When searching text in the ledger view also consider split memos (Bug 507851)
    • Also search for transaction ID and date in journal filter (Bug 512748)
    • Fixed option to hide unused categories (Bug 514445)
    • Hide zero accounts in payment account section of home page

Investment Features

  • Investment Transaction Editor:
    • Fixed price display in investment transaction editor (Bug 507664)
    • Update label when security changes (Bug 507664)
    • Don’t modify price widget content if not needed (Bug 509454)
    • Provide access to zero balance investments even if filtered out

Budget and Schedule Management

  • Budget Improvements:
    • Allow to modify the budget year when the first fiscal month is january (Bug 515391)
    • Set the dirty flag when changing budget name and year (Bug 514221)
    • Improved setting of the first day in the fiscal year
  • Schedule Features:
    • Allow modifying loan schedule using schedule editor (Bug 509029)
    • Keep the schedule type for loans (Bug 513387)
    • Fixed calculation of number of remaining payments (Bug 509417)

Categories and Accounts

  • Allow direct creation of sub-categories (Bug 514987)
  • Setup sorting of securities to be locale aware (Bug 508529)
  • Keep column settings in institutions view
  • Fixed auto increment of check number

Currency and Localization

  • The Chilean peso has no fractional part (Bug 286640)
  • Support date formats using multiple delimiter characters (Bug 510484)
  • Fixed various i18n calls and translation issues
  • Replaced unsupported i18n.arg in multiple locations

Online Banking

  • Make sure KBanking configuration is stored permanently
  • Prevent duplicate generation of KBanking settings code
  • Prevent editing online job when no id is present (Bug 512665)
  • Show import stats also for Web-Connect imports

Performance Improvements

  • Improved file load time
  • Improved reconciliation performance
  • Don’t update the home page too often
  • Prevent starting the transaction editor during filtering (Bug 508288)
  • Keep selected ledger items only upon first call (Bug 508980)

Technical Improvements

  • Data Integrity:
    • Mark file as dirty after modifying user data (Bug 514575)
    • Report references of splits to unknown accounts and stop loading
    • Use correct method to determine top level parent id (Bug 507416)
    • Speedup check if account id references a top-level account group
  • Build and Dependencies:
    • Fixed build error with Qt 6.10
    • Support Qt < 6.8 (Bug 507927)
    • Add missing find_package for QtSqlPrivate (Bug 509512)
    • Port libical v4 for function name changes
    • Port the icalendar plugin to the upcoming libical version 4
    • Update flatpak runtime to 6.10
    • Various flatpak dependency updates (aqbanking, gwenhywfar, xmlsec, libchipcard)
  • Code Quality:
    • Prevented variable shadowing
    • Resolved compiler warnings
    • Fixed various typos
    • Removed unused code and header files
    • Fixed coverity issues (CID 488310, CID 488368)

VAT Transactions

  • Fixed Net→Gross UI update in new transaction editor for VAT transactions (Bug 514180)
  • Don’t clear/replace debit/deposit boxes during autofill

Home Page

  • Don’t modify running balance when hiding reconciled transactions globally (Bug 508033)
  • Fixed display of preferred accounts on home page
  • Keep current settings of column selector

Miscellaneous

  • Don’t provide defaults that cannot be changed through GUI (Bug 514307)
  • Enable QAction before using it (Bug 508081)
  • Add option to make ledger filter widget visible permanently
  • Use unique style for wizards
  • Move the account selector of the ledger view to the left side
  • Improved onlinejoboutbox view
  • Don’t add the commit hash to tagged versions
  • Start transaction editor if action is triggered (Bug 508420)
  • Emit signal when returning value from calculator in amount widget (Bug 509135)
  • Suppress warning about invalid date in KDateComboBox (Bug 509312)

Bug Fixes by Category

Critical Bugs Fixed

  • Bug 507416 – Crash when opening existing database (REOPENED)
  • Bug 507843 – Link not working on any report
  • Bug 507664 – ‘Total for all shares’ and ‘fraction’ settings ignored when entering investment buy
  • Bug 507851 – Text search doesn’t search through transaction’s memo field if written in a single split item

Additional Bug References

Over 50 bugs were addressed in this release. For a complete list, please refer to the KDE Bugzilla.

Installation and Upgrade

Upgrading from 5.2.1

This release is a drop-in replacement for 5.2.1. Simply install the new version and your existing data files will work without modification.

Flatpak Users

The flatpak version has been updated with the latest dependencies and includes home filesystem access permission.

Known Issues

  • Bug 507416 (crash when opening existing database) has been reopened and is still under investigation for certain edge cases involving legacy data from Skrooge imports.

Contributors

We would like to thank all contributors who helped make this release possible through code contributions, bug reports, translations, and testing.

Getting Help

License

KMyMoney is released under various open source licenses. See the LICENSES folder in the source distribution for details.

Details

A complete description of all changes can be found in the ChangeLog

As part of my work on the Mancala for Season of KDE, I needed to compile the backend mankalaengine from source. Running Ubuntu 24.04 LTS on my host system, I wanted to keep it clean and avoid dependency conflicts while designing digital assets. I decided to build the C++ engine inside an isolated co…