Skip to content

Welcome to Planet KDE

This is a feed aggregator that collects what the contributors to the KDE community are writing on their respective blogs, in different languages

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.

Tuesday, 24 February 2026. Today KDE releases a bugfix update to KDE Plasma 6, versioned 6.6.1.

Plasma 6.6 was released in February 2026 with many feature refinements and new modules to complete the desktop experience.

This release adds a week’s worth of new translations and fixes from KDE’s contributors. The bugfixes are typically small but important and include:

View full changelog

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 container using Distrobox.

What seemed like a straightforward compilation turned into a great learning experience in container troubleshooting and build systems. Here is how I got it working.

The False Start: openSUSE Tumbleweed

The KDE documentation highly recommends using Distrobox with a rolling-release distribution to ensure access to the latest KDE Frameworks. Naturally, I started with openSUSE Tumbleweed:

distrobox create --image docker.io/opensuse/tumbleweed --name kde-dev
distrobox enter kde-dev

However, the container instantly crashed on startup with this error:

sed: can't read /etc/zypp/zypp.conf: No such file or directory

The Fix: It turns out the default opensuse/tumbleweed image on Docker Hub is a highly stripped-down "micro" image. It lacks core configuration files that Distrobox expects during its initialization script. Rather than fighting the micro-image, I pivoted to an image guaranteed to have the standard toolchains out of the box.

The Solution: Arch Linux

Arch Linux is heavily used in the KDE development community and plays perfectly with Distrobox. I cleaned up the broken container and spun up an Arch environment:

distrobox stop kde-dev
distrobox rm kde-dev
distrobox create --image docker.io/archlinux:latest --name kde-dev
distrobox enter kde-dev

This time, the initialization was flawless. Once inside the container, I pulled down the required KDE build dependencies using pacman:

sudo pacman -Syu base-devel cmake extra-cmake-modules ki18n

The Build System Hiccup

With the dependencies installed, I navigated to my mankalaengine directory (which Distrobox automatically mounts from the host) to configure the build:

mkdir build
cd build
cmake ..

This immediately threw a CMake error:

The C++ compiler "/usr/bin/c++" is not able to compile a simple test program.

While the C++ compiler was installed, the underlying build automation tool was missing. In the KDE ecosystem, the standard is Ninja—a lightning-fast build system designed to replace traditional make.

I installed Ninja, cleared the broken build cache, and reconfigured CMake to use it:

sudo pacman -S ninja make
rm -rf *
cmake -G Ninja ..

Compiling and Running

With CMake successfully generating the Ninja blueprints, compiling the engine was just a single command away:

ninja

The build finished in seconds. To verify everything worked, I wanted to test out the Text User Interface (TUI) examples included in the repository.

In KDE projects, CMake is usually configured to place all compiled binaries into a central directory. I navigated to the bin folder and launched the Kalah variant:

cd bin/
./kalahtui

The terminal interface booted up perfectly, drawing the board and allowing me to play directly against the engine's AI.

Conclusion

Using Distrobox is a game-changer for KDE development. Even with a few initial hiccups regarding container images and build tools, having a disposable, bleeding-edge Arch Linux environment running seamlessly alongside my Ubuntu 24.04 LTS host makes compiling C++ projects incredibly efficient. I get the stability of an LTS release for my daily work while accessing the latest KDE Frameworks in an isolated container.

As part of my Season of KDE work on the Mankala game engine, I am trying to impleemnt root level parallelization to speed up the AI's move evaluation.

Here's how I achieved about 2x speedup.

The Problem: Sequential Move Evaluation

The Mankala AI uses the minimax algorithm to evaluate moves, searching 7 levels deep into the game tree. At each level, the tree branches into 6 possible moves, creating ~280,000 positions to evaluate per search. On my Intel i5-11260H system, a single move evaluation took 0.003-0.007 seconds sequentially.

While this seems fast, it adds up during gameplay and prevents deeper searches that would make the AI stronger. The solution? Parallelize the move evaluation.

The Approach: Root-Level Parallelism

Root-level parallelism is elegantly simple: evaluate each top-level move on a separate thread. Instead of evaluating moves 0, 1, 2, 3, 4, 5 sequentially, we evaluate them in parallel:

Sequential:                  Parallel (8 threads):
Move 0 → [search tree]      Thread 0: Move 0 → [search tree]
Move 1 → [search tree]      Thread 1: Move 1 → [search tree]
Move 2 → [search tree]      Thread 2: Move 2 → [search tree]
Move 3 → [search tree]      Thread 3: Move 3 → [search tree]
Move 4 → [search tree]      Thread 4: Move 4 → [search tree]
Move 5 → [search tree]      Thread 5: Move 5 → [search tree]

This works because each move creates a completely independent search tree—no shared state, no synchronization needed during the search itself.

Implementation: Five Threading Models

Rather than just implementing one approach, I decided to compare five different threading models to see which performed best and which was easiest to maintain.

1. OpenMP: The Simplest Solution

OpenMP turned out to be the winner for simplicity. A single pragma directive parallelizes the entire loop:

int parallelRootMiniMax(Player player, const Rules& rules, 
                       const Board& state, int num_threads) {
    std::vector<int> moves = rules.getMoves(player, state);
    
    int best_move = -1;
    int best_score = N_INFINITY;
    
    #pragma omp parallel for schedule(dynamic) num_threads(num_threads)
    for (size_t i = 0; i < moves.size(); ++i) {
        Board new_state = state;
        rules.move(moves[i], player, new_state);
        
        Table table;
        int score = alphaBeta(next_player, rules, new_state,
                             DEPTH - 1, N_INFINITY, P_INFINITY, table).eval;
        
        #pragma omp critical
        {
            if (score > best_score) {
                best_score = score;
                best_move = moves[i];
            }
        }
    }
    
    return best_move;
}

The schedule(dynamic) clause is crucial—it ensures threads grab moves as they finish, automatically balancing the load when some moves take longer to evaluate than others.

2. pthreads: Manual Control

For comparison, I implemented the same logic using POSIX threads. This required significantly more code—about 60 additional lines for thread creation, data passing, and result collection. While it gave fine-grained control, the performance was nearly identical to OpenMP.

3. std::thread: Modern C++

The C++11 std::thread approach provided a cleaner interface than pthreads while maintaining similar performance. I used an atomic counter for dynamic work distribution:

std::atomic<size_t> next_move_idx{0};

auto worker = [&]() {
    while (true) {
        size_t idx = next_move_idx.fetch_add(1);
        if (idx >= moves.size()) break;
        
        // Evaluate move[idx]...
    }
};

4. Taskflow: Task-Based Parallelism

Taskflow provided the highest-level abstraction. I am still in the progress of implementing Taskflow.

5. Sequential: The Baseline

The sequential version served as our performance baseline, ensuring we could accurately measure speedup.

The Results: Performance Analysis

Testing on my 12-core Intel i5-11260H system inside the Fedora container:

Thread Scaling (OpenMP)

| Threads | Time (s) | Speedup | Efficiency | |---------|----------|---------|------------| | 1 | 0.007 | 0.42x | 42.3% | | 2 | 0.004 | 0.74x | 36.8% | | 4 | 0.003 | 1.19x | 29.7% | | 8 | 0.002 | 2.20x | 27.5% |

Method Comparison (8 threads)

| Method | Time (s) | Speedup | |-------------|----------|---------| | Sequential | 0.004 | 1.00x | | OpenMP | 0.002 | 2.20x | | pthreads | 0.003 | 1.50x | | std::thread | 0.003 | 1.60x |

Understanding the Numbers

The speedup of 2.20x with 8 threads might seem lower than the theoretical maximum of 8x, but there are good reasons:

  1. Very Fast Searches: At 0.003 seconds, thread overhead dominates
  2. Limited Parallelism: Only 6 moves to evaluate (not enough work for 8 threads)
  3. Amdahl's Law: Sequential portions (setup, result collection) limit speedup

Lessons Learned

1. Simplicity Wins

OpenMP's single pragma achieved the same performance as 60 lines of manual pthread code. Unless you need fine-grained control, use the simplest approach.

2. Dynamic Scheduling Matters

Move evaluation times vary significantly. Static work distribution led to load imbalance, while dynamic scheduling kept all threads busy.

3. Thread-Local Data is Key

Each thread needs its own transposition table. Sharing a table required locking, which killed performance.

4. Measure Everything

My initial assumption was that pthreads would be fastest due to lower overhead. OpenMP actually performed better due to its sophisticated runtime.

5. Context Matters

Root-level parallelism is perfect for Mankala's characteristics (6 moves, moderate depth). For games with different properties, other approaches might work better.

Future Optimizations

While root-level parallelism is sufficient for Mankala, there are advanced techniques that could push performance further:

  • Parallel Iterative Deepening: Search multiple depths simultaneously
  • Lazy SMP: Multiple threads with shared transposition table (used in Stockfish)

These techniques add significant complexity but can provide 5-10x additional speedups for more complex games.

Conclusion

Implementing root-level parallelism in the Mankala engine achieved a 2.2x speedup with minimal code complexity.

The key takeaways:

  • Root-level parallelism is simple and effective for game AI
  • OpenMP provides the best balance of simplicity and performance
  • Always measure—performance intuitions are often wrong

The parallelized engine is now faster and more responsive, making the Mankala game more enjoyable to play. And the best part? The code remains simple and maintainable.


Saturday, 21 February 2026

Welcome to a new issue of This Week in Plasma!

This week we released Plasma 6.6! So far it’s getting great reviews, even on Phoronix. 😁

As usual, this week the major focus was on triaging bug reports from people upgrading to the new release, and then fixing them. There were a couple of minor regressions as a result of the extensive work done to modernize Plasma widgets’ UI and code for Plasma 6.6, and we’ve already got almost all of them fixed.

In addition to that, feature work and UI improvements roared into focus for Plasma 6.7! Lots of neat stuff this week. Check it all out:

Notable new features

Plasma 6.7.0

While in the Overview effect, you can now switch between virtual desktops by scrolling or pressing the Page Up/Page Down keys! (Kai Uwe Broulik, KDE Bugzilla #453109 and kwin MR #8829)

On Wayland, you can optionally synchronize the stylus pointer with the mouse/touchpad pointer if this fits your stylus usage better. (Joshua Goins, KDE Bugzilla #505663)

The old print queue dialog has been replaced with a full-featured print queue viewer app, allowing you to visualize multiple queues of multiple printers connected locally or over the network! It still offers a good and normal experience for the common case of having one printer, but now also includes loads of enterprisey features relevant to environments with many printers. (Mike Noe, print-manager MR #280)

New print queue app

You can now exclude windows from screen recording using permanent window rules! (Kai Uwe Broulik, kwin MR #8828)

Added a new --release-capture command-line option to Spectacle that allows invoking it with its “accept screenshot on click-and-release” setting using automation tools. (Arimil, spectacle MR #479)

Notable UI improvements

Plasma 6.6.1

The Custom Tiling feature accessed with Meta+T no longer inappropriately respects key repeat, and therefore no longer becomes practically impossible to open with a very high key repeat rate. (Ritchie Frodomar, KDE Bugzilla #515940)

Close buttons on the default “Thumbnails” Alt+Tab task switcher are now more legible on top of the window thumbnails. (Nate Graham, kwin MR #8830)

The Networks widget now shows a more appropriate icon in the panel or System Tray when you disable Wi-Fi. (Nate Graham, plasma-nm MR #526)

Plasma 6.7.0

The System Monitor app and widgets now respect your chosen “binary unit” choice. This means for example if you’ve asked for file sizes to be expressed as “GB” (gigabyte, or one billion bytes) rather than “GiB” (gibibyte, or 2^30 bytes), the system monitoring tools now respect that. (David Redondo, KDE Bugzilla #453854)

If the auto-generated scale factor for a screen is very close to 100%, 200%, or 300%, it now gets rounded to that value, prioritizing performance and visual fidelity. (Kai Uwe Broulik, kwin MR #8742)

The Color Picker widget now displays more sensible tooltip and placeholder text when it hasn’t been used yet. (Joshua Goins, kdeplasma-addons MR #1010)

Various parts of Plasma now consistently use the term “UEFI Firmware Settings” to refer to UEFI-based setup tools. (Kai Uwe Broulik, plasma-workspace MR #6246 and plasma-desktop MR #3541)

The “Terminate this frozen window” dialog now shows a little spinner as it tries to terminate the window, so you don’t think it’s gotten stuck. (Kai Uwe Broulik, kwin MR #8818)

The Widget Explorer sidebar now appears on the screen with the pointer on it, rather than always appearing on the left-most screen. (Fushan Wen, plasma-workspace MR #6251)

Notable bug fixes

Plasma 6.6.1

Fixed a case where KWin could crash during intensive input method usage. (Vlad Zahorodnii, KDE Bugzilla #506916)

Fixed a case where KWin could crash when waking up the system while using the Input Leap or Deskflow input-sharing apps. (David Redondo, KDE Bugzilla #515179)

Fixed a case where Discover could crash while trying to install updates. (Harald Sitter, KDE Bugzilla #515150)

Fixed a regression that broke drag-and-drop onto pinned Task Manager widget icons. (Kai Uwe Broulik, KDE Bugzilla #516242)

Fixed a regression that made certain popups from third-party software appear in the wrong place on the screen. (Vlad Zahorodnii, KDE Bugzilla #516185)

Fixed a minor visual regression in the Zoom effect on rotated screens. (Vlad Zahorodnii, kwin MR #8817)

Fixed a layout regression that made the Task Manager widget’s tooltip close buttons get slightly cut off for multi-window apps while window thumbnails were manually disabled. (Christoph Wolk, KDE Bugzilla #516018)

Fixed a layout regression that slightly misaligned the search bar in the Kicker Application Menu widget. (Christoph Wolk, KDE Bugzilla #516196)

Fixed a layout regression that made some System Tray popups always show an unnecessary hamburger menu. (Arjen Hiemstra, KDE Bugzilla #516135)

Fixed a regression that made some GTK apps not notice system-wide changes to the color scheme and enter their dark mode. (Nicolas Fella, KDE Bugzilla #516303)

Fixed a button added to Plasma 6.6 not having translated text. (Albers Astals Cid, plasma-workspace MR #6305)

Fixed server-to-client clipboard syncing in Plasma’s remote desktop implementation. (realies, krdp MR #144)

The new Plasma Login Manager introduced in Plasma 6.6 no longer shows accounts on the system that a human can’t actually log into. (Matthew Snow, plasma-login-manager MR #109)

Fixed a layout issue that made a label in the panel configuration dialog disappear when using certain Plasma styles. (Filip Fila, KDE Bugzilla #515987)

Fixed a layout issue that made the notification dialog too tall for very short text-only notification messages. (Kai Uwe Broulik, plasma-workspace MR #6145)

Fixed an issue that set the screen brightness to too low a level on login in certain circumstances. (Xaver Hugl, KDE Bugzilla #504441)

Fixed a layout issue that made the song or artist names in the Media Player widget get cut off too early when the widget was placed in a panel in between two spacers. (Greeniac Green, KDE Bugzilla #501166)

Improved the Weather Report widget’s reliability with forecasts from the Environment Canada provider. (Eric Soltys, kdeplasma-addons MR #1008)

Made the progress indicator built into icons in the Task Manager widget move in the appropriate direction when using the system with a right-to-left language like Arabic or Hebrew. (Oliver Beard, KDE Bugzilla #516053)

Custom icons embedded in third-party widgets that appear in the Widget Explorer sidebar now also appear in those widgets’ “About this widget” pages. (Mark Capella, KDE Bugzilla #509896)

Plasma 6.7.0

Eliminated a source of visual glitchiness with certain fade transitions while using an ICC profile. (Xaver Hugl, KDE Bugzilla #515194)

Frameworks 6.24

Fixed a case where KDE’s desktop portal could crash when copying certain data over a remote desktop connection. (David Edmundson, KDE Bugzilla #515465)

Notable in performance & technical

Plasma 6.6.1

Improved animation performance throughout the system by leaning more heavily on the Wayland Presentation Time protocol. (Vlad Zahorodnii, KDE Bugzilla #516240)

How you can help

KDE has become important in the world, and your time and contributions have helped us get there. As we grow, we need your support to keep KDE sustainable.

Would you like to help put together this weekly report? Introduce yourself in the Matrix room and join the team!

Beyond that, you can help KDE by directly getting involved in any other projects. Donating time is actually more impactful than donating money. Each contributor makes a huge difference in KDE — you are not a number or a cog in a machine! You don’t have to be a programmer, either; many other opportunities exist.

You can also help out by making a donation! This helps cover operational costs, salaries, travel expenses for contributors, and in general just keeps KDE bringing Free Software to the world.

To get a new Plasma feature or a bugfix mentioned here

Push a commit to the relevant merge request on invent.kde.org.

Friday, 20 February 2026

Let’s go for my web review for the week 2026-08.


I love the work of the ArchWiki maintainers

Tags: tech, linux, documentation

This is indeed an excellent technical documentation wiki for the Linux ecosystem.

https://k7r.eu/i-love-the-work-of-the-archwiki-maintainers/


Four Lessons From Civic Tech

Tags: tech, politics, commons, business

Interesting lessons indeed. Especially the first one: “Technology is inherently political, and anyone telling you otherwise is trying to hide their politics.” As tech people we too often forget this is all “sociotechnical”, no tech is designed and used in a vacuum.

https://pagedout.institute/download/PagedOut_008.pdf#%5B%7B%22num%22%3A72%2C%22gen%22%3A0%7D%2C%7B%22name%22%3A%22XYZ%22%7D%2Cnull%2Cnull%2Cnull%5D


Hold on to Your Hardware

Tags: tech, hardware, ai, machine-learning, gpt, economics

Are we on the verge to a push toward a mainframe based future? I really hope not, but for sure the hardware prices surging won’t make things easy.

https://xn–gckvb8fzb.com/hold-on-to-your-hardware/


The case for gatekeeping, or: why medieval guilds had it figured out

Tags: tech, foss, community, craftsmanship, ai, copilot, slop

Kind of resonate oddly with the string of talks I gave talking about craftsmanship a decade ago. Looks like FOSS communities at large have no choice but get inspired by such old practice.

https://www.joanwestenberg.com/the-case-for-gatekeeping-or-why-medieval-guilds-had-it-figured-out/


Open-source game engine Godot is drowning in ‘AI slop’ code contributions

Tags: tech, ai, machine-learning, copilot, slop, github

Another example of how much of a problem this is for some projects. Of course it is compounded by having so many projects on GitHub, this pushes people to try to farm for activity to attempt to make their resume look good. This is sad.

https://www.pcgamer.com/software/platforms/open-source-game-engine-godot-is-drowning-in-ai-slop-code-contributions-i-dont-know-how-long-we-can-keep-it-up/


What Your Bluetooth Devices Reveal About You

Tags: tech, bluetooth, security, privacy

Bluetooth might be convenient, clearly it leads to metadata leakage though.

https://blog.dmcc.io/journal/2026-bluetooth-privacy-bluehood/


Obfuscate data by hiding it in images

Tags: tech, security, cryptography, colors, graphics

I’ve always been fascinated by steganography. It’s a good reminder that the basics are fairly simple.

https://pagedout.institute/download/PagedOut_008.pdf#%5B%7B%22num%22%3A172%2C%22gen%22%3A0%7D%2C%7B%22name%22%3A%22XYZ%22%7D%2Cnull%2Cnull%2Cnull%5D


Self-hosting my websites using bootable containers

Tags: tech, linux, bootc, system, systemd, self-hosting

Interesting setup for self hosting on immutable infrastructure using bootc.

https://yorickpeterse.com/articles/self-hosting-my-websites-using-bootable-containers/


TIL: Docker log rotation

Tags: tech, docker, logging

I find surprising it’s not by default… But here we are.

https://ntietz.com/blog/til-docker-log-rotation/


Compendium

Tags: tech, system, observability, strace, linux

Still very young but it looks like it might become a nice and friendly alternative to strace.

https://pker.xyz/posts/compendium


Linux terminal emulator architecture

Tags: tech, linux, terminal, system

A good one page primer on how terminal emulators are designed.

https://pagedout.institute/download/PagedOut_008.pdf#%5B%7B%22num%22%3A90%2C%22gen%22%3A0%7D%2C%7B%22name%22%3A%22XYZ%22%7D%2Cnull%2Cnull%2Cnull%5D


Runtime validation in type annotations

Tags: tech, python, type-systems

Interesting new tricks with the introspection of Python type annotations.

https://blog.natfu.be/validation-in-type-annotations/


How bad can Python stop-the-world pauses get?

Tags: tech, python, memory, performance

Of course it’s a question of the amount of allocations you need.

https://lemire.me/blog/2026/02/15/how-bad-can-python-stop-the-world-pauses-get/


C++26: std::is_within_lifetime

Tags: tech, c++, type-systems

A small change in the standard, but it opens the door to interesting uses.

https://www.sandordargo.com/blog/2026/02/18/cpp26-std_is_within_lifetime


spix: UI test automation library for QtQuick/QML Apps

Tags: tech, qt, tests, gui

Still young but looks like a nice option to write GUI tests for Qt based applications.

https://github.com/faaxm/spix?tab=readme-ov-file


Fast sorting, branchless by design

Tags: tech, algorithm, security

Didn’t know about sorting networks. They have interesting properties and are definitely good options on modern hardware.

https://00f.net/2026/02/17/sorting-without-leaking-secrets/


How Michael Abrash doubled Quake framerate

Tags: tech, game, optimisation, assembly, graphics

Interesting insights from optimisations done on the Quake engine almost thirty years ago.

https://fabiensanglard.net/quake_asm_optimizations/index.html


Font Rendering from First Principles

Tags: tech, fonts, graphics

We take font rendering for granted but this is more complex than one might think.

https://mccloskeybr.com/articles/font_rendering.html


Modern CSS Code Snippets

Tags: tech, web, frontend, css

Another nice resource to discover newer CSS idioms.

https://modern-css.com/


Stop Guessing Worker Counts

Tags: tech, distributed, messaging, performance

We got some math for that! No need to guess.

https://pagedout.institute/download/PagedOut_008.pdf#%5B%7B%22num%22%3A118%2C%22gen%22%3A0%7D%2C%7B%22name%22%3A%22XYZ%22%7D%2Cnull%2Cnull%2Cnull%5D


The 12-Factor App - 15 Years later. Does it Still Hold Up in 2026?

Tags: tech, services, infrastructure, cloud, devops

A bit buzzword oriented, still I think it’s true that most of those principles make sense.

https://lukasniessen.medium.com/the-12-factor-app-15-years-later-does-it-still-hold-up-in-2026-c8af494e8465


The only developer productivity metrics that matter

Tags: tech, agile, productivity, metrics

I agree with this very much. The only productivity metric in the end is the end-user satisfaction.

https://genehack.blog/2026/02/the-only-developer-productivity-metrics-that-matter/


You can code only 4 hours per day. Here’s why.

Tags: tech, engineering, cognition, organisation, communication, productivity

Quite some good tips in there. If you want to do deep work you need to arrange your organisation for it. Using asynchronous communication more is also key in my opinion.

https://newsletter.techworld-with-milan.com/p/you-can-code-only-4-hours-per-day


Poor Deming never stood a chance

Tags: management, leadership

Interesting comparison of Drucker’s and Deming’s approaches to management. One is easier while the other is clearly demanding but brings lasting improvements.

https://surfingcomplexity.blog/2026/02/16/poor-deming-never-stood-a-chance/


In a blind test, audiophiles couldn’t tell the difference between audio signals sent through copper wire, a banana, or wet mud

Tags: audio, music, physics, funny

Can we stop with the audiophile snobbery now?

https://www.tomshardware.com/speakers/in-a-blind-test-audiophiles-couldnt-tell-the-difference-between-audio-signals-sent-through-copper-wire-a-banana-or-wet-mud-the-mud-should-sound-perfectly-awful-but-it-doesnt-notes-the-experiment-creator



Bye for now!

To understand the code, you have to understand these four pillars: QXmppOmemoManager: This is the “Encryption Engine.” It handles the Double Ratchet algorithm, which constantly changes the encryption keys for every message so that even if one key is stolen, the rest of the conversation stays safe.

Today we're releasing the second beta of Krita 5.3.0 and Krita 6.0.0. Our thanks to all the people who have tested the first beta. We received 49 bug reports in total, of which we managed to resolve 14 for this release.

Note that 6.0.0-beta2 has more issues, especially on Linux and Wayland, than 5.3.0-beta2. If you want to combine beta testing with actual productive work, it's best to test 5.3.0-beta2, since 5.3.0 will remain the recommended version of Krita for now.

This release also has the new splash screen by Tyson Tan - "Kiki Paints Over the Waves"!

Kiki Paints Over the Waves

To learn about everything that has changed, check the release notes!

5.3.0-beta2 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

You can build Krita 5.3 using the Krita 6.0.0.source archives. The difference is which version of Qt you build against.

md5sum

For all downloads, visit https://download.kde.org/unstable/krita/5.3.0-beta2/ and click on "Details" to get the hashes.

6.0.0-beta2 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

Due to issues with Qt6 and Android, we cannot make APK builds for Android of Krita 6.0.0-beta2.

Source code

md5sum

For all downloads, visit https://download.kde.org/unstable/krita/6.0.0-beta2/ 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).