Systemd services that always restart should probably set a restart delay too
Ubuntu 18.04's package of the Prometheus host agent comes with a systemd.service unit that is set with ' Restart=always '(something that comes from the Debian package , cf ).This is a perfectly sensible setting for the host agent for a metricsand monitoring system, because if you have it set to run at all,you almost always want it to be running all the time if at allpossible. When we set up a local version of the host agent, I started
SMART drive self-tests seem potentially useful, but not too much
I've historically ignored all aspects of hard drive SMART apart, perhaps, from how smartd would occasionally email us to complain about things andsometimes those things would even be useful. There is good reasonto be a SMART sceptic, seeing as many of the SMART attributes areunderdocumented, SMART itself is peculiar and obscure, hard drivevendors have periodically had their drives outright lie about SMARTthings, and SMART attributes are not necessarily good predictorsof drive failures (plenty of drives die abruptly with no SMARTwarnings, which can
Straightforward web applications are now very likely to be stable in browsers
In response to my entry on how our goals for our web application areto not have to touch it , RossHartshorn left a comment noting:
Hi! Nice post, and I sympathize. However, I can't help thinking that,for web apps in particular, it is risky to have the idea of softwareyou don't have to touch anymore (except for security updates). Thebrowsers which are used to access it also change. [...]
I don't think these are
Clearing disk errors (or SMART complaints) for Linux software RAID arrays
I've written in the past about clearing SMART disk complaints forZFS pools , which involved an intricatedance with hdparm and various other things. Due to having aprobably failing HD on my home machine , I've nowhad a chance to deal with much the same issue for a software RAIDmirror (with LVM on top). It turns out that trying to fix up diskerrors for software RAID levels with redundancy is embarrassinglysimple; to try to fix disk read errors, you have software RAIDcheck the
My plan for two-stage usage of Certbot when installing web server hosts
Let me start with our problem. When you request TLS certificatesthrough Certbot, you must choose between standalone authentication,where Certbot runs an internal web server to handle the Let's EncryptHTTP challenge, or webroot authentication, where Certbot putsfiles in a magic location under the web server's webroot. You canonly choose one, which is awkward if you want a single universalprocess that works on all your hosts ,and this choice is saved in the certificate's configuration; itwill automatically be used on
Django's goals are probably not our goals for our web application
Django bills itself as "the webframework for perfectionists with deadlines". As a logical part ofthat, Django is always working to improve itself, as are probablyalmost all frameworks. For people with actively developed applications(perfectionists or otherwise), this is fine. They are working on theirapp anyway, constantly making other changes and improvements andadjustments, so time and Django updates will deliver a continue streamof improvements (along with a certain amount of changes they have tomake to keep up , but again they
Finding out what 32-bit x86 Linux programs your users are running
Canonical has recently created a certain amount of uncertainty overhow many 32-bit x86 programs are still going to run on Ubuntu 20.04LTS and future versions. Statically linked 32-bit programs seemlikely to keep working, if you have any of those, but Canonical ismaking noises about omitting some or many of the 32-bit sharedlibraries that dynamically linked 32-bit programs need to run (see my entry on what 32-bit programs need on a
Converting a variable to a single-element slice in Go via unsafe
I was recently reading Chris Wellons' Go Slices are Fat Pointers . At the end of thearticle, Wellons says:
Slices aren’t as universal as pointers, at least at the moment. Youcan take the address of any variable using
&, but you can’t take a slice of any variable, even if it would be logically sound.[...] However, if you really wanted to do this, the unsafe packagecan accomplish it. I believe the resulting slice would be perfectlysafe
The power of option types is in what they do to the rest of the language
I was recently reading Real problems with functional languages ( via ),where I ran across the standard explanation of why option types matter. As I read it(and not necessarily as it's really written in that article), theymatter because they force you to deal explicitly with null values.
Reading this sparked a little light in my head, because this isn'treally correct. Modern compilers do not need an explicit type to forceyou to do this checking; with data flow analysis inside functions, they
Understanding why 'root window' X under Wayland may matter
In a comment on my entry on how the X death watch has probablystarted , Christopher Barts said:
There is XWayland, and apparently it will support handlingthe root window, not just application windows:
The missing piece of the puzzle is Xweston, which apparently allowsyou to run window managers for X on Wayland:
When I read this, at first I was puzzled about how this could workand why this was interesting, because I couldn't imagine that an Xwindow manager could