It seems unlikely that I'll have basic ARM servers to deal with

At work, we have a lot of basicservers. These basic servers are 1U rack servers, with unexcitingamounts of disk bays, RAM, and CPU performance, because we buy themto do straightforward jobs (for example, much of our mail systemhardware is basic servers ).Right now, these are all x86 machines, but like a lot of people I'dlove it if the x86 architecture had real competition (even ifreturning to the days of a multi-architecture Unix


The Emacs packages that I use (as of June 2026)

My Emacs configuration seems to have more or less settled down againafter a flurry of changes, so it's time to update my previous listof Emacs packages that I use , so that I cancome back to this entry later and see how things have changed overtime. A bunch of things haven't changed since last time so I'm going to put the unchanged stuff at thebottom.

Currently I'm using Emacs 30.2 everywhere so some of the things I'mmentioning here


My GNU Emacs completion setup (as of June 2026)

In GNU Emacs, completion of things is a complex subject . There are at least two sorts ofcompletion ( in the minibuffer and in buffers you're editing )and many options for how things work. There's a whole ecology ofthird party packages for changing how both sorts of completionoperate, some of which have become built in to GNU Emacs over time.For various reasons ( cf ) I'm going towrite down my current setup for this.

For minibuffer completion I use:


A wish for automatic or semi-automatic disk setup in Linux server installers

An extremely common pattern for our Ubuntu servers is that they have exactly two disks and we want thosetwo disks to be set up as mirrored system disks, with a UEFI bootpartition in each and the root filesystem in a mirrored RAID arraytaking up all of the rest of the space (and for /boot/efi to comefrom the first disk). If a system has a single disk, we want thesingle-disk, non-mirrored version of this; if the system has morethan one or


When <code>su</code> replaced <code>login</code> for becoming another Unix login

I recently read Simon Tatham's Nitpicking the shell history scenein Tron: Legacy ,where one thing that surprised Tatham was the film using ' login-n root ' to become root instead of ' su . This surprised mebecause I found that perfectly ordinary, and this turns up both abit of Unix history and a difference between modern Unixes.

Plain ' su ' can let you become another user, including root , butwhat it explicitly doesn't do by default is create a new login shellfor that


I'm not sure we'd use AppArmor much even if we could

The news of the time interval is a string of local privilegeescalation vulnerabilities in Linux (in part in the kernel). Wevery much need the security boundary of Unix logins , and some of thesevulnerabilities are mitigated or blocked by various Linux kernelsecurity modules ('LSMs') ( cf ),so I've recently been thinking if we'd use AppArmor , the LSM that Ubuntu supports.

(AppArmor didn't block as many of the vulnerabilities as a properSELinux setup did, but SELinux needs


Our unusual system of "web home directories" for people

One of the things we operatefor the research side of the department is an old fashioned generalpurpose web server, where everyone has a home page area of theirown in the traditional '/~/' style ( cf ). This web server has been therefor a very long time, and one of the decisions that was made veryearly on was that for security reasons, the web server would notNFS mount people's regular home directories from our fileservers .

The traditional Apache way to do


Our servers mostly don't seem to have high peak power usage

I wrote a bit ago about how our servers seem to have surprisinglylow power consumption , where I lookedat IPMI based power consumption information to look at their current, typicalpower usage and found that several of them were sitting at lowerpower usage than my desktops. I'm still interested in typical oraverage power usage for reasons beyond the scope of this entry, butnow I'm also interested in maximum power usage that we've observed.

One reason to be interested in maximum power usage is that servers


The Go language server can do some impressive code navigation

For reasons outside the scope of this entry, I recently dug into howthe Go runtime did (Unix) signal handling on 64-bit x86 Linux . When I undertookthis quest, I decided that the easiest way to navigate through thecode of the Go runtime was to use the code navigation features exposedby the standard Go language server, gopls .In the process I was surprised by just how good its code navigationwas, even in the Go runtime.

On Linux, Go's signal handling


Using typing in Python leads to different sorts of code

So what happened is that I converted a big pile of (highly untyped)Python 2 to Python 3 recently , and then I wantedto experiment with typing-heavy Python LSP servers in GNU Emacs , so I decided to try them out byexperimentally adding some type annotations to DWiki , theaforementioned pile of untyped Python (and the code powering Wandering Thoughts ). The experience was educational andtaught me some new things about type annotations, but it also firmedup my view that typed Python code is different than untyped Python