The BushMeter is a graph of George W. Bush's popularity. It is regenerated every night around midnight, PST (UTC-8). You will not see this graph unless you have a web standards compliant browser (EG, a recent 3.2 or greater Konqueror, or Mozilla with SVG support), or the Adobe SVG plug-in.
There isn't much to interpret here. The plotting program used to be plotutils, but it didn't do legends, and it wasn't very attractive. Plus, getting date values for the X axis was always something of a kludge. Luckily, I got the itch to convert Perl's SVG::TT::Graph to Ruby, after having used it on yet another project. Although I ended up rewriting nearly the entire library in a more modular way1, it did turn out to be a pretty rockin' toolkit, if I may say so myself. And I may say so, because I'm writing this page -- albeit, apparently with a shotgun.
Anyway, so now I'm using my own SVG::Graph, and the graph is much prettier, and it has a key, so you can see who's telling what lie. Best of all, since it is SVG, you can zoom in and really scrutinize the squiggley lines.
What you're looking at is Bush's popularity (Y-axis) over time (X-axis). The X-axis is stepped every six months. The title indicates the date the graph was generated on (+YEAR/DAY, where day is the day in the year). Be aware that the dates on the X axis are purposefully fuzzy; the polls often take place over a period of days, or even weeks; I chose the median day of each poll for the X axis. And everybody knows that the Y axis is a total fabrication. The only thing that is for certain is that you couldn't turn this chart upside-down.
The various lines represent different sources, like CBS, Gallup, Fox, and so on. Since most media outlets are owned by one of seven companies, and each has their own agenda (especially Fox's laughable "fair and balanced" reporting), any one poll is probably useless. Looking at all of them together is probably almost as useless, but maybe a little less so.
I'm not a bad man; at least, I don't think I am. I don't torture puppies, or knowingly contribute to terrorist organizations2; I try to be actively good, not impinge directly on other people's rights, and I try to not cut people off on the freeway. In general, I think I'd put myself on the "good" side of the good/bad line.
Nevertheless, I admit that I take a certain perverse pleasure in watching the downfall of people that I hate3, and in cursing their luck when they have it. I watch SCO's stocks and sacrifice a goat daily in the hopes that the stocks will fall through the floor, and that Darl McBride will receive all of the bad karma that he has coming at once, concentrated in one falling piano. I also track George Bush's descent into unpopularity, and this is what this page is about.
Now, watching statistics is a tricky business. Not for the usual reason -- that statistics lie -- but because the American public is easily duped and mostly stupid. SCO's stocks, despite the fact that SCO doesn't have a chance of winning any of their lawsuits, rise and fall without ... well, the fact that they rise at all is baffling. And Bush's popularity can soar on seemingly trivial news that he's decided to invade and subjugate another country, or fall because he gave yet another miserable state-of-the-union address4.
Still, it is sort of fun to watch these things, and so I created the BushMeter. You can use it to celebrate when his popularity takes a dip, and you can even use it to take joy when his popularity jumps5. Just come back to this page once a day (or once a week) and watch the end of the graph move up and down in slow motion -- probably far too slowly for you, because if you're reading this page, odds are good that you're an American and have the attention span of .. hey, is that cheese?
It starts with the PollingReport.com. They collect a variety polls and publish the results. I slurp that file with a Ruby script and convert it from Evil HTML to Good (but dumb) XML. Then I parse it and give it context, making it Good, Smart XML This is all done with one 85 line Ruby script.
Then I run the XML through another Ruby script (another 110 lines of code), which uses SVG::Graph to generate the SVG chart, which you see in all its glory above.
Why SVG? Well, being a W3C recommendation, SVG was the right format to use. Beyond that, SVG is a vector graphic format, so you can zoom in on the graph and view the daily results while still being able to zoom out and see the big picture rise and fall of Bush's popularity during his entire term.
It took me almost as long to write this page as it did to write the programs to do the conversion, so you could say that the picture cost a thousand words to explain it, whatever the hell that means.
Want the source? What for? I mean, it isn't beautiful code; this is one of those projects that just sort of grew, and I've no serious motivation to redistribute it or even comment it.
But, you're the masochist, so here it is:
bushplot.rb -- this is the One Ring that rules them all. Run this, and pipe the output to a file.
bushrating.rb -- pulls the source statistics from pollingreport.com, tidy's it up, and converts it to a more sparse XML.
That's it. You need Ruby, REXML (unless you have Ruby 1.8 or greater, in which case REXML is included), SVG::Graph, and htmltidy for everything to work.
Oh, yeah: George W. Bush Miserable Failure .