« « Making the ONA conference MY ONA conference

Learning how to…sort a JavaScript/JSON object with Underscore » »

Election 2012: What I learned making an auto-updating results map

Posted by on Nov 12, 2012 in Blog | 3 Comments

“I had a dream, in time gone by…” of playing with the “big kids” on Election Night. I thought it’d be fun to pass that time in Washington, DC itself. I thought making an auto-updating results map would be THE thing that proved I was a “real” programmer. When I wrote a post announcing my move to the AP more than a year ago, I was excited for AP DC on Election Night.

Done!

And I have fulfilled that part of the dream, as of this week. Before I go any further, I was primarily responsible for the actual Google Map component of the AP embeddable results presentation. But please know, it would be nothing, and I would have gotten nowhere, without my collaborators in NY: Nathan Griffiths and Seth Rasmussen, and my ever-present mentor and friend Troy Thibodeaux in New Orleans.

We enlisted the design chops of Roque Ruiz, and a marathon effort on generating shapefiles was executed with great skill by Phil Holm. And while I was, um, otherwise occupied, for multiple months, my DC co-conspirator Kevin Vineys held down the fort, and answered all my content questions about special cases. I’m truly fortunate to have him in my corner — literally.

And of course, my greatest coding rock of all at AP these days is Troy Thibodeaux. Physically, he may be in New Orleans, but he’s always in my head, and makes me better every day. Everyone needs a Troy in their corner (or a Jonathan or a Derek or a Ben or a Nathan or a Seth — oh, I’ve been lucky to work with some amazing minds and pure hearts.)

Now that we’ve gotten through the names, here are some things I want to document about the map, because it makes my heart swell with geeky joy and learnings.

  • Spreading the good work. I adore working for AP because our stuff doesn’t just go to one place, but many. Our map was visible on NPR, the Seattle Times, CSPAN, the Detroit News, dozens of TV station websites and countless others. CSPAN even made a video clip showing how it works and calling it “a godsend for election results geeks”. Really lived my dream of bringing the interactive journalism to many places.
  • Spreading the work internationally. We also had the map embedded in international clients, and translated the map’s contents into Spanish, Portugese and Chinese. Kudos to Nathan and Seth on that compelling feature! Huge gain for us!
  • Cross-platform, responsive projects. As with most of the work we do, this needed to work on tablets just as well as desktops, and even have an appropriate view on phones. And whatever size a customer embeds the map, we should adjust our display accordingly. And if customer embeds it so that it can respond to the size of the user’s browser, as NPR did, so much the better. We work hard on responsive, but it’s for an additional reason than its more traditional definition. There are lots of different ways our content can be embedded by customers. When it comes to sharing projects, I think this is another level of responsive design that often isn’t carefully considered enough.
  • Building a complex project. Smart people have given me the advice that to level up, I need to build more advanced projects. Some of the map templating work I’ve worked on and discussed has approached this level, but failed to go this far.
  • Coding fast and meeting requirements. Much of my work is making things I see in my head, and then taking advice to make it better. If I need to push something a day or three, it’s discussable. Not so here. Certain things HAD to be done. The deadline could not be pushed. And we did finish it.
  • When coding fast, my skills suffer. This was not the best code I ever wrote. At all. That’s okay. My best code is when I take time to refactor. Constantly fixing and adding features means I didn’t use those best practices. Yet, smart people tell me the best practices will make it easier to adjust code when you’re in a rush. I wish I had adhered to them more.
  • Get nonjudgmental smart people in your corner. Just, a thousand thank yous to Troy who kept getting contacted with a sleep-deprived, not-at-my-best version of myself, ranting, whining, complaining, giving him messes of code asking “Now what?” I care so much, but it can make me hyper-emotional. Troy helped me work toward logical solutions, even making sure I was learning important lessons, despite of, or maybe because of, the deadlines. Tricks and tips he imparted are making my next project better. I am so grateful to have access to minds like that every day. Oh, and when I thank Troy, he replies, “I’ve got your back, you’ve got mine.” Grin. Collaborate to serve the mission. Rocking it.
  • Never underestimate how hard it is to get geographic shapefiles to load. Also, if you do an election map during a redistricting year, stay on top of your House congressional districts.
  • We colored our polygons as they were “leaning” toward a candidate — when any votes were in, with a light color, then a darker color was received for when AP calls a state. One argument is that the leaning color is confusing, and can be misleading, esp. when few votes are in, or votes are only in from certain counties. The other side is that a map that’s all gray until states start to get called isn’t compelling in an interactive way. I would argue that the light color is visualizing what is already in the tooltip if you click on a shape, this is just giving you insight into the story behind the click. More detail behind more clicks.But it’s an interesting issue to consider.
  • Adrenaline. I’ve never built an app so tied to real-time data before. I was a theater minor in college, and I recognized the feeling Tuesday night as right before a show opening. The butterflies in the stomach, the fear something will go wrong, the knowledge that at this point, it’s too late. And the sheer thrill of watching your show, or app, just…fly. Beautiful.

Around 12:30 am, I left AP DC. On my way home, I stopped by the White House. It just so happened Romney was conceding at the same time. The emotion around me was palpable, for a very different reason. And it hit me, I live and work in the center of the action. I did it. I will do more. But some sort of test came and went on that night. And I couldn’t be prouder of my organization and my colleagues and the community at large. I am no longer a student. I am one of you, in an undeniable way.

So, two days later, when our bureau chief goes around the table at the morning meeting asking each group how things went during the election, she comes to us. “Interactive? Everything went okay with the map?” “Yes!” I say, a bit too excitedly, perhaps. And I grin widely. But not for long, because now we’re moving on. I dare not rest on any laurels. We’ve got thousands more stories to tell, millions more interactive journalism experiments to run, billions more things to learn. And I couldn’t be more elated to keep pushing toward the future.

« « Making the ONA conference MY ONA conference

Learning how to…sort a JavaScript/JSON object with Underscore » »
  • http://twitter.com/TroySchneider/status/268036522450751490/ @TroySchneider

    Election 2012: What I learned making an auto-updating results map http://t.co/IoWE3Afg

    [Reply]

  • http://twitter.com/CourierEssig/status/268485627572535296/ @CourierEssig

    .@michelleminkoff I shared many of the sentiments you had on election night. Thanks for posting! http://t.co/1Mg57OOJ

    [Reply]

  • http://twitter.com/LNdata/status/271267649428803584/ @LNdata

    Election 2012: What I learned making an auto updating results map http://t.co/PmQ0teCl via @michelleminkoff

    [Reply]