Wednesday, 10 April 2024
So, 2023 was a successful year for Qt - and we highlight the Qt 6.5 and Qt 6.6 releases, Qt World Summit, and Qt Contributor Summit.
Our community stays vibrant and engaged with the Qt Project through our forums, mailings lists, asking and answering questions, offering technical advice, reporting bugs, contributing patches, and in many other forms helping Qt flourish.

Tuesday, 9 April 2024
We are thrilled to announce the winners of the Kubuntu Brand Graphic Design contest and the Wallpaper Contest! These competitions brought out the best in creativity, innovation, and passion from the Kubuntu community, and we couldn’t be more pleased with the results.

Kubuntu Brand Graphic Design Contest Winners
The Kubuntu Council is excited to reveal that after much deliberation and awe at the sheer talent on display, the winner
of the Kubuntu Brand Graphic Design contest is Fabio Maricato! Fabio’s entry captivated us with its innovative
approach and deep understanding of the Kubuntu brand essence. Coming in a close second is Desodi, whose creative flair and original design impressed us all. In third place, we have John Tolorunlojo, whose submission showcased exceptional creativity and skill.
Wallpaper Contest Honours
For the Wallpaper Contest, we had the pleasure of selecting three outstanding entries that will grace the screens of Kubuntu 24.04 LTS users worldwide. Congratulations to Gregorio, Dilip, and Jack Sharp for their stunning wallpaper contributions. Each design brings a unique flavor to the Kubuntu desktop experience, embodying the spirit of our community.
A Heartfelt Thank You
We extend our deepest gratitude to every participant who shared their artistry and vision with us. The number and quality of the submissions were truly beyond our expectations, reflecting the vibrant and creative spirit of the Kubuntu community. It’s your passion and engagement that make Kubuntu not just a powerful operating system, but a canvas for creativity.
Looking Ahead
The Kubuntu Council is thrilled with the success of these contests, and we are already looking forward to future opportunities to showcase the talents within our community. We believe that these winning designs not only celebrate the individuals behind them but also symbolise the collective creativity and innovation that Kubuntu stands for.
Stay tuned for the official inclusion of the winning wallpaper designs in Kubuntu 24.04 LTS, and keep an eye on our website for future contests and community events.
Once again, congratulations to our winners and a massive thank you to all who participated. Your contributions continue to shape and enrich the Kubuntu experience for users around the globe.
Celebrate with Us!
Check out our special banner commemorating the announcement and join us in celebrating the creativity and dedication of our winners and participants alike. Your efforts have truly made this contest a memorable one.
Here’s to many more years of innovation, creativity, and community in the world of Kubuntu.
The results of our contest, our proudly displayed in our Github Repository
Cheers!
Sunday, 7 April 2024
Friday, 5 April 2024
KDE had a feature a lot of people didn’t know about. You could run a command when a notification triggered. The feature wasn’t very well documented and nobody really blogged about it.
However with the release of KDE Plasma 6, the feature was removed. I learned about it by accident, as it is tracked by Bug #481069. I really need the feature and I re-implemented it in KDE Plasma 6. I will be available in KDE Plasma 6.1 and KDE Frameworks 6.1.
Text-to-Speech for calendar events
I’m using the “Run a command” feature for calendar events. Normally you get a popup notification. The popup notification is small and pop up where all of them are shown. When I’m concentrated and working on some code I simply miss them. If I play a game, I miss them.
The solution for me is to use a Text to Speech (TTS) Engine. I’ve setup speech-dispatcher with piper-tts on my system. When an a reminder triggers it says: “Andreas, you have an appointment in 10 minutes: Samba Meeting”.
You can find the python script I use here.
Endless possibilities
The opportunities for doing cool stuff with this are endless. Here are some ideas what else you could do:
- Start your meeting/conferencing application prior to the meeting
- Change the desktop activity before a meeting
- Lock the screen if a specific WiFi gets disconnected
If you have some nice idea or already used it in the past, leave a comment to let me know what else you can do.
CI & CD Infrastructure
- Merge requests run the custom build and the CI builds
- Master runs the CI build (though there could be other things we run, such as CVE scans)
- Craft recipes are run from the last commit of the master or release branch, they require "build" and "build-and-test-stable" to be run manually beforehand.
- Publishing to Microsoft store is available after the Windows Craft is run.
Donut Buster
Custom Views
A view is a collection of settings: the orientation of the sky map, how the orientation changes as the sky map is panned, whether it is mirrored or not, and optionally the field-of-view to set the map to.
If no views are defined, KStars introduces a set of standard / "demo" views by default. Existing views can be edited and new views can be added using the "Edit Views..." interface. They can also be re-ordered in the interface. The ordering of the views in the "Edit Views..." dialog defines the order in which views will be cycled through using the keyboard shortcuts Shift + Page Up and Shift + Page Down. Thus, you can set up the views for easily switching between naked eye / finder scope / telescope views for easy star-hopping.
The rotation feature overlay now also marks East in addition to north and zenith, so as to know easily whether the display is mirrored or not.
Blinking
In Analyze, one can now move from one session to the next (forward or backward).
Keyboard shortcuts are provided for that.
Another set of keyboard shortcuts both advance and show the next image in the same FITS Viewer.
Thus, for example, one can advance through all the captured images of the evening, showing all the captures on the FITS Viewer by repeating a keyboard shortcut.
A useful complement to this might be adding the ability to delete bad captures, but for now that will have to wait for a rainy day.
Going along with the above, keyboard shortcuts have been added to move to the next or previous FITS Viewer tab, Also helpful to the above is a new command to zoom in/out all tabs (not just the current one).
There is a new Blink Directory menu command (in both menus, as above) which will open a single tab with a list of all the images below the directory selected (that is, both in that directory, and in directories below it). It initially displays the first image, but new commands work in that tab to switch to displaying the next (or previous) image file in the list. This could be used to blink hundreds of files.
Sky Flats
Scheduler Refactor
Standalone Editor
- Target
- Sequence File
Let’s go for my web review for the week 2024-14. I will be vacationing next week, so I might skip next week post. We’ll see.
German state moving 30,000 PCs to LibreOffice
Tags: tech, foss
Well done LibreOffice! I’d love to see many more announcements like this one.
https://blog.documentfoundation.org/blog/2024/04/04/german-state-moving-30000-pcs-to-libreoffice/
oss-security - backdoor in upstream xz/liblzma leading to ssh server compromise
Tags: tech, ssh, security, supply-chain
Good analysis of the backdoor recently discovered in xz. Really a bad situation. Luckily it was probably detected before it could do any real damage. What’s especially striking is the amount of patience it required, it’s really been put in place over a long stretch of time to reduce chances of detection.
https://www.openwall.com/lists/oss-security/2024/03/29/4
A Microcosm of the interactions in Open Source projects
Tags: tech, foss, community, security
Excellent post showing unhealthy consumer/maintainer dynamics in FOSS projects. This particular example was instrumental in getting the xz backdoor in place.
Bullying in Open Source Software Is a Massive Security Vulnerability
Tags: tech, foss, security, burnout
You think the xz vulnerability was a one time event? Think again, this kind of bullying with ulterior motives happen regularly to critical projects.
OSQI
Tags: tech, foss, sustainability, quality, security
Definitely a good idea, we’d need several such institutes across the world. Would governments be willing to try this?
https://www.tbray.org/ongoing/When/202x/2024/04/01/OSQI
Keeping your data from Apple is harder than expected | Aalto University
Tags: tech, apple, privacy
Can we let the myth of Apple being a proper steward with data privacy to rest please? I don’t know why people took their claims for granted to start… with so much opacity, it’s not a claim you could trust.
https://www.aalto.fi/en/news/keeping-your-data-from-apple-is-harder-than-expected
A ‘Law Firm’ of AI Generated Lawyers Is Sending Fake Threats as an SEO Scam
Tags: tech, ai, machine-learning, gpt, scam
AI supercharged scam. I guess we’ll see more of those.
https://www.404media.co/a-law-firm-of-ai-generated-lawyers-is-sending-fake-threats-as-an-seo-scam/
AI bots hallucinate software packages and devs download them • The Register
Tags: tech, ai, machine-learning, copilot, gpt, security, supply-chain
You should be mindful of the dependencies you add. Even more so when the name of the dependency has been proposed by a coding assistant.
https://www.theregister.com/2024/03/28/ai_bots_hallucinate_software_packages/
Towards 1-bit Machine Learning Models
Tags: tech, ai, machine-learning, power, energy
Smaller models with smarter architectures and low-bit quantized models are two venues for more efficient use. I’m really curious how far they’ll go. This article focuses on low-bit quantized models and the prospects are interesting.
https://mobiusml.github.io/1bit_blog/
LLaMA Now Goes Faster on CPUs
Tags: tech, ai, machine-learning, gpt, llama, optimization, performance, cpu
Excellent work to improve Llama execution speed on CPU. It probably has all the tricks of the trade to accelerate this compute kernel.
Zoomer Tries RSS: In Praise of Yarr - tudor’s website
Tags: tech, rss, social-media
More people turning to RSS as a substitute for social media. There’s hope.
https://tudorr.ro/blog/zoomer-tries-rss/
KDE6 release: D-Bus and Polkit Galore | SUSE Security Team Blog
Tags: tech, processes, dbus, kde, security
Interesting article, shows quite well the complexities of D-Bus and Polkit. Unsurprisingly such complexity easily leads to mistakes which can compromise security. This then hints to interesting things to keep in mind when you have to deal with D-Bus and Polkit.
https://security.opensuse.org/2024/04/02/kde6-dbus-polkit.html
NTP Pool - The Internet Timekeeper | RIPE Labs
Tags: tech, ntp, dns, time
Fascinating article which explores the behavior of the NTP Pool. If you wondered how it gives you an NTP server to query, you’ll know the answer. It also covers the consequences of its restrictive approach. This even raises security concerns. Still even though it’s not perfect this keeps being an essential service mostly run by volunteers.
https://labs.ripe.net/author/giovane_moura/ntp-pool-the-internet-timekeeper/
Fast Development In Rust, Part One
Tags: tech, rust, performance, refactoring, type-systems, memory
Nice balanced view on some of Rust characteristics. This is much less naive than some of the “Rust is great” posts out there.
https://blog.sdf.com/p/fast-development-in-rust-part-one
On Garbage Collection
Tags: tech, memory, system
This is indeed a more interesting way to perceive garbage collection. This also lead to proper questions to explore on the topic.
https://xorvoid.com/on_garbage_collection.html
Optimizing SQLite for servers
Tags: tech, databases, sqlite, server, performance, complexity
With some tuning SQLite can go a long way, even for server type workloads. There are still a few caveats but in some case this can reduce complexity and cost quite a bit.
https://kerkour.com/sqlite-for-servers
Enforcing conventions in Django projects with introspection - lukeplant.me.uk
Tags: tech, craftsmanship, developer-experience, django, python
Another example of enforcing conventions using automated checks. This time using Python and Django tricks.
https://lukeplant.me.uk/blog/posts/enforcing-conventions-in-django-projects-with-introspection/
A proposal to add signals to JavaScript.
Tags: tech, javascript, web, frontend
A proposal for data bindings as first class citizens in JavaScript? This could be a good thing indeed.
https://github.com/proposal-signals/proposal-signals
Git as debugging tool - Lucas Seiki Oshiro
Tags: tech, git, version-control
Or why a clean commit history can help quite a lot to find how and why a bug was introduced. This shows a few nice tricks around git log to speed up the process.
https://lucasoshiro.github.io/posts-en/2023-02-13-git-debug/
Improvements to static analysis in the GCC 14 compiler | Red Hat Developer
Tags: tech, c, memory, static-analyzer, compiler
Improved static analysis for C straight from GCC. This is definitely welcome.
https://developers.redhat.com/articles/2024/04/03/improvements-static-analysis-gcc-14-compiler#
On Invariance and Inconsistency
Tags: tech, programming, safety, logic, mathematics
On the importance of invariants and consistent requirements in our trade. Admittedly it’s a long demonstration but it show the point well.
https://www.hansdieterhiep.nl/blog/on-invariance-and-inconsistency/
TDD’s Missing Skill: Behavioral Composition - by Kent Beck
Tags: tech, tests, tdd, design
This is indeed too often overlooked. Producing a test list and picking the tests in the right order is definitely a crucial skill to practice TDD. It goes hand in hand with software design skills.
https://tidyfirst.substack.com/p/tdds-missing-skill-behavioral-composition
Basic Things
Tags: tech, organization, community, craftsmanship
Lots of good advices of course. It goes a long way to improve the quality of the project and the ease to on-board people. This is quite some initial work though.
https://matklad.github.io/2024/03/22/basic-things.html
Programming Apprenticeships
Tags: tech, teaching, learning, pairing
Funny experiment. This shows what you can achieve in terms of teaching and learning during pair programming setups. Shadowing someone is a powerful approach.
https://two-wrongs.com/programming-apprenticeships.html
Mentorship, coaching, sponsorship: three different — and equally important — tools for developing talent - Jacob Kaplan-Moss
Tags: management, coaching, mentoring
This is a nice way to frame the three activities. They help people progress but in different ways.
https://jacobian.org/2024/apr/1/mentorship-coaching-sponsorship/
Ping Me, Please!
Tags: tech, remote-working, asynchronous, communication
When you’re distributed, this is all about asynchronous communication. You can’t walk to a person desk (and you should probably avoid it anyway if colocated).
https://www.yegor256.com/2024/04/01/ping-me-please.html
Bye for now!
Thursday, 4 April 2024
Recently news went around about explicit sync being merged into Wayland protocols, and in the wake of that I saw a lot of people having questions about it, and why it was such a big deal… So here’s a short-ish explanation of what it is, why it’s needed and what the benefits are over the old model.
Why is synchronization needed?
When applications “render” things, that rendering doesn’t happen immediately. Instead, they effectively record a list of commands with OpenGL or Vulkan for the GPU to execute, and that list then gets handed to the GPU to execute at its own pace.
This is needed for performance reasons: If the CPU had to wait for the GPU to execute each command one by one, both CPU and GPU would often sit around, doing nothing except waiting for the other one to finish its task. By executing commands on the GPU while the CPU does other things, like preparing new commands for the GPU, both can do a lot more work in the same time.
However, in practice, rendering commands don’t stand alone on their own. You might be running one task to render an image, and another one to process the result into something else, or to read it back to the CPU, so that it can be saved as a file on disk. If you do that without synchronization, you might be reading from the image in the middle of rendering, or even before the GPU has started to work on the buffer at all.
The “old” model: Implicit sync
Traditionally with graphics APIs like OpenGL, the necessary synchronization has been done implicitly, without the application’s involvement. This means that the kernel and/or the userspace graphics driver look at the commands the application is sending to the GPU, check which images the commands are using, which previous tasks have to be completed before it, and potentially make the application wait until the dependencies of the commands it wants to execute are resolved.
The so-called dma buffer infrastructure that the Linux graphics stack uses for exchanging images between applications - like Wayland apps and the compositor - also uses the same model. When the render commands from the compositor try to read from an app’s buffer, the kernel will delay the command’s execution until the app has completed its rendering to the buffer.
This model makes it easy for application developers to write correctly working applications, but it can also cause issues. The most relevant of them for Wayland is that the application isn’t aware of which tasks it’s synchronizing to, and it can happen that you accidentally and unknowingly synchronize to GPU commands that don’t have any relevance to your task.
This has been a problem that Wayland compositors have been affected by for a long time: When presenting application images to the screen, compositors picked the latest image that the application has provided, which could still have GPU tasks running on it, instead of an earlier image that’s actually ready for presentation. This meant that sometimes presentation was delayed by the kernel, and you’d see a frame be dropped entirely, instead of just a slightly older image. This issue has been solved for most compositors in the last two years using the kernel’s implicit-explicit sync interop mechanism1; I won’t explain the details of that here, but you can read Michel Dänzer’s blog post about it instead.
The “new” model: Explicit sync
The name already suggests exactly what it does: Instead of the driver or the kernel doing potentially unexpected things in the background, the application explicitly tells the relevant components (driver / kernel / compositor / other apps) when rendering is complete and what tasks to synchronize to in the first place, using various synchronization primitives.
On the application side, explicit sync is used in Vulkan, and the Wayland protocol specifically is used internally by OpenGL and Vulkan drivers to synchronize with the Wayland compositor.
This explicit way of synchronizing GPU commands doesn’t just help avoid accidental synchronizations, it also helps improve performance by reducing the work drivers have to do. Instead of having to figure out the dependencies of tasks from a relatively opaque list of commands, apps just tell them directly.
An important thing to mention here is that we already had a protocol for explicit sync, zwp_linux_explicit_synchronization_unstable_v1, but it shared a limitation with implicit sync: In order to get a synchronization primitive, it still required the GPU commands to be first submitted to the kernel. The new protocol in contrast allows to create and share synchronization primitives without submitting work to the GPU first, which - at least in theory - will allow applications to squeeze a little bit more performance out of your hardware in the future.
Do keep in mind though that these performance improvements are minor. While there may be some special cases where implicit sync between app and compositor was the bottleneck before, you’re unlikely to notice the individual difference between implicit and explicit sync at all.
Why the big fuzz then?
If we already have most of the compositor-side problems with implicit sync solved, and explicit sync doesn’t bring major performance improvements for everyone, why is it such big news then?
The answer is simple: The proprietary NVidia driver doesn’t support implicit sync at all, and neither commonly used compositors nor the NVidia driver support the first explicit sync protocol, which means on Wayland you get significant flickering and frame pacing issues. The driver also ships with some workarounds, but they don’t exactly fix the problem either:
- it delays Wayland commits until rendering is completed, but it goes against how graphics APIs work on Wayland and can cause serious issues, even crash apps in extreme cases
- it delays X11 presentation until rendering is completed, but as Xwayland copies window contents sometimes, that still often causes glitches if Xwayland is also using the NVidia GPU for those copies
There’s been a lot of discussions around the internet between people experiencing the issues constantly, and others not seeing any, and now you should know why it doesn’t seem to affect everyone: It’s not a deterministic “this doesn’t work” problem but a lack of synchronization, which means that a lot of factors - like the apps you use, the CPU and GPU you have, the driver version, the kernel, compositor and so on - decide whether or not you actually see the issue.
With the explicit sync protocol being implemented in compositors and very soon in Xwayland and the proprietary NVidia driver, all those problems will finally be a thing of the past, and the biggest remaining blocker for NVidia users to switch to Wayland will be gone.
this was referred to as “explicit sync through a backdoor” in an earlier version of this post ↩