I spent some time on this site over the weekend to get things wired up and make some progress towards the goal of getting this finished. The major theme for this weekend was OAuth, which is a mechanism for users to grant third parties access to their data on other sites without having to share their usernames and passwords with the third party.
It's a great idea, but its major failing is that while the overall workflow is defined, the specifics of that workflow vary among implementors such that it's still not as simple as specifying the application's keys, a handful of endpoints, and pushing the "go" button. In the spirit of continually improving my skills, getting better acquainted with a variety of OAuth providers in a Django context was yesterday's contribution to the toolbox.
That said, this humble website is now talking to a handful of sites, and data's coming in and reflected on the front page. The new integrations:
- Fitbit: From the front page, you can see my daily step count (updated hourly), with a link to my Fitbit profile on their site. While this will probably be the extent of the data exposed publicly, I have larger plans for this data in the private parts of the site so that I can start doing some cross-data analyses to start to the effect of my overall daily activity correlates with things like tasks completed, hours, worked, and so on.
- GitHub: A couple of months ago on Facebook, I mentioned the challenge of establishing a long streak of code commits as a fun goal to chase in the life of a software developer. The front page now hosts that data and you can see my current streak, as well as my overall record (currently standing at 17 consecutive days). If you click through on the label, you can also see a history of those commits going back several months, as well as links to the changes in question. If you ever wanted to see software development in action, this may be as transparent of a view as you'll find. I've also listed all my public repositories in the sidebar. I contemplated listing private repositories as well, but I figured that would be leaking information that collaborators may wish to stay hidden.
- Goodreads: I read a lot of books and I've been meaning to do something meaningful with my reading activity since I started tracking it. At the moment, this activity is exposed as the "Books Recently Read" widget on the home page, but I'm looking forward to expanding on that just as I did with the GitHub tracker.
Remaining items to implement:
- Fresh Books: This is the time tracking system I use and I thought that it might be interesting to publicly graph the numbers of hours I've worked in a given week to indicate my busy-ness versus my idleness. I have some bigger plans for this on the private part of the site (e.g calculating metrics like hours working versus hours meeting about working), but the public hour count will be the first thing I tackle.
- Foursquare: At the moment, Foursquare is set up as a progress bar, but I think I'll expose this as more of a mosaic of places I've visited recently.
- Twitter: One of these days, I'll start tweeting (or program this system to tweet on my behalf), and once that's online, Twitter content will appear as items in the Online Activity footer. On the backend, I'll adapt some of the technology that I developed for mining Twitter streams for comic book events and generalize it a bit more to serve as a private keyword monitor moving forward.
Overall, the theme for this weekend has been building out infrastructure. The items that I'm pulling from these online sources are pretty basic, but the important accomplishment isn't fetching the data - it's talking to the data sources in the first place. Now that I have some canonical OAuth channels in place, it will be a simple matter to expand the questions I'm asking those data sources move forward into tracking more interesting metrics in the future.