A lesson from Patchwork Nation: Frameworks for Reporting

A note: I wrote this post back in 2009 on my personal blog. Many of the ideas remain relevant, so I’m reposting it here. However, many of the links below are broken. I’ll update them as I find where stories have gone.

Patchwork Nation, my first big project at the Online NewsHour, launched just over month ago. After a few crashes and quiet upgrades, the site is humming along, and reporting is ramping up.

I tend to explain the site a lot. The elevator (or Twitter) pitch goes something like this:

Patchwork Nation is a project covering complicated national issues from a local perspective with a lot of data to back it up. It’s a way to talk about tough subjects—politics, the economy, race, religion, culture—in a human way. It’s also a set of tools to find stories in data that might otherwise be missed.

Lately, I’ve been adding an extra bit to that: It’s a framework for reporting.

What does that mean?

Some background might be useful here. I started in print journalism, and for a few years I covered education, first universities then K-12. That meant I spent a lot of time with state data on test scores, teacher pay, free and reduced-price school enrollment (which is a good proxy for poverty levels at a public school) and graduation rates, among other things. About a year and a half ago, I started learning Django, a web development framework for Python. Django makes it possible, and sometimes even easy, to turn structured data into interactive applications that (should) help users better understand the news.

A framework is a way of taking all the repetitive tasks of programming and abstracting them. Instead of developing a slightly new method for connecting to a database, processing that information and rendering it into a template every time I build a site—or copy-pasting a bunch of recycled code—I write a few concise modules and get exactly the features I want. Or at least that’s how it works on a good day.

So, reporting. When I get a new set of data, I spend a good deal of time deciding what’s important, and where a story is. I might run it through a visualization tool, like ManyEyes. Starting with data but no story tends to be a slow process. Ending up with a story but no data makes me feel like I haven’t done my job.

When Patchwork Nation landed on my desktop, my first job was to build a back end for the map, which tends to be a big focus of the site. A local company, ThreeSpot, did the Flash development. What they gave us, combined with the Django app that feeds data into it, turned out to be a handy reporting tool.

What might be missed is that Patchwork Nation doesn’t have a map. It has (at present) 30 maps. And each one takes less than five minutes to create, from loading data to choosing colors. Almost immediately, we get to start looking for patterns and finding stories.

Part of what makes the process faster is the stuff we don’t do.

We’re rarely interested in data that isn’t broken down by county. The county is our atomic unit, and from there we find correlations across the 12 types of communities we cover. That’s another bit of triage: We’re interested in data that shows how national issues and policies affect the different archetypal places we cover. We’re interested in the ways Eagle County, CO and Riverside County, CA (both Boom Towns) are alike, and how they’re both different from Hopkinsville, Ky (a Military Bastion).

What all this means, in terms of daily reporting, is that we don’t have to start over on every story. Instead, we have an ongoing story that develops incrementally, moving update by update, with a big picture evolving as we go.

Individually, these are interesting stories, but in the normal flow of a news site, they’d float by in an endless stream. Here, though, they’re part of a larger picture of what’s happening to different types of communities in a time of change and upheaval. Each moves the story another few inches, driving the narrative, adding to our understanding of something much more complicated than we’d get in another inverted pyramid.