Sunday, May 17, 2015

AppletonAPI: Appleton & NE Wisconsin's First Civic Hack

[Today's guest post is by Mike Putnam]

Greetings civic hackers!

My name is Mike Putnam, and I live in Appleton, WI. For work I manage Linux servers on AWS (Amazon Web Services) and write bits of bash, python, etc. to get work done. For fun I like to do things like: go to area BarCamps, go to the Appleton Makerspace, participate in open source software communities, and explore neat things that can be done with software.

My assorted interests produced a series of serendipitous social interactions.

  • In 2007 I moved to the Appleton area and chanced upon Bob Waldron's weekly NEWNET tech news meetups.
  • October 2nd-3rd, 2010, Bob and I carpooled to BarCamp Milwaukee 5 where I met many people that I still interact with today.
  • At BCMKE5 I attended a session by Greg Tracy on Google App Engine and his project called SMSMyBus.
  • Greg's project, BCMKE5, and my desire to not only "consume from" but "produce for" our local community of clever folks inspired AppletonAPI.

(embedded lesson here: go to BarCamps and Makerspaces, learn interesting things, meet interesting people, connect with them on Twitter/social media and stay connected, bring the interesting things back to your local community)


AppletonAPI is the humble beginning of a RESTful API for Appleton, WI, civic data.

All data presented by AppletonAPI is directly from and presented in a manner usable by client programmers.

In a technical nutshell, I wanted to be able to produce interesting mashups of the public data available on but the toolsets of the day speak JSON, not .aspx ;)   So I wrote a web scraper that can unravel the "__VIEWSTATE" and "__EVENTVALIDATION" .aspx stuff, parse the useful bits, and return a JSON payload using the same keys that the human front-end requires.

Documentation for using the API:
Design goals/reasoning:
  1. Cost nothing
  2. See goal #1
Google App Engine's very generous free quotas provides enough headroom to operate at no cost. This could certainly change in the future, but luckily the tool choices made allow this project to run outside of Google App Engine when that day comes. 
Persist nothing (see goal #1, but also) because I do not want to become a data steward. 
Upstream owns the data, let's just repackage it. 
Google App Engine has great documentation
I like python.
Requirements for hacking on the API itself:


No comments:

Post a Comment