Home!

I’m back from Romania, about 32 hours in transit. I shouldn’t, morally, count hanging around in Vienna for 8 hours with friendly locals who knew the places to get wine (thank you Gina, and hi from Australia!), but since it was part of my 48 hour "no sleeps only a few short naps" marathon I guess I have to. Six hours of sleep later, I am vaguely alive. Exciting stories of being sick in Romania later.

Attaching messages to outgoing mail in mutt

When I want to forward an email to someone as an attachment (usually because I want them to reply to it without having to snip gunky forward ‘headers’ in the body and preserving Message-ID and such) I can’t always forward-as-attachment, sometimes because I’m replying rather than starting a new mail, sometimes because I’m forwarding messages from multiple folders.

Up until today, I’ve resorted to all kinds of tricks to add other messages as attachments to mutt messages. One old favourite was copying them (shift+c) to a new maildir, attaching the individual files and manually setting their MIME type to message/rfc822. This does actually work but there is an easier way, the attach-message function, bound to shift+a by default.

On the screen where you normally add attachments, press shift+a. Navigate to the folder containing the messages you wish to attach (if they’re in different folders, just do this once per folder). Tag all the messages you want to attach (the default keybinding for tagging a message is ‘t’). Quit from the folder browser (‘q’). All tagged messages will be attached to the outgoing mail.

Cost of electronics not falling with the rise in AUD

I was surprised to see this pop up in the news relatively quickly after my posts about the price of laptops in Australia. (Other electronics are also very expensive, I’m just not looking to buy them right now.)

CommSec chief equities economist Craig James, quoting from the latest consumer price index (CPI) figures, said that while the Australian dollar had risen by almost 19 per cent in the 15 months to June, prices of technology goods had only fallen by 7 per cent.

James added: "What it’s showing is the benefits of falling global technology prices and the higher Australian dollar seem to be flowing to retailers rather than consumers."

Retailers fail to pass on exchange rate bonus

Dear kernel, no love

We fixed our bug.

Yeah. We spent hours on that, poring over bugs 38688 and 116996 trying to figure out what was stealing the memory addresses that by rights belonged to the SATA disk. And actually, I think there was a genuine bug with ide-disk stealing addresses from ata_piix, just like pnpacpi does in bug 38688 (38688 is a helpful bug for working with help one of my disks is missing confirmation). But it wasn’t the boot that blacklisted ide-disk that fixed the problem, it was the one two after that, after we tried switching the working DVD burner with the hard drive, and then moved the hard drive to a new slot.

I swore to myself while this was going on that it was not going to be A Learning Experience, as in I was not going to be all well, I did spend six hours in the depths of despair, but that’s OK, I learned something. But actually I do feel good for knowing more about the kernel now. GRRR.

Stupid fate

I have been rather talkative lately haven’t I? Well, never fear kiddies, because not only is my laptop dead (needs new power supply, spent $230 to get a fix that lasted for all of two weeks) but our trusty router/fileserver/machine of all trades also just failed completely in the middle of me switching USB plugs. Failed as in cannot boot as far as the BIOS. Failed as in the motherboard won’t even beep in alarm at us. Hopefully not failed as in ate all our data, but we can’t tell yet.

So I’m online-deficient for a while. Everyone keep Andrew’s laptop in their thoughts OK? Because it’s all we have left… sob.

Around the ‘net

Seeing Yellow: did you know that your printer is likely printing a unique pattern of dots on your printouts such that someone with appropriate information can identify which printer (and therefore which small group of people) printed it? Well, neither did I, until I read Mako’s blog entry about the Seeing Yellow project.

Fact about me you probably did know: my household doesn’t have a car.

Fact about me you probably didn’t know: my household doesn’t have a printer.

The Tyranny of Distance: Part 2, more reasons why being an Aussie geek in a big big world is a pain. If you head on over you can also see me account for some of the painful aspects of travel that I’ve only learned from living with someone who once commuted to London for four day’s work and has done so several times for a single week. (The amusing plan whereby he’d go to London for a week, come back for a foreshortened week’s holiday and go again for another week never came to pass though, so there’s no competing with those people I once saw in the paper talking about how they’d once flown to London for a single two hour business meeting and then flown straight back. Yeah, business class, but even so.)

Of course there’s some kind of offset we can apply for the considerable advantages all being either native speakers of English or fluent speakers with regular exposure to native speakers, plus wealthy, minus widespread monolingualism. How does the balance sheet look then? Not sure.

Photo management

Here’s a more genuine lazy-web request today: online photo management. But here’s the key: for internal use, not just for showing other people our photos.

At the moment, Andrew and I dump all our photos from our cameras into F-Spot. It’s an OK little program, but this is already a bit of a hacked together solution.

F-Spot is really designed to run on your desktop, suck photos from a camera, and store them on said desktop’s (or personal laptop’s) drive. This model doesn’t really work for us. Firstly, laptops get stolen. Andrew had his stolen in November 2005 and for a while we were worried we’d lost more than a year of photos. We hadn’t because at some point that neither of us clearly remembered but only dimly inferred, I’d bugged him until he dumped copies on our fileserver. So we want very regular backups onto another machine, or master copies stored there (with 15 GB of photos to date, 6 GB of which were taken in 2007, master copies is starting to make sense).

F-Spot has a per-user photo and tags database which is based on an assumption of each-photo-belongs-to-one-person just like my word processor’s equally false assumption regarding my documents, which has, I’m told, resulted in any number of variously buggy and expensive version control systems for Word. Only for code in plain text files has this problem really been solved well and often. Anyway we have a setup whereby we mount our photo disk on the fileserver over sshfs, and have symlinks to a shared photo database also on the photo disk, and F-Spot falls over and dies all the time and we kind of deal with it mostly.

F-Spot is also kind of difficult to use. It has tags, but you have to pick them from a huge drop-down list, meaning that to tag a single photo with all five of my family members in it can easily take me thirty seconds. (Or, yes, I could subcategorise them, but the Andrew and Mary tags then belong in about five categories each and it doesn’t allow that.) It doesn’t have albums either: you approximate that with tags, so you really do need a lot of tags… which means making the tag list even harder to use. I believe iPhoto, which is similar but more mature would be a bit better, but equally bad in the each-photo-belongs-to-one-person assumption, or possibly even worse because there might not be a workaround with mounts.

Anyway, if someone has a web service whereby we could dump all our photos onto it and manage the metadata there mor dynamically there, we’d probably use it, and pay for it (assuming that we got access to an acceptable backup mechanism). But the thing there is a whole different set of assumptions with online photo management: that we want to show someone the photos we upload. This is only true of about a tenth of our photos in reality, the rest of them suck even more than the ones we do end up uploading to show people. The rest of them we just have sitting around because, hey, they’re in focus and hard drive space is cheap. We need something that combines we’d like to show people some photos with we have a lot of photos we just store and annotate. And then there’s the lock-in (most people I know have photos on Flickr, and won’t see anything I post off Flickr), Plus Flickr at least also has more than a bit of a each-photo-belongs-to-one-person assumption behind it and also doesn’t seem to have a mechanism for this photo is a version of that one like the desktop apps do.

So, is there something that could do this for us? I suppose bonus points if I could occasionally cross-post to Flickr.

Measuring performance

James Gregory has an entry up called Metrics, on metrics as used to measure the performance of your software product: is it as fast as we need, as stable as we need, as tested as we need? He then goes on to talk about measuring the performance of your coders:

There’s other metrics you should watch as well: the deficit between a programmer’s estimate on time to fix a bug and actual time taken is honestly the only way to start getting good time-estimates. Which is another important point: metrics don’t just let you improve your product now, they help your staff get better at their jobs.

Similarly, it’s imperfect, but trends from time-lines of bugs open, and rates of bugs opened per unit time show interesting trends. I’ve found these to be good indicators of project completeness in the past, but these metrics are dangerous: it’s easy to be misled by this stuff, so treat such metrics with suitably large salt-grains.

He goes on to note Joel Spolsky’s objections to measuring programmer performance like this, which are in Spolsky’s article The Econ 101 Management Method. James says:

The example [Spolsky] gave was in reference to his company’s bug-tracking software, and he submitted that once you can measure the bugs-closed per unit time value, programmers will start artificially inflating their count by lying to the bug-tracker and to you. I frankly find this position a bit offensive, but if such situations exist it reflects poorly on management rather than the engineers. You need to be accepting of metrics that show problems, because if people hide the problems, you can’t solve them, but similarly: if you can’t measure, or, don’t look for the problems, you can’t solve them either.

Spolsky has an argument from psychology too, which I’ll get to, but first I thought it was worth noting that while James who is (let’s stipulate) a good manager needs to work with, optimise around or fire bad engineers occasionally, we as (let’s stipulate) good engineers need to defend ourselves against bad managers. I can come up with all kinds of amusing or horrifying stories about managers who’ve gotten bees in their bonnet about various metrics or other ‘signs’ that a project is going well or badly, or that they’re being undermined or are about to get a bonus or whatever. For every manager who is trying to notice patterns like every time you tell me a bug fix is going to take a day, it actually takes a month there’s one who is roaming around reminding people triumphantly that all version control commit messages must have at least 100 words in them. [I should note that this example is hypothetical: no actual crazy managers were harmed in the making of this blog entry. That said, I’m sure there’s some manager out there doing this right now.]

That’s a bad manager! isn’t much consolation when you work under said manager.

Anyway, as far as it goes, I suppose Spolsky’s point is that programmer performance is unlikely to be measured by a single metric any more than product quality is in James’s post, with increases in speed needing to be balanced against security, stability and maintainability metrics. But, if you do make the mistake of relying on a single metric for product quality, as James notes, you get a very fast piece of software which barely works. That’s one thing. But Spolsky is arguing that if you rely on a single metric for programmer quality, you not only get say, a low bug count at the expense of tests, you also get worse programmers:

Intrinsic motivation is your own, natural desire to do things well… Extrinsic motivation is a motivation that comes from outside, like when you’re paid to achieve something specific.

Intrinsic motivation is much stronger than extrinsic motivation. People work much harder at things that they actually want to do. That’s not very controversial.

But when you offer people money to do things that they wanted to do, anyway, they suffer from something called the Overjustification Effect. “I must be writing bug-free code because I like the money I get for it,” they think, and the extrinsic motivation displaces the intrinsic motivation. Since extrinsic motivation is a much weaker effect, the net result is that you’ve actually reduced their desire to do a good job.

So Spolsky has a point beyond you’ve got to be careful that you don’t mistake the metric for what it’s measuring, although that’s part of his point. This is a point that scientific method training hammers into you: you need metrics to help you decide what reality is doing, but the metric is not the same thing as reality, it is only ever an approximation to it, and is only good insofar as it is a useful approximation.

Spolsky’s other point is that regardless of whether you, the stipulated good manager, mistake the metric for reality, the people judged based on the metric will: they’ll even start mistaking the metric for their conscience. This, I think, is a point James hasn’t addressed yet.