Features:

Spokesman-Review Holiday Lights Map

Our own Ryan Pitts talks about his team rebuilding a map app


The Holiday Lights Map for 2012

We didn’t create dishes. We create preparations to create many dishes.” —Ferran Adria

I’m nowhere near the only news nerd who’s inspired by cooking and the way chefs plan, experiment, and execute. I’m also a sucker for advice from far-flung disciplines that can inform the way we practice journalism and development in the newsroom.

This Ferran Adria quote comes from a recent episode in David Chang’s excellent “The Mind of a Chef” series, and it gets at a strategy we rely on at The Spokesman-Review. Whenever we’re confronted with an event that begs for a single-purpose project, we look hard for ways to turn it into an app that our journalists can use again and again. There’s a little bit of virtuous laziness wrapped up in that mindset, but it’s also a pretty practical way of thinking at a paper the size of ours. We only have so much development time to spend. We need to maximize it.

This month we rebuilt and launched a map that lets our readers share their favorite local holiday lights displays. It’s timely and fun, it gives neighbors a way to find an audience for all their hard work, and it’s been a popular feature in years past. It’s also a perfect example of the development strategy I’m talking about.

I made our original holiday lights map back in 2006, when our site ran on some pretty glorious ASP. The functionality was simple: Readers got a form to share an address and description, an editor did some verification and cleanup, and a new map point was born. Between artisanal admin forms and the original Google Maps API, we built out map and list views for the whole city and smaller regions within it. Somehow everything kept working year after year, and early each December we’d remember to dust off the app, change two labels, then feel thankful that we didn’t work in VBScript any more, and turn our attention back to Python, Django and modern good times.

But our IT department decommissioned some hardware this summer, so this December we found ourselves without anything to dust off. (We could have done something about this far sooner, of course, if we’d have thought about winter projects back in June … but who does that, right?)

Get me rebuild

The app was due for some love anyway, not just to update its look and feel, but to get rid of my ugly, ugly JavaScript and fold things into the admin our editors use now. One of our developers, Mike Tigas, works some real magic with maps; he turned around a Django app that handled submissions, geocoding and a flexible map display in just a couple days. Gina Boysun wrote code to export submissions into our print publishing system. We plugged the whole thing into a clean, responsive template that scales from full-screen BoyerMaps to nice, narrow text lists. It’s particularly nice on a tablet, with tap-friendly buttons and filters.

But we didn’t mess with the recipe that much. At its core, the holiday lights map still does the same things it did in 2006. Show readers a form, give editors an admin, and provide map and list views for the data. Now we actually have a preparation, though, not just a dish, because we invested a little extra planning and time up front.

A map like this is just a collection of points grouped by theme, right? And the form you use to ask for holiday lights submissions doesn’t look that different from the form you’d use to ask about nasty potholes. Or garage sales. Or whatever.

So, app

Our Public Maps have two basic models. Point records store information from readers alongside geocoded location data. We run a local version of the excellent django-boundaryservice, so each Point is also aware of the city, region and neighborhood that it falls inside. And ultimately, each Point belongs to a Collection, which stores basic metadata about a map. Things like name, a thumbnail image, and a description.

Each Collection also stores email addresses to alert when a reader hits the submit form. We don’t publish anything to these maps that hasn’t been vetted; this editorial process also makes sure that a person triggers the geocoding so we don’t accidentally end up with points that don’t make sense.

I’m pretty sure we could have spun up a replacement for our old holiday lights map in a few hours rather than a few days, using Google forms and Fusion Tables. But I think our investment paid off not just with a presentation that matches where we want to go with web design, but because now we have a tool that will be easy to use—no development time required—for years. Pick a name, pick a photo, type a description, hit “save.” The list of maps gets a new entry, and the map package itself automatically gets filters, a list view, and a submission form. All of our editors have the keys to the app, and any one of them can create a new map for readers in two minutes. Probably less.

I like that recipe a lot.

People

Organizations

Credits

Recently

Current page