How To: Hackathon

What You Should be Thinking About

Find a Problem

Think about the problems facing cities today. This problem should be specific and clear. For example: there are many free web services that provide data about a city’s climate, population, and air quality (see list below!) but it is difficult to access them all. It also makes it difficult to communicate how different climate factors might result from various human actions.

Design a Solution

Think about how technology might solve this problem. In the case above, we might create a website that pulls data from all of these sources and displays them on a single, intuitive page. We might even create new datasets from the existing ones!

Finding Inspiration

Problem It’s difficult to understand how air quality changes over the course of a day or year because most websites just show current AQI ratings.

Solution Build a website that allows users to view a timelapse of historical air quality data.

Problem It’s difficult to find a city park that meets complex criteria. For example, maybe you are searching for a park with an off-leash area for your friend’s dog, a grill so you can BBQ, and that’s located along a bus line convenient to you.

Solution Build a system to search for a park drawing on both City Parks amenities data and TriMet bus route data.

How Should I Build My Team?

Team Lead/Stakeholder

This person should guide the overall project and make sure that the application is useful to an end user. They should enforce the timeline and make sure the various tasks are detailed and every team member always has something productive to work on.

Technical Lead

This person should deal with the coding framework you’ll be using; including the language(s) you’ll be coding in. They should also coordinate to get everybody’s machine in a state that they can work on the project.

Other job considerations

You might also consider having:

  • A QA tester to make sure your app doesn’t break under normal use (this is a great job for somebody who might not be quite as experienced!)
  • A product owner. This person takes some responsibility from the Team Lead by making sure the coders stay in scope and build something that the user will want to use
  • A product designer. This person should be able to organize your solution into chunks that different people can work on. They should be able to break your problem down into smaller sub-problems.
  • A presenter for your project. This could be somebody who is able to be articulate about the problem your group is trying to solve. They need to be intimately involved in your solution and how to use it.

What Should My Timeline For Saturday Be?

Morning (after breakfast)

If you haven’t already started research on the thing your app will be solving, you should use some time to research that. You should also dedicate some time to designing the application you’re putting together including how to split the work up so everybody has a task. Don’t make the scope of your problem too large. You only have the day to make something fun so don’t get too ambitious and start a project you won’t be able to finish. Be realistic and realize that we’re here to have fun!

By 11:00 AM

You should have transitioned into actually writing some code. Make sure everybody is able to debug the app on their own machines and set up your group’s version control system (if you haven’t already). If this starts taking too long, don’t be afraid to utilize your coaches!

At Lunch

Take a break and socialize with your group. Try not to talk about your program for a bit (I know, the temptation is real!). You should take a few minutes to decompress and ramp up for the rest of the day.

At 2:00 PM

The application should be in some form of testable state and now you can focus on smoothing out the rough edges. You can use this time to focus on the user’s experience while using what you’ve created.

At 4:00 PM

You should be transitioning into working on your presentation. If your app isn’t functional yet, do what you can to pull together something to show and put part of your team onto creating the presentation.

Free Web Services

Air Quality API https://docs.airnowapi.org

Another Air Quality API http://aqicn.org/api/

Weather API https://openweathermap.org/api

General Environment http://etwater.com/developer/

PDX Civic APIs http://www.civicapps.org

Forest Conservation APIs http://data.globalforestwatch.org/

EPA Web Services https://www.epa.gov/enviro/envirofacts-data-service-api

Carbon Emissions http://impact.brighterplanet.com/?r=