Arnt Gulbrandsen
About meAbout this blog

Buggy chores

I'm angry now.

Last Friday I spent ten minutes writing bugfree valuable code. I also needed to write some entirely straightforward code to interface the new code to the rest of the world, build it in a test environment, and change the test environment a little to accommodate the new test.

Ten minutes of brainwork, perhaps an hour of drudges, the rest of the day to fix bugs related to the drudgery, and once the drudgery worked I saw that my ten minutes' brainwork worked perfectly.

It's not usually that extreme, but this isn't unique and I want it to stop. I want the bugs to relate more to brainwork, less to time spent typing.

Most of the day was wasted on a qemu/kvm surprise. I used a qemu/kvm virtual instance for testing, and either qemu or kvm (can't keep them apart, sorry) behaves oddly if the host system has several ethernet and VPN interfaces. The code unter test could talk to one part of the world, but not to another part, and as a result I spent a day staring at puzzling test failures.

Do I get to blame qemu/kvm? Perhaps, perhaps not. In one way, what bit me was a classic leaky abstraction. The virtual instance's routing table was plain and simple, but the host system's routing leaked through and so packets to some destinations were lost.

Blaming KVM may be fun pedantry, but doesn't get to the heart of the problem: Why chores are bug-affine. So here's hypothesis 2: Some chores are bug-affine and I can't tell in advance whether a particular chore is. The only solution in that case is to avoid chores. That's software sucks, so use less of it again, so here comes hypothesis 3: Some activities are bug-affine and others less so, and the whether a particular change is interesting or just a chore doesn't matter for bug affinity.