Sunday, 25 June 2023
This is the release schedule the release team agreed on
https://community.kde.org/Schedules/KDE_Gear_23.08_Schedule
Dependency freeze is in less than 4 weeks (July 20) and feature freeze one
after that. Get your stuff ready!
This is the release schedule the release team agreed on
https://community.kde.org/Schedules/KDE_Gear_23.08_Schedule
Dependency freeze is in less than 4 weeks (July 20) and feature freeze one
after that. Get your stuff ready!
Let’s go for my web review for the week 2023-25.
Tags: tech, kde, foss, community, licensing
Happy birthday the KDE Free Qt Foundation! It’s really nice to see it survived the test of time. It is for sure an essential tool of the KDE ecosystem. I wish there would be more such foundations around.
https://dot.kde.org/2023/06/21/celebrating-25-years-kde-free-qt-foundation
Tags: tech, foss, criticism
Following up on his “The Free Software Foundation is dying” post, Drew DeVault has been working on the messaging part of his recommendations. The result is not bad at all!
https://drewdevault.com/2023/06/19/Reforming-the-free-software-message.html
Tags: tech, foss, criticism
Despite the (sometimes valid) criticism floating around RMS and the FSF, we can’t deny RMS has been proven right more than once.
https://ploum.net/2023-06-19-more-rms.html
Tags: tech, machine-learning, ai, gpt, google
Maybe it’s time to make so called “reinforcement learning from human feedback” actually humane? It’s not the first account along those lines in the industry.
https://www.washingtonpost.com/technology/2023/06/14/google-ai-bard-raters-chatbot-accuracy/
Tags: tech, ai, machine-learning
Oh the bad feedback loop this introduces… this clearly poison the well of AI training when it goes through such platforms.
https://futurism.com/the-byte/people-automating-responses-train-ai
Tags: tech, programming, craftsmanship
We went from quality to quantity it seems. We also have whole swats of developers who are just consuming content without critical thinking and it’s a problem. The conclusion says it all: “Don’t consume. Create. Ask questions. Stay curious.”
https://www.aleksandra.codes/tech-content-consumer
Tags: tech, ai, machine-learning, gpt, foss, self-hosting
Looks like an interesting tool to run LLMs on your own hardware.
https://github.com/bentoml/OpenLLM
Tags: tech, 3d
Looks like a really nifty 3D procedural generator. I wish I’d have an excuse to use it on a project.
Tags: tech, unix, plan9, linux, history
Sometimes I really regret Plan 9 didn’t take off. So many good ideas and designs in there.
https://yotam.net/posts/linux-namespaces-are-a-poor-mans-plan9-namespaces/
Tags: tech, machine-learning, bytecode, performance, optimization
Interesting research turning to genetic algorithms to optimize bytecode handler dispatchers.
https://stefan-marr.de/2023/06/squeezing-a-little-more-performance-out-of-bytecode-interpreters/
Tags: tech, compiler, performance
This compilation technique brings very interesting results. Hopefully should find its way in some JIT compilers.
https://fredrikbk.com/publications/copy-and-patch.pdf
Tags: tech, programming, language, type-systems
Interesting point of view on why static typing seems to make a come back right now and why it’s likely to continue. I think a few of the arguments in here are wrongly framed (like some of the benefits of using an interpreter rather than a compiler are attributed to dynamic typing while it’s rather orthogonal) but a large part of the analysis seems valid to me.
https://www.youtube.com/watch?v=Tml94je2edk
Tags: tech, python, compiler, type-systems, performance
Unsurprisingly, it’s not as simple as it sounds. Type hints in Python can be used for various reasons but performances is rarely the main motives. It’d need other adjustments to the runtime. People are working on it, and this article is an interesting dive on how things work under the hood.
https://bernsteinbear.com//blog/typed-python/
Tags: tech, python, tests, safety
Kind of sad to see asserts misused so much in the Python community. Still that’s a good lesson for everyone: when using an assert, expect it won’t get executed when in production.
https://www.bitecode.dev/p/the-best-python-feature-you-cannot
Tags: tech, design, api, python
Good set of advises for Python APIs. Some applies more generally though.
https://benhoyt.com/writings/python-api-design/
Tags: tech, java, graphics
Is the graphics community warming up to the JVM? Or is it the other way around? Let’s see if it makes progress in any case.
Tags: tech, rust, c++, programming, type-systems
Interesting deep dive in Rust and C++23 string formatting features. This shows the differences quite well. It also does a good job at highlighting the pros and cons for each approach.
https://brevzin.github.io/c++/2023/01/02/rust-cpp-format/
Tags: tech, c++, memory
The title of the post is not the best. Still it nicely lists and explains common mistakes around the use of std::shared_ptr
.
https://ddanilov.me/shared-ptr-is-evil/
Tags: tech, blog, rss, xslt
Definitely a neat trick to have a slick RSS feed with a nice experience from the browser.
https://darekkay.com/blog/rss-styling/
Tags: tech, productivity, organization, vim
Neat little journaling system using vim. I can hear Emacs users cringe from here though.
https://peppe.rs/posts/plain_text_journaling/
Tags: tech, databases, sql
I don’t understand the SQL shaming I see in some circles. It’s clearly based on dubious arguments.
Tags: tech, complexity, programming
Neat little resource. We indeed should pay more attention to complexity across our industry.
https://github.com/zakirullin/cognitive-load
Tags: tech, programming, complexity, design, interoperability
Interesting parallel taken with IKEA. Some of their principles translate to nice traits for software as well.
https://taylor.town/ikea-oriented-development
Tags: tech, organization, system, change
Definitely this, what matters most is being able to change previous decisions. In comparison each decision itself is less important.
https://jordankaye.dev/posts/flexible-systems/
Tags: tech, estimates, research
We got a problem with research around software estimates. This won’t help us get better at it as an industry…
https://shape-of-code.com/2021/01/17/software-effort-estimation-is-mostly-fake-research/
Tags: tech, agile, scrum, project-management, product-management
Wording matters, and framing things differently can free teams from the Scrum limiting views. This is required to find a path towards improvements.
Tags: geography, map
Great article. We know that the projections we use can’t give a proper picture of the world. We often don’t realize by how much it distort our views and what we miss. This is a good summary of the various biases in our maps.
https://unchartedterritories.tomaspueyo.com/p/maps-distort-how-we-see-the-world
Bye for now!
Having come across sources using include statements for some Qt module headers (like #include <QtDBus>
), memories arose about a check from the static analyzer tool krazy as once run conveniently on KDE’s former ebn.kde.org site. That check, called includes, poked one not to use Qt module headers. Due to resulting in the inclusion of all the headers of those modules, and then again that of the other Qt modules used by the module. Which them meant more stuff to process by the compiler for compilation units with such module header includes.
So is that perhaps in 2023 no longer a real-world noticeable issue? A first look at some preprocessor outputs (with Qt5) for a single line file with just an include statement hinted though it might still be true:
foo.cpp: #include <QtDBus> | foo.cpp.i: 137477 lines |
foo.cpp: #include <QDBusReply> | foo.cpp.i: 86615 lines |
So 50862 more code lines of mainly declarations and inline methods, where a good part might not be needed at all by other code in a file including the header, yet is processed each time. And if such includes are placed in headers, happening for a lot of compilation units. Given most normal source files are shorter, it seemed like as result this difference might still be noticeable given that order of magnitude in the extreme example above..
The KDE Frameworks module NetworkManagerQt was found to use quite a lot of QtDBus module header includes. While overall following mostly the include-only-what-you-need-and-forward-declare-otherwise mantra. Possibly those includes have been a result of tools generating code and using the module headers to speed up initial development experience.
A patch to replace those QtDBus module header includes with includes of headers as just needed for the classes & namespace used was done. It turned out that the number of additional include statements needed afterwards was rather small, so no bigger costs there.
For a simple test on the real world effects, an otherwise idle developer system, with hot cache for the source files by previous runs, with SSD and old i5-2520M 2.5 GHz CPU, was used. For both variants the build dir would be cleaned by make clean
and then a single job make run started, timed with the time tool, by time make
. The results were this (repeated runs hinted those numbers are representative):
#include <QtDBus> | #include <[headerasneeded]> | |
real (wall clock) | 18m51,032s | 14m6,925s |
user | 17m58,326s | 13m22,964s |
sys | 1m54,234s | 1m26,826s |
So an overall build time reduction by around a 1/4 for a clean(ed) build.
Incremental builds during development should also gain, but not measured, just assumed.
(*as in waiter)
So in the spirit of the old Krazy includes check, consider to take a look at your codebase if not some Qt module header includes (QtCore
, QtDBus
, QtQml
, QtGui
, QtWidgets
, QtNetwork
, …) have sneaked in which might be simple to replace by “normal” includes.
Note: there is at least one tricky include with QtConcurrent, as that module shares the name with the main C++ namespace. So one might have used #include <QtConcurrent>
, due to used-to Qt patterns and because the API documentation also tells to do. Just, that include gets one the module header, which then also pulls in #include <QtCore>
with all its headers. Looking at the include directory of that module, one can find dedicated headers to use instead, like QtConcurrentRun
. While many codebases e.g. in KDE projects rely on those, they still need to be also officially documented (QTBUG-114663).
In case one would like some more modern automation tool to check for the use of Qt module header includes, take a look at the current work to add a check to the static code analyzer Clazy.
PS: For those into riding their office chair into sword duels… you should have let me win more often?
People are often asking the same questions again and again about some of my projects, so it might be a good opportunity to write a small FAQ.
If you get redirected here, don’t take it personally; I am getting asked these questions very often, and I feel people often misunderstand how open-source projects work.
The most likely reason is that it still needs to be implemented. It doesn’t mean that I or other maintainers are against this feature. It is just that X is a purely non-commercial project, and I and others are currently working on it during our free time. Unfortunately, Free time is a very limited and precious resource. Between our day jobs or university projects, sleeping, eating, and other social activities, little time and energy is left.
We definitively might implement the feature in the future, but the best way to ensure this gets implemented promptly is to get involved and implement it yourself. Feel free to join our development channel beforehand and confirm that the feature is something we would like to have in the application.
We are happy to guide you to make the onboarding experience as good as possible and to help you familiarize yourself with the code base. Getting involved with open-source projects is also an excellent opportunity to learn how to program. Check out the Google Summer of Code, Outreachy, or Season of KDE for special mentoring programs, but getting involved outside these programs is also possible. On a personal note, I learned most of my programming skills by contributing to KDE, so I am very thankful for that.
Similarly to the previous question, X is a non-commercial project implemented during my and others’ free time. We can’t say precisely when we will be done with a particular feature as it depends on many factors: how much energy do we currently have to work on this project after our day job/university projects, are there more pressing issues, are there a technical blocker which needs to be solved first, it is fun to implement…
Again the best way to speed this up is to get involved.
We are a non-commercial project which is purely volunteer based. We are just a bunch of developers and designers; we do not have managers, stakeholders, or clients influencing our work directly by setting deadlines or by asking and paying for specific features. Part of the reason we enjoy working on this project is that we have a lot of freedom in terms of what we want to work on and are also very flexible, allowing us to switch to a different task whenever we want.
Again the best way to influence the direction of this project is to get involved.
Let’s go for my web review for the week 2023-24.
Tags: tech, community
You might remember we were hosted in Toulouse for the KDEPIM Sprint this year. Very nice venue, they do other things locally of course. They need to raise some money to get to the next level. It’d be nice to see them receive lots of love. Head to their fundraising page! (in french though)
https://www.helloasso.com/associations/artilect/collectes/artilect-fablab
Tags: tech, surveillance
Things improved a bit… they also got worse in a way. This stays an ongoing fight for the years to come.
Tags: tech, reddit, social-media
Another centralized tool for communication going down the drain. I wonder what the IPO will look like in this case.
https://www.theverge.com/2023/6/10/23756476/reddit-protest-api-changes-apollo-third-party-apps
Tags: tech, reddit, social-media
Excellent summary of the situation regarding the Reddit debacle.
https://www.eff.org/deeplinks/2023/06/what-reddit-got-wrong
Tags: tech, business, social-media, community
Interesting and provoking thought… Indeed it’s hard to build communities while also aiming for rapid and constant growth. There’s no chance of having communities properly stabilize which leads to the tribalism and bad behavior we see on social media.
https://www.marginalia.nu/log/82_killing_community/
Tags: tech, cryptography, security
Signature of digital documents is definitely not as safe as we would like. All the serious formats have known flaws at this point.
https://www.usenix.org/conference/usenixsecurity23/presentation/rohlmann
Tags: tech
The results of this annual survey are available. A few interesting insights in there even though I find some of the categorization weird. For instance why splitting so much in details the various Linux flavors? If they didn’t it’d show them as the most popular option for professional use. There are a few other cases where one might want to aggregate by hand or split in several groups among questions.
Here are some of the takeaways I found:
It’s also the first time they integrate the use from AI tools but that doesn’t give any surprising or interesting insight yet. It just confirms the hype and the domination of a couple of giant players.
https://survey.stackoverflow.co/2023/
Tags: tech, ai, gpt
Nice piece which shows how easy it is to get such models to produce nonsense.
https://lcamtuf.substack.com/p/llms-are-better-than-you-think-at
Tags: tech, ai, gpt, ux
Interesting ideas for using large language models. There is a world beyond the chatbot interface and it might bring more value to users and avoid some of the pitfalls of anthropomorphisation.
https://maggieappleton.com/lm-sketchbook
Tags: tech, internet, distributed, dns, geography
Interesting experiment… with surprising results in places. What stays available or not is not necessarily what one would think. It’s not that easy to be flexible and available across regions.
https://www.nthbrock.com/posts/americaless-internet/
Tags: tech, multithreading, performance, memory, benchmarking, erlang
Deep dive on a proper benchmarking and implementation for 1M task on the Erlang runtime. Clearly the previous benchmark had room for improvements.
https://hauleth.dev/post/beam-process-memory-usage/
Tags: tech, java, dependencies, supply-chain
Very interesting study on dependencies. This is specific to the Maven ecosystem so too early to generalize the findings to other similar ecosystems. This indicates at least the difficulties of managing dependencies, especially the transitive ones. Also tries to define the “dependencies bloat” problem.
https://link.springer.com/article/10.1007/s10664-020-09914-8
Tags: tech, programming, c++
Funny list of anti-patterns. Not all of it is C++ specific in there, but some are good reminders of the hidden traps in the language.
https://pvs-studio.com/en/blog/posts/cpp/1053/
Tags: tech, python, asynchronous, multithreading
A piece criticizing the asyncio approach in Python (especially considering the performance tradeoffs in this language). Also provides viable alternatives.
https://charlesleifer.com/blog/asyncio/
Tags: tech, python, metaprogramming
Interesting feature from the Python language. Lots of features are actually built on top of it.
https://mathspp.com/blog/pydonts/describing-descriptors
Tags: tech, tools, command-line
Might come in handy when Filelight is not available, I could see myself using this over SSH connections.
https://github.com/imsnif/diskonaut
Tags: tech, tools, command-line, logging
Interesting little tool, can come in handy.
https://github.com/samwho/spacer
Tags: tech, tests
Interesting way to reason about tests and classify them. I think it can be more useful than the strict “unit” vs “integration” that is way too widespread.
https://buttondown.email/hillelwayne/archive/some-tests-are-stronger-than-others/
Tags: tech, product-management, ux
Interesting idea, personas help with producing features, something is needed to prevent features we don’t wante.
http://ignorethecode.net/blog/2023/06/13/anti_personas/
Tags: tech, agile, values
The interview is overall very interesting (I advise listening to it in full). It’s nice to have such an historical perspective. At 15:00 there’s a question which prompt a very important explanation of why the word “over” was chosen and repeated in the agile manifesto. Unfortunately it’s been often misinterpreted…
https://www.youtube.com/watch?v=9VW8YNSVYX4&t=900s
Tags: tech, risk, project-management, product-management, deployment, architecture
Good piece on how to reduce uncertainty before something is built and ready to be in front of users. It starts with prototyping but goes all the way to feature flags and deployment
https://theengineeringmanager.substack.com/p/removing-uncertainty-the-tip-of-the
Tags: tech, project-management, product-management, history
Very interesting! This is really old wisdom which should be more widespread. A few words of caution in there for everyone, me included.
https://two-wrongs.com/tindall-on-software-delays.html
Tags: productivity
Interesting point of view… it’s also about the perceived cost of a task. Of course this means one needs to get faster through practice, it’s not about delivering botched work.
https://jsomers.net/blog/speed-matters
Tags: tech, productivity, organization
Interesting way to organize your data. This gives a library feel for sure. At least it makes me curious.
Tags: tech, hardware, embedded
Looks like an interesting device to tinker with.
Bye for now!
Welcome back! Last time, I successfully completed the development of the Bundle Creator up to the Resource Chooser page. This page now allows us to easily select resource items by applying filters based on tags or names. I’ve introduced some UI improvements, including the ability to click-to-select, the addition of a convenient Remove Selected
button and the introduction of a visually appealing grid view to replace the traditional list view. These enhancements enhance the overall user experience and provide a more streamlined resource selection process.
As mentioned in previous blog posts, the Bundle Creator consists of four pages: the Resource Chooser
, Tag Chooser
, Bundle Details
, and Save to
pages. These pages can be seen in the wizard’s side widget, and users can navigate between them using the Next
and Back
buttons. The Tag Chooser
page retains a similar design to the Embed Tags page from the previous version of the bundle creator. It offers a familiar interface for users to select and embed tags to their new bundle. Similarly, the Bundle Details page maintains consistency with the previous bundle creator, where one can fill out the bundle name, author, website etc.
The inclusion of the Save to
Page adds a crucial final step to the bundle creation process. It provides a summary of the bundle details, which includes the number of selected resource items per resource type, and the tags chosen for embedding. This comprehensive summary allows users to review and confirm their bundle’s content before finalizing the creation process.
By dividing the bundle creation process into these distinct and user-friendly pages, particularly for beginners, the Bundle Creator offers a streamlined and intuitive experience. Users can efficiently navigate through each step, making informed decisions and customizing their bundles according to their specific needs.
I have added a small tool button that allows switching between grid view and list view in both the resource manager and bundle creator, providing convenience to the users. Additionally, I have made the icons in the bundle creator more consistent.
My merge request can be viewed here.
In the upcoming weeks, I would be working on adding the editing bundles feature, as well as improving the Choose Tags
section. This requires some UI related feedback, and if you’re interested to help out, please feel free to drop a comment on this post I created on Krita Artists Forum!
Hello world,
This is my third blog post for Google Summer of Code 2023 where I will be sharing what I was able to accomplish in the first two weeks.
The first task I worked on was implementing the account moderation tool. This tool enables moderators/admins of an instance to view all the accounts available on the server and take action against them.
Before starting with its implementation, I requested Carl to schedule a meeting so that I could gain a better understanding of the implementation process. He advised me to study the already implemented SocialGraph
page, along with other helpful insights.
Initially, when attempting to receive raw JSON data from the /api/v1/admin/accounts
endpoint, I encountered a 403
error response. Upon spending some time debugging my code I couldn’t determine what I was doing wrong and so I finally resorted to asking for help in the Tokodon
matrix chat, where redstrate❣️
helped me identify that we didn’t have the necessary scope set in Tokodon
to access admin endpoints.
After setting the correct scope, I was finally able to make network requests to the admin endpoint 🥳. I decided to implement a QAbstractListModel
to expose all the data and required properties in the QML
UI. With this in mind, I created a new class AccountsToolModel
that inherited from QAbstractListModel
. For making all the filter options functional I created QProperty
instances with the necessary READ
, WRITE
and NOTIFY
methods.
To display the admin-related information for an account, I parsed the received JSON data and created a new method AbstractAccount::adminIdentityLookup
which will populate QProperty
instances of AdminAccountInfo
to store all the required information for the moderation tool. Once all the cpp
backend was ready, I started with the qml
implementation, figuring out the best way in which the data can be presented.
Once the UI was implemented, I encountered an issue with pagination not functioning correctly. After debugging the issue, I discovered that when requesting a response for the next page using the v2
endpoint, the response received was actually v1
. This discrepancy messed up the query parameters and rendered pagination impossible. To address this issue, I implemented a simple code block: url = url.toString().replace("/v1/", "/v2/");
. This replacement fixed the problem and allowed proper pagination to occur.
To ensure the issue was addressed, I reported it on Mastodon’s GitHub repository. You can find the detailed report here.
At the end of the first two weeks the initial page of Account Moderation tool was implemented whose Merge Request can be tracked here. I also made significant progress towards developing next page of the account tool during these weeks.
Images showing implemented Account Moderation tool
Next I am working on implementing the second page of account Moderation tool and report Moderation tool :)
I will be writing regular blog posts on my website. You can read my previous blog-posts and follow my progress here
I’m happy to announce the 1.1 release of Arianna. Arianna is a small ePub reader application I started with Niccolo some time ago. Like most of my open source applications, it is built on top of Qt and Kirigami.
Arianna is both an ePub viewer and a library management app. Internally, Arianna uses Baloo to find your existing ePub files in your device and categorize them.
Arianna can now display the table of content of a book. This supports complex hierarchies of headings.
Arianna now provides you with the metadata about your books.
Additionally, you can now disable the reading progress on the library page if it distracts you.
You can now read books without requiring an internet connection. We also fixed various crashes happening when indexing your books.
If you are interested in helping, don’t hesitate to reach out in the Arianna matrix channel (#arianna:kde.org) and I will be happy to guide you.
I also regularly post about my progress on Arianna (and other KDE apps) on my Mastodon account, so don’t hesitate to follow me there ;) We also now have an official Mastodon account for Arianna @arianna@kde.social.
And in case you missed it, as a member of KDE’s fundraising working group, I need to remind you that KDE e.V., the non-profit behind the KDE community accepts donations.
You can find the package on download.kde.org and it has been signed with my GPG key.
Let’s go for my web review for the week 2023-23.
Tags: tech, patents, law
This is bound to make the US patent system even worse than it already is…
https://www.eff.org/deeplinks/2023/06/our-right-challenge-junk-patents-under-threat
Tags: tech, apple, ux, ar, vr, xr
Probably the best analysis of the new Apple device I’ve seen so far. Focuses more on the design of the user experience and compares with the strategy behind other similar devices. There are likely a lesson or two to be drawn from it.
https://notes.andymatuschak.org/Vision%20Pro
Tags: tech, linux, packaging, flatpak
A good reminder that Flatpak is no silver bullet. It’s a bit of a rant at times still it has some good points in particular the security implications are not always properly conveyed to the users. Some thinking might be required regarding what’s lost compared to “traditional” packaging approaches.
https://blog.brixit.nl/developers-are-lazy-thus-flatpak/
Tags: tech, tools, command-line
There’s a new grep alternative in town. Looks really fast and has an interesting interactive mode. Definitely something to check out.
https://github.com/Genivia/ugrep
Tags: tech, complexity, architecture, config, debugging, automation
Very interesting case full of lessons. Of course, increasing the complexity of the system overall can lead to such hard to find issues. It’s also a tale into how seemingly innocuous settings can interact in unexpected ways. I also like the lessons learn pointing to the fact that you can and should debug even the systems you use through abstractions, diving into the code is almost always a good thing (even if in this particular case it wasn’t strictly necessary in the end). And last but not least it shows the tension between mastery and automation… the more you automate the least you master the system, and at the same time this automation is necessary for building resilience in the system.
https://www.infoq.com/articles/debugging-beneath-trusted-abstraction/
Tags: tech, rust, language, design, community
Interesting post, highlights why it’s better when languages are designed in a more community fashion (make sure to read until the conclusion). At least in term of popularity it seems to help.
https://graydon2.dreamwidth.org/307291.html
Tags: tech, python, pyright, type-systems
This will hopefully solve most of the oddities in the generic types syntax of Python. Will be available with CPython 3.12 and will need support from type checkers of course.
https://peps.python.org/pep-0695/
Tags: tech, python, celery
Celery is a popular solution for job queues in the Python world… it’s far from perfect though. This list of fixes to make it safer to use is welcome if you’re stuck with it.
https://steve.dignam.xyz/2023/05/20/many-problems-with-celery/
Tags: tech, python, frontend
OK, that looks like an interesting idea for the frontend bits if your stack is mainly Python based. Still very young though.
https://reactpy.dev/docs/index.html
Tags: tech, python, debugging
Looks like a very powerful tool for debugging and analyzing processes involving a Python interpreter.
https://github.com/bloomberg/pystack
Tags: tech, project-management, architecture, tests
Nothing really new but well written. This highlights fairly well the importance of decomposing projects, having at least the broad strokes of the architecture laid down and how automated tests help drive the progress. It’s nice to see it all put together.
https://mitchellh.com/writing/building-large-technical-projects
Bye for now!