Skip to content

Thursday, 4 July 2024

Since the 39.20240617.0 and 40.20240617.0 updates for Atomic Desktops and the 40.20240617.0 update for IoT, systems with Secure Boot enabled may fail to boot if they have been installed before Fedora Linux 40. You might see the following error:

error: ../../grub-core/kern/efi/sb.c:182:bad shim signature.
error: ../../grub-core/loader/i386/efi/linux.c:258:you need to load the kernel first.

Press any key to continue...

Note: You can also read this post on the Fedora Magazine.

Workaround

In order to resolve this issue, you must first boot into the previous version of your system. It should still be functional. In order to do this, reboot your system and select the previous boot entry in the selection menu displayed on boot. Its name should be something like:

Fedora Linux 39.20240610.0 (Silverblue)  (ostree:1)

Once you have logged in, search for the terminal application for your desktop and open a new terminal window. On Fedora IoT, log in via SSH or on the console. Make sure that you are not running in a toolbox for all the commands listed on this page.

If you are running a Fedora Atomic Desktop based on Fedora 39 and have not yet updated to Fedora 40, you first need to update to the latest working Fedora 39 version with those commands:

$ sudo rpm-ostree cleanup --pending
$ sudo rpm-ostree deploy 39.20240616.0

If you are running Fedora IoT, then first update to the latest working version with this command:

$ sudo rpm-ostree cleanup --pending
$ sudo rpm-ostree deploy 40.20240614.0

Then reboot your system.

Once you are logged in again on the latest working version, proceed with the following commands:

$ sudo -i
$ cp -rp /usr/lib/ostree-boot/efi/EFI /boot/efi
$ sync

Once completed, reboot your system. You should now be able to update again, as normal, using the graphical interface or the command line:

$ sudo rpm-ostree update

Why did this happen?

On Fedora Atomic Desktops and Fedora IoT systems, the components that are part of the boot chain (Shim, GRUB) are not (yet) automatically updated alongside the rest of the system. Thus, if you have installed a Fedora Atomic Desktop or a Fedora IoT system before Fedora 40, it uses an old versions of the Shim and bootloader binaries to boot your system.

When Secure Boot is enabled, the EFI firmware loads Shim first. Shim is signed by the Microsoft Third Party Certificate Authority so that it can be verified on most hardware out of the box. The Shim binary includes the Fedora certificates used to verify binaries signed by Fedora. Then Shim loads GRUB, which in turn loads the Linux kernel. Both are signed by Fedora.

Until recently, the kernel binaries where signed two times, with an older key and a newer one. With the 6.9 kernel update, the kernel is no longer signed with the old key. If GRUB or Shim is old enough and does not know about the new key, the signature verification fails.

See the initial report in the Fedora Silverblue issue tracker.

What are we doing to prevent it from happening again?

We have known for a while that not updating the bootloader was not a satisfying situation. We have been working on enabling bootupd for Fedora Atomic Desktops and Fedora IoT. bootupd is a small application that is responsible only for bootloader updates. While initially planned for Fedora Linux 38 (!), we had to delay enabling it due to various issues and missing functionality in bootupd itself and changes needed in Anaconda.

We are hoping to enable bootupd in Fedora Linux 41, hopefully by default, which should finally resolve this situation. See the Enable bootupd for Fedora Atomic Desktops and Fedora IoT Fedora Change page.

Note that the root issue also impacts Fedora CoreOS but steps have been put in place to force a bootloader update before the 6.9 kernel update. See the tracking issue for Fedora CoreOS.

Here's our bi-monthly update from KDE's personal information management applications team. This report covers progress made in the months of May and June 2024.

Since the last report 38 people have contributed over 1500 changes to KDE PIM code base.

PIM Sprint

Let's start with the biggest event of the last two months: the PIM sprint!

The team met in Toulouse for a weekend of discussions, hacking and French pastries. You can read reports from Kevin, Carl, Dan and Volker on their blogs to get all the nitty gritty.

In this report, we will cover the biggest topics that were discussed and worked on during the sprint.

Milestones

We have decided to plan and track our work in milestones. Milestones should represent a concrete goal with clear definitions of what we understand as done, and be achievable within a reasonable time frame. Each milestone is then split into smaller bite-sized tasks that can be worked on independently.

This will help us prioritize important work, make our progress more visible and, most importantly, make it easier for people to get excited about what we are working on. New contributors will also be able to pick up a well-defined task and start contributing to PIM.

You can see the milestones on our Gitlab board - if anything there catches your eye and you would like to help, reach out to us on the #kontact:kde.org Matrix channel!

This report, as well as future ones will try to focus on the current milestones and their progress, hopefully making them more exciting to read :)

Retiring KJots and KNotes

We have decided to retire the KJots and KNotes applications. These applications have not seen any support or development in many years and are not in a state that we feel comfortable shipping to our users. With the introduction of Marknote, KDE can now offer a modern, well-maintained note-taking application that we can recommend users to migrate to. The latest release of Marknote has gained support for importing notes from KJots and KNotes, so no notes will be lost.

Polished Tag Support

Tags were introduced into KDE PIM many, many years ago, but they have never reached their full potential. We have decided to change that and make tags a first-class citizen in our applications. The first step is making sure that tags are actually usable, so we started by implementing automatic extraction of tags from events and todos and syncing them into local iCal calendars and remote DAV calendars. Thanks to this, you can now sync tags between KOrganizer and NextCloud, for example.

Tags synchronized between KOrganizer and NextCloud Calendar

Moving Protocol Implementations to KDE Framworks

We have libraries in KDE PIM that implement various standards and protocols. By moving them to KDE Frameworks we make them independent from KDE PIM and thus available to anyone who wants to use them. In the past we have moved KCalendarCore (iCal support library) and KContacts (vCard support library) to Frameworks. We are now working on moving KMime (email/RFC822 support library) and KIMAP (IMAP protocol implementations) to Frameworks as well.

This is helping cleanup KMime. KMime APIs is now in many places const correct to avoid the risk of modifying a message when reading it, proper CamelCase headers are now generated like for all the KDE Frameworks. Finally, parsing a MIME file is now up to 10 times faster on typical emails.

Other Improvements and Fixes

Itinerary

Our travel assistant app Itinerary gained support for the public transport routing service Transitous, got a new import staging area and can now create new entries directly from OSM elements. For more details see its own summary blog post.

Screenshot of Itinerary showing import staging area

Merkuro

"Snow flurry" fixed the start of the week math for locales that use Sunday as the first day of the week. They also fixed the navigation of the basic mode for the month view and week view (which are used on mobile).

Claudio continued working on the Merkuro Mail application and added a progress bar in the sidebar which appears when a background job is running.

Merkuro Mail progress status bar

The settings dialogs have been ported to the new KirigamiAddons.ConfigurationView which fixes some issues on mobile.

Get Involved

If you would like to get involved in KDE PIM, check our milestones board and pick a task! And don't forget to join us in the #kontact:kde.org Matrix channel or the kde-pim mailing list!

Following my latest post about Keychain, here is a new development update. Yubikey and Key Files are now supported, which allows you to requires a YubiKey to open a password database but also to save it.

Saving and editing groups also now works.

Group editing dialog
Group editing dialog

And I now started working on the database creation process. The UI is ready but I still need to bind it to the backend.

Thanks to everyone who send me encouragement messages and also to Laurent who did a lot of cleanups in the codebase.

See you in the next development update.

Wednesday, 3 July 2024

During the 2024 Open Source Promotion Plan (OSPP) event, I had the honor of being selected for the KDE community project: Porting KDE Games to the Android platform. This is KDE community's first participation in OSPP, and it is their first and only project.

About the KDE Community: What is KDE - KDE UserBase Wiki

KDE is a large community of programmers, translators, contributors, artists, authors, distributors, and users from around the world, dedicated to creating the best free software for desktops. Users and fans of KDE software are also spread globally, helping each other, spreading community news, or just enjoying this wonderful experience.

KDE community

About OSPP (Open Source Promotion Plan):

The Open Source Promotion Plan is a summer open source event initiated and long-term supported by the "Open Source Software Supply Chain Lighting Plan". It aims to encourage students to actively participate in the development and maintenance of open source software, promote the vigorous development of outstanding open source software communities, and cultivate and discover more excellent developers. The event collaborates with major open source communities at home and abroad, providing project tasks for the development and maintenance of important open source software and is open to global college students for registration. Open Source Software Supply Chain Lighting Plan - OSPP 2024

Project Introduction

The description of the KDE project: Porting KDE Games to Android platform is as follows:

KDE Games and educational games are integral parts of the KDE Gear suite. Very few applications are currently operational on platforms other than Linux, such as Android. The supported applications can be viewed at https://apps.kde.org/platforms/android. Consequently, we plan to port some of these games to Android, specifically supporting architectures like arm64-v8a, x86, and x86_64. The ultimate goal is to distribute their Android versions through apps.kde.org, F-Droid, Google Store, etc.

Candidates for porting include Kajongg, KMahjongg, KShisen, Kigo, Blinken, Klickety, Skladnik, Kbounce, Kollision, KSudoku, KTurtle, Picmi, and Klines. You can learn about their features and code at apps.kde.org or invent.kde.org.

Finally, you will port one or more of these games to Android and facilitate community efforts to distribute them through software stores.

In simple terms, the project involves porting some KDE games to the Android platform, as these games are currently only available on the Linux platform. If you use Ubuntu, you can install and run a game with the following commands:

  1. sudo apt install Kollision
  2. kollision

Available games include Kajongg, KMahjongg, KShisen, Kigo, Blinken, Klickety, Skladnik, Kbounce, Kollision, KSudoku, KTurtle, Picmi, and Klines. However, for the completion of the project, porting just one game is sufficient.

My Application Experience

When I first saw this project, it was quite late, with less than a week before the application deadline. Before that, I had already written an application for another project. However, after seeing this project, I felt it was more appealing to me. Unfortunately, at that time, I was preparing for an exam, so I had only two days left to write the application.

After pulling an all-nighter, I submitted my application and listed this project as my first choice. Finally, on June 26, I received an email confirming that my application had been accepted.

Reason for Applying

Since my primary programming language is C++, I chose this project from the list of C++ projects. Compared to other projects, I found this one more interesting.

Initially, I did not know that this was KDE community's first participation in OSPP, nor did I know it was their first and only project. I also wasn't familiar with the KDE community. After learning about the KDE community, I discovered that I really liked their philosophy. The mentor was also very enthusiastic and emphasized the importance of communication multiple times during the application process, providing me with a lot of help.

Project Development Plan

The project uses QML to port the applications to Android. In simple terms, the process is divided into the following steps:

  1. Configure the development environment.
  2. Create a QtQuick project and start the migration:
    1. Implement the UI.
    2. Port the logic code.
  3. Package, deploy, and test.

Currently, I have roughly completed the work of configuring the environment.

Since I only have a Windows machine at the moment, my solution is to run a Fedora Workstation 40 virtual machine using VirtualBox. In the virtual machine, I use podman and distrobox to set up the KDE development environment with the KDE kdesrc-build tool.

Monday, 1 July 2024

A month ago, I started working on a new application to manage your passwords in Plasma. And while still at a PoC status, this weekend, it finally started to look like something almost usable, so it sounded like a good occassion to write a small blog post about it.

The current name is “Keychain” or “Plasma Keychain” but this is subject to change and suggestions are more than welcome.

My end goal is to provide a more future proof replacement to the ageing KWallet application. From a technical point of view, this is a fork of the internal of KeepassXC with a Kirigami GUI completely written from scratch. This means it uses the standardized Keepass format to store the passwords in the database which is implemented by many applications including on other platforms like Android and iOS (see the list of Keepass port). And while not yet exposed in the GUI, basing the work on top of KeepassXC enables a lot of interesting features not available in KWallet, like Yubikey and PassKey support, password sharing, export and import for various other password database formats, TOTP support and browser integration…

While also providing vital features for the desktop integration like the Freedesktop Secret Service protocol what we also have in KWallet.

Here are some screenshots of the current state.

This is the main view where viewing, adding, editing and removing entries already work.

Main View
Main View

This is the database generator page which unfortunately doesn’t work yet.

Database generator
Database generator

And this is the UI to open an existing database.

Database generator
Database generator

As you can see there is still a lot of work required, so if people are interested to help or to take a look at the current progress, the code is on KDE’s gitlab instance.

Sunday, 30 June 2024

Hello! I intentionally skipped last month because I was busy with other tasks, and I didn’t have much to discuss KDE-wise. Anyway, let’s get started:

Akademy

I have booked my travel plans for Akademy 2024, and hopefully this time my travel will be uneventful. I’ll be attending QtCS 2024 in Würzburg too. At the time of writing, the program has not been announced yet - so I’m not sure if I’m giving a talk yet, but fingers crossed 🤞

Art on Wayland

A common problem with artists inquiring about the KDE Wayland session is that a lot of information is passed down. Some of the information is clearly out of date, and it spreads like wildfire. On top of that, factual information is scattered across multiple wiki pages, forum posts, and chat messages. I wrote up a page (personally maintained by me, mind) hosted at https://artonwayland.redstrate.com/. (If all goes well, I hope to retire this page in a year or two.)

In terms of software, gsetwacom was recently released by Peter Hutterer. So, I created our own (intentionally a seperate tool), called ktabletconfig. I personally don’t have a use for this tool, but I wanted to create it anyway. I hope it serves someone well!

I do plan on expanding ktabletconfig’s features, as the Wayland session continues to mature.

Plasma

[Feature] I merged the tablet tester, finally! Thanks to Nate for pushing it past the finish line, as always. [6.2]

A slightly out of date screenshot of the Tester

[Feature] Clearly explain what left-handed mode does in the Tablet KCM, because even I didn’t know until I looked it up! [6.2]

[Feature] Rebased and merged Aki Sakurai’s “Map to Workspace” (aka all monitors) feature for the Tablet KCM. [6.2]

[Bugfix] I also fixed the wrong aspect ratio for the output preview in the Tablet KCM. Now mapping between 4:3 and 16:9 screens should make more sense in the UI. [6.1]

[Bugfix] Went through the whole Tablet KCM and cleaned up the terms we use. It’s a small thing, but I hope it makes the features we have more understandable. [6.2]

Frameworks

[Feature] I have begun adding a way for Kirigami applications to save and restore window state like our QtWidget applications do. I have stalled on it because of something else, but this is something I want to finish soon. [???]

[Feature] Added a generic “translate” icon for applications based on the crow-translate icon we already have. [6.4]

Tokodon

[Feature] I finished up and merged quoted posts support! I’m also pretty happy with the implementation. [24.08]

Quoted posts are now “supported” in Tokodon, at least with what we can do

Krita

[Bugfix] Fixed the “DEV BUILD” badge going to a 404. [5.2.3]

[Bugfix] Fix the lag in the tablet tester when using it with a S-Pen on Android. [5.2.3]

[Bugfix] Multiple small improvements for the S-Pen on Android. [5.2.3]

I changed up some of the text and mentioned S9 family support here now!

NeoChat

[Bugfix] Prevented the location map showing up even though no locations were shared. That also fixes copyright link activation! [24.05]

[Bugfix] Fixed the QR code not showing up on the account page. [24.05]

[Bugfix] Added a focus border to the appearance page modes, which helps users who solely depend on the keyboard. (It was navigable before, but you would have no idea which one was selected.) [24.05]

[Bugfix] Removed room members being highlighted on tap. This makes the member list appear slightly less buggy. [24.05]

[Feature] Added basic keyboard navigation for the server selection popup. [24.05]

[Bugfix] Fixed keyboard navigation in the space drawer. [24.05]

[Bugfix] Fixed keyboard navigation on the room & user search pages. [24.05]

Other

[Bugfix] Fixed keyboard navigation for Kirigami Add-on’s FormComboBoxDelegate, which improves keyboard navigation in lots of Kirigami applications! [1.3.0]

I updated the Plasma Desktop README in line with the other README things I did this year!

Friday, 28 June 2024

(German version of this article: https://wordsmith.social/felixernst/mein-anteil-an-der-erstellung-des-hintergrundbildes-von-plasma-6-1-reef)

Plasma 5

A short recap: In Plasma 5 we predominantly had wallpapers with geometric features. They showed digital representations of nature or were completely abstract, which I never really liked. Perhaps that was trendy for a while, or maybe technical Linux users enjoy such wallpapers, which are quite obviously made using a computer. However, these days, we do not only offer the best package of security, privacy, usability, and power for tech enthusiasts, but for everyone. Therefore, it is in my opinion important that our wallpapers represent not just what we stand for but also what we want to enable. In the best case, we enthuse a broad public this way. We should move on from the purely technical towards what is human and incorporate the creative, inventive, or artistic, which will always be absent from machines. A down-to-earth example of this are wallpapers that look like they could be painted on a simple piece of paper.

Plasma 6.0

For the MegaRelease and Plasma 6.0 KDE arranged a competition for the next wallpaper. There was a jury, and even though I had no part in any of this, I was in full agreement with the jury about the winning image “Scarlet Tree”: As far as I know, the winning artist never made a public appearance and the only thing I know of them is their pseudonym “axo1otl”, under which the wallpaper was published. As far as I know, the communication with them was handled by Niccolò Venerandi.

Plasma 6.1

From then on, the release of Plasma 6.1 was inching closer. One could ask: Do we really need a new wallpaper for every new version?

Ask our Promo Team and they will say: Yes, of course!

The reason for this is that we want to show images of the new Plasma version, but not every new Plasma version includes changes to the default user interface. That would be quite annoying if we moved around buttons or changed the design two times a year!

But when we change the wallpaper, it becomes obvious: This is a new version. That wallpaper then moreso represents all the changes that happened below the surface.

Additionally. a new pretty image obviously also brings some colour and variety into the users' lives, if they haven't already switched their wallpaper themselves.

The plan was to keep the wallpaper for Plasma 6.1 in a similar style as the Plasma 6.0 one. The same artist “axo1otl” painted another picture for us. Unfortunately, we only got to see it somewhat late:

The Visual Design Group was not enthralled by it. The image is quite full, and therefore some of us thought that it was not suitable as a wallpaper. This reluctance was strong enough that people started discussing what we could use as a wallpaper instead, even though we did not have much time to make a decision.

I thought the image was good enough, but I was in a minority with that opinion. However, there was no quick way to find a popular replacement either. Some suggestions went back to our old geometric abstract style from Plasma 5 times.

Additionally, the picture was a bit too pretty to simply drop it. So there were attempts to edit the “Reef” wallpaper in a way that might fit our purpose.

Editings

Niccolò used blur: Oliver Beard from Wales moved some of the elements of the painting out of the frame, so the whole wallpaper would become more calm, like a backdrop: This was considered a step in the right direction.

Niccolò then combined both strategies: While watching these experiments, I noticed that the possibilities for adaptations were very restricted because nobody dared to personally add anything to the picture. That is why the reefs only grew in size in the images. Nobody made them smaller because it would mean creating empty space which would then need to be filled e.g. by adding new sand.

I already saw a future before us in which the time constraints would force us to publish such a hastily-constructed adaptation that hides or obscures many nice details of the original artwork. All that because we would not know how to help ourselves.

I did not want that to happen. I felt like I might and should perhaps be able to help here.

The thing is, I tend to work on the Dolphin file manager and regularly dive into the depths of its source code, so I know a thing or two about underwater landscapes. After all, I have been to two Dolphin meetings in the Mediterranean Sea in the last two years: At Barcelona and at Thessaloniki.

So I started editing the painting myself:

My plan was to make room so the image would seem more serene. Viewers should no longer feel like they are in the middle of a lively coral reef and more like they are wandering through the open sea. By moving the right reef to a new middleground and shrinking the castle, the depths and distances in the image grew. After some initial positive feedback, I added more and more of the missing elements.

Some contributors in the Visual Design Group did not like that the path at the bottom of the image did not lead to the castle anymore. To others, the path was generally an undesirable element which should be removed. I bent the visible end of it towards the castle:

The waves in the upper half of the images also needed to be completed. There were big holes where the two castle towers used to be.

The image above was the result of me working until 4 a.m. I only concluded once I considered the image good enough that I could honestly advocate for it to be a Plasma wallpaper. I hoped that my nightly work would ensure that we had a passable wallpaper ready in time for the Plasma 6.1 release.

When I awoke the next “morning,” I addressed feedback from the group. More people had voiced the opinion that they did not like the path. I had originally kept it because I tried my best to preserve as much of the original vision and technique of “axo1otl” as possible given my other changes.

Granted, the goal of this exercise was to make the wallpaper more calming. Removing elements goes hand in hand with that. It turned out that, for some, the path did not look like it was even leading to the castle. Others did not imagine themselves as wanderers on the path when they viewed the image.

So I removed it and also used that opportunity to improve the sand at the bottom edge of the screen so it would be closer in style to the sand I did not paint.

Finally, everyone was somewhat content with this. It might not be one of our best wallpapers of all time, but considering the time constraints it did not make a lot of sense to discuss this further.

However, we wanted to ensure that the original artist “axo1otl” was fine with the changes. The image would be published under their pseudonym after all.

The image was sent to them, and within one or two days they made a few final adjustments:

And what can I say? I like the changes. Better shadows and the drawing style of the water and sand I added were adjusted so one could no longer tell that they were painted by a different person. For this, some gradual colour transitions were replaced by discretely coloured steps.

So everything was fine and well, except the path reappeared. More generally, it seemed to me like the image was not based on my final version but on the one before that.

I might not know what happened there, but for me this was fine. Not everyone liked that the path reappeared, but considering that this is a rather minor detail, there was hardly any criticism.

Release

And then we released Plasma 6.1. However, due to unforeseen circumstances, the new wallpaper did not make it into the release! I will not elaborate on this topic, but I obviously was not happy to read that.

Furthermore, I noticed that the wallpaper that we nevertheless offered as a separate download was not the version “axo1otl” had sent us. It was my latest version. I hope “axo1otl” is not upset about that, but as far as I know, they will not create a new wallpaper for Plasma 6.2.

I have now created another version of the wallpaper based on “axo1otl”'s final version. The picture is identical to their version, aside from me removing the path. If you do not like the path, I would say that this is the best version for you. However, there are slight compression artefacts:

Plasma 6.2

For the next Plasma version our Promo Team wants a new wallpaper. There are already efforts to ensure that we will hopefully do a better job this time around.

I have suggested the creation of a new permanent category in KDE's forum in https://invent.kde.org/teams/vdg/issues/-/issues/52#note_972957 . I would want it to be a place for everyone to upload their self-made wallpapers. Maybe there are hobby artists out there who would enjoy doing that. I hope that some of the images would be great and well-suited as wallpapers for future Plasma versions to the benefit of us and everyone.

Let’s go for my web review for the week 2024-26.


Chat Control and the New Panopticon - by Masayuki Hatta

Tags: tech, surveillance, privacy, cryptography, law

Very neat piece, shows quite well the problems with Chat Control like laws. It’s been postponed this time, but expect it to comeback somehow.

https://mhatta.substack.com/p/chat-control-and-the-new-panopticon


Cleantech has an enshittification problem

Tags: tech, politics, law

This is becoming an important industry. Regulation is needed to avoid consumers to be in a mouse trap. This is necessary to reap the benefits of those technologies.

https://pluralistic.net/2024/06/26/unplanned-obsolescence/


Indirector

Tags: tech, cpu, security

A new type of attack targeting the CPU indirect branch predictor.

https://indirector.cpusec.org/


Polyfill supply chain attack hits 100K+ sites

Tags: tech, supply-chain, security, web

This is bad for two reasons: 1) people clearly put too much trust in random CDNs to distribute their dependencies and 2) people don’t track depencendies obsolescence properly.

https://sansec.io/research/polyfill-supply-chain-attack


The People’s AI – Doc Searls Weblog

Tags: tech, ai, machine-learning, gpt, foss, self-hosting

This is ignoring the energy consumption aspect. That said, it is spot on regarding the social and economics aspects of those transformer models. They have to be open and self hostable.

https://doc.searls.com/2024/05/28/the-peoples-ai/


On the Paradox of Learning to Reason from Data

Tags: tech, ai, machine-learning, gpt, research

Further clues that transformer models can’t learn logic from data.

https://arxiv.org/abs/2205.11502


Scalable MatMul-free Language Modeling

Tags: tech, ai, machine-learning, gpt, research

Interesting paper showing a promising path to reduce the memory and workload of transformer models. This is much more interesting than the race to the gigantic size.

https://arxiv.org/abs/2406.02528


Inside the tiny chip that powers Montreal subway tickets

Tags: tech, nfc, hardware

Nice reverse engineering of a NFC chip used in a disposable transportation ticket.

https://www.righto.com/2024/06/montreal-mifare-ultralight-nfc.html


Local, first, forever

Tags: tech, crdt, self-hosting, privacy

Interesting approach for using CRDT through a file sync application. Probably something to see somehow generalized on traditional desktop applications.

https://tonsky.me/blog/crdt-filesync/


Reladiff

Tags: tech, databases, tools, tests

Interesting tool for diffing database tables. Should come in handy for tests.

https://reladiff.readthedocs.io/en/latest/index.html


Performance tip: avoid unnecessary copies – Daniel Lemire’s blog

Tags: tech, performance

Interesting case, when everything else gets faster, memory copies might start to become the bottleneck.

https://lemire.me/blog/2024/06/22/performance-tip-avoid-unnecessary-copies/


How much memory does a call to ‘malloc’ allocates? – Daniel Lemire’s blog

Tags: tech, system, memory

If you needed to be reminded that allocating small blocks of memory is a bad idea… here is a paper explaining it.

https://lemire.me/blog/2024/06/27/how-much-memory-does-a-call-to-malloc-allocates/


How the STL uses explicit

Tags: tech, c++

Definitely not the rules you want to apply on your projects. Still it’s interesting to know how the STL uses explicit.

https://quuxplusone.github.io/blog/2024/06/25/most-stl-ctors-arent-explicit-but-yours-still-should-be/


Breaking out of nested loops with generators | mathspp

Tags: tech, python

This is a useful construct in Python which is often forgotten.

https://mathspp.com/blog/breaking-out-of-nested-loops-with-generators


The plan-execute pattern

Tags: tech, algorithm, pattern, design, architecture

A nice pattern to separate decision from actions in complex algorithms.

https://mmapped.blog/posts/29-plan-execute


Fighting Faults in Distributed Systems

Tags: tech, safety, distributed, failure

A nice zine introducing the topic of faults and failures in distributed systems.

https://decomposition.al/CSE138-2024-01/zines/zine-ali.pdf


From ZeroVer to SemVer: A Comprehensive List of Versioning Schemes in Open Source | Andrew Nesbitt

Tags: tech, project-management, version-control

A nice collection of versioning schemes. I definitely didn’t know them all.

https://nesbitt.io/2024/06/24/from-zerover-to-semver-a-comprehensive-list-of-versioning-schemes-in-open-source.html


Of Psion and Symbian - by Bradford Morgan White

Tags: tech, history

Another story of precursors in the tech space. They basically invented the palmtop and spawned Symbian which was very much dominant on mobile for a while. The end of the Nokia story is a bit oversimplified for my taste just glancing over Maemo, but it is forgivable since it wasn’t the focus of this piece.

https://www.abortretry.fail/p/of-psion-and-symbian


Neko: History of a Software Pet

Tags: tech, history, funny

I remember playing with this a long time again… but it’s actually even older than I suspected.

https://eliotakira.com/neko/



Bye for now!

Wednesday, 26 June 2024

Kirigami Addons 1.3.0 is out. Kirigami Addons is a collection of components to enhance your Kirigami/QML application. This release contains many change related to the settings module.

ConfigurationView

The current way to create a settings page in your application is to use CategorizedSettings with some SettingAction for each setting page. This was based on Kirigami.PageRow which was then either pushed on a layer on mobile or to a seperate page on desktop. This turned out to be quite unreliable in practice as Kirigami.PageRow is a visual element.

The new ConfigurationView is based on a plain non-visual QtObject with for the moment two backends:

  • One for mobile which looks similar to the Plasma Settings application of Plasma Mobile.
  • One for desktop which looks similar to the System Settings application of Plasma Desktop.

The API is almost the same as the previous CategorizedSettings which made porting quite easy. Here is for example a button that open the settings.

import QtQuick.Controls as Controls
import org.kde.kirigamiaddons.settings as KirigamiSettings

Controls.Button {
 id: button

 KirigamiSettings.ConfigurationView {
 id: configuration

 window: button.Controls.ApplicationWindow.window as Kirigami.ApplicationWindow

 modules: [
 KirigamiSettings.ConfigurationModule {
 moduleId: "appearance"
 text: i18nc("@action:button", "Appearance")
 icon.name: "preferences-desktop-theme-global"
 page: () => Qt.createComponent("org.kde.tokodon", "AppearancePage")
 },
 ...
 KirigamiSettings.ConfigurationModule {
 moduleId: "about"
 text: i18nc("@action:button", "About Tokodon")
 icon.name: "help-about"
 page: () => Qt.createComponent("org.kde.kirigamiaddons.formcard", "AboutPage")
 category: i18nc("@title:group", "About")
 }
 ]
 }

 icon.name: 'settings-configure-symbolic'
 text: i18nc("@action:button", "Settings")

 onClicked: configuration.open()
}

With this change, both CategorizedSettings and SettingAction are now deprecated.

ConfigurationView on desktop
ConfigurationView on desktop

ConfigurationView on mobile
ConfigurationView on mobile

SpellcheckingConfigurationModule

With ConfigurationView each page is a ConfigurationModule and Kirigami Addons provides a ConfigurationModule for the spellchecking configuration of your application. This will allow to reduce code duplication between NeoChat, Tokodon, Marknote and more applications which uses Sonnet.

KirigamiSettings.ConfigurationView {
 modules: [
 KirigamiSettings.SpellcheckingConfigurationView {}
 ]
}

FormCard

FormCard design was slighly updated and now uses shadows as you might have already noticed from the previous screenshots.

SearchPopupField

Another component which is getting deprecated in SearchPopupField, there is now a replacement for that in Kirigami with the same behavior and I added an example how to port away to Kirigami.SearchDialog and I also ported all the know usage already.

Maintainance work

Aside from this major changes, there is ongoing maintaince works. This includes:

  • Removing the accidental QtWidgets on Android caused by QtLabs.ColorDialog (me: Carl Schwan)
  • Ensure all translated strings are loaded from the correct translation domain (me: Carl Schwan)
  • The license dialog in the AboutPage is now opened in the correct window (Jack Hill)
  • Fix the focus in the FormComboBoxDelegate (Joshua Goins)
  • Fix the capitalization in the AboutPage (Joshua Goins)
  • Increase the padding in FormCardDialog to match the other FormCard components

Packager Section

You can find the package on download.kde.org and it has been signed with my GPG key.

Tuesday, 25 June 2024

Hash-o-Matic 1.0.1 🔗

Carl Schwan CarlSchwan 10:10 +00:00
RSS

Hash-o-Matic 1.0.1 is out! Hash-o-Matic is a tool to compare and generate checksum for your files to verify the authenticity of them. It also verify files via their use PGP signatures.

This new release of Hash-o-Matic provides updated translations and some small visual changes. In the background, the application was ported to the new QML type registration, we now support building Hash-o-Matic on Haiku and we now require released version of KDE Frameworks instead of pre-released version.

Packager Section

You can find the package on download.kde.org and it has been signed with my GPG key.