How old our servers are (as of 2016)

I was recently asked how oldour servers are. This is a good question because, as noted ,universities are cheap; as a result we probably run servers muchlonger than many people do. In fact we can basically wind up runningservers into the ground, and we actually are somewhat doing that rightnow.

The first necessary disclaimer is that my group here only handles general departmentalinfrastructure on the non-undergraduate side of things (this splithas its roots way back in history and is another story entirely).


When you want non-mutating methods in Go

In Should methods be declared on T or *T ,Dave Cheney included a footnote:

5. If the method does not mutate its receiver, does it need to be amethod?

(One alternative Dave Cheney had in mind was a pure function that'spassed the necessary fields directly, cf . I alsosuspect that Dave Cheney put this in more to make readers thinkabout the issue than as an outright directive.)

I'll bite on that somewhat rhetorical question, because I see severalpossible reasons to


Current PC technology churn that makes me reluctant to think about a new PC

My current home computer will be fiveyears old this fall. Five years is a long enough time in the PCworld that any number of people would be looking to replace somethingthat old. I'm not sure I am, though, and one of the reasons forthat is that I at least perceive the PC world as being in the middleof a number of technology shifts, ones where I'd rather wait andbuy a new machine after all the dust has settled. However, I maybe wrong


What broad hit rate the Spamhaus DBL might get for us

I took the past 9 days worth of logs from our commercial anti-spamblack box , extracted the 'spam score' it assignsand the envelope sender domain, split this into three categoriesbased on the broad scores from 0 to 100 that the system assigns, andthen checked all of those origin domains against the Spamhaus DBL .

(Because of how our overall anti-spam systems work, this excludessome but not all of the email from hosts that are in Spamhaus'sIP based lists.)


The Spamhaus DBL does get hits even with basic checks

The Spamhaus DBL is unlike theirother blocklists in that it is for host and domain names, not IPaddresses. As Spamhaus describes it:

The Spamhaus DBL is a realtime database of domains (typically website domains) found in spam messages. Mail server software capableof scanning email message body contents for URIs can use the DBL toidentify, classify or reject spam containing DBL-listed domains.

The intended primary use of the DBL is for message body scanning;you'd identify the hosts mentioned in URLs or URL


Some things I believe about importance and web page design

Here are some things that I believe about web page design.

If you have a bright red element on a page that does not otherwiseuse red as part of its colour scheme, this element should not merelybe the most important thing on the page, it should be so importantthat the reader must look there first and foremost. In at leastthe west, we're habituated to red as an alert colour, probably theprimary alert colour. A solitary red thing is practically screamingat you, jumping up and


How 'from module import ...' is not doing what you may expect

There are a number of reasons to avoid things like ' from module import* '; for instance, it can be confusing later on and you can import more than you expect . But ifyou're doing this in the context of, say, just splitting a big sourcefile apart it's tempting to say that theseare not really problems. You're not going to be confused about wherethings come from because you're only importing everything from your ownsource files (and you're not


I wish I could split up code more easily in Python

This really starts with some tweets :

This Python program has grown to almost 1500 lines. I think I need anintervention, or better data structures, or something.
I also wish it was easier and more convenient to split up a Pythonprogram across multiple source files (it's one way Go wins).

The best way to split up a big program is to genuinely modularizeit. In other words, find separate pieces of functionality that canbe cleanly extracted and turn them into Python modules,


How RPM handles configuration files, both technically and socially

In comments on my entry on Ubuntu packages playing 'hide theconfiguration file' , James asked how RPMhandles user editable configuration files (and then guaq gave a good answer). This is an importantenough thing to talk about that I'm going to write an entry aboutit, because RPM's approach is both technical and social.

On the technical side, the first thing is that if the file hasn'tchanged between the old package and the new package update, RPMknows this and doesn'


An additional small detail of how writes work on ZFS raidzN pools

Back in How writes work on ZFS raidzN pools I wrote up how ZFS doesn't always do what's usually called 'fullstripe writes', unlike normal RAID-5/6/etc systems. This mattersbecause if you write data in small chunks you can use up more spacethan you expect, especially on 4k physical sector size disks(apparently zvols with a 4K or 8K record size are especially terriblefor this; see eg this ZFS on Linux issue report ).

Recently, I