This was almost an accidental challenge - seeing how many consecutive days I could contribute something meaningful to github.
Since I started using it in 2011 I've contributed a lot to github, but mainly to private repositories during working hours. I started to notice that my contributions followed a predictable pattern - a steady stream of commits between Monday and Friday, with nothing over the weekends. My best streak was five days. That all seemed perfectly normal and didn't bother me in the least until one day I looked at my github page without logging in first. Suddenly my commit history was sparse and empty - what happened to all that work I did? I'd gone from hard core developer to occasional hobbyist in an instant. The reason, of course, is that github only shows contributions to repositories if the viewer has access to those repositories, which most people who would look at my contribution history wouldn't have. To them I was the occasional hobbyist, the person with the account but no trousers.
I decided I wanted to change that, so I started adding bits of code I'd written as public repositories. The odd plugin here and there, useful snippets I'd written for projects that worked by themselves. I added other code too, experiments and toys. I was even inspired to write a few simple games and post those as well. My public contribution history slowly transformed my apparent status from hobbyist to relatively serious tinkerer. Things were definitely looking better.
Fast forward a few months and I found myself building a site that needed repeatable functionality that called for a few plugins to be written. I'd had problems in the past over where the latest version of some code was stored so I decided to use github to store the newest version to avoid any confusion. At the same time I'd found some old code for a personal project and I suddenly found myself at the end of the week with a five day contribution streak and momentum to carry me over the weekend. I worked, I committed, and suddenly I was back into a new week with a seven day history and more ideas and tweaks to make.
I was curious to know if other people had experienced this weird game I was suddenly playing with github so I started looking. Ryan Seys had an interesting article on the subject. He vocalised something I'd been attempting subconsciously - do commits only if they're genuine. I struggled a little to meet his standards - there were days when I was too occupied with other things in my life to think clearly enough to do more than improve a README, but these were the exception, rather than the rule.
Still, 177 days was a fairly daunting challenge. I then found this list of current contribution streaks that make even 177 days look small. Then there's longeststreak.net that completely dwarfs even those numbers, but looking closely it's clear that at least some of these people are just using an automated tool to commit for them (one user even has a repo called 'streak' that contains no code but is the source of their streak).
After this far from exhaustive research, I decided to simply aim for 30 days. I'd written some plugins, and I had ideas for a few more, even some that I'd started but not finished, so I added those to repositories and got going. Eventually I ran out of plugin ideas and tried out an idea for a game I'd had, which kept me going for a bit longer, and then some code for my site kept me going a bit longer still. I was going strong. Each new day felt like an achievement, one more step towards that elusive thirty.
Eventually, my streak ran out, sadly 3 days short of the intended target. I have to say that it wasn't from lack of ideas or dedication, but extreme personal circumstances (sometimes coding has to take a back seat in life). I'm quite pleased though - 27 days is still pretty good. I'm certainly not going to win any awards or gain any recognition for my streak, but it feels like I've reached a personal milestone.
Here's some suggestions, if you feel like trying it.
- establish your ground rules (if any) i.e. what counts as a proper commit, how long you're aiming to last
- have an idea of what you're going to code, ideally something interesting and big
- make sure you have time each day to code
- only do it as long as you enjoy doing it!
Wait - I did it after all
After I failed to achieve my goal of 30 days I had another crack at it a few weeks later, this time taking on board some of my own advice. And I made it to 42! Hooray. I think I'll take a bit of a break now...