Our servers seem to have surprisingly low power consumption

For reasons beyond the scope of this entry, today I was curious howmuch power our servers were using.If you have sufficiently fancy PDUs , I think youcan get per-outlet measurements that are trustworthy, but we don'thave such PDUs. Instead, the best I can do is look at the informationthat some of our servers report through IPMI .I'm not sure how accurate the IPMI information is, but at least someof the numbers seem plausible, so I'll assume that it


Getting C code navigation even for Debian (or Ubuntu) packages

Every so often, I want (or need) to make modifications to programs inan Ubuntu package, and often the programs are written in C (and thesedays I'm using dgit to manipulate the package ). One of my challenges when I do this is thatI generally don't start out knowing where and how to change the codeto do what I want; instead, I have to navigate around an unfamiliarcode base and work out enough of its structure to find the specificbit of code I


I've finally ported <a href="https://utcc.utoronto.ca/~cks/space/dwiki/DWiki">DWiki</a> from Python 2 to Python 3

DWiki is the pile of code that underlies Wandering Thoughts .It started out many years ago as a Python 2 program (partly becausethere was no Python 3 at the time), and it stayed that way for along time , making it the most significant and byfar the most substantial Python 2 program I still cared deeply about.Years ago I said I'd port it to Python 3 someday and somewhat to my surprise, that day has nowcome (well, it came yesterday).

The direct trigger


A GNU Emacs learning experience with text-mode hooks

For a while, one of my little irritations with my Emacs environmentwas that sometimes, when I fired up Emacs to edit some code and thenquit out of it, Emacs would complain that there was still an ispellprocess running and ask me what to do with it. This was especiallymysterious to me as I don't normally use flyspell-prog-mode (I find ittoo irritating for general use). Recently I got sufficiently irritatedto use a combination of the ELisp debugger and strategic ' (message


Going from a ZFS object ID to its path the easier way

It's not uncommon that people using filesystems want to map from aninternal object number (an 'inode number' for normal filesystems, anobject id or object number in ZFS) to a path. ZFS itself wants to dothis efficiently for things like ' zfs diff ' and the ' zpool status 'report on what files are damaged. To help with this, ZFS stores thelikely parent object for every normal filesystem object . If you use zdb to do a sufficiently verbosedump of any particular object, you


In praise of the Linux kernel netconsole (in the right circumstances)

The Linux kernel's netconsole isa kernel module that will "log kernel printk messages over UDP" to aremote system, which makes it another form of kernel (message)console . These days it can be activated eitheron boot or after boot, and in the past I've had mixed views of it . However, I recently had a nice experience withnetconsole that's left me more well inclined to it in specificsituations.

A while back, my home desktop started locking up every once in


A code (reformatting) conundrum in Python, and heuristics

Suppose that you are a Python code reformatter, and someone hands youthe following snippet of Python code to act on:

if something:    blah blah blah    [...]    final-linesome-statement[... more statements ...]

Here's the question: should you reindent 'some-statement' so that it'spart of the ' if ' block?

One answer is that you absolutely should not. The current code isvalid Python code, and you are a reformatter for


Moving from lsp-mode in GNU Emacs to Eglot

Recently, I decided to take my long standing ,perfectly good GNU Emacs lsp-mode setup and completely replace itwith Eglot, the now built in GNU Emacs LSP solution. At one levelI didn't have any particularly strong specific reason to switch; Istarted by trying out Eglot after switching entirely to Corfu then just kept going to see how far Icould get towards a good Eglot environment. The result is perfectlygood and some things work better (Eglot will do 'complete to commonprefix' in Go


Using a Python 3 LSP server with Python 2 code works (more or less)

I still have a certain amount of Python 2 code, both for work and for personal projects (forexample, DWiki , the wiki software behind this blog ; itwill be Python 3 someday, but not so far ). For along time, I've preferred to do any significant editing of Python codein GNU Emacs, my normal choice for a superintelligent editor, and fora while, I've used LSP based Python editing. There's a very old LSPserver for Python 2, but


Your feed reader User-Agent is a too-old browser

Your software is blocked from fetching my syndication feeds because it is using a User-Agent header in its HTTP requests that claims it is a too-old browser. Your software has been redirected to this special single-entry feed so that you can hopefully find out about this and ideally remedy it. Please see my general web page on too-old browser User-Agents .

If you are using Inoreader, this is an issue inside Inoreader. They're successfully fetching my syndication feeds with their Inoreader/1.