My sysadmin's view of going from Centrex to VoIP (sort of)

I recently read j. b. crawford's Centrex , about the telephoneservice by that name that was offered to organizations in at leastthe US and Canada. It sparked not so much nostalgia as memories,because up until very recently the University of Toronto's downtowncampus used Centrex, complete with what I now know (from the article)is a distinctive Centrex pattern of five-digit dialing for phonenumbers inside the organization. In the University of Toronto'scase, most phone numbers were 97


The quietly impressive thing mail clients do when you write HTML mail

It's not news that a great deal of email in the world today iswritten in HTML, and has been for some time. If you insist on plaintext email, you're increasingly an anachronism. Many people writingemail probably don't even think about people who prefer plain text,and I think many mail clients will default to HTML even if you'rereplying to a plain text message, so even if you write to me inHTML and I write back in plain text, your reply


Why we scrape Prometheus Blackbox's metrics endpoint

The Prometheus Blackbox exporter is how you domany external checks on machines and services ('endpoints' inBlackbox's jargon), ranging from ping checks up through making HTTPSrequests and checking the results. The Blackbox exporter has asomewhat confusing usage ; unlike mostexporters, you don't so much scrape it as scrape things through it,using probes against targets . As part of this, each combinationof probe and target is a separate Prometheus scrape, each of whichgenerates an ' up ' metric for that


Go's API stability and making assumptions, even in semi-official code

Right now, there are some Go programs, such as errcheck , that will work if you buildthem with Go 1.21 but fail if you build them with the latest Godevelopment version. In fact they will panic deep in the Go standardlibrary, specifically in go/types .Given Go's promises about compatibility, you might expect that thisis an error in the development version of Go, especially since thepath to the panic goes through golang.org/x/tools , which is also


The HTML viewport mess

Over on the Fediverse, someone I follow recently wrote a basic HTMLpage, tried it in a (simulated) phone environment, and got a pagewith ant-sized text .Some of the people reading this already know what the issue is,which is that the page didn't include a magic tag to tellphones to do the sensible thing , although thetag is not generally described that way .It's a little bit absurd that in 2023 we still have this problem


Unix shells and the current directory

Famously, Unix has the concept of a process's 'current directory',including for your shell processes. Recently, I saw an interestingFediverse discussion on some aspects of the current directory which aren't necessarilyobvious, partly because both Unix kernels and Unix shells have becomemore complicated over time.

The Unix kernel keeps track of your current directory not as a textpath but as a reference to a kernel object, normally the directory's inode . In the old days this was all the kernel actually knew


A peculiarity of the GNU Coreutils version of 'test' and '['

Famously, ' [ ' is a program, not a piece of shell syntax, and it'salso known as ' test ' ( which was the original name for it ). On many systems, this was and isimplemented by ' [ ' being a hardlink to ' test ' (generally 'test'was the primary name for various reasons). However, today I foundout that GNU Coreutils is an exception . Although thetwo names are built from the same source code ( src/test.c


Unix's 'test' program and the V7 Bourne shell

Recently I read Julio Merino's test, [, and [[ ( via ), which is in partabout there being a real ' [ ' binary and a ' test ' binary to goalong with it, and as part of that, Merino wonders why the name' test ' exists at all. I don't have any specific insight into this,but I can talk a bit about the history, which turns out to be moretangled and peculiar than I thought.

The existence of 'test


Understanding and sorting out ZFS pool features

Pretty much every filesystem that wants to be around for a longtime needs some way to evolve its format, adding new things (andstopping using old ones); ZFS is no exception. In the beginning, the format of ZFS pools (and filesystems) was set by a versionnumber , but this stopped workingvery well once Sun were no longer the only people evolving ZFS. Tohandle the situation with multiple people developing differentchanges to ZFS, ZFS created a system of what are called 'features',where


Modern proxy (IPv4) ARP and proxy IPv6 NDP on Linux

Suppose, not hypothetically, that you have a remote system (on theother side of some tunnel or other connection) that wants to pretendto be on the local network, for either or both of IPv4 and IPv6.To make this work smoothly, this remote system's gateway (on thelocal network) needs to answer ARP requestsfor this remote system's IPv4 address and/or NDP requestsfor the remote system's IPv6 address. This is called 'proxy ARP'or