A while back I stumbled across John Resig’s blog post about writing code everyday. He made several points that resonated with me. I thought I would follow John’s lead and try a more balanced approach to programming. I set a goal to commit to Github every day for 100 days. The sad screenshot below will give you an idea of where I started (compare mine to John’s).

 Github Contributions - 2014

John Resig’s Contributions for 2014

Nick Fogle - Github

My Public Github Contributions for 2014

This did not come naturally to me. I’ve never been a fan of paced learning. In undergrad and law school, it was the 11th hour that motivated me to get things done. The all-night study session became a staple of my academic success. After switching careers to web development, it didn’t take long to realize that those same tactics wouldn’t work for programming. For example, I would start a massive project and work feverishly for 6 hours straight. By the time I returned a week later, it would take an hour just to pick up from where I left off. Then I’d have to rewrite most of the code base, because I had been half-asleep on Hong Kong Time when I wrote it.

Committing everyday was hard. There were occasions where I would forget until the last minute and had to frantically update a repo’s README.md file from my phone at 11:59 pm. After 3 weeks, I settled into the habit of coding every day. By writing code for 30-60 minutes per day, I made huge learning strides. I’d been wanting to get a better handle on server-side JavaScript for months, and my new habit helped me find the time to write two Node.js applications. I also found that the deliberate schedule had a positive impact on the quality of my code. When I lacked the conviction to commit, Github’s contribution graph was a good motivator with its “Don’t break the chain” stat model.

As I closed in on 100 straight days, I became obsessive about not breaking my streak. One Friday night, I found myself in the North Carolina mountains with no internet or cell signal. I planned to contribute something earlier that day, but a DDOS attack on one of my employer’s data centers had taken priority. Subsequently, I was running late for a friend’s bachelor party in Asheville, so I decided to put it off until I reached the cabin. I arrived with only a few minutes to make the commit. There was no cell service. I couldn’t load a single web page. I walked the property with my phone outstretched praying for a signal. Nothing. The clock struck midnight and my streak was ruined.

Or was it? I’d come so far that I couldn’t throw in the towel. I was so determined to meet my goal that I changed my phone’s time zone settings to gain an hour (credit: Jules Verne), got back in my car, and drove down the mountain until I found a single bar. I updated a single file in my repo and committed the change.

Longest streak = 110 days.

Screen Shot 2014-12-11 at 8.54.34 PM