Foursquare, Badges, & Twitter

Foursquare, the popular check-in based social network, recently surpassed 7 million registered users.  With that many people checking in, earning badges, and interacting via the service, I wanted to take a look at some of the information that could be gleaned; see if any interesting stories could be told.  Using the popular Twitter4J library I wrote a simple Java program that parses the Streaming API looking for tweets announcing foursquare badges.  At the same time I’m able to gather information about the twitter user’s account like their local time, and general location.  This will let me generate some pretty interesting stats.

I’ve been collecting some sample data for about 36 hours and can already present some general numbers.  I should note the limitations of these numbers.  First, I’m only showing badges that were reported to the public twitter feed, if it was a private status, I can’t see it.  Second, tweets can slip through the cracks, if the application is being rate limited, I can miss tweets.  Third, system can be gamed, someone could falsely tweet about a badge being earned, or tweet out a fake badge (I’m working on filtering that now).

In the 36 or so hours that I’ve been collecting data, I’ve seen over 27,000 tweets about badges.  Here are some charts showcasing a few aspects from my current dataset.

This is a breakdown of the top badges earned.  As you can see there no badge dominates the top ranking, they actually fall off fairly evenly.  All of these badges have fairly simple requirements, such as checking into the same place three times, 10 different locations, etc.  Another fairly interesting trend is the level of activity during the average day. I haven’t adjusted this data to account for the local timezones, so we’re seeing a fairly high level of badge earning activity around the world.  Once I  account for the timezone differences I’ll be able to better see what local time of the day people earn the the most badges in (I’m assuming there will be peaks at lunch, in the evening, etc).

These charts represent the tip of the iceberg with regards to what I’ll be able to do with the data.  Now that the badges are flowing in, I can start to focus on processing this data.  I know I’m going to become closely acquainted with the Google Charts API in the next few days!

iPhone Development

So I recently took the plunge and started working on some iPhone app development.  I picked up a used Mac Mini from craigslist, threw on Snow Leopard and the iPhone SDK v4 and went to town.  The first thing I learned: Objective C is brutal.  The only experience I have with “real” programming languages was Java and that was ~2 years ago with CSE 142, 143, and 373 at the UW (I’ve focused heavily on web programming with PHP, JS, etc).  I made some progress into learning the language, wrote a few simple apps that involved buttons and text manipulation, but ran into a brick wall when it came to making more complex apps.  I decided that I needed to jump start my development process.

Enter Appcelerator’s Titanium Developer.  It’s basically an API that sits on top of Objective C and lets you code in Javascript and it will translate it into Objective C.  Despite the recent issues with the App Store’s rejection policies they seem to have a number of high profile apps that have been approved, so I’m hoping that won’t be an issue.  Another huge plus is that it currently supports Android OS as well (Blackberry is coming soon), meaning that I can export my app to both platforms with relative ease!  The only downside is the lack of a developer forum and their documentation is a bit sparse, but so far it’s been fairly simple to deal with!

The project: I’m working with Mike Bjork on a train schedule app.  The idea is that there is no simple way to look at the schedule for a train station and no one single app that has schedules for systems across the nation.  Take Seattle’s King St. Station.  It’s served by Amtrak (Cascades, Empire Builder, Coast Starlight) and Sound Transit (Sounder North/South).  Right now one would have to look at 5 schedules from two agencies to figure out when the next train to Tacoma departs, this app seeks to solve this issue.  It will do a lot more than just aggregate schedules, but more on that later!

StephenDeVight.com Portal

Right now my online identity lives in many places; on social networking sites like LinkedIn and Facebook, my pictures are on Flickr, videos on YouTube, my photo blog, and the projects I’ve developed for school live in the “dark” web.  This presents a huge difficulty when trying to get people to “know” me online.  On one hand I could shoot you a link to my web site or Facebook account, where one would have to search for links to my other places on the web (and still not find all of them).  I could also send of links to every single place I want you to see, resulting in a long list of potentially irrelevant links.  Instead I decided to build a portal which can serve as a landing page for my online identity, a central starting place to explore the digital Stephen.

For this design I used a photo I took at the Olympic Sculpture Park in Seattle, WA. I like this image because it’s simple enough to work as a bacground image and has great symmetry with the seam running down the middle. The rest of the page is very simplistic; text links in the middle to link to projects I have developed or host and the logos on the bottom to link to external resources.  All of which is contained in a scalable, pure CSS layout.

At this point I have three things left to complete before I release the portal.  First I need to create the about me and contact pages.  About me will host a short description of myself as well as a link to download my resume.  The contact link will have a captcha protected contact form for anyone wishing to get a hold of me directly without using another service like Twitter.  Next I need to transition my photoblog to photos.stephendevight.com.  Finally I have to tweak my Analytics code to provide correct stats for the new portal site and my photoblog.  If everything goes according to plan the portal should be up by the end of the weekend!