Train Crash Leads LA Times to Create Django Database on Deadline
At 4:40 p.m., Friday, Sept. 12, a Metrolink commuter train collided with an oncoming freight train in Chatsworth, Calif., northwest of Los Angeles. The crash, the Los Angeles Times reported, was "the worst in modern California history," killing 25 and injuring 135.
The following afternoon, LATimes.com, the paper's Web site, posted an interactive database of the first fatalities who were identified. The database enabled readers to learn more about each victim with fields sorted by name, age, gender, hometown, hospital, marital status, number of children, occupation, reason for riding, and the train car they were riding.
As the coroner began to release names, the database grew. It now includes all 25 people who died in the crash. A separate Web page is devoted to each victim, featuring a photograph, a quote from a friend or relative, a brief portrait and a link to the paper's obituary. The database also accommodates poignant tributes from family, friends, even strangers soon followed.
LATimes.com has created tailor-made databases before. They include California’s war dead in Iraq and Afghanistan, a homicide database paired with its Homicide Report Blog, a K-12 guide to California schools including SAT scores, enrollment size and diversity; and on the lighter side, "L.A.'s Top Dogs," tracks the most common canines in Los Angeles County -- Chihuahuas named Princess topped the list Thursday.
I was struck by how quickly the crash victims database appeared and impressed by the interactive demographics that let me learn information about each victim by the field of my choice. It turns out, as I learned from e-mail interviews with Times staffers involved in the project, there's an interesting tale of best practices behind this deadline database.
They told me this was the first database they produced on deadline, speed made possible by a decision to depart from the paper's content management system, used to post text, images and multimedia elements, in favor of Django.
Django is a free, open-source application that makes it easier and faster to build databases for the Web. Co-created by journalist-programmer Adrian Holovaty, Django is billed on its Web site as "The Web framework for perfectionists with deadlines."
Django was used to create the schools database, Times staffers note. But, "this is the first time we've used the application on a breaking news story," Megan Garvey, morning Metro assignment editor, told me. Garvey was one of several Times staffers I queried about the database. Most answers below are Garvey's; answers from others follow their name and title.
Chip Scanlan: Why and when was the database created?
Megan Garvey: Shortly before 8:30 p.m. Friday, about four hours post-crash, (database producer) Ben Welsh sent me a message asking if he should start building a site for crash victims based on our treatment for the War Dead. I thought it was a great idea and he got to work, even as we were still scrambling to report the news. At that point, I think they had confirmed only a handful of fatalities or fewer.
Who made it happen, from genesis to posting?
Garvey: Ben and I had a quick discussion of what the database had to include (name, age, hometown, places for a quote, a picture and some biographical information) and he started building it right away.
By 11 p.m. Friday, he had the basic data form ready to go, but we had no names of confirmed fatalities yet.
That night from home, I started entering the names of injured that we knew about from our reporting, using stories that we had written, as well as information in our feeds basket where we send material on breaking stories.
On Saturday, Ben and I talked in the office about 7:30 a.m. about where we were and what else we wanted to try to collect (hospital, occupation, reason for being on the train). He started building a landing page and writing the code that determined which of the fields would be published and how they would be presented.
I was also handling the editing of our live coverage that morning so I sent out a message to the staff a little after 9 a.m. telling everyone what we were looking for and where to send it. Almost the entire Metro staff worked to make War Dead happen, so nearly everyone was familiar with the concept.
At that point I had one of the reporters in the office start going through the feeds basket and entering names and contact information -- noting the injury as fatal, non-fatal, or unknown -- so we could move quickly once names were confirmed. Ben set it up so we could filter what went live on the Web by extent of injury. At that point we knew of only one name of a fatality, an LAPD officer.
By late afternoon, we had two names confirmed through reporting and the database was live on our site with the overall numbers. It was linked to on the homepage within minutes of the coroner's first release of names at about 6:30 p.m. Saturday.
What software was used to create it and how did it get up on the site?
Eric Ulken, interactive technology editor: We went off the reservation and used Django, because our CMS doesn't support this kind of application.
Welsh: Django is a toolbox that a reasonably skilled Web developer can use to turn around projects quickly using a number of shortcuts it introduces. It's for computer programmers, not for your average reasonably savvy Web producer. Though it's well-crafted enough that a committed amateur could educate themselves and learn how to do it in a month or so. And probably much less time if the person is already capable in the Python programming language. It's is not an off-the-shelf solution, like, say, Caspio, that a typical web producer could pick up and start making things within a couple a days.
One of those great shortcuts is an automatically generated "admin" that allows for Web-based data entry instantly after the database is designed. Most other Web frameworks require the developer to invest a ton of time building things like that out, which means you're doing a lot of work that will never be displayed on the public facing site. In the development community, the Django admin is often considered its "killer app" that separates it from competitors. Technical documentation that provides a good overview is found here.
So once the metro staff got started on entry I could focus on building the user interface for the live Web site and we could work on two different tasks at the same time. Very efficient, and well-suited for projects like this.
Garvey: We relied on our reporting from the field and from information released by the LAPD, fire authorities and L.A. County Coroner. In some cases, if AP or another newspaper had information that we did not have yet, we used that and attributed it.
How did you settle on the fields?
Garvey: The basic fields seemed obvious and were somewhat cribbed from our work on War Dead. In addition, we decided it would be good to know which car the person was riding in and, if known, which direction they were facing. We added several other fields for resource purposes only, such as contacts for family and friends, details of the injuries and whether they were connected to the deadly 2005 Glendale train derailment.
We are also recording information on the injured for future stories [and given the severity of injuries of so many, in the event that they later die] but decided not to publish that on the Web.
In addition, we knew we wanted a way to link people to the actual stories written about the crash and the individuals. And, of course, we wanted a way to let people share their memories, which has been very effective on War Dead.
Readers have responded overwhelmingly to that opportunity and at this point nearly all the individual memorial pages have posts from close family and friends, as well as other people who just want to leave condolences or express their grief.
We plan to reverse publish some of the comments from the database in the printed paper, probably on Sunday.