How to win a hackathon
Apr 17 2014
We realized early on that if we were going to even have a shot at winning the first Pearl Hacks hackathon, we had to do what we knew how to do best: tell a story.
Casey Miller, Annie Daniels, Josie Hollingsworth, Caroline Pete and I had no plan when we came together for Pearl Hacks, a weekend gathering for high school and college women interested in technology. We were a team of five multimedia journalism students participating in our first hackathon. Only Casey had completed the advanced class on Django, a framework that makes it easier to build Web apps, while the rest of us had just completed our first Django project.
As we had watched teams form on the event’s Google+ page, and we watched them discuss their grand ideas of building Android applications, we quickly realized that our strength lay in storytelling through code. We did not know how to even begin building a mobile app, but we did know how to read data and articulate it through code.
Our ideas quickly beginning flying as to what story we could tell and what data existed to tell the story. We discussed the recent national news, Flight 370, Crimea, etc., but we felt that these stories were already well covered and had become worn out.
So we began discussing what mattered to us.
Recently, UNC has been in the news regarding sexual assault. While the conversation on the issue was big on our campus, we wondered if we were alone. We determined that we wanted to open up the conversation on a national level by showing the conversations that were taking place at individual schools around the country and bringing them together in one place through a Web application.
We wanted to emphasize that sexual assault on college campuses was a problem on a national scale. So we determined we needed a map.
We also wanted to tell the stories of sexual assault from the students’ perspective of as well as open up a space for victims to tell their own stories. We knew that in the time allotted, we could not show every college or university in the nation, so we picked a flagship school in each state that also had an online student newspaper. The plan was to show each school’s newspaper search feed for sexual assault that would link to the story along side the victims’ own stories.
It was after dinner by the time we began to plan what the site would look like. We still had not written a line of code, because we wanted to be sure we all had the same vision of the Web app before we began to actually implement it. So we began to paper prototype.
We decided that the map would be the navigation to all the different schools. On each school’s page, we wanted to show the search feed of the school newspaper’s stories on sexual assault. These stories would then link to the paper’s online story. Next to the search feed, we would have a place for victims to write their stories. We also wanted to include some basic demographic information about each school, such as population, male-to-female ratio, and links school’s sexual assault counseling centers.
With a clear idea in mind of what our end result would look like, we designated jobs. Casey, with the most experience with the back end, would set up the site and begin to build the scrapers, the programs that would pull in the schools’ newspaper search feeds. Annie volunteered to make the map. Caroline, Josie, and I began to build a JSON file with each school’s information.
It was around 8 p.m. when we actually began to write. With each of us designated to our part of the project, we determined that we would go home to sleep around 1 a.m. and come back in a few hours to finish the touch-ups.
We quickly ran in to problems.
The JSON file was completed around 2 a.m., and Casey had finished setting up the back end, but she had quickly realized that she was going to need to write a scraper for all 50 schools. At 2 a.m., Casey taught me what I needed to do to implement a scraper for each school newspaper. We found that not every school we had chosen had an easy-to-scrape site, but we concluded that given the fixed timeframe, to skip the school and implement the feeds we could scrape. We went home at 5 a.m. and decided to come back in two hours.
At 7 a.m., we assessed what still needed to be done. We did not have styled templates for the home page, the school pages, or the about page, the map was not completed, and we still did not have a forum. Caroline quickly began to work on styling, while Josie and I began to write out the about page. Casey was implementing the forum, but Annie had run into a problem pulling the geocode from the JSON file on to the map. We had just five hours until deadline.
In the last hour of time, we had everything running on our local machines, yet the map was still not reading in the JSON file. So we did the only thing we could do: We began hard-coding in 50 latitudes and longitudes onto the map that we then linked to the individual school pages. We began demonstrating our project at 2 p.m.
Twenty-four hours, 50 school scrapers, one (hard-coded) map, and a large JSON file later, we had a Web application that articulated the student voice and victim’s story of sexual assault, as well as provided help information as needed by school.
We won first place at the first 2014 Pearl Hacks hackathon. As a group, we were shocked.
Looking back, I am in awe of all we accomplished in those 24 hours. We had reached every goal we had set for ourselves. The end result looked exactly like our prototype. Yes, the code behind it was ugly and needed work. But the site told the story we had set out to tell.
Our site allowed each school to share its stories of sexual assault, but it reassured the victims who wrote in our forum that they were not alone. We had created something that opened the doors of conversation on a national level to something that we thought we were alone in.
In the end it was not our code that won first place, but the stories that our code helped tell.
See the project
Culture of Yes
Editor’s note: The Reese News Lab will host its first Journalism School Hackathon with PBS Media Shift on the weekend of May 30 – June 1. Join us!