Bradley Harris

git bisect run

git bisect is an incredibly powerful tool for finding when in the source history something went wrong.


Lesson Learned - Two Character Strings

I needed to generate a list of all possible combinations two capital letters for some test data. The straightforward way to do that is with nested loops but I was sure there was a snappy one liner to do it with a list comprehension.


Lesson Learned - What Is the Difference Between a Block, a Proc, and a Lambda in Ruby?

As a software developer who works remotely, I spend a lot of time on the internet. I read a lot and I learn a little. Sometimes I learn bits of trivia and minutia, less often I learn useful tips for work and life, rarely I learn big profound lessons.

I am making it a goal to collect something I learn everyday and write about it.

Today’s lesson:

What Is the Difference Between a Block, a Proc, and a Lambda in Ruby?


Race Report - Pittsburgh Marathon

  • Goal: 2:55:00
  • Result: 2:59:09

At the 2012 Cape Cod Marathon, I ran my way to a bit of a free pass for marathons in 2013. With a 3:05:13, I qualified for Boston but too late for 2013 registration. I felt that this would allow me to set bold marathon goals for the year. The usual fear of aiming too high and missing out on Boston was no longer a problem. When Jesse started gathering a crew for the Pittsburgh Marathon, I jumped in and set a goal of 2:55.


Boston 2013

Left the house this morning. Bells ringing filled the air. I was wearin’ the cross of my calling. On wheels of fire I come rollin’ down here.

This line from Bruce Springsteen’s post-9/11 anthem, The Rising, always makes me think of running. Whenever I hear it I imagine leaving at dawn to head to a race. The “cross of my calling” is my club singlet and race number. “On wheels of fire,” I come rolling down to the finish line.

Sometimes, even when you wish it wouldn’t, life just goes ahead and closes the circle.

I wanted to share two thoughts about the Boston Marathon.


Testing Nothing

At some point in every software project the team will look at a test coverage report. It is at this moment that some smart ass will make a comment that one could easily write tests that will execute every line of code without any assertions and achieve 100% coverage while verifying nothing about the code. He is only half right. That process will not yield any tests that are useful for testing the functionality of the software. Where is he wrong? The writing of those tests will not, in any way, be easy.


Race Report - Cape Cod Marathon

  • Goal: 3:05:00
  • Result: 3:05:13

My goal for racing in 2012 was audacious. I wanted to complete the USATF-NE Grand Prix, the New England Runner Pub Series, and the BAA Distance Medley as well as BQ at the Quebec City Marathon. Originally the Cape Cod Marathon was going to be run at a relaxing pace to complete the USATF-NE series and earn my jacket. After the heat in Canada put an end to my 2013 BQ dreams I stepped back and decided I might just have a 2014 BQ in me at Cape Cod.


Race Report - Paddy's Shillelagh Shuffle

  • Goal: Complete the NE Runner Pub Series in 10th overall
  • Result: 17:01

I entered the final race of the Pub Series in 10th place in points. I was comfortably behind the real speedsters in the money. In order to protect my spot I only needed to keep SRR teammate Jeff no more than 9 places in front of me.


Race Report - BAA Half Marathon

  • Goal: See a giraffe, 10th Place - BAA Distance Medley
  • Result: 1:22:58

This is the third year in a row running this race for me. For me, it feels like a quintessential New England fall running experience. Even much more so than the Boston Marathon, the weather, the people, and the course really show what running is about around here.

This year I found myself in reach of the top ten in the inaugural BAA Distance Medley (5K, 10K, and Half Marathon).


Interval Coding

In distance running there two types of training that are commonly used to become a better athlete. The theory behind them is equally applicable to writing software.


Race Report - Jack Kerouac 5K

  • Goal: None
  • Result: 17:50

There are 9 weeks between the Quebec City Marathon and the Cape Cod Marathon. After Quebec I decided to take a shot at running a fast time in Cape Cod. To add a little twist to the delicate balance of recovery and build-up, I had 3 other races scheduled in that interval. A 5K, a half-marathon, and a 3 miler. The Jack Kerouac 5K in Lowell, MA was the first of these challenges.



Several weeks ago I came across this article about “The Trap of Marginal Thinking.” The theory is that businesses often make decisions based on short term marginal costs even though they always must pay the longer term full costs anyway. The author then relates the lesson to our personal lives. We often make the same mistake by falling victim to “just this once” exceptions rather than sticking to our principles of right and wrong. Naturally this made me think of software development.


Race Report - Quebec City Marathon

  • Goal: < 3:09:59
  • Result: 3:14:50

At the Las Vegas Marathon in December 2011, I finished with a 3:10:36. Just 37 seconds too slow for a Boston qualifier for 2013. After the race I decided to let it ride with just one more shot before registration for Boston 2013 opened. At the Quebec City Marathon I fell short.


Race Report - Carver Cranberry 5 Miler

2012 USATF-NE Grand Prix Race #5

  • Goal: Survival
  • Result: 31:31

Up until the week before I thought sub-30 minutes would be very doable for this race. Then I spent most of the last week battling a nasty chest cold. Skipping this race altogether would have been a perfectly reasonable thing to do. However since one of my goals for the year is to run the entire USATF-NE Grand Prix, I decided I would get there and crawl across the finish if I needed to.


Put Up

Last week there was a lot of talk about this post from Twitter hinting that there may be some reining in of what is acceptable for API clients. In response to the news and subsequent chatter, Dalton Caldwell wrote this post giving a little history and his lament for the company that Twitter could have been. It is an interesting read and he makes some great points. After reading it though there was one thought that stuck with me: “If this guy so passionately believes that there is so much value in this other platform that Twitter elected not to build, why doesn’t he build it himself?”.



Hi. I’m Bradley. I am going to start this adventure with something about what for and why. Chances are better than average that this mostly ends up being useful down the road as evidence of how wrong I can be. In any case, here we go…