Monday, November 29, 2004

An easy mistake-a to make-a?

Hmm. Tin foil hat time again, just briefly... to acknowledge elegance in analysis, if nothing else. Spurious or not.

A programmer interested in the vote fraud issue took a detailed look at one of the reported bugs due to the e-voting thing, and they make his debugger antennae twitch. Seeing it, I agree... particularly because the programming error he discusses is one I personally made, not three weeks ago, resulting - in my case - in a 300MB text-data file. (Oops.)

The post can be found here, but I recommend staying clear of that site in general... too little reasoning, too many tin foil hats. I'll summarize below.

The error occurred in a precinct named Gahanna, in Ohio, where the e-voting software gave an obviously erroneous result: Bush 4258, Kerry 260, Total Voters 638. Um, oops, yeah. They're pretty sure the actual Bush result was 365 votes (leaving 13 as undervotes or other candidates).

What caught this particular programmer's eye, however, was how odd such a bug result is... almost certainly not data corruption or hardware failure, as it yielded a Kerry vote percentage which made sense given polls and so forth (ignoring the exit polls thing), but nonsense for Bush's vote. Not utter nonsense, however, which is even odder. A normal programming foulup would tend to produce a result more along the lines of Bush 65,535 or the like - it's unusual to have it end up out by a large amount (by addition) but a small amount (by boundary conditions on powers-of-two math).

He did, however, find one way it could have happened. He wrote a program which would take every tenth non-Bush vote, and switch them into Bush votes... and then he screwed it up in a fairly normal programming mistake. If you denote Bush votes as B and Kerry votes as K, then his program should have been stealing votes using "B = B + 1; K = K - 1;" as the relevant code. The kind of error I'm talking about is the kind where you add cumulative totals instead of single instances... where the mistake would turn this into "B = B + K; K = K - 1;" instead.

Numerically, what he gets out of it is the result the machine returned on November 2.

Once you look into his logic, it's a little less convincing; turns out his program is somewhat dependent on the order of votes cast, and could return any number of results (all on the same close order as this value). However, though this weakens the elegance of the analysis, the mathematician in me applauds this anonymous White Knight for cleverness anyway; he can debug my code anytime. Because this is, indeed, chillingly plausible.

Two things that his analysis doesn't note, though, which IMO strengthen rather than weakening his hypothesis. The first one is that the "steal every tenth vote" isn't the only way in which such a cumulative-count error could exist; this is why it's a common error, there are several ways it could happen. Another way it could occur would be for this machine to have been programmed to subtract a small number (one, five, ten, whatever) of votes from Kerry, and add them to Bush... and to accidentally trigger that subroutine repeatedly at intervals throughout the day. About once every ten, fifty, or one hundred votes, say, instead of just once. Again this is an easy, easy mistake to make, depending on how the trigger condition is built. Same basic outcome. The other is that the effect of the underlying manipulation is, again, comparable (rough order) to the size of the exit poll discrepancies.

Unfortunately for him, that's all this can probably ever be - a hypothesis. It's supportable... different machines do seem to get issued different patches and releases of the software, this is observed from the companies' behaviour already... but not defensible. Nine points for elegance; one for provability.

On other fronts, things are starting to heat up over the possibility of fraud. The U.S. officially condemns electoral fraud in the Ukraine; eyebrows go up. Reports on the suspect events continue to come in, and begin to pop up higher and higher up the media food chain. Miami-Dade vote percentages remain the same to within 0.03% on both the intermediate and final vote results; graphs of voter suppression such as (click for full size):

...and, over the weekend, the Kerry campaign actually weighing in on the affair - albeit wafflingly - and Jesse Jackson doing so with vigour.

Still not holding my breath. But definitely not getting bored and wandering away...