Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Rails + MongoDB app for building a consolidated timeline of your data from disparate sources (e.g., Twitter, GitHub, Foursquare, etc.)

branch: master
README.md

Introduction

We are a product of our experiences. Increasingly, we deposit digital traces of those experiences around the web (e.g., Twitter, Foursquare, GitHub, Last.fm, etc.) and on our various computing devices. Together, these deposits form a rich archeological history. Stratify gathers (excavates, if you will) that data from those disparate sources and provides a consolidated timeline of your experiences.

Stratify allows you to configure collectors for the data sources from which you want to pull in your activities. Stratify currently provides collectors for Twitter, Foursquare, iTunes, and other sources as well.

Once you've decided which collectors you want to use, Stratify goes to work building a consolidated history for you. And then, when you add a new tweet or check in at your favorite coffee shop (for example), Stratify sees those new activities and automatically adds them to your history.

Stratify is a Rails app, but most of the core logic (i.e., all of the data collection logic) is just Ruby. Stratify uses Rails to provide the (currently very simple) UI for displaying the activity timeline. I hope to eventually provide a more rich user interface experience.

Screenshots

Activity Timeline

Stratify Activity Timeline Screenshot

Punch Card Graph

This data practically begs for visualization. Stratify currently provides a "punch card" graph for each of your activity sources. In the screenshot below, the Instapaper activity reveals a clear pattern: apparently I do most of my Instapaper reading at night and on weekend mornings. (This graph is generated from real data. And yeah, that pattern sounds about right.)

This data is ripe with opportunities for rich visualization. (Thanks to GitHub for the idea for this particular graph.)

Stratify Punch Card Graph Screenshot

Collectors

Stratify currently provides the following collectors:

  • foursquare: Collects your checkins from Foursquare.
  • garmin: Collects your runs, bike rides, etc. from Garmin Connect.
  • github: Collects your commits, comments, issues, etc. from GitHub.
  • instapaper: Collects the articles you've archived on Instapaper.
  • itunes: Collects the songs you've listened to, shows you've watched, and so on, from iTunes.
  • rhapsody: Collects the songs you've played on Rhapsody.
  • twitter: Collects your tweets.

Dependencies

Stratify is developed and tested with the following dependencies.

  • Ruby 1.9.3
  • MongoDB 2.0

Getting started

To use Stratify, clone the repo, and ...

cd stratify
gem install bundler
bundle
cp config/mongoid.example.yml config/mongoid.yml
rails server -e production

Now that you have the Rails app running, it's time to configure some collectors.

Configuring and running collectors

Configure

To set up your desired collectors, pop open the UI and follow the yellow brick road. Add your desired collectors, run them, and then you'll start seeing data show up in your timeline.

Automate

Running the collectors via the UI is useful for making sure that you've got them configured correctly. But once you've verified that they're working, you'll want to set up your collectors to automatically run on a regular basis.

Stratify provides a Rake task for running all your collectors at once. It's conveniently named collectors:run.

To provide the automation we're looking for, Stratify runs the collectors via cron using the whenever gem. By default, the cron job will execute the collectors:run task every two hours. You can change these settings in config/schedule.rb.

To install the cron job ...

# cd to the root of the repository, and ...
whenever --update-crontab
crontab -l # show updated crontab

Sample data

TODO - Add easy mechanism for loading example data

TODO

  • Rake task for loading sample data (currently handled via db/samples.rb)
  • More collectors (e.g., Stack Overflow, etc.)
  • UI design
  • Better error notification in collectors
  • Ability to search for activities
  • Additional statistical analysis (e.g., trends)

Contributors

Thanks to Daemian Mack, Jared Pace, and Michael Parenteau for their contributions.

License

Copyright 2011 Jason Rudolph (jasonrudolph.com). Released under the MIT license. See the LICENSE file for further details.

Something went wrong with that request. Please try again.