An Experiment in Vanity, Part One: Introducing the Dashboard

I spend a lot of time thinking about stagnation.

Technical knowledge has a shelf life. Eventually, it expires. Andrew Hunt and Dave Thomas discuss this in The Pragmatic Programmer:

Your knowledge becomes out of date as new techniques, languages, and environments are developed. Changing market forces may render your experience obsolete or irrelevant. Given the speed at which Web-years fly by, this can happen pretty quickly.

I’ve spend the last nine years writing C# & Javascript professionally. I’ve gotten pretty good at it, and I work hard to stay on top of developments in the .NET space. I like to think that my code has kept up pretty well with the changing nature of .NET development.

Don’t get me wrong — C# is a great language, and I like it a lot. I’ve even ventured out into the world of .NET open source! There’s a lot of room to grow, and the upcoming changes in C# 6.0 are really exciting. The language is getting more dynamic and more expressive with every release. I’m looking forward to writing C# code for many years to come, but today, C# is the only language I really know well. Nine years is a long time to stick to working in one language. What else am I missing because I’m not experimenting with other technologies?

(Javascript doesn’t count. Everyone knows Javascript.)

There’s one way to find out. It’s time to try something new.

A Personal Dashboard

Learning a new set of technologies is easier said than done. In my experience, the best way to learn something new is to just try it out, so I went looking for a side project.

A couple of days into the search, I found this Tweet:

Hmm.

A few weeks ago, I started wearing a FitBit and tracking the number of steps I take during the day. Does FitBit have an API where I can access that data? As it turns out, they do.

FitBit data is easy to visualize, so putting it into a chart seems like an obvious option. I’m not the first person to figure this out.

Okay. Let’s build a dashboard.

I’m passively pushing data into a few other places, too - commits to GitHub, calorie information into LifeSum, articles to Instapaper. Once I’ve got the basics down, I can incorporate that data into my dashboard, too.

Dashboards are a UI Playground

(With apologies to John Gruber)

Once I decided on a personal dashboard, I started looking around for inspiration. As usual, the internet is a rich source of prior art: dashboards crop up everywhere once you start looking for them.

Examples range from the science fictional:

The Avengers Helicarrier

Image credit: Jayse Hansen

…to the realistic:

Panic Status Board

Image credit: Panic

Of course, the canonical example of excellent personal analytics has to be Nicholas Feltron:

Feltron Annual Report I

Feltron Annual Report II

Image credit: Nick Feltron

Do I expect my project to look as good as that? No, I don’t. Do I expect to end up with something in the same zip code?

I hope so.

Next Steps

I’ve got a destination in mind, and I have a vague idea of what the end result should look like. In my next post, I’ll figure out what I’m going to use to build my dashboard.