Understanding '+incompatible' in Go module version names

As we all know, when Go code uses modules, you specify a version of the module, and the Go tooling will record its take on thisversion in places like go.mod . The exact details are covered in the "Versions" section of the documentation and the definition of canonicalversion . Since Gomodules came in, I've seen a number of modules with a (canonical)version that included '+incompatible', and encountered Go generatingthem itself when I tried to experimentally modularize a non-


We're finally fully moving away from Apache's prefork MPM (hopefully)

In the very beginning, what is now Apache's prefork MPM was your onlyoption; it was just how Apache worked. Then a long time ago, Apacheadded other Multi-Processing Modules (MPMs) , although they weresomewhat untrusted so for a while the conservative, backwardcompatible default was the prefork MPM. We started using Ubuntubased web servers (running Apache) a long time ago, and so we gottheir default of the prefork MPM.

At some point, I believe in Ubuntu 18.


The proper setup of a Go module, as I understand it

I have been a little bit confused about some aspects of Go modulesin practice for a while, and to get things more nailed down in myhead, I'm writing some entries (writing entries here can be a formof talking to the duck ). This is thefirst one, because before I understand the unusual corner cases Ineed to cover the normal and proper cases.

Suppose that you have a Go module example.org/cks/mymod , or apre-modular Go package that would be


What it means to see a 'bad' certificate in TLS Certificate Transparency logs

In Emily M. Stark's Certificate Transparency is really not areplacement for key pinning ,Stark asks a good question:

[...] what is a domain owner supposed to actually do if they find amalicious certificate for their domain in a CT log? [...]

I don't have an answer to this, but we can ask a related question:what does it mean if your CT log monitoring turns up a TLS certificatefor your domain that you don't know about?


How much swap space we're using across our servers (in October 2022)

One of the reactions I've seen to us moving away from swappartitions (to swap files) on our Linux servers is that some people run withoutany swap space at all. Through a chain of thought I wound up wonderinghow much swap space we're actually using (as opposed to how muchwe have configured). Fortunately, our metrics system makes it relatively straightforwardto answer questions like that, or at least to come up with somenumbers.

Because our servers have different amounts of swap configured,


Two views of CPU utilization (a realization)

The traditional way to present CPU utilization in metrics dashboardsand the like is as a percentage from 0 to 100. This is so commonand ordinary that I wrote an entry on generating this fromPrometheus CPU metrics without ever questioningthings, and the Linux version of top is sometimes mocked forshowing process CPU utilizations of over 100% because it considers'100%' to be 'all of one CPU' on multi-CPU machines (which is tosay pretty much all of them these


We're moving away from swap partitions on our Linux servers

We have a reasonable number ofLinux servers, almost all of them running various versions of Ubuntu.Like pretty much everyone configuring Linux servers, we give themsome swap space; the Linux kernel traditionally is much happier ifit has a bit of swap space ( cf ),although you don't want too much . Fora long time we used a separate disk partition for this (or a mirroredpair of them in a separate software RAID mirror device), althoughLinux distributions themselves were increasingly moving to usingswap


We are stuck with egrep and fgrep (unless you like beating people)

Over on Twitter I had a reaction :

I see that a bunch of system administrators (or distributionpackagers) are going to set GNU Grep 3.8 on fire with the power oftheir minds. Spoiler: new warnings are an API change.

What's special about GNU Grep 3.8 is that its version of egrep and fgrep now print an extra message when you run them .Specifically, these messages 'warn' (ie nag) you to stop using themand use 'grep -E' and


When Promtail seems to make position checkpoints (as of v2.6.1)

Promtail is the normal log-shipping client for the Grafana Loki log aggregation system. Like alllog shipping programs, Promtail needs to keep track of what logsit has and hasn't sent to Loki, which it does by keeping track ofits positions in each log file or log source. In order to handle being stoppedand restarted, and also system crashes (or Promtail crashes), itnormally saves these positions in a file.Exactly what a position is depends on the specific log source thatPromtail is using


The pragmatic effects of setting nconnect on NFS v3 mounts on Linux

After I wrote about how Linux NFS clients normally only make oneTCP connection to a given fileserver no matter how many NFS mountsthey have , people pointed out the' nconnect ' for NFS mounts, as documented in nfs(5) . Naturally Iwondered what the effects of setting this above one are (so intheory one or more mounts uses multiple TCP connections), andconveniently I have an environment where I can test this.

Suppose that you have a NFS fileserver that you mount a bunch offilesystems from,