Feeds
2024 OSPP KDE Project Late-Stage Summary
It's been more than three weeks since the midterm summary, and the project is now nearing completion.
Currently, all the original features of Blinken have been fully implemented in the QML version. The remaining tasks involve UI adjustments, testing, and fixing potential bugs.
Over the past few weeks, I’ve been working on the following:
Integrating Blinken's LogicThe game logic of Blinken is handled by the BlinkenGame class from the original Blinken. The original code design is quite good, with most of the game logic encapsulated in this one class. The separation between the logic and the UI rendering is well done, so all I needed to do was connect the signals from this class in QML.
As for the audio playback in Blinken, the original code used the Phonon library, which is also open-source but does not support Android. Therefore, I replaced it with the QtMultimedia library, which provides cross-platform audio playback functionality.
Android Build for KF6 ApplicationsSome features of Blinken rely on libraries provided by the KF6 framework, such as KF6I18n and KF6Config. When cross-compiling to the Android platform, it's necessary to use the aarch64-linux versions of these libraries. If these libraries are not available on your system, you will encounter the following errors during compilation:
ld.lld: error: /usr/lib64/libKF6XmlGui.so.6.4.0 is incompatible with aarch64linux ld.lld: error: /usr/lib64/libKF6ConfigWidgets.so.6.4.0 is incompatible with aarch64linux ……However, the package manager on my Fedora distribution does not provide these versions. Compiling and installing them one by one from source is too cumbersome. On the advice of the community, I used Craft to handle cross-compilation.
For reference, here is the Craft tutorial: Craft - KDE Community Wiki
Important note: If you encounter installation failures, make sure to clear all contents under craft-kde-android before trying again, as leftover files may cause the installation to fail.
When installing, choose the Arm64 target architecture. If there are remnants from a previous failed installation, it may prevent the option to select the ARM64 architecture.
If you encounter issues like "Permission denied," you’ll need to disable SELinux:
sudo apt-get install selinux-utils sudo setenforce 0Additionally, note that in the virtual machine invent-registry.kde.org/sysadmin/ci-images/android-qt67 provided by the community, the Java version is outdated, preventing the use of Gradle 8.6. You can either manually update the Java version in the docker or use an older version of Gradle.
To use Craft for building applications, you need to write a script called a Blueprint, which describes the libraries your application depends on. These scripts are relatively easy to write, and you can quickly get started by following the community documentation: Craft/Blueprints - KDE Community Wiki.
Using KF6 Framework LibrariesSome of the libraries originally used by Blinken are compatible with the Android platform, while others are not. By referring to the API Documentation, you can check which libraries are supported on Android. In Blinken, the following libraries are Android-compatible:
- CoreAddons
- GuiAddons
- I18n
- XmlGui
I needed to use these libraries in the QML version of Blinken.
The KF6 framework provides a convenient internationalization API, and the usage in QML is almost the same as in QWidget, which allowed me to directly reuse Blinken’s original multi-language support, saving a lot of time.
KConfig is used in Blinken to store high score information and settings. For the high scores, I needed to extract the HighScoreManager class from the original HighScoreDialog file, make some modifications, and then create a new high score interface in QML that connects the signals and slots of HighScoreManager. For the settings functionality, it’s as simple as registering a KConfig singleton in QML :
`qmlRegisterSingletonInstance<blinkenSettings>("org.kde.blinken", 1, 0, "BlinkenSettings", blinkenSettings::self());KF6XmlGui was used in the original Blinken to create the About Blinken Page, About KDE Page, and Handbook Page. Although this library is Android-compatible, it is based on QWidget, while the main interface of Blinken is built with QML. Bringing in QWidget just for these pages didn't seem like a good idea. Luckily, for the Android platform, kirigami-addons provides this functionality. By incorporating it, I also brought in Kirigami, which helps optimize the UI.
After adding new dependencies, it’s important to modify the .kde-ci.yml file to support CI/CD. For more information: Infrastructure/Continuous Integration System - KDE Community Wiki.
Glyph Lefkowitz: On The Defense Of Heroes
If a high-status member of a community that you participate in is accused of misbehavior, you may want to defend them. You may even write a long essay in their defense.
In that essay, it may seem only natural to begin with a lengthy enumeration of the accused’s positive personal qualities. To extol the quality of their career and their contributions to your community. To talk about how nice they are. To be a character witness in the court of public opinion.
If you do this, you are not defending them. You are proving the point. This is exactly how missing stairs come to exist. People don’t get away with bad behavior if they don’t have high status and a good reputation already.
Sometimes, someone with antisocial inclinations seeks out status, in order to facilitate their bad behavior. Sometimes, a good, but, flawed person does a lot of really good work and thereby accidentally ends up with more status than they were expecting to have, and they don’t know how to handle it. In either case, bad behavior may ensue.
If you truly believe that your fave is being accused or punished unjustly, focus on the facts. What, specifically, has been alleged? How are these allegations substantiated? What verifiable evidence exists to the contrary? If you feel that someone is falsely accusing them to ruin their reputation, is there evidence to support your claim that the accusation is false? Ask yourself the question: what information do you have, that is leading to your correct analysis of the situation, that the people making the accusations do not have, which might be leading them into error?
But, also, maybe just… don’t?
The urge to defend someone like this is much more likely to come from a sense of personal grievance than justice. Consider: does it feel like you are being attacked, when your fave has been attacked? Is there a tightness in your chest, heat rising on your cheeks? Do you feel suddenly defensive?
Do you think that defensiveness is likely to lead to you making good, rational decisions about what steps to take next?
Let your heroes face accountability. If they are really worth your admiration, they might accept responsibility and make amends. Or they might fight the accusations with their own real evidence — evidence that you, someone peripheral to their situation, are unlikely to have — and prove the accusations wrong.
They might not want your defense. Even if they feel like they do want it in the moment — they are human too, after all, and facing accountability does not feel good to us humans — is the intensified feeling that they can’t let down their supporters who believe in them likely to make them feel less defensive and panicked?
In either case, your character defense is unlikely to serve them. At best it helps them stay on an ego trip, at worst it muddies the waters and might confuse the collection of facts that would, if considered dispassionately, properly exonerate them.
Do you think you think that I am speaking in generalities but really just talking about one specific recent event?
Wrong!
Just in this last week, I have read 2 different blog posts about 2 completely different people in completely unrelated communities and both of their authors need to read this. But each of those were already of a type, one that I’ve read dozens of instances of in the past.
It is a very human impulse to perceive a threat to someone we think well of, and to try to defend against that threat. But the consequences of someone’s own actions are not a threat you can defend them from.
Web Review, Week 2024-33
Let’s go for my web review for the week 2024-33.
Why We Picked AGPL - ParadeDBTags: tech, foss, business
I wish more product companies would pick this license. Going for AGPL with a support and/or double license offering is a strong model in my opinion.
https://blog.paradedb.com/pages/agpl
Tags: tech, foss, economics
Interesting initiative. I’m looking forward to the results of this first pilot.
https://www.sovereigntechfund.de/programs/fellowship
Tags: tech, google, monopoly, law, economics
Of course it sounds complicated to break Google up… but that’s not the point. It’s about avoiding its monopolistic position, the fact that it’s complicated is just another symptom.
https://micro.webology.dev/2024/08/14/breaking-up-google.html
Tags: tech, google, browser, web, standard
Yes, please let’s increase the market share of non-Chromium based browsers.
https://endler.dev/2024/the-dying-web/
Tags: tech, security, hacking
Someone was about to get revenge, this gives an interesting exploration.
https://blog.smithsecurity.biz/hacking-the-scammers
Tags: tech, cpu, amd, security
Luckily this kind of very low level vulnerabilities are not too common and difficult to exploit. But when they get exploited all things break loose and you can’t trust your hardware anymore.
https://www.wired.com/story/amd-chip-sinkclose-flaw/
Tags: tech, security, memory
Interesting take, those bugs are more convenient to exploit. Logic bugs are too specific to easily exploit at scale.
https://pacibsp.github.io/2024/why-exploits-prefer-memory-corruption.html
Tags: tech, security, ssh
Clearly a new OpenSSH feature to keep an eye on. This should improved security of the server by default. That said, it needs to be a bit more in the wild before knowing how to best tune it.
https://utcc.utoronto.ca/~cks/space/blog/sysadmin/OpenSSHPerSourcePenaltiesThings
Tags: tech, windows, networking
This is indeed surprising behavior and specific to Windows. If you wonder why TCP connect is slow and you got IPv6 support active this might be why.
https://daniel.haxx.se/blog/2024/08/14/slow-tcp-connect-on-windows/
Tags: tech, python, performance
Interesting dive into some of the performance improvements introduced into recent CPython releases.
https://blog.codingconfessions.com/p/are-function-calls-still-slow-in-python
Tags: tech, python, type-systems
Here is an interesting use of Pydantic to properly model inputs.
https://blog.yossarian.net/2024/08/12/Approximating-sum-types-in-Python-with-Pydantic
Tags: tech, c++, reflection, type-systems, performance
Compile time reflection in C++ will indeed be a big deal.
https://lemire.me/blog/2024/08/13/reflection-based-json-in-c-at-gigabytes-per-second/
Tags: tech, time, databases, sqlite
Looks like a neat extension which can come in handy.
https://antonz.org/sqlean-time/
Tags: tech, databases, postgresql, tools
Looks like an interesting tool for creating anonymized pre-production environments.
Tags: tech, databases, postgresql
Need to duplicate data in Postgres? Several options are on the table.
https://ongres.com/blog/fastest_way_copy_data_between_postgres_tables/
Tags: tech, web, browser, frontend, html
A new HTML attribute to keep an eye on. I can expect people to abuse it with hard to debug problems in the frontend if you don’t know it is there.
https://csswizardry.com/2024/08/blocking-render-why-whould-you-do-that/
Tags: tech, garbage-collector, performance, safety, memory
Interesting, it confirms garbage collectors can be the source of unrecoverable performance degradation in request based systems.
https://brooker.co.za/blog/2024/08/14/gc-metastable.html
Tags: tech, distributed, failure, recovery
Retries are becoming common place to deal with transient errors. That said, they can be a problem with recovery of longer failures due to amplification. There are options on the table to solve this though.
https://medium.com/yandex/good-retry-bad-retry-an-incident-story-648072d3cee6
Tags: tech, design, complexity, performance
Or why anticipating too much is merely a gamble. You can be lucky, but how often will you be? Also I agree that in such cases the performance will be impacted longer term leading to a death by thousands of paper cuts.
https://www.sebastiansylvan.com/post/the-perils-of-future-coding/
Tags: tech, technical-debt, organization, leadership, funny
I’m not sure the incentives are right… it’s better to clean up as you go. Still some places would benefit from such an event from time to time and even if you clean up as you go missed opportunities happen.
https://zaidesanton.substack.com/p/organizing-the-best-cleanathon-your
Tags: tech, organization
Surprisingly, I bumped into this article as I’m wrapping up reading the Team Topologies book. This highlight fairly well some of the concerns I have with it and where it shines. I think it’s right to turn to the principles it’s built on rather than use the model it proposes as a blueprint.
https://martyoo.medium.com/stop-team-topologies-fd954ea26eca
Tags: business, organization, management, strategy
It’s bloody hard to build a strategy. This article is full of good wisdom to make one. This won’t make it really easier, but at least you won’t start in the wrong direction and will be able to know if what you produce is any good.
https://www.cultivatedmanagement.com/how-to-build-a-strategy/
Tags: tech, blender, 3d, funny
Funny short video, I guess it has also some tutorial value to know what you can do with Blender? (and no, you can’t break the fourth wall with it)
https://www.youtube.com/watch?v=gTi_-HGtsDY
Bye for now!
mark.ie: My LocalGov Drupal contributions for week-ending August 16th, 2024
Here's what I've been working on for my LocalGov Drupal contributions this week. Thanks to Big Blue Door for sponsoring the time to work on these.
Dries Buytaert: Drupal CMS: the official name for Drupal Starshot
We're excited to announce that "Drupal CMS" will be the official name for the product developed by the Drupal Starshot Initiative.
The name "Drupal CMS" was chosen after user testing with both newcomers and experienced users. This name consistently scored highest across all tested groups, including marketers unfamiliar with Drupal.
Participants appreciated the clarity it brings:
Having the words CMS in the name will make it clear what the product is. People would know that Drupal was a content management system by the nature of its name, rather than having to ask what Drupal is. I'm a designer familiar with the industry, so the term CMS or content management system is the term or phrase that describes this product most accurately in my opinion. I think it is important to have CMS in the title.The name "Drupal Starshot" will remain an internal code name until the first release of Drupal CMS, after which it will most likely be retired.
Dries Buytaert: Evolving Drupal's Layout Builder to an Experience Builder
Imagine a world where installing Drupal instantly offers a creative experience that allows you to build and style pages right out of the box, without any need for additional modules or configuration.
The introduction of Drupal's Layout Builder in 2018 was an important milestone toward this vision, but it was just the first step. Layout Builder provides site builders with a powerful drag-and-drop interface for creating and arranging content within customizable layouts.
Despite its success, there is a clear and pressing need to improve the existing Layout Builder. The numerous community-developed modules enhancing Layout Builder highlight the need for a more comprehensive solution.
That is why at DrupalCon Lille last year, I was excited to announce the "Next Generation Page Builder" initiative, aimed at improving and expanding the Layout Builder to provide a truly intuitive, out-of-the-box page-building experience.
Since announcing the 'Next Generation Page Builder', led by Lauri Eskola (Acquia), a Drupal Core Committer, we've done extensive research and planning.
Inspired by user feedback, we decided to make two changes. First, we decided to broaden our focus: not only will we improve the page-building features of Layout Builder, we will also integrate basic theming capabilities, enabling users to style their pages effortlessly without having to edit Twig files. Second, reflecting on this wider scope, we renamed the initiative from 'Next Generation Page Builder' to 'Experience Builder'.
In recent months, we explored several options for how to create such an Experience Builder, including accelerating development of the Layout Builder, switching to Gutenberg, adopting Paragraphs, or using the newly open-sourced Plasmic.
After thorough analysis and discussions with key stakeholders, including Automattic's Gutenberg team, the Drupal Core Committers decided the best approach is to expand the Layout Builder while also incorporating the best elements of Paragraphs.
Looking to the future, I hope the Experience Builder becomes the preferred Drupal tool for layout design, page building, and basic theming. Our main goal is to create a tool that site builders love, with an amazing out-of-the-box experience. By integrating key features from Paragraphs, we also aim to create a unified solution that reduces fragmentation, accelerates innovation, and ensures Drupal remains at the forefront of site building.
Our future success hinges on expanding Drupal's usability to a wider audience. Our CMS capabilities are often better than our competitors', but aren't always as user friendly. In the Drupal 7 era, Drupal was the OG (Original Great) of low-code but today we are being outpaced by competitors in terms of ease of use. Without user experience improvements, we'll lose ground. The Experience Builder initiative is all about introducing more people to the power of Drupal.
I feel strongly that a unified Experience Builder is one of the most important initiatives we can undertake right now.
Developing an Experience Builder is a big task that will require substantial effort, extensive collaboration, and significant expertise in user experience and design. As Drupal Core Committers, we are driven by a sense of urgency to advance this initiative. We are committed to moving quickly and iterating rapidly, but to succeed, we also need your support. There will be many opportunities for the community to collaborate and contribute to this initiative.
For more information, please check Lauri's latest blog post on the topic. Additionally, I will discuss this further in my upcoming DrupalCon Portland keynote in a few weeks.
mark.ie: My Drupal Core Contributions for week-ending August 16th, 2024
Here's what I've been working on for my Drupal contributions this week. Thanks to Code Enigma for sponsoring the time to work on these.
Mark Collier: Voices of the Open Source AI Definition
The Open Source Initiative (OSI) is running a blog series to introduce some of the people who have been actively involved in the Open Source AI Definition (OSAID) co-design process. The co-design methodology allows for the integration of diverging perspectives into one just, cohesive and feasible standard. Support and contribution from a significant and broad group of stakeholders is imperative to the Open Source process and is proven to bring diverse issues to light, deliver swift outputs and garner community buy-in.
This series features the voices of the volunteers who have helped shape and are shaping the Definition.
Meet Mark CollierWhat’s your background related to Open Source and AI?
I’ve worked in Open Source most of my career, over 20 years, and have found it to be one of the greatest, if not the greatest, drivers of economic opportunity. It creates new markets and gives people all over the world access to not only use but to influence the direction of technologies. I started the OpenStack project and then the OpenStack Foundation, and later the Open Infrastructure Foundation. With members of our foundation from over 180 countries, I’ve seen firsthand how Open Source is the most efficient way to drive innovation. You get to crowdsource ideas from people all over the world, that are not just in one company or just in one country. We’ve certainly seen that with infrastructure in the cloud computing/edge computing era. AI is the next generation wave, with people investing literally trillions of dollars in building infrastructure, both physical and the software being written around it. This is another opportunity to embrace Open Source as a path to innovation.
Open Source drives the fastest adoption of new technologies and gives the most people an opportunity to both influence it and benefit economically from it, all over the world. I want to see that pattern repeat in this next era of AI.
What motivated you to join this co-design process to define Open Source AI?
I’m concerned about the potential of there not being credible Open Source alternatives to the big proprietary players in this massive next wave of technology. It will be a bad thing for humanity if we can only get state-of-the-art AI from two or three massive players in one or two countries. In the same way we don’t want to see just one cloud provider or one software vendor, we don’t want any sort of monopoly or oligopoly in AI; That really slows innovation. I wanted to be part of this co-design process because it’s actually not trivial to apply the concept of Open Source to AI. We can carry over the principles and freedoms that underlie Open Source software, like the freedom to use it without restriction and the ability to modify it for different use cases, but an AI system is not just software. A whole debate has been stirred up about whether data needs to be released and published under an Open Source friendly license to be considered Open Source AI. That’s just one consideration of many that I wanted to contribute to.
We have a very impressive group of people with a lot of diverse backgrounds and opinions working on this. I wanted to be part of the process not because I have the answers, but because I have some perspective and I can learn from all the others. We need to reach a consensus on this because if we don’t, the meaning of Open Source in the AI era will get watered down or potentially just lost all together, which affects all of Open Source and all of technology.
Can you describe your experience participating in this process? What did you most enjoy about it and what were some of the challenges you faced?
The process started as a mailing list of sorts and evolved to more of an online discussion forum. Although it hasn’t always been easy for me to follow along, the folks at OSI that have been shepherding the process have done an excellent job summarizing the threads and bringing key topics to the top. Discussions are happening rapidly in the forum, but also in the press. There are new models released nearly every day it seems, and the bar for what are called Open Source models is causing a lot of noise. It’s a challenge for anybody to keep up but overall I think it’s been a good process.
Why do you think AI should be Open Source?
The more important a technology is to the future of the economy and the more a technology impacts our daily lives, the more critical it is that it be Open Source. For economic and participation reasons, but also for security. We have seen time and time again that transparency and openness breeds better security. With more mysterious and complex technologies such as AI, Open Source offers the transparency to help us understand the decisions the technology is making. There have been a number of large players who have been lobbying for more regulation, making it more difficult to have Open Source AI, and I think that shows a very clear conflict of interest.
There is legislation out there that, if it gets passed, poses a real danger to not just Open Source AI, but Open Source in general. We have a real opportunity but also a real risk of there being conscious concentrations of power if state-of-the-art AI doesn’t fit a standard definition of Open Source. Open Source AI continues to be neck and neck with the proprietary models, which makes me optimistic.
Has your personal definition of Open Source AI changed along the way? What new perspectives or ideas did you encounter while participating in the co-design process?
My personal definition of Open Source AI is not set in stone even having been through this process for over a year. Things are moving so quickly, I think we need to be careful that perfect doesn’t become the enemy of good. Time is of the essence as the mainstream media and the tech press report on models that are trained on billions of dollars worth of hardware, claiming to be Open Source when they clearly are not. I’ve become more willing to compromise on an imperfect definition so we can come to a consensus sooner.
What do you think the primary benefit will be once there is a clear definition of Open Source AI?
All the reasons people love Open Source are inherently the same reasons why people are very tempted to put an Open Source label on their AI; trust, transparency, they can modify it and build their business on it, and the license won’t be changed. Once we finalize and ratify the definition, we can start broadly using it in practice. This will bring some clarity to the market again. We need to be able to point to something very clear and documented if we’re going to challenge a technology that has been labeled Open Source AI. Legal departments of big companies working on massive AI tools and workloads want to know that their license isn’t going to be pulled out from under them. If the definition upholds the key freedoms people expect from Open Source, it will lead to faster adoption by all.
What do you think are the next steps for the community involved in Open Source AI?
I think Stefano from the OSI has done a wonderful job of trying to hit the conference circuit to share and collect feedback, and virtual participation in the process is still key to keeping it inclusive. I think the next step is building awareness in the press about the definition and market testing it. It’s an iterative process from there.
How to get involvedThe OSAID co-design process is open to everyone interested in collaborating. There are many ways to get involved:
- Join the working groups: be part of a team to evaluate various models against the OSAID.
- Join the forum: support and comment on the drafts, record your approval or concerns to new and existing threads.
- Comment on the latest draft: provide feedback on the latest draft document directly.
- Follow the weekly recaps: subscribe to our newsletter and blog to be kept up-to-date.
- Join the town hall meetings: participate in the online public town hall meetings to learn more and ask questions.
- Join the workshops and scheduled conferences: meet the OSI and other participants at in-person events around the world.
The Drop is Always Moving: Let's meet at Drupal Starshot Initiative sessions at DrupalCon Barcelona! Check out this rundown of what you can look forward to at the event and buy your ticket before the regular prices end midnight on Monday August 19...
Let's meet at Drupal Starshot Initiative sessions at DrupalCon Barcelona! Check out this rundown of what you can look forward to at the event and buy your ticket before the regular prices end midnight on Monday August 19!
Drupal Starshot blog: Let's meet at Drupal Starshot Initiative sessions at DrupalCon Barcelona
The ambitious Drupal Starshot Initiative aims to build the new default download of Drupal, called Drupal CMS. Dries Buytaert announced it at DrupalCon Portland 2024. DrupalCon Barcelona provides a midway checkpoint in how far the teams got with the goals and the program will be packed with opportunities to get information and join the initiative.
Dries will provide an overall update in his Driesnote on Tuesday. This is a must see session! But the event will provide ample opportunities to get to know how each component is going. The following sessions are highly suggested.
A cornerstone of the experience is UI based installation of functionality. This is powered by the Recipes feature, which supports packages of functionality and configuration. Martin Anderson-Clutz and Mark Casias will present the Drupal Recipes Initiative Update. Recipes and other functionality are installed with Project Browser. Get insights into progress on that at Project Browser: making Starshot's in-browser feature composition a reality with Chris Wells and Leslie Glynn.
Automatic software installs and updates could be dangerous if the sources are not validated properly. Composer creator Nils Adermann teams up with Tim Lehnen and Christopher Gervais to explain solutions to this problem that will make Drupal project installation secure in Supply Chain Security in Drupal and Composer.
Drupal CMS will ship with Gin as the default administration team. Sascha Eggenberger will update us in Gin Admin Theme - Road to stable. But there is a lot more to figure out about the admin UI. Jen Witkowski and Stephanie Ganzer will provide insight into The Admin UI Redesign Process so we can see what more is to come.
In some cases, involving targeted AI solutions results in much faster user benefits compared to redesigning user interfaces. James Abrahams and Marcus Johansson will showcase AI innovation in Using Drupal’s AI module to power your Drupal websites and potential plans for Starshot.
Much anticipated and also much newer is the Experience Builder Initiative which aims to provide a modern experience building tool for Drupal and is planned to eventually ship with Drupal CMS as well. Lauri Eskola will update us on progress and future goals.
In Building the future of Drupal: 11, 12 and Starshot Gábor Hojtsy and Tim Plunkett will show how the different software packages are connected and build on top of each other, providing a closer look at the technologies used and processes followed.
It is not enough to make the software easier to build with, we also aim to make it easier to try. Drupal.org will have an in-browser trial experience to make Drupal easier to explore. Matt Glaman will provide a peek at the technology powering this in The Web APIs powering the Starshot trial experience.
Functionality to be built for Drupal CMS are divided in Starshot Initiative Tracks that are exploring options and building recipes to provide key features to users. The Drupal Initiative Leads keynote will explore how these tracks approached their areas, the research they did and the results they came up with.
These were only the sessions, there will be even more discussions (BoFs) and working groups (in the contribution room) that you can join. It is not too late to buy your DrupalCon Barcelona ticket, the regular ticket pricing ends at the end of August 19th. Buy your ticket now and see you there!
The Drop Times: Bold Changes to Propel Drupal Forward: Will Huggins
Real Python: The Real Python Podcast – Episode #217: Packaging Data Analyses & Using pandas GroupBy
What are the best practices for organizing data analysis projects in Python? What are the advantages of a more package-centric approach to data science? Christopher Trudeau is back on the show this week, bringing another batch of PyCoder's Weekly articles and projects.
[ Improve Your Python With 🐍 Python Tricks 💌 – Get a short & sweet Python Trick delivered to your inbox every couple of days. >> Click here to learn more and see examples ]
Real Python: Quiz: Web Scraping With Scrapy and MongoDB
In this quiz, you’ll test your understanding of Web Scraping with Scrapy and MongoDB.
By working through this quiz, you’ll revisit how to set up a Scrapy project, build a functional web scraper, extract data from websites using selectors, store scraped data in a MongoDB database, and test and debug your Scrapy web scraper.
[ Improve Your Python With 🐍 Python Tricks 💌 – Get a short & sweet Python Trick delivered to your inbox every couple of days. >> Click here to learn more and see examples ]
Dirk Eddelbuettel: RcppEigen 0.3.4.0.1 on CRAN: Minor Maintenance
A new maintenance release of RcppEigen is now on CRAN, and will go to Debian shortly as usual. Eigen is a C++ template library for linear algebra: matrices, vectors, numerical solvers, and related algorithms.
A very recent change in the development version of R (aka “r-devel”) expanded the set of declared BLAS and LAPACK functions (and I tooted approvingly about it as well). It turns out that the xerbla() declaration there (which, as usual for R and as discussed in Writing R Extensions, defines the new optional character length entry for a char vector) conflicts with one in the blas.h header in Eigen upsetting the compilation of just one reverse-dependency. So CRAN, as they so often (and quietly) do in these cases, gave us a friendly and concise heads-up and asked for a change so we complied, did the usual reverse-dependency check of the other 400+ packages using RcppEigen and produced the new release which was injected into the repository during the current summer break.
The complete NEWS file entry follows.
Changes in RcppEigen version 0.3.4.0.1 (2024-08-14)Conditionally comment-out xerbla in blas.h as it is now providedd by R-devel albeit with FC_LEN_T (per a CRAN request)
Minor package updates (continuous integration, badges)
Courtesy of CRANberries, there is also a diffstat report for the most recent release.
If you like this or other open-source work I do, you can sponsor me at GitHub.
This post by Dirk Eddelbuettel originated on his Thinking inside the box blog. Please report excessive re-aggregation in third-party for-profit settings.
LN Webworks: How to set up WordPress with docker?
Docker is an open-source software that helps us to run the container or which provides us with a containerized platform. In simple, Docker is very famous and widely used.
WordPressWordPress is an open-source content management system (CMS) that makes it easy to create and manage a website. It is the most popular CMS in the world. Millions of business owners, bloggers, and publishers use WordPress daily to maintain their online presence.
Bits from Debian: Debian Celebrates 31 years!
As the expression goes, "Time flies when you are having fun", meaning you do not normally account for the passage of time when you are distracted and enjoying yourself. The expression is a well established English idiom, though today for a moment the Debian Project pauses to reflect on that expression.
It has been 31 years now that we have been around.
It has been 31 amazing years of fun and amazement in watching the world around us grow and ourselves grow into the world.
Let us tell you, we have had a great time in doing so.
We have been invited to nearly every continent and country for over 25 Debian Developer Conferences, we have contributed to the sciences with our Blends[1] distributions; we have not given up on or discounted aged hardware with Long Term Support (LTS)[2]; we have encouraged and sponsored diversity with our Outreach Programs[3]. We have contributed to exploration of this lovely planet and the vast vacuum of space[4] (where no one hears Developers scream).
There is more to what we have done but from a cursory glance, we seem to have done it all.
But we never noticed it.
Time does fly or "escape irretrievably"[5] when having a good time and making progress, though our pause at this moment is that we have also had a few moments of honest self-evaluation and reflection. Over the years the project has lost some significant loved ones who were dear to us - you may have called them Developers while we called them Friends, we called them Mentors, we hurt, we grieved, and in their memories we keep moving forward.
The course of the project has seen a few tragedies, has seen heated discourse in the public domain, has addressed and weathered concerns, and has still continually grown.
And we did that in the public sphere, because at the core this is an open project. Our code is public, our bugs and failings are public, our communications are public, our meetings are public, and our love of FLOSS is most definitely public.
And now more that ever the Debian Project realizes that the "we" that is sprinkled throughout this letter is just another way of saying: "you". You, the user, contributor, sponsor, developer, maintainer, bug squasher; all of you make the WE that is Debian. So what are WE waiting for? Lets celebrate!
Join the worldwide celebration or find an event local to you by visiting our DebianDay events page[6] - see you there!
[1] https://www.debian.org/blends
[2] https://wiki.debian.org/LTS
[3] https://wiki.debian.org/Teams/Outreach
[4] https://bits.debian.org/2017/04/unknown-parallel-universe-uses-debian.html
[5] https://en.wikipedia.org/wiki/Tempus_fugit
[6] https://wiki.debian.org/DebianDay/2024
A Fresh Perspective on Things
Can you believe it’s already been almost half a year since Plasma 6.0 came out? Time really flies! The other day I went through some of my 50+ open merge requests on KDE’s GitLab and took another stab at them. Some are four years old at this point but it definitely helped to let them sit for a while and finish them with a fresh new perspective and clear mind.
Places panel tooltip indicating mount point, device name, and free space information Places panel tooltipWhat really grinds my gears is elided labels with no tooltip or other means to see the full text. The Places panel in Dolphin and the file dialogs is one prime example of this. While the default locations have concise names, particularly removable media can have rather long descriptions. Additionally, while you can roughly tell how full the device is by looking at the thin line underneath, there’s no way to know precisely. You either have to browse the device or access the properties dialog through the context menu. I also added the bookmark’s destination and mount points. In case of loop devices, such as ISO images, the path to its backing file is shown instead.
Finally able to see the full text!The main reason I haven’t merged this feature sooner is that under Wayland the tooltips didn’t follow the item as you moved the mouse. You see, Qt reuses that window and just updates its position and text for different controls. Under Wayland, however, windows cannot just position themselves on absolute coordinates. Popup windows, such as menus and tooltips, instead provide a semantic description of where they would like to be placed using an XDG Positioner (part of the XDG Shell protocol that contains many interfaces for desktop-like use cases).
It tells the compositor, among other things, where to anchor to (e.g. a button or menu item) and what to do if it ends up outside the visible area: slide the window to fit or flip it to the other side, and so on. While Qt already used XDG Positioner for the longest time, before Qt 6.8 it did not support the reposition request. Hence the tooltip was placed correctly the first time but subsequently never moved. Since I didn’t want the patch to bitrot any further, I merged it with a check for Qt Wayland >= 6.8, so please don’t be alarmed if you cannot enjoy the feature just set. I figured, we haven’t had tooltips in there for the longest time, hence not having them for another few months is better than a distracting user experience with an influx of bug reports.
Audible feedback when (un)plugging displaysPlasma 6.0 introducted support for the XDG sound theme spec which lets applications play sound effects using a semantic name. Among those are device-added and device-removed events which are played when plugging in and out a USB device. However, there’s more things you can plug into a computer. One logical candidate is output devices: is the cable even plugged in, the projector turned on, or did it just not configure the resolution correctly?
Display detected – naturally by default there’s no such popup!Originally, I planned to implement it as part of the devicenotifications daemon which monitors USB devices. However, once faced with the prospect of having to monitor multiple GPUs using libdrm (note that QScreen is only enabled outputs), I realized: who knows your output devices best? The compositor, of course! Therefore, I started adding output notifications to KWin. The key difference to its normal output management is that I want to be notified of an output device whenever it is present, regardless of whether it is enabled or configured. However, it turns out there’s a KDE-proprietary Wayland protocol for managing output devices for use by our display settings module. As a result I didn’t have to change KWin and could merge this functionality with the devicenotifications daemon after all!
Import VPN configuration on clickA feature both Nico and I worked on independently from each other was the ability to import a new VPN configuration by just clicking on the file. While mine was implemented as a small helper application in Plasma Network Management, Nico put the functionality into the settings module itself by launching it with a special command-line argument. The latter approach has the advantage that it doesn’t duplicate any code dealing with VPN import (it’s all plugin-based and more complicated than you think). Therefore I abandoned my merge request and will let Nico finish his instead.
Import VPN connection by merely opening it from the download finished notification or file manager.Currently it only supports OpenVPN and Cisco VPN configuration files as those are the only ones to actually have a registered MIME type in shared-mime-info and can therefore participate in file type associations. If you use any other VPN provider that Plasma supports, please get in touch so we can figure out a way to support them, too.
In just three weeks a bunch of KDE developers, designers, users, stakeholders, and many others, including myself, will meet up in Würzburg, Germany, for this year’s Akademy. Come join us, it’s always great fun and attendance is free!
joshics.in: Choosing Between Drupal Core and Drupal CMS: A Comprehensive Guide
With the recent rebranding of Drupal Starshot to 'Drupal CMS', there has been some confusion surrounding the distinctions between Drupal CMS and Drupal Core. Both play critical roles in the Drupal ecosystem, yet they cater to different needs and use cases. In this blog post, we will explore the nuances of each, providing you with detailed insights and specific use cases to help you determine the best fit for your project.
What is Drupal Core?Drupal Core is the foundation of the Drupal content management framework. It includes essential functionalities such as user management, content authoring, and taxonomy, without any additional modules or themes. Essentially, Drupal Core is ideal for developers who prefer a minimalist approach, allowing them to build a website from the ground up, adding only the functionalities that are necessary for their specific needs.
Key Features of Drupal Core:
- Minimalist Framework: Provides a lean starting point without extra bloat.
- High Customisability: Allows developers to build custom features without pre-configured settings.
- Essential Functionalities: User management, content authoring, and taxonomy.
- Security: Regular updates and robust security measures.
Use Cases for Drupal Core:
- Custom Web Applications: Ideal for projects requiring unique functionalities.
- High Traffic Websites: Optimal for performance tuning and scalability.
- Complex Integrations: Suitable for environments requiring extensive custom integrations.
Drupal CMS (formerly known as Drupal Starshot) is a more user-friendly, ready-to-use version of Drupal tailored for those who want a feature-rich website out of the box. It includes a carefully curated set of modules, themes, and configurations to streamline the development process. Essentially, Drupal CMS is designed to offer immediate functionality with minimal setup, making it an excellent choice for less technically inclined users or for those who need to rapidly deploy a website.
Key Features of Drupal CMS:- Pre-configured Modules: Comes with essential modules for various functionalities like SEO, security, and performance.
- User-friendly: Simplifies the development process with pre-set configurations.
- Theming Options: Wide range of professional themes to choose from.
- Community Support: Extensive documentation and community support.
- Small to Medium Businesses: Perfect for businesses needing a robust online presence without extensive custom development.
- Non-technical Users: Ideal for users who want to set up and manage their site with minimal technical know-how.
- Rapid Deployment: Excellent for projects requiring quick turnaround times, such as event websites or campaign microsites.
- Content-driven Websites: Great for blogs, news portals, and other content-heavy sites where pre-configured SEO and performance optimisations are beneficial.
Deciding between Drupal Core and Drupal CMS hinges on your project requirements and technical expertise. If you're looking for a fully customisable solution and have the development resources, Drupal Core offers unparalleled flexibility. On the other hand, if you need a comprehensive and user-friendly solution that allows you to hit the ground running, Drupal CMS is the way to go.
Both are exceptional in their own right and serve distinct purposes within the Drupal ecosystem. By understanding their individual strengths and applications, you can make an informed decision that aligns with your project goals.
Drupal Drupal CMS Drupal core Drupal PlanetPromet Source: Drupal GovCon: Transforming Federal Digital Experiences
www-zh-cn @ Savannah: Join us in saying goodbye to our beloved FSF office on August 16!
Dear Translators:
The FSF is officially going remote, so come visit the FSF office one last time. After August 31st, FSF will no longer be residing at the office on 51 Franklin Street.
For the final time, FSF will open the office to everyone who would like to visit the office one last time on Friday, August 16th from 6:00 p.m. - 8:30 p.m. for the move-out party.
You can also leave your words at the member forum:
https://forum.members.fsf.org/t/we-are-closing-down-the-51-franklin-street-office-do-you-have-any-memories-to-share/5614
You can write your own blog as I have done:
https://liberal.codeberg.page/goodbye-51-franklin-street.html
May FSF long live in our mind.