Liveblogging #GhanaDecides Day 2: The Revenge

CODEO Dataclerks, Ghana 2012

Goooood morning #Ghana

In a bit of a personal tradition, I'm liveblogging elements from today's Groundhog Day-style election Part the Second.

Updates are added in reverse cronological order.


It's Sunday the 9th, the morning after. Well, kinda the morning after the morning after, I guess. We got out at a fairly reasonable 10:30 PM hour, feeling really good about where we were. Imprudently my friends Richard and Michael and I decided to go listen to some jazz after our sleepless days. Quite a good place called +233, for the Ghanaian country code. Maybe not the rest we desperately needed, but it's good to get a bit of local color. 

As Sunday evening dragged on, there were some indications of mounting tension; a large group of people massed near the Electoral Commission; the NPP preemptively declared themselves the winner. However, at about 9:00 the Commision formally released their complete results, which showed the incumbent NDC party squeaking out a majority at 50.7%. Those numbers corresponded very closely to what CODEO observers and analysts had calculated, so it looks like the EC did a great job.

From here on it's up to the NPP to decide what they do, but the Ghanaian people and other outside observers can be confident that the results accurately reflect the will of the people. At the end of the day, that thumbs up or thumbs down is the reason we do this crazy stuff.

8:45 Update

It's waiting time. We're closing in on an astonishing 99% of all data in; statistically at this point some of the outliers probably were struck by lightning at this point. And then we sit. There's more cleanup to do - catching stray gaps, finding logical errors or typos, etc - but the data's close to stabilizing.

Outside, excitment and tension is building. The opposition party, NPP, just held a press conference declaring themselves the winner. The Electoral Commission won't complete counting for a long time yet.  Unlike the US, there's no comprehensive set of exit polls enabling organizations to call elections before the voting is complete.

People are clamoring for news. The facebook wall has a litany of pleas for updates on what is going on and what the observers can share.

CODEO's got the data - and will sit on it. 

This gets really frustrating for folks, but the goal of an election monitoring group like CODEO isn't to break the news on who won or lost. It's to know who won or lost and use hard facts to prove that the electoral commission did their job right - or that they didn't. 

In this kind of environment, though, calls for patience aren't any too popular.

8:00 Update

Much better. Just had some tasty dinner. There's a lot of rice here at the Kofi Annan Center canteen, but they put the most awesome (and spicy) pepper and tomato sauces on it.

For your enjoyment, here's a couple examples of some of the less positive comments from Facebook:

ur observer are not observers they easily show their party colours, next time do a good selection

Ur face self no dey bee. Luk at ur teeth. All dis ur evil plan wil not work in Jesus Name Amen. Nana all de way. Wat is de meanin of dat? number 1 right? Ur face lye shit

You always have to talk in advance about how to deal with negative stuff on your public wall. Just deleting it all isn't the best answer, so you want to come up with terms of use in advance and then hold to them. Keeping some negativity around is a good thing, since it telegraphs your openness and honesty.

6:30 Update

Things are pretty calm around here. Pushing hard to get all the data we can, but there's always a point of diminishing returns. 

In other news, the next three episodes of our short radio show educating the public on election monitoring and our findings from the first day are up. You can listen to them on CODEO's SoundCloud channel. The work on social media CODEO has been doing is great, and the younger, more affluent, better-educated audience is a really important one for the organization's goals. However, there's certainly a heck of a lot of folks who are never going to be checking FB page for updates. For rural areas with limited education and abysmal technology infrastructure, nothing beats radio.

We've teamed up with an organization called Farm Radio who are specialists in the topic. Ghana has a vibrant community radio sector, and there's a lot of demand for high-quality content. We're kinda shooting in the dark with this, so it's a real experiment for us. Unfortunatly we're not able to get any real-time metrics, and even when we do they're gonna be a bit hazy.

OK, conference in the analysis room. Gotta run.

5:01 Update

Polls are closed!

Of course, we've heard that one before.

4:15 Update

Deep breath. We're OK. Did a 3rd type of restore which worked just fine. Lost perhaps 5 minutes of data. Mental note: make the developers demonstrate a complete restore before election day next time.

The desk clerks are pretty quiet and obviously fatigued. We're at a stage of the game where the Big Board looks pretty good - I'll try and put a pic up to show. 25 minutes to poll close! Of course, we've heard that one before...

4:10 Update

Restore technique 2 failed. Developer shooed me out - was making him nervous. Desultry fiddling with SQLite. Why the hell are my not-equal queries not working?

4:05 Update

Slammed coffee. Restore technique 1 failed. Back to pacing.

3:45 Update

Back to blogging since it beats chewing my nails. The developer came out of his cave to say that they'd just blown up the database. Not to worry - they got a backup directly before running the Query of Doom - but we had to have everyone stop using the system and sit on their hands. Clerks will probably lose their last call. And the database will be back "any minute now."

Now, if you'll excuse me, I have to go back to uselessly pacing and glaring at the developers.


2:30 Update

Day got real busy and somewhat tedious. There's a lot of number crunching at this stage of the game, some of which is clever SQL and a lot is tedious Excel. Been a lot of the latter and some stupid SQL of the former. Annoying switching syntax between different databases. Also looks like I missed lunch. Good thing Meghan brought me the Whole Nutrition Bar for Women

We just crossed 6,000 "likes" on Facebook with CODEO's page. The group has been making a forceful new push into social media, which is a challenge for a long-established and rather academic NGO. Shifting to delivering small pieces of interesting news at a steady drip is a radically different workflow; it also means you're delivering atomic elements of data rather than lengthy, comprehensive briefing papers. Watching the Facebook wall interactions has been a lot of fun and quite heartwarming. 

"God bless you CODEO!! We the good citizens of Ghana love you!! Shalom!!!"

"then the election is already peaceful thank you CODEO for YOur valid information

"Kudos for the gud work"

"kudos to u men.great job done keep it up.we are solidly behind u ."

Some are *cough* less positive. If I can dredge up any particularly funny examples I'll post them.

Questing for coffee. BRB.

11:30 Update

Just had to go wake up our developer. He's pretty great, and does good work. NDItech likes working with local software developers whenever possible; after all, we are an international development firm, and if we can support some local entrepreneurs with our business that's all to the good. From a sustainability perspective it's best, too; there's no way some DC developers will be able to help CODEO out two years from now, but our Ghanaian friends may have a close relationship with CODEO over that time.

Anyway, Kwesi had a heck of a night before the election; he was working hard all through the night to make things work. The database came online about 5:15; we were expecting observers to start sending things in at 5:30. He continued pushing, fixing bugs and adding critcal functionality throughout the day. He's a tuckered puppy today, so has been catching catnaps in the back between us storming over bellowing about needing something fixed or analyzed. 

Meanwhile I've finally done something I should have a long time ago: set up a local database version of the spreadsheet export from the central managment system. Now I can query away and combine different elements to pull whatever increasingly small subsets of observers we're targeting. I'm using Navicat which is able to access both the Postgres system CODEO is using, my local databases (typically MySQL) and spin up SQLite quick-and-dirty DBs fast.

10:30 Update

We're in data chasing mode. It's that annoying part of the cleanup process where you've done the big easy parts mopping the middle of the floor  and you have to go get way back in the corners or under the couches. Sometimes those parts are not really worth looking into. Regrettably, the whole point of a partial vote tabulation (PVT) is that you need to get virtually all of the data from the places you are observing to make sure you have a truly representative sample. We've got our data clerks pounding through a shrinking pool of people, but as you get further out to the edges they tend to be the people with problems - either they're waaay out in the boonies and have no cell reception, or they are asleep (understandable after the day they had at the polling stations all day) or they somehow failed in their mission. Low-hanging fruit is long gone.

9:30 Update in the Dark

I'm writing this in Evernote because the power just went out in our data center. Not actually dark, of course, since it's mid morning, but hey. This is a huge annoyance, and yesterday when we were juggling the full panoply of 4,000 observers it would have been disastrous.

You try and prepare for these sorts of things and mitigate the risks in advance, but of course you can't prep for everything. I thought we were putting ourselves in excellent hands at the Kofi Annan center here; it's quite a sophisticated facility with qualified staff. As it turns out the power has been out almost every day and the internet has cut out more than once a day (yesterday since some idiot thought it an opportune time to move a network switch.) One way you prep is by using laptops - built-in uninterruptible power supplies. Here we've got a bank of computers instead (pictured) which are vulnerable to power outages and make for some hella ugly cable rats nests.

8:00 AM Update

We had a pretty awesome coffee machine yesterday, some miracle of science able to make "mokkachinos" and "vanilla creme lattes" as well as straight espresso. Today we have that beloved universal staple, nescafe packets. Well, it's something. 

We're all pretty friggin' tired. There's a heck of a lot of work to set up a major election monitoring mission, and the day itself is incredibly long. We arrived at the Kofi Annan International Peace and Training Center at 5:00 AM, as today, and there's just a lot of stuff to juggle. Any problem becomes a crisis when it's a do-or-die day. Speaking of which, I have to pull a special list of polling places now-now. BRB.

6:00 AM Update

Yesterday was a long and particularly intense day as Ghanaians turned out in droves to go to the polls in this year's presidential and parliamentary election. Lots of people went to the polls, but not all of them got to vote - the newfangled biometric voter identification machines were a #fail in an average of about 10% of precincts across the country. CODEO, our partners, are heading back to the polling stations, and we've been set up at the data center for an hour and a half.

So far we've cleaned the place up (leaving at 1 AM does not give you the incentive to tidy), come up with a new monitoring plan for this entirely unexpected situation, got our developers to restructure their system to match our needs, and blast text-messaged those we suspect will have ongoing voting to get back at it.

Next high priority: coffee.