Hello, Civic Hacking World!

If you’re looking to give civic hacking a try, but don’t know where to start, we have some suggestions for you. First, check out our list of projects to see what’s active, or what could use your help. If you have questions, join our Slack and ask.

Learn About GitHub

Much of our work takes place on GitHub. If you’re not familiar with it, you may want to take some time to get up to speed. 18F has created a useful guide to GitHub and using the OSX Terminal. The guide is focused on contributing to the 18F website, but the Code for DC website is structured the same way. See if you can submit a pull request to the Code for DC website. If you can’t find anything to add or change, there’s a file called graffiti.md to add whatever you want, like “Hello, World!”.

For a higher-level overview of git, check out this 15-minute introduction. Once you get started, this cheat sheet might come in handy to remember key commands.

Open Some Data

Get Data Released

Check out DC’s data repository or our own community data portal to see what’s available. Ideally, DC should provide all of the data identified as “high-value”. If you find something that’s missing, or out-of-date, contact the appropriate agency to politely let them know that they should release it. This might take some time and persistence, but you might also find that an agency is friendlier and more responsive than you could have imagined.

If you’re unable to get the agency to release the data, it may be time to submit a FOIA request. DC provides a FOIA portal for doing exactly that. However, you can also use MuckRock to handle all of the heavy lifting for you.

Improve Existing Data

Sometimes, an agency releases data in a form that isn’t archived and/or isn’t machine-readable. You can improve the world by correcting that. For example, Aaron created a web scraper to save the mayor’s schedule, which was posted daily but not archived, and then made a small site to display that historical data. Or, Liz created a script to pull prison population data out of PDFs posted monthly. Here is a list of common problems to look for.

For web scraping, some popular tools include Beautiful Soup for Python or Nokigiri for Node. For PDF extraction, Tabula can be a good place to start.

Visualize Some Data, or Make It Actionable

If you’ve found a dataset, but aren’t sure what to do with it, it can be fun to play around for it and find the stories within the data. Consider how to make that data more interesting and informative to the general public. For example, Chris visualized the distribution of funding for “at-risk” students in DC (code here). Chris also created a site to check your odds of finding a bike at a Bikeshare dock (code here).

If you’re interested in visualizations, D3 is a popular way to make a beautiful one using Javascript.

Make a Website Easier to Use

Sometimes, an agency provides an awesome service that’s difficult to access. In some cases, you can help that by creating an easier-to-use interface. For example, Emanuel created a really simple tool to request that DC plant a tree at a certain address (code here).

Map Something

Create a Twitter Bot

Building a Twitter bot is easier than you think, and it can be a great way to improve the visibility of some data while learning a bit of code. For example, Emanuel created a bot that tweets out new additions to the DC Library’s catalog (code here).

You can find frameworks for Python, Ruby, and Node to make this easier for you.