Some 2013 work highlights

Dec. 31, 2013, 10 p.m.Journalism

Screenshot from Keep the Beat dashboard

The past year seemed to fly by, and after looking at the server where I publish a lot of my work, I think I know why 2013 seemed so quick. It was busy.

What didn’t we map?

Looking back, I realized that I spent a lot of time building maps. Some of them were more interesting than others, and they varied quite a bit in complexity. In no particular order, here are some of my favorites:

d3.js is too much fun

This was also the year where I got to play more with d3.js. I’d still love to do more with the JavaScript library in the future, but I managed to have quite a bit of fun with it. Case in point: one of the best pieces of feedback I got from a reader this year was in response to a chart I built with d3 that accompanied a story by our higher-ed reporter, Nichole Dobo.

She was writing about a lawsuit against Widener Law School in which alumni argued that the school misrepresented its post-grad employment stats. Using figures that Nichole got from the American Bar Association, I built a chart that showed the employment stats for law schools across the U.S. I included the data in tabular form below the chart, but judging from the feedback I received, most users spent a lot of time changing the values on each axis and looking at schools state-by-state.

Here are a few other d3 graphics that made an appearance on

PHP and Django

As in my first year at The News Journal, 2013 saw a few heavy projects that required a lot of back-end scripting. One of the largest undertakings was the Keep the Beat website that I mentioned above. Unfortunately, it was a ten-week program with a limited window to register, so it’s more-or-less dead now that it’s over.

For me, though, it was an excellent lesson in Object-Oriented PHP. I built the registration/login and session management stuff from scratch (something I had never done… because Django) and was super happy that a few relatively small classes could handle the bulk of the work. Someone with a lot more experience with PHP might bang their head on a desk when looking at it, but I tried my best to include decent documentation and keep things modular. In the end, the system performed quite well and I’m looking forward to being able to reuse a lot of the code.

One of the other big projects was pretty cool but is currently making me a bit sore. Last January, I built a Django app that allowed folks to register and submit camps for our annual summer camps guide. Why did I choose Django? User and session management was a breeze and it came together really quickly, plus we do this every year and I wanted to reuse and reuse and reuse and… you get it. The app ended up being a solid success and we had more camps submitted than in any prior year. So, why am I not happy with it? It’s currently dead because the decision was made to overhaul most of the features, including ditching the user profile where folks could manage/edit their submissions. I ended up tossing most of the code and rewriting it in PHP on a very tight deadline before the holidays. Thanks to what I learned about object-oriented PHP from the Keep the Beat site, though, hopefully this version will be just as reusable as the Django app.

Lastly, this post wouldn’t be complete with a mention of the Wilmington Shootings tracker. I built it in 2012, but 2013’s record-breaking year of violence in Wilmington saw the app getting a lot of use and it continues to be very valuable not only for readers, but reporters looking for stats too.

Hopefully 2014 will be just as productive as 2013. I plan on finding at least one project to build with Backbone.js and migrating all of our Django apps from 1.3 to 1.6 and making some necessary/fun upgrades. And, as I say every year, ideally I’ll be updating this blog more often.