Debian embraces reproducible builds

Big news from the Debian release team: Debian is going for reproducible package builds.

Aided by the efforts of the Reproducible Builds project, we’ve decided it’s time to say that Debian must ship reproducible packages. Since yesterday, we have enabled our migration software to block migration of new packages that can’t be reproduced or existing packages (in testing) that regress in reproducibility.

↫ Paul Gevers

Reproducible means, in short, that you can verify that the source code used to build a package is indeed that source code. This provides a layer of defense against people tampering with code or otherwise trying to fiddle with the process between source code and final package on your system. This effort constitutes a tremendous amount of work, but it’s massively important.

“Building a web server in aarch64 assembly to give my life (a lack of) meaning”

ymawky is a small, static http web server written entirely in aarch64 assembly for macos. it uses raw darwin syscalls with no libc wrappers, serves static files, supports GET, HEAD, PUT, OPTIONS, DELETE, byte ranges, directory listing, custom error pages, and tries to be as hardened as possible.

why? why not? the dream of the 80s is alive in ymawky. everybody has nginx. having apache makes you a square. so why not strip every single convenience layer that computer science has given us since 1957? i wanted to understand how a web server actually works, something i know little about coming from a low-level/systems background. the risks that come up, the problems that need to be solved, the things you don’t think about when you’re writing python or c.

this (probably) won’t replace nginx, but it is doing something in the most difficult way possible.

↫ Tony “imtomt”

I love this.

Sculpt OS 26.04 released

Sculpt OS, the operating system based on the various components that make up Genode, has seen a new release, 26.04. A lot of the new features and changes to Genode that we’ve been talking about for a while now are part of this release, most notably the new human-inclined data syntax that replaces XML as the configuration language for Genode. That’s not the only major improvement, though.

Regarding technical advances of the new version and device support in particular, all Linux-based drivers have been updated to kernel version 6.18, making the system compatible with most modern Intel-PC hardware. Laptop users may appreciate the new USB networking option that is now offered by default.

Software-wise, the new version comes with a longed-after update of Qt6 along with the Chromium-based Falkon browser, downloadable at the depot of cproc. In the same menu, one can find the experimental first version of the Goa SDK running natively on Sculpt OS without the need of a Linux VM. For the first time, Genode components can now be developed, compiled, and tested using Sculpt OS on its own. The amazement of walking without crutches.

↫ Sculpt OS 26.04 release notes

This new release is available for common PC hardware, the PinePhone, and the MNT Reform. 

Sprite scaling on the Master System: building the new on the ruins of the old

Sprite scaling. It is the coolest effect of the 2D arcade era, a must-have for games from Space Harrier to Real Bout Fatal Fury Special. Home consoles pretty much lacked it– sorry, Nintendo, but Mode 7 only scales a background, not sprites. So therefore you might be surprised to hear that Sega’s plucky underdog Master System could do it. Well, don’t get your hopes up; this is far too limited– calling it scaling is overstating things. But let’s dig in anyway!

↫ Nicole Branagan

Nicole Branagan has the best articles on obscure console features, and this one is no exception.

Google is tying reCAPTCHA to Google Play Services, screwing over de-Googled Android users

The ways in which Google can lock you into their ecosystem are often obvious, but sometimes, they’re incredibly sneaky and easily missed.

CAPTCHA tests are annoying, but at the same time, they can help protect websites from bots. While these tests are already the bane of our internet existence, they are going to get worse for some Android users. A requirement for Google’s next-generation reCAPTCHA system will make it a lot harder for de-Googled phones to browse the web.

A Reddit user has highlighted a seemingly innocuous support page for Google’s reCAPTCHA system. The page in question relates to troubleshooting reCAPTCHA verification on mobile. In the document, it says that you’ll need to use a compatible mobile device to complete verification. If you have an Android phone, then that means you’ll need to be running Google Play Services version 25.41.30 or higher.

↫ Ryan McNeal at Android Authority

When was the last time you actively thought about reCAPTCHA being a Google property? Even then, when was the last time you imagined something as annoying but ultimately basic as a captcha prompt could be used to tie people to Google Play Services, and thus to “blessed” Android? Every time we manage to work around one of these asinine ties to Google Play Services, another one pops up to ruin our day. We’re so stupidly tied down to and entirely dependent on two very mid – at best – mobile operating systems, and it’s such a stupid own goal for especially everyone outside of the US to just sit there and do nothing about it.

Worse yet, it seems we’re only tying ourselves down further, while paying for the privilege.

At the very least we should be categorising certain services – government ID services, payment services, popular messaging platforms, and a few more – as vital infrastructure, and legally mandate these services have clearly defined and well-documented APIs so anyone is free to make alternative clients. The fact that many people are tied to either iOS or “blessed” Android because of something as stupid as what bank they use or the level of incompetency of their government ID service should be a major crisis in any country that isn’t the US.

I don’t want to use iOS or Android, but nobody is leaving me any choice. It’s infuriating.

Why don’t lowercase letters come right after uppercase letters in ASCII?

With that context, I always found it strange that the designers of ASCII included 6 characters after uppercase Z before starting the lowercase letters. Then it hit me: we have 26 letters in the English alphabet, plus 6 additional characters before lowercase starts: 26 + 6 = 32. If you know anything about computers, powers of 2 tend to stick out. Let’s take a look at the binary representations of some characters compared to their lowercase counterparts.

↫ Tyler Hillery

I only have a middling understanding of the rest of the article and thus the ultimate reason why ASCII includes those six characters between Z and a, but I think it comes down to making certain operations on uppercase and lowercase letters specifically more elegant. In some deep crevices of my brain all of this makes sense, but I find it very difficult to truly understand and explain as someone who knows little about programming.

Detecting (or not) the use of -l and -c together in Bourne shells

Many Bourne shells go slightly beyond the POSIX sh specification to also support a ‘-l’ option that makes the shell act as a ‘login shell’. POSIX’s omission of -l isn’t only because it doesn’t really talk about login shells at all, it’s also because Unix has a special way of marking login shells that goes back very far in its history. The -l option isn’t necessarily what login and sshd and so on use, it’s something that you can use if you specifically want to get a login shell in an unusual circumstance.

Bourne shells also have a ‘-c <command string>’ option that causes the shell to execute the command string rather than be interactive (this is a long standing option that is in POSIX). It may surprise you to hear that most or all Bourne shells that support -l also allow you to use -l and -c together. Basically all Bourne shells interpret this as first executing your .profile and so on, then executing the command string instead of going interactive. One use for this is to non-interactively run a command line in the context of your fully set up shell, with $PATH and other environment variables ready for use.

↫ Chris Siebenmann

Now, what if you want to detect the use of these two options combined, for instance to make it so certain parts of your .profile are ignored? It turns out very few Bourne shells actually support this, and that’s what Siebenmann’s latest post is about.

Fedora Project Leader says he doesn’t care about the reputational damage from Fedora embracing “AI”

On the Fedora forums, there’s a long-running thread about a proposal for Fedora to build a variant of the distribution aimed specifically at “AI”. The “problem” identified in the proposal is that setting up the various parts that a developer in the “AI” space needs is currently quite difficult on Fedora, and as such, a bunch of technical steps need to be taken to make this easier. Setting aside the “AI” of the proposal and ensuing discussion, it’s actually a very interesting read, going deep into the weeds about consequential questions like building an LTS kernel on Fedora, support for out-of-tree kernel mods, and a lot more.

To spoil the ending: the proposal has already been approved unanimously by the Fedora Council, meaning the efforts laid out in the proposal will be undertaken. This means that, depending on progress, we’ll see a Fedora “AI” Desktop or whatever it’s going to be called somewhere in the timeframe from Fedora 45 to Fedora 47. As a Fedora user on all my machines, I’m obviously not too happy about this, since I’d much rather the scarce resources of a project like Fedora goes towards things not as ethically bankrupt, environmentally destructive, and artistically deficient as “AI”, but in the end it’s a project owned and controlled by IBM, so it’s not exactly unexpected.

What really surprised me in this entire discussion is a post by Fedora Project Leader Jef Spaleta, responding to worries people in the thread were having about such a big “AI” undertaking under the Fedora branding causing serious reputational damage to Fedora as a whole. These concerns are clearly valid, as people really fucking hate “AI”, doubly so in the open source community whose work especially “AI” coding tools are built on without any form of consent. As such, Fedora undertaking a big “AI” desktop project is bound to have a negative impact on Fedora’s image. Just look at what aggressively pushing Copilot has done to Windows 11’s already shit reputation.

Spaleta, however, just doesn’t care. Literally.

As the Fedora Project Leader, I am absolutely not concerned about the reputational damage to this project that comes with setting up an entirely new output attractive to developers who want to make use of Ai tools.

↫ Jef Spaleta

I’ve been looking at this line on and off for a few days now, and I just can’t wrap my head around how the leader of an open source project built on and relying on the free labour of thousands of contributors says he doesn’t care about reputational damage to the project he’s leading. Effective and capable open source contributors are not exactly a commodity, and a lot of the decisions they make about what projects to donate their time to are based on vibes and personal convictions – you can’t really pay them to look the other way. Saying you don’t care about reputational damage to your huge open source project seems rather shortsighted, but of course, I don’t lead a huge open source project so what do I know?

In the linked thread alone, one long-time Fedora contributor, Fernando Mancera, already decided to leave the project on the spot, and I have a sneaking suspicion he won’t be the last. “AI” is a deeply tainted hype on many levels, and the more you try to chase this dragon, the more capable people you’ll end up chasing away.

Redox gets partial window pixel updating, tmux, and more

Another month, another progress report, Redox, etc. etc., you know the drill by now. This past month Redox saw improved booting on real hardware by making sure the boot process continues even if certain drivers fail or become blocked. Thanks to some changes on the RISC-V side, running Redox on real RISC-V hardware has also improved. Furthermore, tmux has been ported to Redox, CPU time reporting has been improved, and Orbital, Redox’ desktop environment, gianed support for partial window pixel updating, which should increase UI performance.

On top of that, there’s a brand new web user interface to browse Redox packages (x86-64, i586, ARM64 (aarch64), and RISC-V (riscv64gc)), as well as the usual list of improvements to the kernel, drivers, relibc, and many more areas of the operating system.

Setting up a Sun Ray server on OpenIndiana Hipster 2025.10

Time for another Sun Ray blog post! I’ve had a few people email me asking for help setting up a Sun Ray server over the last few months, and despite my attempts to help them get it going there’s been mixed results with running SRSS on OpenIndiana Hipster 2025.10.

my Sun Ray server is still on an earlier OI snapshot, so I figured it was about time to try to actually follow the new guides myself.

↫ The Iris System

Ever since my spiraling down the Sun rabbit hole late last year, I’ve tried for a few times now to get the x86 version of OpenIndiana and Oracle Solaris working on any of my machines, exactly for the purposes of setting up a modern Sun Ray server. Sadly, none of my machines are compatible with any illumos distribution or Oracle Solaris, so I’ve been shit out of luck trying to get this side project off the ground. My Ultra 45 is sadly also not supported by any SPARC version of illumos or Oracle Solaris, so unless I buy even more hardware, my dream of a modern Sun Ray setup will have to wait.

Of course, virtualisation is an option for many, and that’s exactly what this particular guide is about: setting up OpenIndiana on a Proxmox virtual machine. I actually have a Proxmox machine up and running and could do this too, but I’m a sucker for running stuff like this on real hardware. Yes, that makes my life more complicated and difficult, and no, it’s not more noble or real or hardcore – it’s just a preference. Still, for normal people who pick up a Sun Ray or two on eBay for basically nothing, running OpenIndiana in a virtual machine is the smart, reasonable, and effective option.

“My favorite device is a Chromebook, without ChromeOS”

If you’re sick of Chrome OS on your Chromebook, or can find a Chromebook for cheap somewhere but don’t actually want to use Chrome OS, have you considered postmarketOS?

Since I was kind frustrated with ChromeOS, I decided to take a look at something that I knew supported my Lenovo Duet 3 for some time: postmarketOS. For those who don’t know, postmarketOS is an Alpine Linux based-distro focused in replacing the original OS from old phones (generally running Android) with a “true” Linux distro. They also seem to support some Chromebooks because of their unique architecture and, luckily, they support my device under the google-trogdor platform.

↫ kokada

PostmarketOS is aimed at smartphones primarily, but supports other formfactors just fine as well. The Duet 3 is one of the tablet-like devices it supports, and it seems most things are working quite well. In fact, judging by the postmarketOS wiki, quite a few Chromebooks have good support, and with Chromebooks being cheap and dime-a-dozen on eBay and similar auction sites, it seems like a great way to get started with what is trying to become a true Linux for smartphones.

The text mode lie: why modern TUIs are a nightmare for accessibility

There is a persistent misconception among sighted developers: if an application runs in a terminal, it is inherently accessible. The logic assumes that because there are no graphics, no complex DOM, and no WebGL canvases, the content is just raw ASCII text that a screen reader can easily parse.

The reality is different. Most modern Text User Interfaces (TUIs) are often more hostile to accessibility than poorly coded graphical interfaces. The very tools designed to improve the Developer Experience (DX) in the terminal—frameworks like Ink (JS/React), Bubble Tea (Go), or tcell—are actively destroying the experience for blind users.

↫ Casey Reeves

The core reason should be obvious: the command-line interface, at its core, is just a stream of data with the newest data at the bottom, linearly going back in time as you go up. Any screen reader can deal with this fairly easily, and while I personally have no need for such a tool, I’ve heard from those that do that kernel-level screen readers are quite good at what they do. TUIs, or text-based user interfaces, made with modern frameworks are actually very different: they’re “2D grid[s] of pixels, where every character cell is a pixel. [They] abandons the temporal flow for a spatial layout.”

It should become immediately obvious that screen readers won’t really know what to do with this, and Reeves gives countless examples, but the short version is this: the cursor jumps all over the place with every screen update, which makes screen readers go nuts. Various older TUIs, made in a time well before these modern TUI frameworks came about, were designed in a much more terminal-friendly way, or give you options to hide the cursor to solve the problem that way. Irssi, for example, uses VT100 scrolling regions instead of redrawing the whole screen every time something changes.

I had never really stopped to think about TUIs and screen readers, as is common among us sighted people. The problems Reeves describes seem to stem not so much from TUIs being inherently inaccessible, but from modern frameworks not actually making use of the terminal’s core feature set. I really hope this Reeves’ article shines a light on this problem, and that the people developing these modern TUIs start taking accessibility more seriously.

Using duplicity to back up your FreeBSD desktop

Backing up in modern times, we’ve had ZFS snapshots and replication to make this task extremely easy. However, you may not have access to another ZFS endpoint for replication, need to diversify risk by using a non-ZFS tool for backup, or are simply using UFS2, living the old skool life.

For these situations, my first recommendation is to lean on Tarsnap for its ease of use and simplicity, making restoration just as easy as backing up. But some situations call for a different approach. Maybe you have a strict firewall at your company that doesn’t allow Tarsnap data streams to egress from your corporate network, or you have internal/easy access to storage endpoints, such as S3-compatible object storage or a large-file storage location with SFTP access.

When you are faced with the latter, the duplicity (sysutils/duplicity in ports) utility is available as an easily installable package onto your FreeBSD system.

↫ Jason Tubnor at the FreeBSD Foundation

The rest of the article explains how to use duplicity on FreeBSD for the purpose described above.

Testing MacOS on the Apple Network Server 2.0 ROMs

Earlier this year, Mac OS and Windows NT-capable ROMs were discovered for Apple’s unique AIX Network Server. Cameron Kaiser has since spent more time digging into just how capable these ROMs are, and has published another one of his detailed stories about his efforts.

Well, thanks to Jeff Walther who generously built a few replica ROM SIMMs for me to test, we can now try the “2.0” MacOS ROMs on holmstock, our hard-working Apple Network Server 700 test rig (stockholm, my original ANS 500, is still officially a production unit). And there are some interesting things to report, especially when we pit the preproduction ROMs and this set head-to-head in MacBench, and even try booting Rhapsody on it.

↫ Cameron Kaiser

A great read, as always.

Windows gets a new Run dialog

With Windows being as old and long-running as it is, there’s a ton of old and outdated bits and pieces lurking in every nook and cranny. I have always found these old relics fascinating, especially now that over the past few years, Microsoft has attempted to replace some of those bits and pieces with modern replacements (not always to great success, but that’s another story). One of those parts of the UI that’s been virtually unchanged since the release of Windows 95 is the Run dialog, but that’s about to change: Microsoft has released a completely new Run dialog to early testers.

Windows Run, also known as the Run dialog, is a surface that has been around for over 30 years. It has become a heavily relied upon tool for developers and advanced users alike. Users have decades of muscle memory where they hit Win+R, navigate through their Run history, and hit Enter to quickly access various paths and tools. We all have our favorite tool we launch there as well. For us, some of our favorites are wt (Windows Terminal), mstsc (Remote Desktop) and winword (Microsoft Word). But it’s more than jUsT a TeXt BoX tHaT rUnS tHiNgS. The Run dialog can handle navigating both local and network file paths as well. And everything it does, it does fast. Win+R opens the run dialog seemingly instantly.

If we wanted to modernize the Run Dialog to fit the modern Windows 11 design style, we had to make sure it did everything just as well as before. We needed to maintain the same performance while also keeping the user interface minimal, just as Windows 95 intended.

↫ Clint Rutkas at the Microsoft Dev Blogs

The new Run dialog looks like it belongs in Windows 11, which is a nice improvement, but the most important part is that they actually seem to have made it a little faster. Sure, they may have only shaved off a few milliseconds from its opening time, but considering virtually everything else they’ve touched in Windows over the years got considerably slower, that’s a good showing for Microsoft. The new feature they’ve added is that by typing ~\, you can open your home directory. The one casualty is the browse button, which according to Microsoft’s data, literally nobody ever used.

I know it’s just a small thing and in the end not even a remotely consequential one, but with an operating system as old and storied as Windows, replacing these ancient parts that millions of people rely on every day absolutely fascinates me. There must be a considerable amount of pressure on the people developing something like this new Run dialog, especially with Windows’ reputation being at one of its lowest points, so it’s good to see them being able to deliver.

The new Run dialog is available today for testers, and if you’re on the Windows Insider Experimental Channel, you can enable it in Settings > System > Advanced. Coincidentally, on my Windows 11 machine that I use for just one stupid video game, this Advanced page displays a loading spinner for five minutes and then just dies. Also, Notepad won’t start (one time it showed this dialog), and using the terminal to load it causes the old Win32 version of Notepad to open after 5 minutes of waiting, which then hangs and crashes.

People pay money for this.

GNOME is good, actually

While I’m normally a KDE user, I do keep close tabs on various other desktop environments, and install and set them up every now and then to see how they’re fairing, what improvements they’ve made, and ultimately, if my preference for KDE is still warranted. This usually means setting up a nice OpenBSD installation for Xfce, Fedora for GNOME, and less often others for some of the more niche desktop environments. Since GNOME 50 was just released, guess who’s time in the round is up?

Since everybody’s already made up their mind about their preferred desktop eons ago, with upsides and downsides debated far past their expiration date, I’m not particularly interested in reviewing desktop environments or Linux distributions. However, after asking around on Fedi, it seemed there was quite a bit of interest in an article detailing how I set up GNOME, what changes I make to the defaults, which extensions I use, what tweaks I apply, and so on.

Of course, everything described in this article is highly personal, and I’m not arguing that this is the optimal way to tweak GNOME, that the extensions I use are the best ones, or that any visual modifications I make are better than whatever defaults GNOME uses. No, my goal with this article is twofold: one, to highlight that GNOME is a lot more configurable, extensible, and malleable than common wisdom on the internet would have you believe. It’s not KDE or one of those cobbled-together tiling Wayland desktops, but it’s definitely not as rigid as you might think. And two, that GNOME is good, actually.

Tools of the trade

The first thing I do is install a few crucial tools that make it easier to modify and tweak GNOME. I really dislike lists in articles, but I will begrudgingly use one here:

  • GNOME Tweaks: this tool gives you easy access to some hidden settings, most notably to easily switch themes.
  • Extension Manager: the easiest way to find, install, update, and manage GNOME extensions. With this application, you won’t need to use the browser for extensions at all.
  • dconf Editor: a tool to fiddle with even more obscure GNOME settings.
  • Add Water: an application with an odd name, designed entirely to easily install and update the Firefox GNOME Theme, which transforms Firefox (or LibreWolf, in my case) into something that much more closely resembles a GNOME/libadwaita application.

After installing all of these tools, the actual tweaking can commence.

Visual tweaks

I didn’t use to like GNOME’s Adwaita visual style, but over the years, it started growing on me to the point where I don’t actively dislike it anymore. With the arrival of libadwaita, it has also become effectively impossible to theme modern GNOME applications, so even if you do change to something else, many of your applications won’t follow along. If consistency is something you care about, you’ll stick to Adwaita, but that leaves one problem unresolved: applications that still use GTK3. These applications will follow a much older version of Adwaita, making them stand out like eyesores among all the modern GTK4 stuff.

Luckily, since GTK3 applications are still properly themable, this is easily fixed: just install the adw-gtk3 theme, either by hand, or through your distribution’s repositories. To enable it, first install the user themes extension through Extension Manager, and then enable the theme in GNOME Tweaks for “Legacy Applications”. Any potential GTK3 applications you still use will now integrate nicely with modern libadwaita applications.

The one part of GNOME I really do deeply dislike is its icon theme. I can’t quite explain why I dislike this icon set so much, but it runs deep, so one of the very first things I do is replace the default GNOME icon set with my personal favourite, Qogir. This is a popular icon set, so it’s usually available in your distribution’s repositories, but I always install it from its GitHub page. Changing GNOME’s icon set is as simple as selecting it in GNOME Tweaks. You can’t get much more personal taste than an icon set, and there are dozens of amazing sets to choose from in the Linux world. Changing them out and trying out new ones is stupidly easy, and it’s definitely worth looking at a few that might be more pleasing to you than GNOME’s (or KDE’s) default.

Lastly, I open Add Water and enable the amazing GNOME theme for LibreWolf. Add Water basically makes this as easy as flipping a switch, so there’s no need to copy any files into your LibreWolf profile or whatever. The application also provides a few more small tweaks to fiddle with, like enabling standard tab widths so tabs don’t grow and shrink as you close and open tabs, moving the bookmarks bar below the tab bar, and many more.

Extensions

Since the release of GNOME 3 in 2011, extensions have been the most capable way to modify GNOME’s look, behaviour, and feature set. As far as I can tell, while the extension framework is an official part of the GNOME Shell, the extensions themselves are all third-party and not part of a vanilla GNOME installation. By now, there are over 2800 listed extensions, but that number includes abandoned extensions so it’s hard to determine the actual number of currently-maintained ones. Whatever the actual number is, there’s bound to be things in there you’re going to want to use.

Here are the extensions I have installed. Let’s just start at the top and work our way down. I guess I’m forced to do another list.

  • AppIndicator and KStatusNotifierItem Support: for reasons that are clearly beyond my limited understanding of the world, GNOME does not support AppIndicators, KStatusNotifierItems, and legacy system tray icons. This must-have extensions fixes this inexplicable omission.
  • ArcMenu: a very configurable application/Start menu kind of thing. Has tons of options and preconfigured layouts, and is an absolute must for me as I’m a basic guy whose second GUI was Windows 95.
  • Blur my Shell: as the name implies, adds a nice configurable blur effect to various parts of the GNOME shell. An entirely aesthetic thing that adds little in functionality.
  • Dash to Dock: adds a dock to GNOME. An absolute 100% must for me. I used Mac OS X back when it didn’t suck (10.2-10.6), and my love for the dock metaphor is one of the few things from that time that stuck.
  • Date Menu Formatter: GNOME is remarkably limited and rigid when it comes to configuring locale-related settings, as it forces you to adopt every individual aspect of a locale (contrary to KDE, which has a very detailed settings screen for every aspect of locale). Even though I’m Dutch and live in Sweden, I always use all my software in US English, which in the case of GNOME also means adopting things like US currency, date formats, and so on. This little extension allows me to manually format the date in the top bar to be actually readable.
  • Gtk4 Desktop Icons NG (DING): GNOME does not support desktop icons. I think this is a bizarre design decision. This extension brings desktop icons back, with a nice collection of settings to adapt them to your needs.
  • Junk Notification Cleaner: whenever an application receives a notification, GNOME puts them in its notification center in the top clock menu. Sadly, this is also the only place where you can dismiss them. With this extension, you can set it so that the notifications of an application are cleared when you focus its window, close it, or both. I set it to both.
  • Just Perfection: this extension provides you with a massive set of toggles and switches to change tons of little aspects of the GNOME Shell. I use to hide a slew of buttons and toggles from the clock and top-right menu on the top panel that I never use, as well as to move the notification OSD to the top-right.
  • Lock Keys: ads a little Caps Lock icon in the top panel when Caps Lock is engaged. Very useful, especially when your keyboard lacks indicator LEDs.
  • User Themes: allows you to set GNOME Shell themes from your home directory.
  • Weather or Not: one of the many extensions that adds the weather to the top bar. We have two toddlers and live in the Arctic – we absolutely must have frictionless instant access to the current outside temperature.
  • Places Status Indicator: puts a menu in the top bar with some frequently used locations.

There are countless more extensions to choose from, and you’re definitely going to find things you never even thought could be useful.

Miscellaneous tweaks

There’s a few other things I modify. In GNOME Tweaks, I make it so that double-clicking a window’s titlebar minimises it while right-clicking it lowers it; two features I picked up during my years as a BeOS user that I absolutely refuse to give up. I configure the dock from Dash to Dock so that it always remains on top and never hides itself, no matter the circumstances. In Settings, I disable virtual desktops entirely (I don’t like virtual desktops), and I make sure tap-to-click is disabled (if I’m on a laptop).

GNOME is good, actually

After making all of these changes, I feel quite comfortable using GNOME, at least on my laptop. It’s a nice, coherent experience, and offers what is probably the most polished graphical user interface you can find on Linux, even if it isn’t the most full-featured. The third-party application ecosystem, through modern libadwaita applications, is also quite healthy, moreso than what you find on KDE. To get there, however, I need to make a lot of changes to fix, undo, or work around some of the more… Peculiar defaults in GNOME, primarily through extensions.

And I think this is a problem.

The GNOME extension ecosystem is lively and active, but it also highlights a potential shortcoming of GNOME. I don’t think I’ve ever seen anyone use GNOME without extensions, and it’s honestly not hard to see why. Things like desktop icons and a system tray are pretty basic features of any modern desktop, and it’s not surprising that people seek them out, regardless of any grand design vision the GNOME team may have. GNOME developers can and should do whatever they want and what they think is right, but perhaps some of the most popular extensions should become official parts of GNOME if they are as popular as they seem.

For now, GNOME extensions kind of feel like the little block holding up the entire stack in that xkcd comic. Is it really wise to leave this linchpin to third parties, especially considering extensions run code on your machine? Sure, they make GNOME a lot more configurable and extensible than prevailing sentiments would have you believe, but perhaps not in the most convenient and safest way. Also, several of them break every time GNOME does a new release. Bummer.

In the end, though, GNOME is a product of its developers, and they alone get to decide how they want it to behave, what it looks like, and which features it will and won’t have. With how popular GNOME is, you have to be a real dishonest person to argue that what they have built isn’t a damn fine desktop environment, even if it makes some design decisions some of us find baffling. It won’t replace KDE as my desktop of choice, but having two excellent desktops like these that far outshine whatever “AI” and ad-ridden crap the proprietary vendors have to offer is truly an embarrassment of riches for the open source desktop world.

How fast is a macOS VM, and how small could it be?

To assess how small a macOS VM could be, I ran the same VM of macOS 26.4.1 on progressively smaller CPU core and memory allocations, using my virtualiser Viable. The VM’s display window was set to a standard 1600 x 1000, and I ran Safari through its paces and performed some lightweight everyday tasks, including Storage analysis in Settings.

Starting with 4 virtual cores and 8 GB vRAM, where the VM ran perfectly briskly with around 5 GB of memory used, I stepped down to 3 cores and 6 GB, to discover that memory usage fell to 3.9 GB and everything worked well. With just 2 cores and 4 GB of memory only 3.1 GB of that was used, and the VM continued to handle those lightweight tasks normally.

↫ Howard Oakley

This is good news for people interested in the MacBook Neo who may also want to run a macOS virtual machine on it.

Email is crazy

Email is like those creaking old Terminators from the ’70s which continue to function without complaining. Designed for a world that doesn’t exist anymore, it has optional encryption, no built-in auth, three⁺ retrofitted security layers bolted on top, an unstandardized filtering layer and many more quirks. Yet billions of emails arrive correctly every single day.

Email is not elegant but nonetheless it is Lindy. In the new age of agentic AI, we can only expect it to metamorphose into another dimension.

↫ Saurabh “Sam” Khawase

The fact that email is as complicated as it is bad enough, but having it be so dominantly controlled by only a few large gatekeepers like Google and Microsoft surely isn’t helping either. I feel like email is no longer really a technology individuals can actively partake in at every level; it feels much more like WhatsApp or iMessage or whatever in that we just get to send messages, and that’s it. Running your own mail sever isn’t only a complex endeavour, it’s also a continuous cat-and-mouse game with companies like Google and Microsoft to ensure you don’t end up on some shitlist and your emails stop arriving.

I settled on Fastmail as my email service, and it works quite well. Still, I would love to be able to just run my own email server, or have some of my far more capable friends run one for a small group of us, but it’s such a daunting and unpleasant effort few people seem to have the stomach and perseverance for it.

The day I logged 1 in every 2000 public IPv4: visualizing the AI scraper DDoS

What if you run a few online services for you and your friends, like a small git instance and a grocery list service, but you get absolutely hammered by “AI” scrapers?

I cannot impress upon you, reader, that this is not only an attack that is coordinated, it is an attack that is distributed.

I run a small set of services, basically only for me and my friends. I am not a hyperscaler, I am not a tech company, I am not even a small platform. I have a git forge where I put the shit I make, and a couple other services where me and my friends backup our files or write our grocery lists. I am not fucking Meta and I cannot scale the fuck up just because OpenAI or Anthropic or Meta or whoever is training a model that weeks wants to suck all the content out of my VPS ONCE MORE until it’s dry.

↫ lux at VulpineCitrus

So how much traffic did the author of this piece, lux, get from “AI” scraping bots? Within a time period of 24 hours, they were hammered by 2040670 unique IP addresses, 98% of which were IPv4 addresses, which means that 1 out of every 2000 publicly available IPv4 addresses were involved in the scraping. Together, they performed over 5 million requests. And just to reiterate: they were scraping a few very small, friends-only services run by some random person. This is absolutely insane.

If, at this point in time, with everything that we know about just how deeply unethical every single aspect of “AI” is, you’re still using and promoting it, what is wrong with you? If you’re so addicted to your “AI” girlfriend’s unending stream of useless, forgettable sycophantic slop, despite being aware of the damage you’re doing to those around you, there’s something seriously wrong with you, and you desperately need professional help. You don’t need any of this. The world doesn’t need any of this. Nobody likes the slop “AI” regurgitates, and nobody likes you for enabling it.

Get help.