Code stability in my one Django web application

We have one Django web application , asystem for automating the handling of much of our new Unix accountrequests. It was started in early 2011 (using Django 1.2) and I did a retrospective at the end of 2014 whereI called it a faithful web app, one that had just kept on quietlyworking without problems. That's continued through to today; theapp needs no routine attention, although every so often I tweakit to better handle an obscure situation.


The dig program now needs some additional options for useful DNS server testing

I've been using the venerable dig program for a long time as myprimary tool to diagnose odd name server behavior . Recently,I've discovered that I need to start using some additional optionsin order for it to make useful tests, where by 'useful tests' Imean that dig 's results correspond to results I would get througha real DNS server such as Unbound.

(Generally my first test with DNS issues is just to query my localUnbound server, but if I want to figure out


One way of capturing debugging state information in a systemd-based system

Suppose, not entirely hypothetically, that you have a systemd .service unit running something where the something (whatever itis) is mysteriously failing to start or run properly. In the mostfrustrating version of this, you can run the operation just fineafter the system finishes booting and you can log in, but it failsduring boot and you can't see why. In this situation you often wantto gather information about the boot-time state of the system justbefore your daemon or program is started and fails


Sequential scrubs and resilvers are coming for (open-source) ZFS

Oracle has made a number of changes and improvements to Solaris ZFSsince they took it closed source. Mostly I've been indifferent totheir changes, but the one improvement I've long envied is theirsequential resilvering (and scrubbing) (thisapparently first appeared in Solaris 11.2, per here and here ).That ZFS scrubs and resilvers aren't sequential has long been a quiet pain point for a lot of people. Apparently it'sespecially bad for RAID-Z pools (perhaps because


Shooting myself in the foot by using exec in a shell script

Once upon a time, we needed a simple shell script that did somesetup stuff and then ran a program that did all of the work; thisshell script was going to run from crontab once a day. Because I'msometimes very me, I bummed the shell script like so:

#!/bin/shsetupyaddaexec realprog --option some-args

Why not use exec ? After all, it's one less process, even if itdoesn't really matter.

Later, we


Understanding a tricky case of Bourne shell redirection and command parsing

I recently saw this tweet by Dan Bornstein ( via ) that posesa Bourne shell puzzle, or more specifically a Bash puzzle:

Shell fun time! Do you know what the following script does? Did youhave to run it?

#!/bin/bashfunction boop {  echo "out $1"  echo "err $1" 1>&2} x='2';   boop A >& $x x='2';   boop B >& "$x" x='

Delays on SMTP replies discourage apparently SMTP AUTH scanners

One of the things that my sinkhole SMTP server can do is trickle out allof its SMTP replies at a rate of one character every tenth of asecond. This is a feature that I blatantly stole from OpenBSD'sspamd when I read about it years ago, mostlybecause it seemed like a good idea. The effects of doing this havebeen interesting, because there's a real split in the results.

At the moment I have my sinkhole server listening on two IP addresses.One IP address is the


Major version changes are often partly a signal about support

Recently (for some value of recently) I read The cargo cult ofversioning ( via ). To simplify,one of the things that it advocates is shifting the major versionnumber to being part of the package name:

Next, move the major version to part of the name of a package. "Rails5.1.4" becomes "Rails-5 (1, 4)". By following Rich Hickey's suggestionabove, we also sidestep the question of what the default versionshould be.


Getting some information about the NUMA memory hierarchy of your server

If you have more than one CPU socket in a server, it almost certainlyhas non-uniform memory access , wheresome memory is 'closer' (faster to access) to some CPUs than others.You can also have NUMA even in single socket machines, dependingon how things are implemented internally. This raises the questionof how you can find out information about the NUMA memory hierarchyof your machines, because sometimes it matters.

The simple way of finding out how many NUMA zones you have isprobably lscpu ,


StartCom gives up on its Certificate Authority business

The big news recently in the web browser SSL world is that StartComhas officially given up on being a CA because, as I put it on Twitter , no onetrusts them any more. As far as I know, this makes StartCom thefirst CA to go out of business merely because of dubious practicesand shady business practices (ie, quietly selling themselves toWoSign), instead of total security failures ( DigiNotar ) or utter incompetence( ipsCA ). I consider this a great thing for theoverall health and security