iFreeq

–January 6, 1:19 p.m.–


mainimg

iFreeq is a news game designed to help educate people on important current events. The system is in two parts: one to decide which news topics are important and another to actually quiz the user.


The first part is accomplished through parsing the headlines of major newspapers (or tech blogs, or sports blogs) RSS feeds and looking for the most commonly-used nouns. This is done via Python's natural language toolkit. Once those nouns are found, it picks one of the top ten and searches Twitter for it.

The second part takes the tweets returned by Twitter and strips the chosen noun from them (as well as all extraneous formatting and URLs). It then presents those tweets two at a time to the user to try and make them guess what term is being talked about. The faster the user gets it, the more points they receive. It stores the Facebook ID of the user, so they can play against their friends and compete for the top score in each subject.

I wrote the back-end and front-end for this project, but the design was completed by a hired designer.

The server uses Tornado, an event-driven Python framework. It keeps session data in Redis and saves user data in CouchDB. It is an extremely capable server and can handle a deluge of simultaneous users (tested using Siege).

thumb




The gameplay screen.
thumb




The screen that's displayed after the game is over. It allows the user to read the stories about the subject they just tried to guess.

StoriTell

–January 6, 1:06 p.m.–


mainimg

StoriTell is an online service that lets you tell stories about your life completely anonymously. This is primarily accomplished through a website, storitell.com. When a user submits a story, it is checked for spam using the TypePad Anti-Spam API (similar to Akismet) and posted to the site, no username or password required. IP address logs are cleared from the server once every 24 hours to ensure anonymity.


There are currently almost 170 stories on the site, and new ones are usually added every week.

In reading stories, users can vote them up or comment. Users can vote up stories once every day, and comment as much as they'd like. The comment system is community moderated for the most part. When a comment is down-voted more than a few times, the site admin gets an email. After five downvotes, the comment disappears. This ensures that commenting will be constructive.

I also wrote a StoriTell Android app, which is available in the Android Market, here. I wrote an API for StoriTell, and this application queries it to get data. As of now, the app is a simple story reader and does not have posting capabilities.

This is a Django application, with a PostgreSQL database.

The source for the site is available on GitHub, here.

The source for the app is available on GitHub too, here.

thumb




The comments section on StoriTell.
thumb




A list of the stories and their upvotes on the Android application.
thumb




The story detail page on the StoriTell Android application.

KeePlay Web

–January 6, 4:14 a.m.–


mainimg

Like KeePlay Mobile, KeePlay Web is a game of pitch recognition. However, this version ran in the browser, using the very new Audio Data APIs in Chrome and Firefox to generate sound. This was a group project, and I was largely in charge of the front-end, where Faye Han, another MHCI student, did the back-end.



The code is available on GitHub, here.


A working version of the game can be found here.

thumb




A screenshot of gameplay. The game uses the HTML5 canvas element for drawing and Audio Data API for playing tones.
thumb




The key selection screen. KeePlay Web lets you save melodies to a CouchDB server and try to match them up in later plays. The next note is displayed under the screen. You get points for matching the note, and extra points for making chords.

KeePlay Mobile

–January 6, 3:52 a.m.–


mainimg

KeePlay Mobile is an iOS game that is intended to teach people how to recognize what notes are in and out of a key, both from recognizing sounds and note names.

The game required me to both write a game engine in iOS and write a software synthesizer, neither of which I had much experience with. Add that to the fact that this is my first iOS project. I had fun learning iOS development and figuring out how the platform worked.

Available in the App Store, here.

thumb




The game's menu screen.
thumb




An in-game screenshot. The "5" icon is a fifth bonus, playing a fifth chord with whatever note the player collects.