My uncertainty over whether an URL format is actually legal

I was recently dealing with a program that runs in a configurationthat sometimes misbehaves when you ask it to create and display alink to a relative URL like ' / '. My vague memory suggested analternative version of the URL that might make the program leaveit alone, one with a schema but no host, so I tried ' https:/ ' andit worked. Then I tried to find out if this is actually a properlegal URL format, as opposed to one that browsers just make work,and


Some notes (to myself) about formatting text in jq

These days I'm having to deal with a steadily increasing number ofcommands that either output JSON only or where JSON is their bestoutput option, and I want to reformat some of that JSON to a moreuseful or more readable text-based format. The obvious tool to dothis with is jq , at least forsimple reformatting ( I think there's some things that are tootangled for jq ). However, everytime I need to do this, I keep having to look up how to format


Ubuntu 22.04 with multiple disks and (U)EFI booting

One of the traditional and old problems with UEFI booting on servers is that ithad a bad story if you wanted to be able to boot off multiple disks.Each disk needed its own EFI System Partition (ESP) and you eithermanually kept them in synchronization (perhaps via rsync in acron job) or put them in a Linux software RAID mirror with the RAIDsuperblock at the end and hoped hard that nothing ever went wrong.To my surprise, the state of things seems to be rather better inUbuntu 2


Two example Grafana Loki log queries to get things from ntpdate logs

Recently I wanted to estimate how much the clocks on our servers driftover time ( to give me a quick comparison to how BMC clocks drift ). Most of our servers keep their time insync by periodically running ntpdate , which syslogs messages thatlook like this:

adjust time server 192.168.0.1 offset +0.000579 sec

These days we have a Grafana Loki installation in addition to our long standing central syslogserver , so rather than write some awk


Our BMCs are not great at keeping accurate time

A BMC is an extra embedded computeron your server motherboard (as opposed to the extra CPU that'sembedded in your CPU or chipset ). As separatecomputers running a separate operating system, BMCs keep time independently fromyour server's time (the host time, reusing terminology fromvirtualization), and this time is visible in places like the IPMIevent log (as well as just asking what time the BMC has via IPMI).I've been tracking the reported BMC time against the server's


The pervasive effects of C's malloc() and free() on C APIs

In my entry on the history of looking up host addresses in Unix , I touched on how from the beginning gethostbyname() had an issue in its API, one that the BSD Unix people specificallycalled out in its manual page's BUGS section:

All information is contained in a static area so it must be copied ifit is to be saved. [...]

This became a serious issue when Unix added threads (this staticarea isn't thread safe), but was seen as a problem


How old our servers are (as of 2022)

Back in 2016, I wrote about how old our servers were at the time . They were rather older than people might haveexpected, because universities are generally cheap and so usuallyrun servers much longer than many people do. My group no longer quite runs servers intothe ground, but we still can come close. Today, for reasons beyondthe scope of this entry, I'm going to do a 2022 version of my oldentry .

My group only handles general departmental infrastructure on


Link: The MGR Window System

The MGR Window System ( via ) is a briefintroduction to MGR , aninteresting and under-mentioned Unix windowing system, including ascreenshot. I once used MGR myself and have reasonably fondmemories of it , so it's nice to see morewriting about it on the Internet.

(And looking at my old entry I see that Ilinked to this article there in HTTP version. Still, I encourageyou to read about MGR. It's a path not taken in Unix window systems.)


The odd return value of the original 4.2 BSD gethostbyname()

In my entry on the history of looking up host addresses in Unix , I touched on how from the beginning gethostbyname() had an issue in its API, one that the BSD Unix people specificallycalled out in its manual page's BUGS section:

All information is contained in a static area so it must be copied ifit is to be saved. [...]

But there is another oddity in how the original gethostbyname() behaved and what it returned. The gethostbyname() API returns apointer


Vim settings I'm using for editing YAML (with a sideline into Python)

I normally stick with minimal Vim customizations , partly because as a system administratorI'm not infrequently editing files as a different user instead ofmyself. However, due to Prometheus and other things I'm editingmore and more YAML these days, and YAML files have such a rigid andannoying requirement for their indentation and formatting that it'spainful to edit them in a stock vi-like Vim setup. Initially I stuck'modelines' at the top of most of the the Prometheus YAML files,but by