Skip to content

Monday, 27 January 2025

Qrca WiFi mode, Trust and Safety in Tokodon, and more

Welcome to a new issue of "This Week in KDE Apps"! Every week we cover as much as possible of what's happening in the world of KDE apps.

Due to FOSDEM happening next weekend, there won't be any "This Week in KDE Apps" post next week. If you are in Brussels during the event, the KDE team will be in building AW, next to our friends from GNOME. Come say hi, we will have some stickers and demo devices!

General Changes

The About page used in many Kirigami apps now uses a new FormLinkDelegate for entries that will open a link. (Carl Schwan, Kirigami Addons 1.8.0. Link)

Amarok Rediscover your music

Support for Digital Audio Access Protocol (DAAP) was fixed. (Tuomas Nurmi, 3.2.2. Link)

Akonadi Background service for KDE PIM apps

Loading IMAP tags was optimized. (Carl Schwan, 24.12.2. Link)

Some SQL queries were fixed so that they don't exceed the limits imposed by the SQL engines (e.g. when reindexing a big email folders). (David Faure, 24.12.2. Link)

Elisa Play local music and listen to online radio

Files will play automatically when opened from a different app (e.g. Dolphin). (Pedro Nishiyama, 25.04.0. Link)

KDE Itinerary Digital travel assistant

We improved the ticket extractor for PKP (Grzegorz Mu, 24.12.2, Link)

We fixed public transport data access from Entur in Norway (24.12.2, also affects KTrip).

Kaidan Modern chat app for every device

The onboarding workflow of Kaidan was completely overhauled. (Melvin Keskin. Link)

The QR-code scanner and generator of Kaidan now uses Prison, KDE's standard QR-Code library (Jonah Brüchert and Melvin Keskin. Link)

Calculator A feature rich calculator

The history feature was fixed. (François Guerraz, 24.12.2. Link)

Okular View and annotate documents

We fixed Okular freezing when opening a PDF file with a lot of entries in a choice field. (Albert Astals Cid, 25.04.0. Link)

Barcode Scanner Scan and create QR-Codes

Qrca gained a mode to only scan for Wifi QR-codes. Currently this can be triggered with the --wifi flag, but in the future this will be triggered directly from Plasma Network Management to scan for Wifi codes. Additionally when scaning the QR-code for an existing connection, instead of creating a new connection, Qrca will update the credentials of the existing connection. (Kai Uwe Broulik. Link)

We removed the option to share a QR-code and replace it with a button to copy the QR-code. (Jonah Brüchert. Link)

Tokodon Browse the Fediverse

We added a menu item under the "Filters" timeline action to configure filters. (Joshua Goins, 25.04.0. Link)

We improved the look of filtered posts significantly. (Joshua Goins, 25.04.0. Link 1)

Tags and polls are hidden when the post has a content notice. (Joshua Goins, 25.04.0. Link 1 and link 2)

As part of more trust and safety improvements, we added a button to mute a conversation, so that you don't get any notifications for conversations you are not interested too. (Joshua Goins, 25.04.0. Link)

We fixed voting in polls that was not working reliably. (Joshua Goins, 25.04.0. Link) and improved Tokodon when using a screen reader. (Joshua Goins, 25.04.0. Link)

Third Party Apps

BlueJay

Evan Maddock released the 1.0.0 and 1.0.1 of BlueJay. BlueJay is a Bluetooth manager written in Qt with Kirigami.

…And Everything Else

This blog only covers the tip of the iceberg! If you’re hungry for more, check out Nate's blog about Plasma and be sure not to miss his This Week in Plasma series, where every Saturday he covers all the work being put into KDE's Plasma desktop environment.

For a complete overview of what's going on, visit KDE's Planet, where you can find all KDE news unfiltered directly from our contributors.

Get Involved

The KDE organization has become important in the world, and your time and contributions have helped us get there. As we grow, we're going to need your support for KDE to become sustainable.

You can help KDE by becoming an active community member and getting involved. 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. There are many things you can do: you can help hunt and confirm bugs, even maybe solve them; contribute designs for wallpapers, web pages, icons and app interfaces; translate messages and menu items into your own language; promote KDE in your local community; and a ton more things.

You can also help us by donating. Any monetary contribution, however small, will help us cover operational costs, salaries, travel expenses for contributors and in general just keep KDE bringing Free Software to the world.

To get your application mentioned here, please ping us in invent or in Matrix.

Sunday, 26 January 2025

I have an Android phone. The phone is 5 years old, functions perfectly for me, and is now E-Waste.

I can tell by the pictures on the phone that I bought it just after conf.kde.in in 2020 because it’s full of pictures of my visit to Colombia (where I met Maui Toolkit developer Camilo). It’s a Motorola G7 Power. It came with Android 9. It was updated to Android 10. It’s been a fine phone for 5 years, the battery life is still measured in days, it makes calls and does Matrix and Mastodon and whatnot. I personally have no reason to replace it at all.

I do have a banking app on it, which is now telling me that I need Android 11 to keep using the banking app. I presume the bank has a good reason for requiring the newer version. There’s no question of “just don’t use the app” since, well, Dutch banks are nearly inaccessible except via their phone app.

Motorola has a lousy record of providing Android updates for its phones, if I recall, and so the phone is now E-Waste.

Exactly the same thing happened with my mom’s phone. Slightly newer, no updates, E-Waste. The only upside I can think of here is that postmarketOS has two more devices for testing available (there are instructions for the G7 Power which are just as inscrutible as how-to-configure-XOrg instructions used to be in the ’90s. Assuming non-zero energy and some pent-up annoyance in the future, I can improve on that situation.

Project Description

In SoK 2025, I will be working on adding Pallanguzhi, a traditional Indian Mancala variant, into the Mankala Engine. Collaborating with Srisharan V S, my focus includes two key goals:

  1. Developing a computerized opponent to enhance player engagement and ensure a seamless gameplay experience.
  2. Creating a Text-Based User Interface (TUI) for gameplay.

What I Did This Week

The first step in my journey was setting up the Mankala Engine repository. I forked the repository to my local system, successfully built it, and resolved some warnings during the build process. Afterward, I delved into the codebase, analyzing the existing algorithms and understanding how they work for other Mancala variants.

Research on Implementing a Computerized Opponent

To create a robust computerized opponent for Pallanguzhi, I began researching potential algorithms that could best fit the game mechanics. Here are the three techniques I explored.

1. Reinforcement Learning

Reinforcement Learning (RL) is an exciting approach where an agent learns optimal strategies by interacting with the environment and improving over time. For Pallanguzhi, RL could enable the computerized opponent to adapt and improve its gameplay dynamically. However, as I am new to RL, implementing and training models for this variant will take some time and effort. Despite its challenges, RL remains a promising option for advanced gameplay enhancement.

2. Monte Carlo Tree Search (MCTS)

MCTS is a powerful algorithm widely used for decision-making in games. It works by simulating potential moves to build a decision tree and then selecting the best move based on statistical evaluation. For Pallanguzhi, MCTS could efficiently explore the vast game state space and make informed decisions. By carefully tuning the number of simulations and exploration parameters, this algorithm can provide a balanced and competitive computerized opponent.

3. Alpha-Beta Pruning with Iterative Deepening

Alpha-Beta Pruning with Iterative Deepening is a highly effective technique for optimizing decision trees by eliminating unnecessary branches. This method is already implemented in the Mancala Engine for other variants and has proven its efficiency. Leveraging this existing implementation for Pallanguzhi will allow us to quickly develop a working version of the game with a competent computerized opponent.

Conclusion for Now

The immediate plan is to integrate the Pallanguzhi variant into the existing Alpha-Beta Pruning implementation. This ensures we have a functional version of the game ready for any further work. Once the TUI implementation is complete, I plan to revisit Reinforcement Learning for Pallanguzhi. Working with RL models and training them is a learning-intensive process, and I am excited to gain experience in this area. Even if RL proves too challenging, we will still have a polished Pallanguzhi variant running on the existing algorithm.

What’s Next

Next week, I will work on adding the longer version of Pallanguzhi, which consists of multiple rounds, while Srisharan V S focuses on completing the shorter version. Together, we aim to make significant progress toward integrating and refining this traditional game within the Mankala Engine.

Stay tuned for updates!

Saturday, 25 January 2025

Grab your favorite drink and join us for the first Kdenlive Café of the year! Come hangout with the developer team, share your ideas and feedback, get some scoops on what’s brewing for future releases and connect with fellow editors. Join the community!

📅 Tuesday, January 28th, at 8 PM (UTC)

🌐 https://meet.kde.org/b/far-twm-ebr

The post First Kdenlive Café of 2025 appeared first on Kdenlive.

The M is silent. In computing this stands for the underlined letters in menus that can be triggered using an Alt+Letter key combination, one that you can remember and apply later to navigate around more quickly.

Display Configuration dialog with various controls (Resolution, Scale, Orientation, Refresh rate, etc). Most labels have an underlined letter indicating they have a mnemonic
How about you just press Alt+R and use the arrow keys to change screen resolution?

Qt and other toolkits typically use an ampersand to denote a mnemonic when assigning a menu entry. For instance, “&Shutdown” will be displayed as “Shutdown” and trigger on Alt+S whereas “Slee&p” will be “Sleep” and trigger on Alt+P. Of course this isn’t limited to menus, pretty much any control, buttons and what not, can have mnemonics. Since they are part of the label, a translated string can and likely will have a different one.

KDE applications, both written in Qt Widgets and Qt Quick, automatically assign mnemonics for most controls that don’t have one explicitly set. This is done through KAcceleratorManager and Kirigami’s MnemonicData, respectively, using a set of rules based on the control’s type. For example, a toolbar button is less important than a regular button or check box but both are more important than a section label. It also tries to use the first letter of a word, if that letter is not already taken. If a control is hidden the shortcut is removed again. The end result in a German dialog is “&Abbrechen” (Cancel), “&OK”, and “A&nwenden“ (Apply, since the A was already taken) for its footer.

While our Qt Quick Controls 2 Desktop Style automatically assigned mnemonics for all of its controls, Plasma Components did not for CheckBoxes, Switches, and some others. That is now fixed and it’s now possible to use e.g. Alt+R to Raise maximum volume in the Volume applet or switch to the Applications tab using Alt+A. Likewise for the circular action button used on the lock and logout screens, you can now Alt+P to Sleep from the logout and lock screens! The “S” is taken for shutdown for consistency and unused on the lock screen.

Plasma’s shutdown dialog with: Sleep, Restart, Shut Down, Log Out, Cancel. Each button has a letter underlined indicating it has a mnemonic.
Mnemonics on the shutdown screen

I noticed that I couldn’t trigger the toolbar buttons in System Settings even though they clearly showed an underlined letter. Turns out the shortcut was registered twice for some reason! If this happens, neither action is executed and instead the “activated ambiguously” signal is emitted. Kirigami’s ActionToolBar is effectively two views: the regular strip of buttons and an overflow menu. The buttons are shown dynamically based on how much room there is available and the action’s priority. There was a bug in Kirigami’s mnemonic handler where hiding a control wouldn’t release its shortcut, effectively registering every toolbar shortcut twice.

Speaking of Kirigami, there’s a FormLayout similar to QFormLayout that we use for most of our settings pages. It has a label on the left, and control on the right. By default, the label generates a mnemonic to focus its buddy. However, we don’t just want to focus the control, we want to trigger it as if we had clicked it. Qt 6.8 introduced an animateClick method on buttons that briefly flashes the button as a reminder of what’s about to happen and then triggers it. For controls without this features, focus is set as before, albeit with ShortcutFocusReason to tell the control that it was focused as a result of a shortcut press. A ComboBox for instance reacts differently depending on how it got activated. I then also made sure no mnemonic is assigned to the label next to a control when the control itself already had one.

Plasma Desktop Folder Settings “Wallpaper” category. Layout, wallpaper type, positioning. Mouse cursor pointing at the underlined W of “Wallpaper” indicating that it has a mnemonic.
“Wallpaper type” needed an explicit buddyFor since it’s attached to a RowLayout

With those improvements done, I tested various Qt Quick applications and settings modules for their mnemonics. The “Display & Monitor” settings barely had any working ones. The thing is: FormLayout’s labels by default are attached to the Item to which the label was added. In case of KScreen, we often used a RowLayout to place a control an a “contextual help button” (the little (i) button with more information) next to it. Since RowLayout isn’t an interactive item, no mnemonic was assigned for the given row. Luckily, you can explicitly set buddyFor and tell it what the relevant control is. Doing that I made most of KScreen’s settings reachable by Alt key combinations. While at it, I explicitly set the letter H for the HDR check box.

Now that you’ve seen me improve our mnemonic machinery, what can you do to make an application more accessible this way? Press and hold Alt, see what shortcuts get assigned, try triggering the underlined letter using Alt+letter:

  • If there’s a FormLayout and the control isn’t reachable, check that there’s a proper buddyFor set.
  • For obvious abbreviation and words, consider to set a mnemonic explicitly so the letter used is consistent and predictable, like the “Enable &HDR” in Display settings
  • For custom controls not based on Qt Quick Controls, you can use Kirigami.MnemonicData to register your control with our Mnemonic infrastructure and assign the shortcut it generated to a Shortcut item.
  • Consider disabling mnemonics using Kirigami.MnemonicData.enabled where it doesn’t make much sense to have them. e.g. controls in lists. Each one would just get a subsequent letter in its word assigned, reducing the pool of available letters for the important ones
  • If a control doesn’t show an underlined letter, try Alt+first letter in the label. Maybe it has one that doesn’t show up for a reason?
  • Finally: Report or fix bugs you find!

Welcome to a new issue of "This Week in Plasma"! Every week we cover as much as possible of what's happening in the world of KDE Plasma and its associated apps like Discover, System Monitor, and more.

This week the bug-fixing for Plasma 6.3 continued, as well as a lot of new features and UI changes that have been in the pipeline for some time; these will mostly land in Plasma 6.4. There's a lot of cool stuff, so let's get into it!

Notable New Features

Late breaking Plasma 6.3 feature: Discover can now open flatpak:/ URLs. (Aleix Pol Gonzalez, 6.3.0. Link)

The time zone choosers present on System Settings' Date & Time page as well as the Digital Clock widget's settings page have been given a major upgrade: a visual UI using a world map! (Niccolò Venerandi, 6.4.0. Link 1 and link 2)

Notable UI Improvements

When activating the "Restore manually saved session" option on System Settings' Desktop Session page, the corresponding "Save Session" action now appears in Kickoff and other launcher menus immediately, rather than requiring a reboot first. (Marco Martin, 6.3.0. Link)

On System Settings' Users page, the dialogs used for choosing an avatar image are now sized more appropriately no matter the window size, and the custom avatar cropper feature now defaults to no cropping for square images. (Nate Graham, 6.3.0. Link 2 and link 2)

On the System Tray widget's settings window, the table on the Entries page now uses the alternating row color style to make it easier to match up the columns, especially when the window has been made enormous for some reason. (Marco Martin, 6.3.0. Link)

Improved the accessibility of several non-default Alt+Tab switcher styles. (Christoph Wolk, 6.3.0. Link)

Made the top corners' radii and side margins in Kickoff perfect. (Nate Graham, 6.3.0. Link)

Made the Breeze Dark color scheme a bit darker by default. (Thomas Duckworth, 6.4.0. Link)

Adjusted the visualization for different panel visibility modes to incorporate some animations, which makes them clearer. (Niccolò Venerandi, 6.4.0. Link)

You can now scroll on the Media Player widget's seek slider to move it without having to drag with the mouse. (Kai Uwe Broulik, 6.4.0. Link)

Scrolling on the Task Manager widget to switch between tasks is now disabled by default (but can be re-enabled if wanted, of course), as a result of feedback that it was easy to trigger by accident and could lead to disorientation. (Nate Graham, 6.4.0. Link)

Re-arranged the items on the context menu for Plasma's desktop a bit, to improve usability and speed for common file and folder management tasks. (Nate Graham, 6.4.0. Link)

The Audio Volume widget now has a hamburger menu button when used in standalone form, rather than as a part of the System Tray, where it already has one. (Niccolò Venerandi, 6.4.0. Link)

Tooltips for Spectacle's annotation buttons now include details about how to change their behavior using keyboard modifier keys. (Noah Davis, 6.4.0. Link)

Notable Bug Fixes

Fixed a case where the service providing the screen chooser OSD could crash when certain screens were plugged in. (Vlad Zahorodnii, 6.3.0. Link)

Fixed a case where KWin could crash on launch in the X11 session. (Vlad Zahorodnii, 6.3.0. Link)

Fixed a case where Discover would crash when trying to display apps with no reviews. (Fushan Wen, 6.3.0. Link)

Fixed a case where Plasma could crash after creating a new panel with certain screen arrangements. (Fushan Wen, 6.3.0. Link)

Fixed a random KWin crash. (Vlad Zahorodnii, 6.3.0. Link)

Fixed a bug affecting System Settings' Desktop Session page that would cause it to crash upon being opened a second time, and also not show the settings in their correct states. (David Edmundson, 6.3.0. Link 1, link 2)

Fixed several cases where screen positions and other settings might get reset after waking from sleep. (Xaver Hugl, 6.3.0. Link 1, and link 2)

You can once again drag files, folders, and applications to Kickoff's Favorites view to make them favorites, after this broke at some point in the past. In addition, the change also fixes an issue where Kickoff's popup would inappropriately open rather than move out of the way when you dragged another widget over it. (Noah Davis, 6.3.0. Link1 and link 2)

Apps that launch and immediately display a dialog window along with their main window no longer have those windows go missing in the Alt+Tab switcher. (David Edmundson, 6.3.0. Link)

Improved OpenVPN cipher parsing so it won't show cipher types that don't actually exist. (Nicolas Fella, 6.3.0. Link)

Activating a Plasma panel using a keyboard shortcut in the X11 session no longer causes it to bizarrely become a window! (Marco Martin, 6.3.0. Link)

System Settings' Touchpad page is no longer missing some options in the X11 session, depending on how you open it. (Jakob Petsovits, 6.3.0. Link)

Fixed a bug that could cause panels using the Auto-Hide and Dodge Windows settings to briefly get stuck open when activated while a full-screen window was active. (Niccolò Venerandi, 6.3.0. Link)

Right-clicking an empty area of the applications or process table in System Monitor no longer shows a context menu with no appropriate items in it. (Nate Graham, 6.3.0. Link)

Fixed a bug causing a second "System Settings" item to appear on System Settings' own Shortcuts page. (Raphael Kubo da Costa, 6.4.0. Link)

You can once again copy files and folders on the desktop using the Ctrl+C shortcut, after this broke due to an unusual interaction between the desktop and a placeholder message added a few versions ago. (Marco Martin, Frameworks 6.11. Link)

Fixed a case where a Qt bug could cause apps to crash in response to certain actions from the graphics drivers. (David Redondo, Qt 6.8.3. Link)

Other bug information of note:

Notable in Performance & Technical

Fixed a bunch of memory leaks in KScreen. (Vlad Zahorodnii, 6.3.0. Link)

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.

You can help KDE by becoming an active community member and getting involved somehow. 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 us by making a donation! Any monetary contribution — however small — will help us cover operational costs, salaries, travel expenses for contributors, and in general just keep KDE bringing Free Software to the world.

To get a new Plasma feature or a bugfix mentioned here, feel free to push a commit to the relevant merge request on invent.kde.org.

What I am working on?

My project focuses on enhancing the GUI and adding Player vs. Player (PvP) multiplayer functionality to a Mancala game.

Mancala is a popular board game played worldwide. The proposed plan is to use Kirigami for improving the GUI and making the application cross-platform. Multiplayer functionality will be integrated using XMPP. The game will operate over a communication channel established by XMPP over UDP. The updated game board will be reflected graphically using data binding. The XMPP server being used is Prosody.

Work done so far

Setting up the prosody locally

Setting up Prosody is fairly straightforward. I installed it from Fedora’s official repository using the command:


sudo dnf install prosody

Alternatively, Prosody can be built and installed from its source code available on GitHub.

Configuring prosody

Prosody’s configuration is contained in a single file: prosody.cfg.lua. On Linux distributions, this file is typically located at /etc/prosody/prosody.cfg.lua..

For now the clients are connected over same LAN using the virtual host @mancala.local as the domain id.

The image above illustrates how to edit your virtual host configuration.

The next step is to configure a chat room, which is done similarly to the virtual host configuration.

Both configurations require an SSL certificate to secure the communication channel.

After completing these steps, we restart and check the status of Prosody using the following commands:

sudo systemctl restart prosody
sudo systemctl status prosody

If everything is configured correctly, the state will be “active.” You can verify this by checking the log file using: sudo tail -f /var/log/prosody/prosody.log we can check the log file. If configured successfully, the output will resemble this:

Adding users and communicating via a XMPP client

The plan is to allow users to either use their existing Jabber ID or create a new one through our server. For testing purposes, I manually added users to the server using the following command:

sudo prosodyctl adduser <username@domain_name>

After executing the command, you will be prompted to set a password for the user.

For communication, I used the Pidgin client.

As shown in the image above, I have added two users, user11 and user12.

To test communication, I sent a message from user11 to user12 by addressing it to user12@mancala.local. Below are the results:

Since I used the Pidgin client on the same device, both user tabs appear in the interface. The screenshots confirm that I successfully established a user-to-user communication channel over LAN.

What’s next

For the next week, I plan to:

  • Implement in-band registration.
  • Enable communication over the internet.
  • Develop the logic for the game invitation system.

Friday, 24 January 2025

Fixed a major crash bug in our apps that use webengine, I also went ahead and updated these to core24 https://bugs.launchpad.net/snapd/+bug/2095418 andhttps://bugs.kde.org/show_bug.cgi?id=498663

Fixed okular
Can’t import certificates to digitally sign in Okular https://bugs.kde.org/show_bug.cgi?id=498558 Can’t open files https://bugs.kde.org/show_bug.cgi?id=421987 and https://bugs.kde.org/show_bug.cgi?id=415711

Skanpage won’t launch https://bugs.kde.org/show_bug.cgi?id=493847 in –edge please help test.

Ghostwriter https://bugs.kde.org/show_bug.cgi?id=481258

Kalm - Breathing techniques

New KDE Snaps!

Kalm – Breathing techniques

Telly-skout – Display TV guides

Kubuntu: Plasma 5.27.12 has been uploaded to archive –proposed and should make the .2 release!

I hate asking but I am unemployable with this broken arm fiasco. If you could spare anything it would be appreciated! https://gofund.me/573cc38e

Let’s go for my web review for the week 2025-04.


No billionaires at FOSDEM

Tags: tech, fosdem, foss, politics

I think this is a very welcome protest at FOSDEM. This keynote would be a shame on the conference. Unfortunately I already planned to not attend FOSDEM this year, but if you are: please participate to this sit-in.

https://drewdevault.com/2025/01/16/2025-01-16-No-Billionares-at-FOSDEM-please.html


Decentralized Social Media Is the Only Alternative to the Tech Oligarchy

Tags: tech, social-media, politics

This is indeed clear, the centralized web platforms are fragile by default. They are very prone to capture, this is what just happened.

https://www.404media.co/decentralized-social-media-is-the-only-alternative-to-the-tech-oligarchy/


I’ve been advocating for RSS support, and you should too

Tags: tech, rss

You like RSS feeds? Ask for them!

https://reedybear.bearblog.dev/ive-been-advocating-for-rss-support-and-you-should-too/


The PC is Dead: It’s Time to Make Computing Personal Again

Tags: tech, business, politics, DRM, surveillance, vendor-lockin

Very nice editorial. It’s clear that the level of trust in the technologies we depend on is low… but that’s not due to the technologies themselves it’s more about the business practices around them. In the end the solution will have to be political, in the meantime we ought to support the good players.

https://www.vintagecomputing.com/index.php/archives/3292/the-pc-is-dead-its-time-to-make-computing-personal-again


Block AI scrapers with Anubis

Tags: tech, ai, machine-learning, gpt

There was a time when scraping bots were well behaved… Now apparently we have to add software to actively defend against AI scrapers.

https://xeiaso.net/blog/2025/anubis/


Introducing Versara

Tags: tech, ai, machine-learning, gpt

Yet another attempt at protecting content from AI scrapers. A very different approach for this one.

https://versara.ai/about


PostgreSQL Anonymizer

Tags: tech, databases, postgresql, data, anonymity, gdpr

A nice extension for Postgres allowing to ease the protection of personal information.

https://postgresql-anonymizer.readthedocs.io/en/stable/


Oh Shit, Git!?!

Tags: tech, version-control, git

Stuck in a state you don’t like with Git? Here is a list of funny recipes.

https://ohshitgit.com/


Git Trailers | Alchemists

Tags: tech, version-control, git, tools

This article is feature packed, lots of great ideas to exploit git trailers. This can help automate some workflows easily.

https://alchemists.io/articles/git_trailers


Interrupting scripts without tracebacks

Tags: tech, programming, python

Nice trick for cleaner interruptible python scripts indeed.

https://mathspp.com/blog/til/interrupting-scripts-without-tracebacks


isd (interactive systemd) — a better way to work with systemd units

Tags: tech, systemd, tools

Looks like a really nice tool to work with systemd services. It also integrates with my trusty lnav for the journal handling. I’ll definitely give it a try going forward.

https://isd-project.github.io/isd/


Building a tiny Linux from scratch

Tags: tech, linux, system, minimalism

Nice experiment in minimalism. It’s nice to see we can still build tiny systems like that.

https://blinry.org/tiny-linux/


C stdlib isn’t threadsafe and even safe Rust didn’t save us

Tags: tech, system, c, rust, safety, multithreading

A harsh reminder that getenv is not thread safe…

https://www.edgedb.com/blog/c-stdlib-isn-t-threadsafe-and-even-safe-rust-didn-t-save-us


Prototyping in Rust

Tags: tech, programming, rust

A bit long and a bit too much framed in a “vs Python” fashion for my taste. That said it contains good advice on how to prototype or start simple with Rust. It’s aligned with some of the advice I give as well. People tend to turn to low level details too quickly forcing themselves into a corner. There are better ways to handle it.

https://corrode.dev/blog/prototyping/


How I think about Zig and Rust

Tags: tech, rust, zig, system

Interesting article. There’s clearly space for both languages indeed. They’ll end up having each their own ecological niches, probably with some overlap.

https://lewiscampbell.tech/blog/250117.html


Type Inference in Rust and C++

Tags: tech, type-systems, rust, c++

Very nice explorations of the different behaviours type systems can have around inference.

https://herecomesthemoon.net/2025/01/type-inference-in-rust-and-cpp/


The Essence of Successful Abstractions

Tags: tech, complexity, type-systems

Nice musing on how a type system can be a way to tame complexity or at least isolate it explicitly in one place.

https://v5.chriskrycho.com/journal/essence-of-successful-abstractions/


Generating an infinite world with the Wave Function Collapse algorithm

Tags: tech, 3d, mathematics

Really cool procedural environment generation.

https://marian42.de/article/infinite-wfc/


Issues with Color Spaces and Perceptual Brightness — John Austin

Tags: tech, colors, vision

Color perception keeps being a fascinating and difficult topic.

https://johnaustin.io/articles/2025/issues-with-cielab-and-perceptual-brightness


Moving on from React, a Year Later

Tags: tech, web, frontend, react, backend, performance, complexity

It becomes clear that there are more and more reasons to move back to simpler times regarding the handling of web frontends.

https://kellysutton.com/2025/01/18/moving-on-from-react-a-year-later.html


Additional Testing After Refactoring - by Kent Beck

Tags: tech, tdd, tests

Pointing out an important dilemma indeed. Which tests to keep over time? What to do with redundancies?

https://tidyfirst.substack.com/p/additional-testing-after-refactoring


The Documentation System

Tags: tech, documentation, writing

Interesting proposal of structure for technical documentation.

https://docs.divio.com/documentation-system/


Tags: tech, project-management, risk

Or why it can be dangerous to label medium the high likelihood low impact risks and the low likelihood high impact ones. One category is to be completely avoided while the other brings learning opportunities.

https://jacobian.org/2025/jan/17/two-flavors-of-medium-risk/


Master the Art of the Product Manager ‘No’

Tags: tech, product-management, funny

Nice tricks to say no when people push to get something in a product. 😉

https://letsnotdothat.com/


Training or Learning? - Congruent Change

Tags: learning, teaching

OK, this is advertisement to their PSL workshops. That being said the quote from Hoverstadt is important, this and the feedback of one of their attendees: “I can honestly say I learned at least as much from other participants”. This is exactly what I’m trying to foster when I design learning experiences.

https://www.congruentchange.com/training-or-learning/



Bye for now!

Thursday, 23 January 2025

Qt in 2024
2024 was another outstanding year for Qt, filled with exciting milestones and achievements! Highlights of the year include the Qt 6.7 and Qt 6.8 releases, Qt Creator 15 release, and the Qt Contributor Summit.