Skip to content

Friday, 5 January 2024

Let’s go for my web review for the week 2024-01. First one of 2024, Happy New Year to all!


In 2024, please switch to Firefox – Roy Tanck

Tags: tech, mozilla, foss, web

Alright, it’s 2024… Looking for a New Year Resolution? This is definitely the one you should contemplate! Maybe also prepare your switch to Plasma 6, but different story. 😉

https://roytanck.com/2023/12/23/in-2024-please-switch-to-firefox/


 The Internet Is About to Get Weird Again

Tags: tech, web, culture, social-media

Very inspiring article. I really wish we’ll indeed see more and more weird and creative websites. People apparently feels uneasy in their current social media jails, the time is ripe to leap in the unknown again.

https://www.rollingstone.com/culture/culture-commentary/internet-future-about-to-get-weird-1234938403/


EU CRA: What does it mean for open source? - Bert Hubert’s writings

Tags: tech, foss, law

The current compromise might not be as bad as anticipated. Some things could be improved still. The community needs to be involved in the process.

https://berthub.eu/articles/posts/eu-cra-what-does-it-mean-for-open-source/


Birb + Fossil: An RSS Revival? - Tim Kellogg

Tags: tech, fediverse, rss, ai, nlp

Indeed there are a few trends at play right now which lead to RSS being in use again. I can only hope it’ll keep growing.

https://timkellogg.me/blog/2024/01/03/birb


How bad are search results? Let’s compare Google, Bing, Marginalia, Kagi, Mwmbl, and ChatGPT

Tags: tech, search, web

This looks like now is the time for smaller search engines to shine. Clearly the dominant ones are not doing a really good job anymore.

https://danluu.com/seo-spam/


Tesla blamed drivers for failures of parts it long knew were defective

Tags: tech, tesla, automotive, safety

The results of this investigation are actually super scary… Even if you don’t own one, those are in our streets. In any case it is a clear statement that you can’t and shall not run an automotive company like a startup…

https://www.reuters.com/investigates/special-report/tesla-musk-steering-suspension/


The I in LLM stands for intelligence | daniel.haxx.se

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

When bug bounty programs meet LLM hallucinations… developer time is wasted.

https://daniel.haxx.se/blog/2024/01/02/the-i-in-llm-stands-for-intelligence/


How I forked SteamOS for my living room PC — iliana.fyi

Tags: tech, valve, foss, linux, system

Funny reverse engineering of the latest SteamOS to use it in a different context. Give some information on their system design.

https://iliana.fyi/blog/build-your-own-steamos-updates/


Why I’m skeptical of low-code - Nick Scialli | Senior Software Engineer

Tags: tech, low-code

Proper word of caution. Those tools ain’t necessarily bad… but know what the limits will be.

https://nick.scialli.me/blog/why-im-skeptical-of-low-code/


How Standard Ebooks serves millions of requests per month with a 2GB VPS; or, a paean to the classic web - Alex Cabal

Tags: tech, complexity, craftsmanship, dependencies, php, web

Nice ode to simplifying web projects, to great effects. You can go a long way serving millions of requests if you choose your tools properly.

https://alexcabal.com/posts/standard-ebooks-and-classic-web-tech


A Closer Look to a Key-Value Storage Engine | Yihang’s Blog

Tags: tech, system, design, architecture, databases

Very interesting exploration of the design choices behind the creation of a key value storage engine.

https://silhding.github.io/2021/08/20/A-Closer-Look-to-a-Key-Value-Storage-Engine/


SQLALchemy vs Django ORM | Alexey Evseev

Tags: tech, databases, python, orm, django

Overview of the differences in behavior between the two most popular ORMs in the Python ecosystem. This shows interesting different design options for such things.

https://st4lk.github.io/en/blog/2023/12/09/sqlalchemy-vs-django-orm/


The ugrep file pattern searcher

Tags: tech, tools, command-line

Looks like another nice grep alternative. This one keeps its command line interface compatible with grep which is nice, not the case for other alternatives and that turns out to be my main gripe with them.

https://ugrep.com/


Container to WASM converter

Tags: tech, docker, webassembly

This makes for quite a few emulation layers stacked on each other. Still this is an interesting experiment.

https://github.com/ktock/container2wasm


Profilerpedia

Tags: tech, profiling

Nice reference for the tools available to profile software.

https://profilerpedia.markhansen.co.nz/


Occupancy explained

Tags: tech, amd, gpu, shader, performance

A very precise and thorough article about GPU occupancy. What it is, how it relates to perceived performances, it’s potentisl relationship with cache thrashing and the tools you can use to measure it on AMD GPUs.

https://gpuopen.com/learn/occupancy-explained/


Speed up your code: don’t pass structs bigger than 16 bytes on AMD64 · GitHub

Tags: tech, c++, assembly, performance

Not necessarily a practical advice in most of our daily code. Still this exhibits interesting low level details about argument passing. Might come in handy in a few cases, to be kept in mind.

https://gist.github.com/FeepingCreature/5dff669aad380a123b15659e195fb96c


Ambient Co-presence

Tags: tech, web, design

Good food for thought regarding shared presence on the web. A few good ideas in the design space. Obviously very web centric, I wonder what we could do on the desktop with shared documents for instance.

https://maggieappleton.com/ambient-copresence


The value of canonicity - Building Nubank

Tags: tech, engineering, management, developer-experience

Nice writeup about the benefits of homogeneity in an engineering organization. It also shows how it is a balancing act though, since you need experiments to happen in a controlled way for evolution to still happen.

https://building.nubank.com.br/the-value-of-canonicity/



Bye for now!

Thursday, 4 January 2024

With the rise of generative AI, businesses are trying to figure out how they can implement it in their environment to speed up one process or another. Perhaps the best place to start looking are existing pain points in any process, then working through ideas of how AI can apply to the situation.

(This blog post was written by a Real Human 😜)

Dall-E 3 image prompt: A futuristic, intelligent robot with a sleek design sitting at a computer, analyzing code diffs on a screen. The robot has a friendly, approachable appearance, and the screen shows complex code with highlighted sections. The environment suggests a modern, high-tech office space.

Tuesday, 2 January 2024

I have now been playing games only on Linux for a year, and it has been great.

With the GPU shortage, I had been waiting for prices to come back to reasonable levels before buying a new GPU. So far, I had always bought NVIDIA GPUs as I was using Windows to run games and the NVIDIA drivers had a better “reputation” than the AMD/Radeon ones.

With Valve’s Proton seriously taking off thanks to the Steam Deck, I wanted to get rid of the last computer in the house that was running Microsoft Windows, that I had kept only for gaming.

But the NVIDIA drivers story on Linux had never been great, especially on distributions that move kernel versions quickly to follow upstream releases like Fedora. I had tried using the NVIDIA binary drivers on Fedora Kinoite but quickly ran into some of the issues that we have listed in the docs.

At the time, the Universal Blue project did not exist yet (Jorge Castro started it a bit later in the year), otherwise I would have probably used that instead. If you need NVIDIA support today on Fedora Atomic Desktops (Silverblue, Kinoite, etc.), I heavily recommend using the Universal Blue images.

Hopefully this will be better in the future for NVIDIA users with the work on NVK

So, at the beginning of last year (January 2023), I finally decided to buy an AMD Radeon RX 6700 XT GPU card.

What a delight. Nothing to setup, fully supported out of the box, works perfectly on Wayland. Valve’s Proton does wonders. I can now play on my Linux box all the games that I used to play on Windows and they run perfectly. Just from last year, I played Age of Wonders 4 and Baldur’s Gate 3 without any major issue, and did it pretty close to the launch dates. Older titles usually work fairly well too.

Sure, some games require some little tweaks, but it is nothing compared to the horrors of managing a Windows machine. And some games require tweaks on Windows as well (looking at you Cyberpunk 2077). The best experience is definitely with games bought on Steam which usually work out of the box. For those where it is not the case, protondb is usually a good source to find the tweaks needed to make the games work. I try to keep the list of tweaks I use for the games that I play updated on my profile there.

I am running all of this on Fedora Kinoite with the Steam Flatpak. If you want a more console-like or Steam Deck-like experience on your existing computers, I recommend checking out the great work from the Bazzite team.

Besides Steam, I use Bottles, Cartridge and Heroic Games Launcher as needed (all as Flatpaks). I have not looked at Origins or Uplay/Ubisoft Connect games yet.

According to protondb, the only games from my entire Steam library that are not supported are mostly multiplayer games that require some specific anti-cheat that is only compatible with Windows.

I would like to say a big THANK YOU to all the open source graphics and desktop developers out there and to (in alphabetical order) AMD, Collabora, Igalia, Red Hat, Valve, and other companies for employing people or funding the work that makes gaming on Linux a reality.

Happy new year and happy gaming on Linux!

Cleaning up KDE’s metadata - the little things matter too

Lots of my KDE contributions revolve around plugin code and their metadata, meaning I have a good overview of where and how metadata is used. In this post, I will highlight some recent changes and show you how to utilize them in your Plasma Applets and KRunner plugins!

Applet and Containment metadata

Applets (or Widgets) are one of Plasma’s main selling points regarding customizability. Next to user-visible information like the name, description and categories, there is a need for some technical metadata properties. This includes X-Plasma-API-Minimum-Version for the compatible versions, the ID and the package structure, which should always be “Plasma/Applet”.

For integrating with the system tray, applets had to specify the X-Plasma-NotificationArea and X-Plasma-NotificationAreaCategory properties. The first one says that it may be shown in the system tray and the second one says in which category it belongs. But since we don’t want any applets without categories in there, the first value is redundant and may be omitted! Also, it was treated like a boolean value, but only "true" or "false" were expected. I stumbled upon this when correcting the types in metadata files.
This was noticed due to preparations for improving the JSON linting we have in KDE. I will resume working on it and might also blog about it :).

What most applets in KDE specify is X-KDE-MainScript, which determines the entrypoint of the applet. This is usually “ui/main.qml”, but in some cases the value differs. When working with applets, it is confusing to first have to look at the metadata in order to find the correct file. This key was removed in Plasma6 and the file is always ui/main.qml. Since this was the default value for the property, you may even omit it for Plasma5.
The same filename convention is also enforced for QML config modules (KCMs).

What all applets needed to specify was X-Plasma-API. This is typically set to "declarativeappletscript", but we de facto never used its value, but enforced it being present. This was historically needed because in Plasma4, applets could be written in other scripting languages. From Plasma6 onward, you may omit this key.

In the Plasma repositories, this allowed me to clean up over 200 lines of JSON data.

metadata.desktop files of Plasma5 addons

Just in case you were wondering: We have migrated from metadata.desktop files to only metadata.json files in Plasma6. This makes providing metadata more consistent and efficient. In case your projects still use the old format, you can run desktoptojson -i pathto/metadata.desktop and remove the file afterward.
See https://develop.kde.org/docs/plasma/widget/properties/#kpackagestructure for more detailed information. You can even do the conversion when targeting Plasma5 users!

Default object path for KRunner DBus plugins

Another nice addition is that “/runner” will now be the default object path. This means you can omit this one key. Check out the template to get started: https://invent.kde.org/frameworks/krunner/-/tree/master/templates/runner6python. DBus-Runners that worked without deprecations in Plasma5 will continue to do so in Plasma6! For C++ plugins, I will make a porting guide like blog post soonish, because I have started porting my own plugins to work with Plasma6.


Finally, I want to wish you all a happy and productive new year!

Monday, 1 January 2024

Tellico 3.5.3 is available, with a few minor clean-ups.

Improvements and Bug Fixes

  • Improved some entry matching heuristics when updating from other sources.
  • Updated the author search for the Open Library data source.
  • Updated Kino-Teatr data source.
  • Fixed compilation for versions of KDE Frameworks < 5.94.
  • Fixed layout bug in Fancy template for custom collections with no image.

Saturday, 30 December 2023

This is a lighter month due to holidays (and also I’m trying not to burn out), but I tried to fit in a bit of KDE anyway. It’s all bugfixes anyway because of the feature freeze!

Not mentioned is a bunch of really boring busywork like unbreaking the stable branches of Gear applications due to the CI format changing.

Tokodon

[Bugfix] Fixed a bunch of papercuts with the Android build, and the new nightlies should be appearing in the F-Droid repository soon! It’s mostly adding missing icons and making sure it looks good in qqc2-breeze-style (the style we use on Android and Plasma Mobile.) [24.02]

[Bugfix] Fixed Akkoma and Pleroma tags not being detected correctly, they should open in Tokodon instead of your web browser again! [24.02]

Plasma

[Bugfix] KScreenLocker CI now runs supported tests, see the KillTest fixes and pamTest fix. Failing tests also make the pipeline visibly fail, as it should. (Unfortunately, the pipeline as of writing fails to due some unrelated regression?) [6.0]

[Bugfix] The lockscreen greeter now handles even the fallback theme failing, and display the “please unlock using loginctl” message instead of a black screen. [6.0]

[Bugfix] Improves the QtQuickControls style selection mechanism to work around a possible regression in Qt6. This should stop applications from mysteriously not opening in the rare (but unsupported) cases where our official styles aren’t installed/loading. [6.0]

Kirigami

[Bugfix] Fixed a bunch of TextArea bugs that affected mobile form factors, such as Plasma Mobile and Android. This is mostly for Tokodon (because we abuse TextAreas a lot in scrolling content) but it can help other applications too! The selectByMouse property is now respected, the cursor handles should show up less. [6.0]

[Bugfix] Invisible MenuItems in qqc2-breeze-style are collapsed like in qqc2-desktop-style. Mobile applications should no longer have elongated menus with lots of blank space! [6.0]

[Bugfix] You can finally right-click with a touchpad in qqc2-desktop-style TextFields again! This bug has been driving me up a wall when testing our Qt6 stuff. [6.0]

[Feature] When the Kirigami theme plugin fails to load, the error message will soon be a bit more descriptive. This should make it easier for non-developers to figure out why Kirigami applications don’t look correct. [6.0]

Android

[Bugfix] Fixed KWeather not launching on Android because it needed QApplication. I didn’t know QtCharts is QWidgets-based! [24.02]

I also went around and fixed up a bunch of other mobile applications with Android contributions too small to mention. Applications like Qrca, Kongress, etc.

NeoChat

[Bugfix] Prevent the NeoChat notification daemon from sticking around forever although that should rarely happen. [24.02]

Outside of KDE

Nagged for a new QtKeychain release due to a critical bug that would cause applications to never open KWallet5. Please also nag your distributions to package 0.14.2 soon! Anything using QtKeychain 0.14.1 or below won’t work in Plasma 6. This doesn’t affect people in the dev session, because QtKeychain should be built from git.

Helping the Gentoo KDE Team with packaging Plasma 6 and KDE Gear 6. I managed to update my desktop to Plasma 6 and submitted fixes to get it closer to working. I also added Arianna, PlasmaTube and MpvQt packages.

Friday, 29 December 2023

Let’s go for my web review for the week 2023-52.


Drivers of social influence in the Twitter migration to Mastodon | Scientific Reports

Tags: tech, social-media, sociology, psychology, community, fediverse, twitter

Despite understandable limitations, this studies has a few interesting findings on how communities can more easily switch platforms (in this case from Twitter to Mastodon). At least one is a bit counter-intuitive.

https://www.nature.com/articles/s41598-023-48200-7


Substack says it will not remove or demonetize Nazi content - The Verge

Tags: tech, moderation, social-media

Another platform failing at proper moderation…

https://www.theverge.com/2023/12/21/24011232/substack-nazi-moderation-demonetization-hamish-mckenzie


How Big is YouTube? - Ethan Zuckerman

Tags: tech, social-media, google, research

An important question for proper statistics about the content itself. Surprisingly harder to get an answer to it than one would think.

https://ethanzuckerman.com/2023/12/22/how-big-is-youtube/


Tags: tech, ai, machine-learning, gpt, copyright, law

It was only a question of time until we’d see such lawsuits appear. We’ll see where this one goes.

https://www.theverge.com/2023/12/27/24016212/new-york-times-openai-microsoft-lawsuit-copyright-infringement


The growing energy footprint of artificial intelligence - ScienceDirect

Tags: tech, ai, machine-learning, gpt, economics, energy, ecology

Very interesting paper about the energy footprint of the latest trend in generator models. The conclusion is fairly clear: we should think twice before using them.

https://www.sciencedirect.com/science/article/pii/S2542435123003653#fig1


More than calculators: Why large language models threaten learning, teaching, and education | by Amy J. Ko | Bits and Behavior | Dec, 2023 | Medium

Tags: tech, ai, machine-learning, gpt, school, learning, education

When underfunded schools systems preaching obedience and conformity meet something like large language models, this tips over the balance enough that no proper learning can really happen anymore. Time to reform our school systems?

https://medium.com/bits-and-behavior/more-than-calculators-why-large-language-models-threaten-public-education-480dd5300939


You don’t need analytics on your blog

Tags: tech, blog, self-hosting, attention-economy

Definitely true… never had use for more than the server logs for understanding the traffic on my blog. No need to invade the privacy of people through their browser.

https://blog.yossarian.net/2023/12/24/You-dont-need-analytics-on-your-blog


Using Qt for Mobile in 2023 | Cameron Gaertner | Software Developer

Tags: tech, mobile, qt, android, ios

The experience is still not great on iOS and Android. This is in part due to the platforms design though, this still make Qt a great fit when you control the platform like for Plasma Mobile. For less friendly platforms this still limits the use to cases where you already have quite some Qt code. Still the same situation than a few years ago.

https://camg.me/qt-mobile-2023/


To Type or Not to Type: Quantifying Detectable Bugs in JavaScript

Tags: tech, javascript, type-systems, bug, quality

Interesting study, the amount of bugs which could have been prevented by the introduction of static typing in Javascript code bases is definitely impressive (15% is not a small amount in my opinion).

https://discovery.ucl.ac.uk/id/eprint/10064729/1/typestudy.pdf


Why large companies and fast-moving startups are banning merge commits

Tags: tech, git, version-control

It looks like git workflows using rebase are becoming the norm. People are actively trying to avoid merge commits in their repository history. Tooling support could be a bit better though.

https://graphite.dev/blog/why-ban-merge-commits


rscss - Styling CSS without losing your sanity

Tags: tech, css

Interesting guidelines for organizing CSS. This should avoid making things too much of a mess.

https://ricostacruz.com/rscss/


How to (and how not to) fix color banding

Tags: tech, graphics

Exploration of the causes of color banding and how to work around them.

https://blog.frost.kiwi/GLSL-noise-and-radial-gradient/


So You Want to Optimize Your Code?

Tags: tech, mozilla, observability, telemetry, profiling, optimization, performance

Very nice collection of stories from the trenches of Firefox development. Lots of lessons learned to unpack about optimizing for the right thing, tooling, telemetry and so on.

https://yoric.github.io/post/so-you-want-to-optimize-your-code/


John the Toolmaker

Tags: tech, tools, craftsmanship, developer-experience

It’s indeed important to hone your tools as well. Even though most things are not blocked due to tools, the right ones when well designed can make things easier.

https://two-wrongs.com/john-the-toolmaker


On chains and complex systems – Surfing Complexity

Tags: tech, complexity, reliability

Word of caution on how we tend to reason about complex systems. They don’t form a chain but a web, and that changes everything to understand how they can break.

https://surfingcomplexity.blog/2023/12/23/on-chains-and-complex-systems/


Cold-blooded software

Tags: tech, dependencies, maintenance

This is an interesting metaphor. I’ll try to keep it in mind.

https://dubroy.com/blog/cold-blooded-software/


Beyond Technical Aspects How Do Community Smells Influence the Intensity of Code Smells?

Tags: tech, community, smells, organization, quality

This study does a good job looking at the impact of community smells over the presence of code smells. This is an excellent reminder that the organization influences greatly the produced code.

https://repository.tudelft.nl/islandora/object/uuid%3A426a340b-83a6-480b-bbac-0d711092c704/datastream/OBJ/download


The LinkedIn Developer Productivity and Happiness Framework

Tags: tech, linkedin, developer-experience, metrics, productivity

Interesting framework. I wouldn’t take everything at face value, but this looks like a good source of inspiration to design your own.

https://linkedin.github.io/dph-framework/


Explorers are bad leaders | Derek Sivers

Tags: tech, management, leadership

A bit too archetypal for my taste but there’s some truth to it. If you lean towards “explorer” (I think I do), it’s hard to be also a leader. Now you could be aware of your flaws and put tools in place to compensate for them when you need lead.

https://sive.rs/exled



Bye for now! And see you in 2024!

Wednesday, 27 December 2023

The ownCloud product Infinite Scale is going to be released in version five soon. The latest stable version is 4.0.5 and I am sure everybody checked it out already and is blown away by it’s performance, elegance and ease of use.

No, not yet?

Ok, well, in that case, here comes rescue: With the little script described here, it becomes really easy to start Infinite Scale to check it out on your computer. It makes it really easy and quick for you, without Linux super admin powers whatsoever.

To use it, you just need to open a terminal on your machine and cd into a directory somewhere in your home where you can afford to host some bytes.

Without further preparation, you type the following command line (NOT as user root please):

curl -L https://owncloud.com/runocis.sh | /bin/bash

What it does is that it automatically pulls the latest stable version of Infinite Scale from the official download server of ownCloud onto your computer. For that, it creates a configuration and a start script, and starts the server. The script detects the platform on which your’re running to download the right binary version. It also looks up the hostname and configures the installation for that name.

Once the server was started Infinite Scale’s web client can be accessed by pointing a browser to the URL https://your-hostname:9200/. Since this is an installation for testing purposes, it does not have a proper certificate configured. That is why your browser is complaining about the cert, and you have to calm it. And indeed, that is one of the reasons why you’re not supposed to use this sneak peak in production or even exposed to the internet.

For the nerds, the script does not really do magic, but just curls the golang single binary of Infinite Scale down to the machine into a sandbox directory, chmod it to be executable and create a working config and a data dir. All happens with the priviledges of the logged in user, no sudo or root involved. You’re encouraged to double check the install script using for example the command curl -L https://owncloud.com/runocis.sh | less - of course you never should trust anybody running scripts from the internet on your machine.

If the server is stopped by pressing Ctrl-C, it later can be started again by the script runocis.sh that was kindly left behind in the sandbox as well.

The installer was tested on these three platforms: 64 bit AMD/Intel CPU based Linux machines, 64 bit Raspberry Pi with Raspbian OS and MacOSX. The flavour of Linux should not make a difference.

If you encounter a problem with the script or if you have suggestions to improve, please find it in my this’n that section on Github. I am happy to receive issue reports or pull requests.

For further information and setups suitable for production please refer to the Infinite Scale documentation.

Tuesday, 26 December 2023

As someone suffering from a latent burnout thingy which has become more imminent in recent years and as someone who is still struggling to develop strategies to alleviate its effects on health and general well-being, I wholeheartedly recommend everyone to watch this video and let those points sink. Yes, even if you are not (yet) affected. The video is not all about burnout but about strategies for sustaining long-term sanity.

https://www.youtube.com/watch?v=qyz6sOVON68

Enjoy. :)

Friday, 22 December 2023

Delivery Performance Analytics is a consulting service dedicated to continuously enhancing how organizations sustainably deliver better software-defined products faster, while increasing the workforce’s well-being, by combining a data analytics approach with a proficient multidisciplinary consulting team.