I’m fascinated with GitHub’s punch cards. They’re visual representations of project commits by day and hour and they’re available for every public project on GitHub. Here’s the punch card for mislav-will_paginate, one of the most popular projects on GitHub:


The punch card says Mislav works hard! He committed at all hours of the day, every day of the week (the larger the dot, the greater number of commits). It’s important to note, when looking at the punch cards, how many active developers have committed to the project. You could look through the list of commits but that’s tedious and verbose. The quickest way to gauge how many active developers there are on a project is to look at the impact graph (note that there are several committers for will_paginate, but the vast majority are from two accounts, both of which are Mislav).

Punch Cards Over Time

I thought it would be interesting to see what a punch card looked like over time. I started saving them for a few of my own projects so I could animate them.

Rye (0.3.1 to 0.6.4)

Rye is a small project that I started on April 4th for executing SSH commands from Ruby. I wrote the core of it over a couple of weekends and then iterated over the following few weeks. You can see that in the animation below.

Rudy (0.4.0 to 0.7.3)

I also saved them for a much larger project, Rudy. I started Rudy in February while doing some deployment work for Rilli. The first frame is from version 0.4 and the second frame is version 0.5. They’re so different that it would be easy to assume I made a mistake generating the animation. That difference represents a month of hard work where I wrote and re-wrote the project several times.

In Conclusion

What I love about the punch cards is that they’re both informative and motivational. They give me a better understanding of how I work and how my effort relates to that of other open source developers. When I’m focused on a goal like getting the next version out the door, I occasionally forget what I went through to get there. The punch cards help me remember.