Skip to content

Sunday, 14 September 2025

I’m happy to announce the 0.8.2 release of Subtitle Composer.

This release contains bugfixes and few improvements including:

  • Fixed issues and crashes with newer Qt6 versions
  • Fixed Waveform and VideoPlayer paint issues
  • Fixed PGS subtitle mime type
  • Improved Wayland compatibility
  • Improved GoogleCloudEngine translations
  • Added configurable whitespace detection to VobSub import
  • Replaced deprecated FFmpeg channel code
  • Require FFmpeg >= 5.1.5

As usual all binaries are available from download page.

Source tarball can be downloaded from download.kde.org.

— Mladen

It was the turn of the millenium when I got my first computer fresh at university. Windows seemed uninteresting, it was impossible to work out how it worked or write programs for it. SuSE Linux 6.2 was much more interesting to try and opened a world of understanding how computers worked and wanting to code on them. These were the days of the .com boom and I went to big expos in London where they showered you with freebies and IBM competed with SuSE and Red Hat for the biggest stall. IBM said that Linux had made it on the server and now was going to take over the desktop so I realised that working with KDE would be a good idea. And as a novice coder it was very perfect for learning Qt and how open development worked and I loved the free software ideals. Going to the pre-Akademy conference (it was called Kastle then) in Nove Hrady was a great intro to the community in person and in some ways I learnt more about software development in a week there then my years at uni.

So clearly this was a good way to make a career. I dossed around for a year until the Quaker geek collective heard tale of an African Spaceman who was funding a new Linux distro called SSDS (Shuttleworth’s Super Secret Debian Startup) so I got into Debian packaging and made a point that KDE should be involved. Before long they came knocking and I went to the first Ubuntu conference in Australia. I spent about ten amazing years brining KDE to Ubuntu or bringing Ubuntu to KDE for what was already called Kubuntu (not my name choice), a successful community project I’m really proud of. At one point Nokia wanted to use it alongside Plasma Active to sell on a tablet thing along with phones, this could well have taken over the world but y’know, iPhone happened and Kubuntu never found a commercial use after that although it still gets used in big places like Google or the City of Munich or Weta digital (watch those Hobbit DVD extras). I loved being invited out to Nigeria or India to give talks and spread the world of open software. Looking back there’s probably a million business cases that would have been possible but I’m not the best at being a future visionary. Eventually Canonical decided to stop funding it which is fair enough.

But then Blue Systems came along, another nice guy with deep pockets wanting to help and we carried on. When Canonical decided to kill off lots of community projects we came up with the idea of moving directly into KDE to make KDE neon. It has always been crazy how open source communities like KDE are reliant on separate companies to take their software out to the world so we wanted to change that, and I like to think we succeeded. Using CI systems we could create a much more manageable setup. Still the system was never as resiliant as it should have been and several times KDE neon ended up shipping a duff update which will have been very painful for users. We had three people working full time on it at the start but before long it was just me and a volunteer and the quality suffered as a result.

Last winter I drove to the Blue Systems schoße for a routine conference and was organising people to give talks when the guy who pays us started off by saying he was dying and the company would be shutting down. Which was very sad but it makes sense to end it on a high. After years of having no business modal and not knowing what the aims of the company were, which caused several people to genuinely go mad, we finally had a business model of sorts with Valve paying us to make Plasma up to the standards needed to ship it as Desktop Scope on the Valve Steam Deck games console. Nate had been given advanced notice of the company shutting down and had already started another company, Tech Paladin, to take on the business. Shouldn’t this be run as a cooperative we wondered? No that was too complex he said. The next day I ended up at a funeral for some German accountants and when I came back there had been some more discussion and we watched a video about Igalia who make the other operating system for Valve. They are a cooperative socialist paradise and Nate said he’d look into doing that instead of the setup where he had full control and all the profit. It was clear there was to be no other discussion on the matter of our future.

A few weeks later we had an online meeting where I proposed a useful agenda but was ignored, instead Nate gave his updated plan for a business which was to give Dave a slice of the profit and otherwise he’d keep all the profit and all the control. So I gave my proposal I’d been working on for a company with equal ownership, equal profit, a management structure and workers rights. A couple weeks later we had anther video call but Nate called me first and told me I’d be excluded from it. No explanation was given beyond I had “made some comments and would not be happy”. If someone is telling you what your emotions that is when controlling behaviour starts to become abusive. And thus ended my 25 years with KDE.

And what of my colleagues? Surely they wouldn’t want a setup where they have no control over their professional life and all their profit goes to one person? Well dunno, they’ve stopped speaking to me. Nothing. Silence. Nil. Not so much as a “cheereo”, nor “sorry we chose the option were you got excluded” and certainly no explanation. From people who I have worked with for some twenty years in some cases that hurts. I don’t know why they stopped talking to me, I can only speculate and I don’t want to do that.

We never had workers rights at Blue Systems, we were all on self employment contracts. This will continue at Tech Paladin. It is illegal but unenforceable when done on an international setup. But employment rights are not a luxury you can chose to do without if you enjoy your job and want some more flexibility in your work day. They are fundamental and life altering rights that change people’s lives as I discovered when my adopted children were taken away from me. Nobody should be doing business with or taking money from Tech Paladin else be party to illegal workers rights abuses.

Then I started to get sad, being cut off from my life for the last 25 years was too much for me. All things come to an end and I’ve seen plenty people had to leave KDE because the money ran out or maybe they had a disagreement with someone in the project, but never a profiteering control struggle like this. I struggled to get out of bed on some days. I’ve given my life to KDE, I’ve seen it gone from a sure fire project to take over the world to being one open desktop project in a world of many to seeing the revival in recent years where we can honestly say we make some of the best software out there. I like to think I’ve been part of keeping it alive, progressing, relevant and at the forefront of commercial, government and community usage. It’s been an amazing ride full of opportunities and adventures the likes of which I’m sure my peers from my university course have never had.

But in the end I lost my friends, my colleagues, my job, my career and my family. What’s a spod who just tried to do the right thing for society to do? Dunno. For now, if you want me, you can find me surfing the endless wave whenever the sun sets over my digital nomad coliving paddleshack at the end of the world.

Sunset surfs at the digital nomad coliving paddleshack at the end of the world

I was able to attend the talks at Akademy this year in Berlin! The last time I attended Akademy in person was in 2022, so it was really nice being able to come back and meet everyone again.

I was unfortunately not able to attend BoFs (development meetings) due to having to leave early. I did attend some meetings a few months earlier however, you can read more in my Plasma sprint recap post.

Talks 🔗

Akademy runs with two concurrent tracks of talks, and so sometimes there were two talks at the same that I both wanted to attend, I had a hard time deciding! Here are some of the ones I attended:

KDE Linux: Banana Growth Cycle 🔗

Harald released KDE Linux Alpha was to the public during the talk! I hadn’t followed the project super closely, but it was awesome getting up to speed learning about the state of the project and the inner workings of how the distribution works.

The Role of New Languages in the Future of the Qt Ecosystem 🔗

I was introduced to Qt Bridges, which is an effort to go beyond Qt bindings for other languages and tightly integrate with them (ex. Rust, Python). Once this is more mature, it will likely be an easy recommendation for others to start learning Qt with, who don’t want to use C++!

KDE Goals - One Year Recap 🔗

It was interesting to see all the work that had been done on the KDE Goals so far!

I am actually involved with one of them this time around (“We care about your input”) through my work on plasma-keyboard. Blog post likely coming in a few months, once that work is further along!

Next-Gen Documentation Infrastructure for KDE 🔗

KDE’s reference API documentation has been a bit of sore spot for me, since it didn’t support QML very well. As a result, I usually go manually go through header files instead in the source code to figure out how to use libraries.

The talk went over Nicolas’s work on doing the mammoth task of porting all of KDE’s API documentation to QDoc from Doxygen, which properly supports QML. The new api.kde.org went live, and boy is it such an improvement! It’s much easier for me to point new developers to the Kirigami documentation now.

Fedora KDE Plasma Desktop Edition is Real, Now What? 🔗

I personally use Fedora on my workstation and laptops, and so it was cool to get some history about how Plasma on Fedora was revived in the past, and plans for the future. Neal also expressed some interest in a Plasma Bigscreen spin (similar to the one for Plasma Mobile), which could be pretty interesting once it becomes more mature!

Plasma Mobile Power Management: Reliable Sleep and Wake Ups 🔗

Bhushan gave an update on his work power management work across the Plasma stack! He obtained an NLNet grant recently for the project, detailed on his blog.

Discussions 🔗

I was really happy to meet and discuss with quite a few people during the event.

I met Bart, Luca, Casey and Pablo from the postmarketOS project! As it is the main platform I test and develop Plasma Mobile with, it was really nice to finally meet some of their developers (I had met Bart and Luca at Akademy 2022)! I also was able to finally meet Florian, who has been collaborating with me in contributing to Plasma Mobile in the past few years!

I met Dorota, who has been working on Wayland input related things for the past few years, and is in the process of pushing through updates to text-input-v3, and Jakob who has been working on the KDE side pushing through the input related KDE goals! We discussed some input related topics, which was insightful as I worked on the client side through plasma-keyboard (and my limited Wayland knowledge).

I also discussed some Kirigami page navigation related topics with Marco. I’m doing a bit of investigation into how we can improve the way we navigate between pages in applications, and perhaps restricting the page left/right gesture into the side (similar to iOS).

I’m back from Akademy 2025 in Berlin, and what an experience it was.

At this point, I’ve gotten a reputation as a “big picture guy”, so that’s what I’ll focus on here, rather than the details of my experiences in specific events. Lots of other folks are starting to write blog posts you can find on https://planet.kde.org about their Akademy experiences that I’m sure will be full of juicy details!


But basically, to me this year’s Akademy felt like it had a theme: “KDE is on the cusp of something big.”

Here’s one example: at the very cool C-base hackerspace, I was talking with someone who mused that 15 years ago, Akademy was full of KDE hackers talking about the government one day using our software… and then fast-forward 15 years and our two keynote speakers are from the German government talking about using KDE’s software!

Then we had a talk from the “End of 10” crowd about KDE’s campaign encouraging people to upgrade to Linux rather than buying new hardware capable of running Windows 11. And then as if to reflect on the success of this initiative, Patrick Fitzgerald gave a talk about how to do massive migrations from Windows to Linux, with examples provided of cases where literally thousands of machines were migrated to KDE software at a small fraction of the cost of moving to Windows 11.

Till Adam gave a talk about how commercial work changes relationships with respect to his experience in KDAB, a software consultancy founded by KDE contributors. I found this talk highly relevant given that David Edmundson and I just started a KDE-focused company this year ourselves. Alexandra Betouni also gave a talk about rising to the top of a company. Hmm, lots of companies!

We heard about how Mercedes is rolling out a vehicle powered by KDE technology under the hood.

In the “hallway track”, I had a fascinating discussion about how KDE’s efforts to improve accessibility have the potential to be an industry-wide force multiplier.

And then I gave a talk myself about the big picture of all of these trends — that as the world falls apart around us, everything being on fire includes tremendous opportunities for change that KDE is well-positioned to benefit from.


Basically, at age 29, KDE is all grown up now. Our software solves real problems for real people, at scale. It works for governments and big businesses. It saves or earns money for a lot of people. Our competitors are beginning to falter and look weak. But through it all, KDE remains healthy and strong, and grows in stature.

So I found Akademy 2025 to be an unexpectedly serious conference, full of heavy topics and sharing of priceless wisdom from hard-earned experience. There was of course also a lot of fun hacking and group gatherings and renewing of social bonds, but throughout everything was that underpinning that KDE isn’t just a fun little online community anymore, but rather a player with a growing significance on the world stage.

Pretty cool stuff, I think! Personally, I get energized by working on things that matter, and boy did Akademy 2025 leave me with the impression that KDE matters.

From the 3rd to the 5th of September, the Kdenlive team was reunited in Berlin for a sprint and to attend Akademy, KDE's annual conference. This was an occasion for us to meet in person since our team is spread across continents, and to join our forces to make Kdenlive better. And I must say this was one of the most productive sprints in Kdenlive's history!

We were kindly hosted by c-base for our Sprint so a big thanks to the team for welcoming us there!

Let's get into the details of what we did:

We started by reviewing and updating our roadmap, so it is easier to understand what we are working on, what we plan and when. Another important step towards improving our workflows is that we created issues for each of these goals where the details will be discussed, so everyone can follow and possibly help us on the road to success.

Dopesheet

Very exciting, I received a grant from the NGI Zero Commons Fund through NLnet to work on a dopesheet feature in Kdenlive. This will bring a much improved keyframing interface with powerful features. We discussed what core features we want in it and some drafts on how that would work. This feature won't be ready for the December release, but I will post updates on the progress of this task in the coming months.

We then reviewed specific parts of the UI that we would like to improve. All these ideas will be discussed in specific issues so that we can refine the implementation.

This task started two years ago but we never took time to finalize it. We progressed a lot on this and you can expect it to land in the December release. Among the changes, we decided to rename the Project Bin to Media, Render to Export, and reorganize the menus to make things more logical. We will make another blog to present these changes in detail once this is done.

Timeline toolbar

We want to cleanup the UI, make the timeline timecode display cleaner and get rid of the large Master button currently taking a lot of space.

Monitor UI

We plan to move the audio vu-meter to a collapsible vertical widget on the right side of the monitor to free some space in the toolbar, make the zone duration always visible and move the insert/overwrite actions currently in the timeline toolbar there.

Audio monitor

When selecting an audio clip, the Clip Monitor currently displays a huge audio waveform that is not that useful. We reviewed the UI to also display an overview at the top, making it easier to zoom and see where you are in the clip.

Monitor with audio before the Sprint
Monitor with audio a few days after the Sprint

Layout and docks

We have several open issues regarding docking. One of the frequent request we have is to save the layout per project file, since sometimes you want very specific layouts for a project. We discussed how to make it happen and are also evaluating switching the library managing the widgets docking to KDDockWidgets that would bring us some very nice improvements like being able to detach the timeline or group several undocked widgets together

Titler

Our current titler does the job for simple tasks but many users would like to be able to use some animation presets to make their titles more dynamic. We discussed the possible options to make this a reality. Among the ideas, we could use Lottie animations, since our video backend MLT already has support to play them through the Glaxnimate module. Another option would be to implement a Qml producer for MLT, allowing to play Qml files directly as a video. Any help on that topic is welcome.

Website

We have some planned changes to make our website look better and discussed some of the options.

And all the rest

We discussed tons of other things and even managed to shoot some interviews of our team members. Less relevant maybe for users but we also reviewed some of the administrative and trademark issues, and CI/CD issues

Akademy 2025

Akademy was also an occasion to have interesting exchanges, notably with Glaxnimate's maintainer, Plasma developers and more. We are now back home with tons of ideas and TODO's, and the next release of Kdenlive, to be launched in December, will shine with some of the improvements we prepared during this week in Berlin !

If you would like to help our small team, you are always welcome to contribute by giving some feedback, talk about us, create a merge request or donate.

Despite the lack of posts (which we apologise for) the builds have continued to happen on the neon build servers. Packages for Plasma 6.4.5, coupled with KDE frameworks 6.18, and KDE release service 25.08.1 built on top of Qt 6.9.2 have just been released to the neon user archives. Live Image ISO’s and containers are available for download from the usual location.

The builds will continue to happen for the foreseeable future and hope that everyone enjoys the latest and greatest KDE created software, if that’s your cup of tea. 😉

Saturday, 13 September 2025

This year’s Akademy was in Berlin at the Technical University of Berlin. The experience, as usual, was amazing. Unlike in previous years, there was a huge emphasis on styling, unification, and graphical work. This whole wave of talks was invigorating.

As a side note, this year our A/V was vastly improved and this should make it much easier for our contributors and viewers online to see and understand what we did. As part of the organization, I will help process these recordings and make sure they are awesome.

Once again I spoke on the progress with the design system. This year’s talk focused on our progress on icons. Definitively, one of the lengthiest pieces of work coming from the Foundations portion of the design system.

In addition to speaking on these topics, I shared the newly created (and definitively experimental) Ocean color scheme, light/dark, Ocean Plasma Style, and Ocean icon pack. In case you missed these assets, here you go: https://drive.google.com/file/d/1oLVq0SViOFB6lur3qn0bwV7_gHzqu2KM/view?usp=sharing

One thing to note, and after much discussion during Akademy, we have aligned more properly on the way that we should work in light of the addition of the design system.

In our current process, we use GIT as the source for our icons. Anyone can download and apply the icons on their Plasma system. However, this process is not quite geared toward designers. After all, all icons located in the repo are exported icons. They are one-layer graphics that only function with node work. If a designer needed to work with these assets, they would have to likely recreate them to gain the appropriate shape control needed to make desired changes.

This leads to overhead work and style inconsistencies. Above all, it leads to a state where the real source of the icon doesn’t exist unless we dig through each individual computer where the icon was developed.

With the use of applications like PenPot or Figma, that question is resolved. Users are able to download an asset library owned by the design team at Plasma. The source is protected but it’s also distributed in away that doesn’t affect the master copies. If changes are needed, change requests can be submitted to master and the design team can decide to apply those changes or not.

Effectively, this means a change in the way that icons are stored. Moving the work from Git to PenPot/Figma seems like the best choice.

This requires communication, habit changes, risk management, etc. While I am speaking of this right now, we are “not” changing our current process to obtain Breeze icons from its repo. However, it means more information will come in the future as we develop a more effective way to work with a design system.

I am so excited to see the progress done in Union, and even more excited to start passing on design system components into Union to see how they fare against the newly created engine. Union is also under heavy development. I encourage you to watch Arjen Hiemstra’s presentation at Akademy when it’s published.

When this happens, this would be the second set of graphical controls that are executed via Union. I am sure many challenges lay ahead but I feel energized by it. I am sure we are on our way to resolving long-standing design and development issues that have slowed us down.

As a result of this year’s Akademy, I created a set of action items for myself that I have to review to be able to continue. One major item for me is to develop our master component source in PenPot. Even though Ocean icons are not 100% executable in PenPot, other assets like buttons, sliders, progress bars, inputs, etc are executable. I will dedicate the time to create these items and leave Figma for components behind, shedding also any legacy branding coming from the design system sources and only focusing on what we need for Ocean styles.

With that, Akademy has been a thrill. I go home energized and happy for what we have accomplished. All this while keeping a vibrant community and a vibrant free desktop system for all Linux users.

Once again, all KDE nerds had their yearly gathering around somewhere in the world. We call this gathering Akademy and this year it was in Berlin.

I don't really have anything in-depth to share, except for my first talk I had. I spent a lot of time listening to talks and chilling at BoFs. Since I was with my wife, we also went around Berlin looking for fun things, such as the Aquarium at the zoo.

TL;DR: I don't remember much, but I had a lot of fun and I had my first talk!

Day 1

We arrived around ~13.00 at Berlin airport and spent some time getting to our hotel. After a good nap, we went to the welcome event, where I had a nice hotdog and chatted with various folks.

It was a bit of a blur, I was so sleepy. But I do remember having fun.

Also I was super happy that our planes were finally on time this year, unlike last time...

Day 2

I arrived to Akademy venue around 9:30 and spent the whole day going to talks and taking notes of said talks. I will share those notes later in the post.

I also had a lot of discussions with other KDE devs about Union and the like.

Day 3

I spent so much time just being anxious about my talk, so that I don't remember much else.

I have embedded the talk in here.

Here's also a link to the talk: Youtube link.

I rushed the talk a bit due to worrying it would take too long, I tend to go "hummmm" a lot.. So I forgot to mention two bits:

  • The cosplay in the intro slide is what I wish I wore for the talk.. :D
  • We should warn newcomers about any of the possible negativity their contributions may gather.

Other than that, it went fine I think.

Later in the evening we visited c-base and it was really cool looking hackerspace. Though I was already out of any energy at that point, we left a bit early.

My Akademy Notes file

Here's a link to the notes, excuse my bad handwriting: Akademy 2025 notes.pdf

Day 4

First we went to the aquarium, which was fun. We saw very cool sharks and other huge fish there. I did not even know Koi fish could grow that big. We also saw a lot of different lizards, toads and insects. I tried my best to befriend the iguana in there... But I don't think they spoke Finnish.

Me chatting to an iguana

We then also had a korean sandwich, I bought myself a pair of new cool pants and we visited a Lego store.

Later in the evening, I went to a dinner with my coworkers, which was really fun.

Day 5

Went to more Akademy BoFs. One of the more interesting ones was the BoF around KDE Linux so we chatted about it and any related issues with it.

I also went to a BoF around KIO + Sandboxing, to see what we can do to make tools that depend on KIO work better in sandboxed environment, such as Flatpaks.

Sadly I don't have much notes from either, since they were rather speedy and I missed parts of them all because I was busy tinkering on my KomoDo app.

Day 6

On the last day, we had a scavenger hunt in the morning and then went to a game museum. I was so exhausted that I couldn't even think of walking around Berlin anymore, so I just joined the game museum part. It was rather cool and I spent some time playing various arcade games they had set up.

There was also some "PainGame" that was basically pong but with pickups that would cause actual pain to the other player. The players had to hold their hand on some panel that would heat up, cause electric shocks and whip the hand with some plastic bit.

Well I tried it and pulled my hand off the moment I felt it heating up. I already had enough anxiety at the moment, didn't need to contribute more to it.

After a pizza at a nice little pizza place, we went back to hotel and slept.

The next morning we went to a plane at 5 am and were soon back home.

Ramblings and thoughts

Berlin is not a good place for me to go to. It's very loud, uh.. fragrant and there's a lot of things moving constantly.

My nerves were constantly shot. I kept constantly looking around for bad shit to happen, I could not relax at all. I managed to mask it to the best of my abilities, but that just drained me further.

So, uh, sorry anyone who thought I was rather hard to approach. I was just constantly anxious. Akademy itself was really nice and people there were really friendly and fun, but Berlin just was too much for me.

I also really enjoyed every single talk and BoF I went to!

I just can't deal with big cities well, I suppose. Next year I will have to limit the time I'm traveling, preferably ~4 days or so. Anything more is out of my limits.

Still, looking forward to where it will be next year. :)

Thanks for reading, I know there wasn't much actual knowledge in this blogpost, but maybe you liked my talk and/or my notes.

Friday, 12 September 2025

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


🇪🇺YES: Germany is not supporting ChatControl

Tags: tech, surveillance, politics

Se might have dodged a bullet here… Until next time. Thanks to the coalition of countries which opposed this bill.

https://digitalcourage.social/@echo_pbreyer/115184350819592476


How Wikipedia survives while the rest of the internet breaks

Tags: tech, wikipedia, knowledge, processes, culture, community, bias

Very nice article on the Wikipedia success. Or why being boring and the ultimate process pettiness became the crucial part of the formula. This community really developed a fascinating culture which so far resists to mounting political pressure… But will the editors morale hold?

https://www.theverge.com/cs/features/717322/wikipedia-attacks-neutrality-history-jimmy-wales


The SIFT Method - Evaluating Resources and Misinformation

Tags: tech, fake-news, information

Nice and to the point little guide on how to evaluate source of information.

https://guides.lib.uchicago.edu/c.php?g=1241077&p=9082322


A Secret Web

Tags: tech, web, search, blog

This is nice to see the energy still bubbling in the traditional web. It’s still there, next to the big mall pushed by search engines. You just need to know where to look and it’s not that hard.

https://blog.clew.se/posts/secret-web/


E-Paper Display Refresh Rate Reaches New Heights

Tags: tech, e-ink

Clearly that’s interesting progress around this kind of display. This should make it easier to create devices using them going forward.

https://spectrum.ieee.org/e-paper-display-modos


AI Darwin Awards 2025 - Celebrating Spectacularly Bad AI Decisions

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

OK, this is an interesting way for the Darwin Award to branch. Some of the 2025 nominees are indeed funny. Now I wonder which ones will win the award!

https://aidarwinawards.org/


We all dodged a bullet

Tags: tech, dependencies, supply-chain, security

It’s indeed surprising that this compromised npm account didn’t lead to more damage. It’s a good reminder that you better regularly audit what happens in your ecosystem.

https://xeiaso.net/notes/2025/we-dodged-a-bullet/


ServerlessHorrors

Tags: tech, infrastructure, cloud

Want to scare yourself with what might happen when you completely let go of your infrastructure? Here is an aggregator for that.

https://serverlesshorrors.com/


term.everything: Run any GUI app in the terminal❗

Tags: tech, command-line, gui, wayland, funny

Very fun an impressive experiment of making a Wayland compositor rendering in the terminal with surprising refinements. Now it feels totally useless too of course.

https://github.com/mmulet/term.everything


All You Need Is SSH

Tags: tech, tools, ssh, infrastructure, complexity

And a bunch of tool to use with it… But you can indeed do a lot with just SSH. This post gives a few good ideas.

https://wrongthink.link/posts/all-you-need-is-ssh/


C++26: erroneous behaviour

Tags: tech, c++, safety

C++26 really looks like a step in the right direction in term of safety. Undefined behaviours are too often neglected in that conversation.

https://www.sandordargo.com/blog/2025/02/05/cpp26-erroneous-behaviour


Batched Critical Sections

Tags: tech, multithreading, performance

A few ideas to dig deeper into for better multi threaded throughput.

https://kprotty.me/2025/09/08/batched-critical-sections.html


Use singular nouns for database table names

Tags: tech, databases

Maybe time to change habits on table naming? I’m still on the fence myself but there are interesting arguments there.

https://www.teamten.com/lawrence/programming/use-singular-nouns-for-database-table-names.html


Many Hard Leetcode Problems are Easy Constraint Problems

Tags: tech, algorithm, constraint-solving

Or how a problem is represented matters a lot. Going for a constraint solver might be what you want sometimes.

https://buttondown.com/hillelwayne/archive/many-hard-leetcode-problems-are-easy-constraint/


Liquid Glass in the Browser: Refraction with CSS and SVG

Tags: tech, graphics, web, css, svg, physics, ux

I think this effect is a usability nightmare. That said it’s interesting to see which CSS and SVG tricks can be used to simulate it. This opens the door to other effects.

https://kube.io/blog/liquid-glass-css-svg/


Is It the People or the System?

Tags: management, system

It is indeed often the system. Now what the article is not talking about is that sometimes people do everything they can so that the system doesn’t change.

https://managementblog.org/2025/08/27/is-it-the-people-or-the-system/



Bye for now!

Friday, 12 September 2025

KDE today announces the release of KDE Frameworks 6.18.0.

This release is part of a series of planned monthly releases making improvements available to developers in a quick and predictable manner.

New in this version

Baloo
  • Fix casing of ecm_generate_headers PREFIX arg value. Commit.
Breeze Icons
Extra CMake Modules
  • Ecm_generate_headers: add docs when target include dirs need no extra setup. Commit.
  • [KDEInstallDirsCommon] Add missing RUNSTATEDIR. Commit.
  • [ECMFeatureSummary] Add missing documentation. Commit.
  • Allow to use unity builds for qmlcachegen files. Commit.
  • ECMSetupQtPluginMacroNames: add MACRO_NAMES arg, phase out JSON_* ones. Commit.
  • KDECompilerSettings.cmake - enable warning 5249 when compiling with MSVC. Commit.
  • ECMAddAppIcon: Fix empty ELSEIF warnings w/ >=CMake-4.1.0. Commit.
  • Move away from removed docutils error handling helpers. Commit.
Framework Integration
  • Turn on popups for device notifications. Commit.
KArchive
  • Tests: Merge ossfuzz test functions into one. Commit.
  • 7z: Make sure seqInStream/coderIndex are initialized. Commit.
  • 7z: Fix crash on malformed files. Commit.
  • 7z: Fix crash on malformed files. Commit.
  • Kzip: Add another test for extra headers. Commit.
  • Kzip: Replace open coded 16bit uint reading with common method. Commit.
  • Kzip: Replace last occurences of open coded 32bit uint reading. Commit.
  • 7z: Fix crash on malformed files. Commit.
  • 7z: Fix index out of range in QList::at on malformed files. Commit.
  • 7z: Fix index out of range in QList::at on malformed files. Commit.
  • 7z: Fix index out of range in QList::at on malformed files. Commit.
  • KZipFileEntry::data: Don't try to extract data of files that are too big. Commit.
  • 7z: Fix crash on malformed files. Commit.
  • 7z: Fix crash on malformed files. Commit.
  • 7z: Fix crash on malformed files. Commit.
  • 7z: Return false instead of assert in malformed files. Commit.
  • Move fuzz target and build script into KArchive repository. Commit.
  • 7zip: Fix crash in malformed files. Commit.
KAuth
  • ExecuteJob: Don't warn if application has no windows at all. Commit.
  • Fix build when KAUTH_BUILD_CODEGENERATOR_ONLY=ON. Commit.
  • ExecuteJob: Use focusWindow or any window as parent window. Commit.
KBookmarks
  • Bump kf ecm_set_disabled_deprecation_versions. Make sure that it compiles fine without kf 6.17 deprecated methods. Commit.
KCalendarCore
  • It compiles fine without qt 6.10 deprecated methods. Commit.
  • Src/memorycalendar.cpp - fix an unsed-comparison warning. Commit.
  • Drop unneeded expl. addition of src/build dirs to lib's build includes if. Commit.
  • Ci: require passing tests on all platforms. Commit.
KCMUtils
  • KCModuleQml: Fix back button for kcms with pinned columns. Commit.
  • Enable qmllint in CI. Commit.
  • Bump kf ecm_set_disabled_deprecation_versions. Make sure that it compiles fine without kf 6.17 deprecated methods. Commit.
  • KCModuleData: Add auxiliaryAction and isRelevant. Commit.
KCodecs
  • Remove unused function. Commit.
  • Move fuzz target and build script into KCodecs repository. Commit.
  • KEmailAddress::splitAddress: fewer allocations. Commit.
  • Ci: require passing tests on all platforms. Commit.
  • Fix quoted-printable with msvc compiler. Commit.
  • Add cppcheck and json validation. Commit.
KColorScheme
  • KColorSchemeManager: Update internal state before applying palette. Commit.
  • Bump kf ecm_set_disabled_deprecation_versions. Make sure that it compiles fine without kf 6.17 deprecated methods. Commit.
KConfig
  • Fix unit test input data. Commit.
  • Fix clazy misc small issues in autotests. Commit.
  • Fix/silence clazy suggestions about using static regex. Commit.
  • KWindowCondig: Avoid detaching of temporary container. Commit.
  • Avoid using size check and implicit 0 to false conversion to check for empty container. Commit.
  • Silence clazy warning about non-pod-static where it makes no sense. Commit.
  • KStandardActions: Disable formatting for one statement to have normalized connect signature. Commit.
  • Use -> operator directly instead of calling data on QPointer member. Commit.
  • Register KConfigSkeleton to QML. Commit.
  • Convert QLatin1String to QLatin1Char. Commit.
  • Use QStandardPaths::GenericStateLocation on all platforms. Commit.
  • Prevent KSharedConfig::openStateConfig() from opening configs in ~/.local/state in tests. Commit.
  • It compiles fine without qt 6.10 deprecated methods. Commit.
KConfigWidgets
  • KLanguageButton: Propagate tooltip to child button. Commit.
  • Bump kf ecm_set_disabled_deprecation_versions. Make sure that it compiles fine without kf 6.17 deprecated methods. Commit.
KCoreAddons
  • KUrlMimeData: More const. Commit.
  • Add context parameter to QTimer::singleShot. Commit.
  • Silence clazy warning about non-pod-static in qml plugin. Commit.
  • Avoid using size check and implicit 0 to false conversion to check for empty container. Commit.
  • Use newer simpler ecm_setup_qtplugin_macro_names API. Commit.
  • Add AFS as remote file system. Commit. Fixes bug #375623
  • Add KSharedDataCache::remove(). Commit.
  • Expose KTextToHTML to QML. Commit.
KDav
  • Bump kf ecm_set_disabled_deprecation_versions. Make sure that it compiles fine without kf 6.17 deprecated methods. Commit.
KDeclarative
  • Kquickcontrols: Fix mistakes in KeySequenceItem.pattern migration. Commit.
  • Enable qmllint in CI. Commit.
KFileMetaData
  • [PlaintextExtractor] Use explicitly sized type for 32bit compatibility. Commit.
  • Fix casing of ecm_generate_headers PREFIX arg value. Commit.
  • Dump test: remove unused include directory. Commit.
  • [Exiv2Extractor] Fix compatibility with Exiv2 0.27.x. Commit.
  • [Exiv2Extractor] Add support for subsecond timestamps and timezones. Commit.
  • [Exiv2Extractor] Add dedicated parser for Exif compound dates. Commit.
  • Add tests for internal DateTime parser helper. Commit.
  • [Exiv2ExtractorTest] Fix incorrect QTime initialization. Commit.
KGlobalAccel
  • Properly qualify enum usage. Commit.
KGuiAddons
  • Allow shift modifier for TouchpadOff to support Copilot key. Commit.
KHolidays
  • Changed Child's Health Day to the first Monday in October. Commit.
  • Indian Independence Day isn't recognized before 1947. Commit. Fixes bug #460343
  • Drop unneeded expl. addition of src/build dirs to lib's build includes if. Commit.
KI18n
  • Define string as local variable and do not call .data() to put it in string view. Commit.
  • Fix clazy warnigns about detaching containers. Commit.
KIconThemes
  • Bump kf ecm_set_disabled_deprecation_versions. Make sure that it compiles fine without kf 6.17 deprecated methods. Commit.
KImageformats
  • Dds: Fix assert when reading broken data. Commit.
  • Unified maximum pixel value for large image plugins. Commit.
  • Removed the conversion of the entire image to a compatible format when saving from the PCX, PIC, and RGB plugins. Commit.
  • TGA: Support for TGA specification 2.0. Commit.
  • Fix possible buffer overflow on corrupted images. Commit.
  • TGA: memory optimizations and native grayscale support. Commit.
  • Move fuzz target and build script into KImageFormats repository. Commit.
  • IFF: add support for a different palette per line. Commit.
  • IFF: Fix possible undefined-shift. Commit.
  • RAW: Error out on malformed files. Commit.
  • IFF: add support for RGBN/RGB8 image data and CAT chunk. Commit.
  • ILBM 64-bit extension support. Commit.
  • Fix oss-fuzz compilation error. Commit.
  • IFF: Fix halfbride detection, 1-bitplane colors and PBM line size calculation. It also ignore ZBuffer flag on Maya images (like Photoshop does) amd adds CMYK palette support. Commit.
KIO
  • KDirModel: use moveAs instead of Rename when editing file name. Commit. Fixes bug #407509
  • Kfileitem: mimeComment for .desktop should not be their 'Comment'. Commit. Fixes bug #382325
  • Guard mount point lookup. Commit. Fixes bug #508185
  • KUrlRequester: Announce preceding label when focused. Commit.
  • Fix KI18n find_dependency call in KF6KIOConfig. Commit.
  • [previewjob] Fix another QStringBuilder being passed across threads. Commit.
  • Don't pass a QStringBuilder to another thread. Commit.
  • Filepreviewjob: Move saving of thumbnails to a new thread. Commit.
  • Filepreviewjob: Load cached thumbnail in a worker thread. Commit.
  • Filepreviewjob: Move generic preamble out of cache lookup method. Commit.
  • Filepreviewjob: move thumbnail validity check to a new method. Commit.
  • KUrlComboBox::setUrls(): remove check for file existence. Commit. Fixes bug #507598
  • [kfilewidget] Always show bookmarks action. Commit.
  • Allow building KIOCore and KIOGui without KIOWidgets. Commit.
  • KCoreDirLister: Avoid uneeded mimetype lookup from name. Commit.
  • Add QTBUG reference. Commit.
  • Correct SPDX formatting. Commit.
  • Add autotest and separate request type check. Commit.
  • Avoid "Content-Length: 0" header for empty GET and HEAD requests. Commit. Fixes bug #507523
  • PreviewJob: Move plugin check to FilePreviewJob. Commit.
  • [kfilefiltercombo] Remove unneeded variable. Commit.
  • [kfilewidget] Rename slotMimeFilterChanged. Commit.
  • [kfilefiltercombo] Rename variable for clarity. Commit.
  • [kfilefiltercombo] Remove duplicate validity check. Commit.
  • Knewfilemenu: Enable word wrap for instruction label. Commit.
  • KDynamicJobTracker: Register with KInhibitionJobTracker. Commit.
  • Revert "core: Add infrastructure for inhibiting suspend in jobs". Commit.
  • Revert "CopyJob: Inhibit suspend during copy operation". Commit.
  • KFileFilterCombo: Fix initial delay in applying filter in KFileWidget. Commit. See bug #508026
  • PreviewJob: Allow parallel preview creation. Commit.
Kirigami
  • PageRow: Fix Breadcrumb mode. Commit.
  • Fixes various typos. Commit.
  • [ListItemDragHandle] Bugfix: Auto-scroll upwards not working due to rounding real values to integers. Commit.
  • PageRow: Fix sidebar visibility in certain cases. Commit.
  • [NavigationTabBar] Avoid divide by zero. Commit.
  • ToolbarLayout: immediately perform layout at startup. Commit.
  • ColumnViwe: typo: connect -> disconnect. Commit.
  • ToolBarPageHeader: Quiet some warnings. Commit.
  • Replace Qt.application with more modern alternative. Commit.
  • Don't relayout during item destruction. Commit. Fixes bug #507483
  • NavigationTabBar Documentation Update. Commit.
  • PageRow: Better back button behavior. Commit.
  • ColumnView: fix setCurrentIndex when leadingVisiblePage is pinned. Commit.
  • [SearchField] Allow multiple find shortcuts. Commit.
  • [ActionTextField] Allow multiple focus shortcuts. Commit.
  • Remove debug log. Commit.
  • Ensure that formlayout content order is always correct. Commit. Fixes bug #507738
  • Reapply "Immediately relayout after creating FormLayout / adding elements to it". Commit.
  • Enable qmllint in CI. Commit.
  • PromptDialog: Fix warning on enum usage. Commit.
  • PageRow: Fix typo on the documentation. Commit.
  • Fixes for pinned pages usage. Commit.
  • Drop unneeded expl. addition of build dir to libs' build includes interface. Commit.
  • PlatformTheme: Do not emit when the object is still constructing. Commit.
  • Parent LanguageChangeEventFilter to qApp. Commit.
  • [shadernode] Fix leaking attributeSet. Commit.
  • ActionTextField: documentation: add note about action tooltip. Commit.
  • ColumnView: focus the column is being clicked. Commit.
KJobWidgets
  • Bump kf ecm_set_disabled_deprecation_versions. Make sure that it compiles fine without kf 6.17 deprecated methods. Commit.
  • Add KInhibitionJobTracker. Commit.
  • Move DBus interface XML to dbus subdirectory. Commit.
KNewStuff
  • Enable qmllint in CI. Commit.
  • Drop unneeded expl. addition of build dir to libs' build includes interface. Commit.
  • Bump kf ecm_set_disabled_deprecation_versions. Make sure that it compiles fine without kf 6.17 deprecated methods. Commit.
KNotifications
  • Dont update id if server returns an error. Commit.
  • KNotification: Use std::as_const in some more cases. Commit.
  • NotifyByPopup: Remove trivial variable that is never used. Commit.
  • Bump kf ecm_set_disabled_deprecation_versions. Make sure that it compiles fine without kf 6.17 deprecated methods. Commit.
KPackage
  • Drop unneeded expl. addition of build dir to libs' build includes interface. Commit.
  • Don't generate appstream data for packages by default. Commit.
KPeople
  • Drop unneeded expl. addition of build dir to libs' build includes interface. Commit.
KPTY
  • Bump kf ecm_set_disabled_deprecation_versions. Make sure that it compiles fine without kf 6.17 deprecated methods. Commit.
KQuickCharts
  • Enable qmllint in CI. Commit.
  • Fix legends height changing when the value changes. Commit.
KRunner
  • Use -> operator directly instead of calling data on QPointer member. Commit.
  • Make test more stable. Commit.
  • Drop unneeded addition of build dirs to lib's build includes interface. Commit.
  • Bump kf ecm_set_disabled_deprecation_versions. Make sure that it compiles fine without kf 6.17 deprecated methods. Commit.
  • Remove min letter count example. Commit. See bug #490972
KService
  • Bump kf ecm_set_disabled_deprecation_versions. Make sure that it compiles fine without kf 6.17 deprecated methods. Commit.
KSVG
  • Drop unneeded expl. addition of build dir to libs' build includes interface. Commit.
  • Workaround plasmashell crashing due to new Svg::colorOverridesChanged() signal. Commit.
  • Fix FrameSvg not refreshing when color scheme changes. Commit. Fixes bug #503671
KTextEditor
  • Add kate modeline autocompletion. Commit.
  • Ensure we only handle decorations that set foreground color. Commit. Fixes bug #507542
  • Remove unused includes. Commit.
  • Remove unused method. Commit.
  • Dont store KateRenderer in KateLineLayout. Commit.
  • Dont store Kate::TextLine in KateLineLayout. Commit.
  • Multicursor: Fix performance issues when deleting lot of lines. Commit.
  • Fix selection drawing for block selection. Commit. Fixes bug #508522
  • Dont use SmallestReadableFont, it makes the text hard to read. Commit.
  • Fix QFormLayoutPrivate::setItem: Cell (1, 1) already occupied. Commit.
  • Readded toggle bookmark action in context menu. Commit.
  • Removed stateful bookmark toggle action. Commit.
  • Added stateless toggle bookmark action. Commit.
KUnitConversion
  • Drop unneeded addition of build dirs to lib's build includes interface. Commit.
KUserFeedback
  • Drop unneeded expl. addition of src/build dirs to libs' build includes if. Commit.
  • Drop KDE_INSTALL_INCLUDEDIR from the public libraries' interfaces. Commit.
KWallet
  • Add service file for portal DBus service. Commit. Fixes bug #508870
  • Bump kf ecm_set_disabled_deprecation_versions. Make sure that it compiles fine without kf 6.17 deprecated methods. Commit.
  • Fix compile kwallet using kde-builder. Commit. Fixes bug #485564
KWindowSystem
  • Simplify NETWinInfo::desktop when in WindowManager role. Commit.
KXMLGUI
  • Mention distribution method in AboutDialog. Commit.
  • Bump kf ecm_set_disabled_deprecation_versions. Make sure that it compiles fine without kf 6.17 deprecated methods. Commit.
Network Manager Qt
  • Fix: Add setManaged interface. Commit.
  • Drop unneeded expl. addition of build dir to libs' build includes interface. Commit.
Purpose
  • Fix i18n issues. Commit.
  • Add missing CI dependency. Commit.
  • Enable qmllint in CI. Commit.
  • Drop unneeded expl. addition of build dir to libs' build includes interface. Commit.
  • AlternativesView: Sort items when displaying them. Commit.
  • Menu: Sort actions by the display text before creating the actions. Commit.
QQC2 Desktop Style
  • Switch: Wrap long text. Commit.
  • Enable qmllint in CI. Commit.
  • Dialog: hide in-window title component when dialog is Window type. Commit.
  • Dialog: remove corners and border when popup is Window type. Commit.
  • Remove baselineOffset binding from TabButton. Commit.
  • PlasmaDesktopTheme: Do not emit changes whilst constructing. Commit.
  • Fix small binding loop. Commit.
  • Combobox: make comment accurate. Commit.
Solid
  • Drop unneeded expl. addition of build dir to libs' build includes interface. Commit.
Syndication
  • Drop unused expl. addition of root build dir to lib's build includes if. Commit.
  • Drop unneeded expl. addition of src/build dirs to lib's build includes if. Commit.
Syntax Highlighting
  • Yaml.xml: Bump version. Commit.
  • Yaml.xml: Associate metadata with YAML. Commit.
  • Change the Breeze Light MarkWarning color to orange. Commit.
  • Nix: Fix highlighting for assert expression. Commit.
  • Nix: Update name. Commit.
  • Typst: Update name. Commit.
  • Theme_contrast_checker.py: show italic, underline, strike through and background color specified in a styles. Commit.
  • Fix themes with two adjacent color in CSV syntaxes. Commit. Fixes bug #477042
  • Increase version in markdown.xml. Commit.
  • Change context identifier for toml and ini code blocks in markdown files. Commit.
  • Add toml/desktop/ini code block support to markdown.xml. Commit.
  • Cmake.xml: updates for CMake 4.1. Commit.
  • Remove not used reference. Commit.
  • Adjust references to added keywords. Commit.
  • Edit crystal.xml: added missing keywords (enum and some C-related ones). Commit.
Threadweaver
  • QVERIFY -> QCOMPARE. Commit.
  • Drop unneeded expl. addition of build dir to lib's build includes interface. Commit.