Feeds
FSF Blogs: December GNU Spotlight with Amin Bandali: Eighteen new GNU releases!
December GNU Spotlight with Amin Bandali: Eighteen new GNU releases!
mailutils @ Savannah: GNU Mailutils Version 3.18
Version 3.18 of GNU Mailutils is available for download.
A short summary of changes follows.
Using all in mailutils debug level specification enables all debugging categories. Syntactically, all can be used wherever an actual category name is allowed, thus, e.g., all.!=prot enables all levels except prot in all debugging categories.
In particular, mail variables that correspond to some mailutils configuration settings, now correctly reflect their value.
- Minor fix in handling of the EHLO command in smtp client.
- Improve docs.
- Minor fix in mhn and related tests.
- mail utility: use the mailer configuration capability.
Skynet Technologies USA LLC Blogs: Top factors influencing the cost of Migrating from Drupal 7 to 11 for your business!
The Drop Times: Revitalizing Drupal’s Admin Experience: A Closer Look at the Ongoing Redesign Journey
Droptica: How to Add Locations on Maps in Drupal? With Geofield and Leaflet Maps
In the following blog post, I’ll present a complete guide on creating a website with a map and vendor locations in Drupal. This solution is based on free tools such as OpenStreetMap, Geofield, and Leaflet modules. Most importantly, you don't need programming knowledge to achieve this effect - you can configure everything through the Drupal interface. I encourage you to read the article or watch the video in the ”Nowoczesny Drupal” series.
Real Python: The Real Python Podcast – Episode #233: PyCoder's Weekly 2024 Top Articles & Missing Gems
PyCoder's Weekly included over 1,500 links to articles, blog posts, tutorials, and projects in 2024. Christopher Trudeau is back on the show this week to help wrap it all up by sharing some highlights and uncovering a few missing gems from the pile.
[ 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 ]
Web Review, Week 2025-01
Happy new year everyone! It’s now 2025, we’ll see what it brings.
Unsurprisingly this week we got a couple of nice “2024 retrospective” articles in this edition, I expect more to show up in the coming weeks. Anyway, let’s go for my web review for the week 2025-01.
Open Source on its own is no alternative to Big Tech - Bert Hubert’s writingsTags: tech, foss, business
Or why making a dent in the enterprise software space is hard for FOSS… The good news is, it’d require setting up whole ecosystems of services.
https://berthub.eu/articles/posts/open-source-by-itself-is-no-alternative-for-big-tech/
Tags: tech, web, browser, complexity
The Web standards are indeed too complex. That severely limits the possibility of browser engine incumbents. I agree there’s a deeper lesson here about the scale of technologies.
https://scottrichmond.me/the-web-is-too-big/
Tags: tech, foss, knowledge, wikipedia, politics
Very good background information on the latest attempt at discrediting Wikipedia.
https://www.citationneeded.news/elon-musk-and-the-rights-war-on-wikipedia/
Tags: tech, ai, machine-learning, gpt, complexity, emergence, reliability
This highlights quite well the limits of the models used in LLMs.
https://www.bcs.org/articles-opinion-and-research/does-current-ai-represent-a-dead-end/
Tags: tech, ai, machine-learning, gpt, copilot
The results are unsurprising. They definitely confirm what we expected. The models are good at predicting the past, they’re not so great at solving problems.
https://www.jerpint.io/blog/advent-of-code-llms/
Tags: tech, ai, machine-learning, gpt, economics, ecology, criticism
Good perspective on how the generative AI space evolved in 2024. There are good news and more concerning ones in there. We’ll see what 2025 brings.
https://simonwillison.net/2024/Dec/31/llms-in-2024/
Tags: tech, databases, business
Good overview on how the databases landscape evolved the past year.
https://www.cs.cmu.edu/~pavlo/blog/2025/01/2024-databases-retrospective.html
Tags: tech, version-control, git, secrets, tools
Looks like a nice tool for a simple management of your project specific secrets.
https://blog.ktz.me/keeping-secrets-secret-with-git-crypt/
Tags: tech, web, standard, parsing
Parsers are required to normalize URLs but often they just don’t. To be kept in mind in your code.
https://lemire.me/blog/2025/01/02/how-does-your-url-parser-handle-unicode/
Tags: tech, documentation, writing, tutorial
Need to write a tutorial? Here is a good set of rules to follow. Don’t be fooled, it sounds simple but it is hard work.
https://refactoringenglish.com/chapters/rules-for-software-tutorials/
Tags: tech, legacy, engineering
Good advice to work with large legacy code bases. You better know it very well before you make large changes to it.
https://www.seangoedecke.com/large-established-codebases/
Tags: tech, design, complexity, simplicity, performance
Or why you shouldn’t insert an abstraction just for the sake of it. Also clearly not all abstractions are created equal.
https://fhur.me/posts/2024/thats-not-an-abstraction
Tags: tech, software, design, knowledge, organization
Very nice piece. This is indeed mostly about building organizational knowledge. If someone leaves a project that person better not be alone to ensure some continuity… lost knowledge is very hard to piece back together.
https://olano.dev/blog/software-design-is-knowledge-building/
Bye for now!
Adding Home Automation to KDE
Home Automation is mostly, as the name implies, about automation.
The machine you're in front of all work-day has an awful lot of useful information that can be useful in your home management.
I have a script lower my blinds if I turn on the camera during the afternoon as otherwise there's an annoying glare. My office lights and monitor both have a redder hue at night, but disabling night-mode on my PC automatically disables the main light performing redshift too. I want my screen to turn off not 10 minutes after activity, which is simultaneously both annoyingly too long and too short, but the moment the motion sensor in my room says I've left.
Home Assistant, the best open source home automation tool out there supports all of this, but it needs some hooks for the PC to tell it about the current state and invoke actions on the PC.
None of the existing solutions worked well for what I wanted. I wrote something for personal use a few years ago that worked great for me, I ran it in the background and didn't plan to take it further.
During the KDE Goals sprint another user suggested creating something very similar (https://phabricator.kde.org/T17435). That goal may not have been chosen, but it did motivate me to tidy up and document what I had and turn it into a more fleshed out project.
I made a small daemon, named Kiot (derived from "KDE Internet of Things") that exposes this information to your Home Automation software.
This is pre-alpha software, there's no GUI configuration it relies on manually setting up a configuration file to point to your Home Automation server. If there's enough traction I might make it more packagable, and create a UI config over the Christmas break.
There's a bunch of sensors and actions shipped, but it contains a faux plugin system to make extension easy along with hooks for user supplied scripts.
- User activity
- Locked state
- Suspend/Power actions
- Camera in use
- Accent Colour
- Arbitrary Scripts
- Shortcuts
- Nightmode Inhibition
Using this from Home Assistant is then as straightforward as possible.
Checking it outThe repository can be found at https://github.com/davidedmundson/kiot which has setup instructions along with developer documentation (https://github.com/davidedmundson/kiot/blob/master/DEVELOPMENT.md) if you want to make any additional plugins.
Taavi Väänänen: Automatically updating reverse DNS entries for my Hetzner servers
Some parts of my infrastructure run on Hetzner dedicated servers. Hetzner's management console has an interface to update reverse DNS entries, and I wanted to automate that. Unfortunately there's no option to just delegate the zones to my own authoritative DNS servers. So I did the next best thing, which is updating the Hetzner-managed records with data from my own authoritative DNS servers.
Generating DNS zones the hard wayThe first step of automating DNS record provisioning is, well, figuring out which records need to be provisioned. I wanted to re-use my existing automation for generating the record data, instead of coming up with a new system for these records. The basic summary is that there's a Go program creatively named dnsgen that's in charge of generating zone file snippets from various sources (these include Netbox, Kubernetes, PuppetDB and my custom reverse web proxy setup).
Those snippets are combined with Jinja templates to generate full zone files to be loaded to a hidden primary running Bind9 (like all other DNS servers I run). The zone files are then transferred to a fleet of internal authoritative servers as well as my public authoritative DNS server, which in turn transfers them to various other authoritative DNS servers (like ns-global and Traficom anycast) for redundancy.
There's also a bunch of other smaller features, like using Bind views to server different data to internal and external clients, and resolving external records during record generation time to be used on apex records that would use CNAME records if they could. (The latter is a workaround for Masto.host, the hosting provider we use for Wikis World, not having a stable IPv6 address.) Overall it's a really nice system, and I've spent quite a bit of time on it.
Updating records on Hetzner-managed spaceAs mentioned above, Hetzner unfortunately does not support custom DNS servers for reverse records on IP space rented from them. But I wanted to use my existing, perfectly working DNS record generation setup since that works perfectly fine. So the obvious answer is to (ab)use DNS zone file transfers.
I quickly wrote a few hundred lines of Go to request the zone data and then use the Hetzner robot API to ensure the reverse entries are in sync. The main obstacle hit here was the Hetzner API somehow requiring an "update" call (instead of a "create" one) to create a new record, as the create endpoint was returning an HTTP 400 response no matter what. Once I sorted that out, the script started working fine and created the few dozen missing records. Finally I added a CronJob in my Kubernetes cluster to run the script once in a while.
Overall this is a big improvement over doing things by hand and didn't require that much effort. The obvious next step would be to expand the script to a tiny DNS server capable of receiving zone update NOTIFYs to make the updates happen real-time. Unfortunately there's now no hiding of the records revealing my ugly hacks clever networking solutions :(
Reworking and porting my KRunner plugins
Writing KRunner plugins was my first real developer experience with KDE. I started out right after graduating from school in 2019. Since then, I continued to maintain my plugins and correct some of the code-crimes that have been committed. This continued adding some features, removing too obscure features, getting user feedback and also making sure the plugins are easy to install without too much developer knowlege being needed. By maintaining the KRunner framework, I also deprecated lots of API and provided cleaner alternatives as part of the efforts for KDE Frameworks 6. Those changes had to be applied to all the plugins. I also contributed to other developer’s plugins that I found useful.
In this post, I will give you an overview of the different plugins and show you, how they may be useful to your workflow.
All the below mentioned Plugins are compatible with Plasma5 and Plasma6, meaning even users of LTS distributions can utilize them.
KRunner plugins also work in the normal application launchers - meaning you should really give those a look!
This is a utility to search and copy emojis. On X11, you may paste them using xdolib. To ensure you get the emojis you like the most quickly, it is possible to configure favorites in the dialog. Custom emoji, emoji+text entries and aliases can also be added in the config module.
https://github.com/alex1701c/EmojiRunner/
While I love Kate and neovim for doing code editing, having JetBrains IDEs is amazing when working on bigger Java/JavaScript projects. To improve the integration into KDE Plasma, the KRunner plugin searches for the installed JetBrains IDEs and reads the recently opened projects of them. Those can be shown and filtered in KRunner. This allows one to directly launch the right project from KRunner!
Sometimes one may find oneself navigating projects in Dolphin. For this case, a context menu counterpart exists. In there, you find the options to open the folder in the installed JetBrains IDEs. In case the folder is known as a project, the options are presented at the top-level.
https://github.com/alex1701c/JetBrainsRunner
https://github.com/alex1701c/JetBrainsDolphinPlugin
Next to opening recent JetBrains projects, this plugin allows one to open workspaces configured in VSCode. It is pretty straightforward - just install the “Project Manager” plugin in VSCode or Codium, add a few projects and enjoy opening them directly from KRunner.
https://github.com/alex1701c/krunner-vscodeprojects/
Having multiple profiles in Firefox may be useful for separating the work one is doing, managing different extensions or different settings. However, switching between them is rather annoying. Manually adding actions to the desktop file may work, but is rather cumbersome and not as flexible.
This plugin allows you to integrate Firefox profiles automatically in KRunner. It also allows for sorting, opening private windows as actions and also adds them to the desktop file. Meaning, you can right-click on Firefox in the taskbar or the launcher and have the actions there available.
https://github.com/alex1701c/krunner-firefox
This plugin allows you to easily connect to NordVPN servers, disconnect and view the status. A configurable status is available in KRunner or an extended one when clicking/pressing enter on the respective result.
When connecting, a country, city or specific server may be entered.
It is no advertisement or recommendation! Just saying :D
https://github.com/alex1701c/NordVPNKrunner/
Tmux is a terminal multiplexer that allows you to have multiple terminals in the same window (split screen, or multiple “tabs”). You may also detach from it without killing the processes. This is one of the advantages of using it instead or in addition to for example Konsole’s tabs.
Keeping track of the sessions might be a bit hard though. To solve this issue, this plugin provides an overview of the currently active sessions and allows you to create new ones with optionally a specified name. The sessions will be opened in the configured terminal - by default Konsole.
https://github.com/alex1701c/TmuxRunner
While I have given the official webshortcuts quite a bit of love over the years, there may be some things lacking. For example, there is always the separator character (colon or space) that separates your query from the provided search, like “dd:testme”. With this plugin, you only need to type one out. Additionally, it can provide search suggestions!
https://github.com/alex1701c/QuickWebShortcuts
This plugin allows one to add and search mount configurations for Verarcrypt. This includes file/device paths, display name, mount path and keyfiles. Optionally, on X11, the password can be read and entered directly using the command line “pass” password manager.
Other mentionsI have the one or other, maybe less useful plugin. Like an integration for KWallet or a little timer utility.
For users of VirtualBox, https://github.com/alvanieto/vbox-runner can be very useful. I contributed a merge requests to allow the plugin to work with KF5 and KF6.
Hugo van Kemenade: Moved to hugovk.dev
FSF Events: Free Software Directory meeting on IRC: Friday, January 10, starting at 12:00 EST (17:00 UTC)
FSF Events: Free Software Directory meeting on IRC: Friday, January 3, starting at 12:00 EST (17:00 UTC)
Drupal Association blog: Reflecting on Our Journey: HeroDevs in the Drupal World
The Drupal Association has published this guest blog on behalf of HeroDevs.
As the end-of-life (EOL) for Drupal 7 approaches on 5 January 2025, HeroDevs has embraced the challenge of stepping into the Drupal community and providing vital support for this well-loved but aging platform. Since onboarding our first customer in September, we’ve had the unique opportunity to assist organizations relying on Drupal 7. It’s been a year of learning, adapting, and preparing—a journey filled with both rewarding and challenging moments.
Engaging with the Drupal CommunityOur journey into the Drupal world has been enriched by our participation in various community events. Over the past year, we’ve attended gatherings like DrupalCon Portland, GovCon, DrupalCamp Asheville, and BadCamp, where we’ve had the privilege of connecting with other Drupal professionals and sharing our insights. We’ve also taken to the stage at events like Drupal GovCon and EvolveDrupal in Atlanta to share our expertise and discuss strategies for navigating Drupal 7’s EOL.
These events have not only deepened our understanding of the community but also allowed us to build meaningful relationships with fellow developers, site owners, and contributors. The collective knowledge and passion within the Drupal ecosystem have been invaluable as we continue to refine our solutions and expand our support.
Our First User Case StudyOne of our earliest adopters came to us with a critical need: ensuring the continued functionality of their mission-critical Drupal 7 site. They required consistent updates and security patches to maintain stability and compliance. By addressing these needs, we were able to keep their site secure and operational without disruption. This successful partnership laid the foundation for our approach to supporting Drupal 7 users and solidified our commitment to meeting their unique challenges.
Challenges We’ve EncounteredEntering the Drupal world has been an eye-opening experience. One of the most notable challenges has been understanding the diverse needs of Drupal 7 users. Each organization has its own use cases, custom modules, and integrations. Our initial onboarding revealed just how varied these needs could be, pushing us to adapt our processes and broaden our expertise.
Another significant hurdle was navigating the intricacies of Drupal 7’s ecosystem while ensuring that our solutions met the community’s high standards. For example, we discovered that certain modules had been neglected for years, with no clear documentation or consistent coding practices.
Adjustments We’ve MadeOne of the most critical adjustments we’ve made has been streamlining our onboarding process. Early on, we faced minor issues like a typo in the curl script used to integrate our services. While the fix was straightforward, it highlighted the importance of rigorous testing and documentation. Today, our onboarding process is smooth, and all our early adopters have transitioned seamlessly to our solutions.
We’ve also refined our support model to include guidance for custom and legacy modules. While these aren’t covered under our standard SLA, providing tailored advice has helped our clients maintain compatibility and functionality across their tech stacks. This extra layer of support has strengthened our relationships with customers and reinforced their confidence in our solutions.
Preparing for the EOLWith the EOL for Drupal 7 fast approaching, our focus has been on ensuring a seamless transition for our clients. We’ve prioritized:
-
Proactive Module Maintenance: We’ve forked and maintained unsupported modules, addressing vulnerabilities and ensuring compatibility with evolving web standards.
-
Customer-Centric Support: By collaborating closely with our clients, we’ve been able to anticipate their needs and deliver solutions tailored to their unique requirements.
-
Comprehensive Testing: Every solution we implement undergoes rigorous testing to prevent issues and ensure long-term stability.
As we reflect on the past year, it’s clear that stepping into the Drupal world has been both a challenge and a privilege. We’ve learned to navigate an intricate ecosystem, adapt to the needs of a diverse user base, and provide robust support during a pivotal time for Drupal 7 users. Our commitment to keeping sites secure, functional, and future-ready has positioned us as a trusted partner in the community.
We’re excited to continue supporting our clients through the EOL transition and beyond. Whether it’s maintaining unsupported modules, addressing compatibility challenges, or providing expert guidance, HeroDevs is here to ensure that Drupal 7 users can move forward with confidence. Together, we’re proving that even as official support wanes, the Drupal community can thrive.
Drupal Starshot blog: A cookie cutter for a modern, flexible CMS' launch
Drupal has a long history of community-made plush toys, baby bibs, stress balls, tree ornaments, card games, the list goes on. But these were often hard to get. What if you could print it at home or a 3d printing service nearby?
I accidentally stumbled onto Klara Binon's work on a Drupal logo cookie cutter model. Asked her over the holidays to update it for the current Drupal (CMS) logo and now the updated cookie cutter model is available in the bgcode format.
Klara also shared this recipe for cookies that keep their shape:
- 150gr sugar
- 50gr vanilla sugar
- 200g salted butter
- 1 egg
- 400gr flour
- Some grated lemon peel
Once baked, resulting cookies will look and taste great. Finish with your favourite icing!
Wanna bring some to your local Drupal CMS launch parties?
Smartbees: Drupal Coding Standards
Adhering to specific programming standards while creating websites is key to project quality, security, and scalability. In this article, we will discuss the essence of these standards and show practices that allow for effective function implementation on the Drupal platform.