The Engineering Metrics Dashboard at SV.CO

We recently built an engineering metrics dashboard at SV.CO. On a single page, it tracks nine things that are like health statistics for a project. In addition, it provides me as an engineering lead, a bird’s eye view of our team performance.

Here’s how it looks like:

Engineering Metrics Dashboard

This is what we track

  • Deploys: The number of deployments per day. Because we use continuous deployment, this number is often north of single digits. What I look for in this stat are long stretches (2 weeks+) of stalled deployments: this often means that we’re not breaking down work into small units, and it’s time I stepped in to take a look.
  • Bugs: The number of bugs reported per day by the team. We want to improve this with the number of bugs fixed and also include in our production automated error reports. This stat, which a slightly lagging indicator of code quality, is still useful especially immediately after our feature sprints. At SV.CO, we try to go by a tick-tock cycle (with the tick representing new features, and tock the needed stabilization or bug-fixes necessary for those features), and examining this stat after a tick cycle will provide a good thumb-rule for the time necessary for the tock.
  • Git Commits: This metric tracks our velocity. As all our stats, it’s not a perfect indicator (especially when team members pair off), but it’s a good way to track slow periods. Since we emphasize atomic commits, it’s also a warning flag when a big feature lands with a lesser commit count.
  • LOC Change: I’m a strong believer in the adage that the best code you write is the code you do not. Or better yet, the code you delete. So we track both LOC additions and deletions. And we celebrate the code that we throw away.
  • LOC Language Split: This is a companion metric to LOC Change, and the one thing I track here is removing older deprecated languages (like CofeeScript).
  • Test Coverage: is a good useful indicator of code quality. As a development shop, we’re not anal-retentive about TDD or unit testing, but we do like to cover features with good integration test coverage. This usually means Selenium-style testing with capybara.

While building this dashboard, we kept several common criticisms in mind.

  1. These are vanity metrics. I’ve explained the usefulness of these metrics above, but this requires a bit more explanation. As a human being, I don’t see a problem with taking pride in the work we do. And as a software engineer, most of the work we do happens to be ephemeral: we work with building blocks that do not stand the test of time. What we can be proud of constantly is the programming journey. So I call these metrics what we can (or should) be proud of.
  2. It’s hard to keep them updated. What we’ve done is hooked them up to APIs that our services provide. For example, the code commits are pulled directly from Github, and the Bug reports are pulled off our Trello boards. This still will require maintenance but hopefully far less than if these were manually tracked.
  3. Why don’t you track these data where they originate? The answer to this is pretty simple: we use quite a lot of software to manage our work, and it’s nice to have all the data in one place.

That’s it for our dashboard! Any feedback appreciated.


Bought a Leica M8

So I feel this should be a life event 🙂

I first got into amateur photography when I bought my Fuji X100S around two years ago. It’s been one of my best purchases to date. It’s changed the way I photograph: from random shots on the iPhone to more thoughtful composing and framing. I’ve also learned much about the photographer exposure trifecta: aperture, shutter speed, and ISO. As an aside: the X100S is one of the perfect beginner cameras: I would very highly recommend it for great photos and easy shooting.

My X100S is still going strong, but recently I’ve been having inklings of the gear upgrade syndrome. I first looked at the latest in the X-series: X100F, but that camera seems to epitomize everything that’s wrong with electronic gear nowadays.

Adding truckloads of features is not a feature.

The X100F has more buttons, more filters, and more everything. I was looking for less. And that’s where I ended up reading up about rangefinder photography and it instantly appealed to me. It’s one of those love-at-first-grok moments: the Leica philosophy of taking photos was exactly what I wanted.

The Leica however, was way out of my budget.

At least until I watched this video about the poor man’s Leica: the Leica M8. The M8 was the first digital rangefinder camera introduced by Leica way back in 2006—so that makes the camera more than 10 years old—but it’s still a Leica. So the rumor mill said if you found a good one on the used market, it’ll keep going strong for another 10 years or more. So that’s what I did. Two eBay Purchases later (one for a Voigtlander 28mm lens), I was the proud owner of a Leica.

I was lucky to have my first shoot at Bali

Because two good friends were getting married at a beautiful location, I went around and clicked lots of pictures. Overall verdict: beautiful. I’m in love with this camera. Here are some pictures:

This slideshow requires JavaScript.


  • It’s a true rangefinder.
    It’s really wonderful to look through an optical viewfinder and compose the shot yourself. This initially took some getting used to: I’ve had the X100S for a long, long time and I’ve never used the optical viewfinder there. But the rangefinder focusing mechanism on the M8 felt like second-nature after just around a day.
  • By a quirk of fate, the M8 has no filters on the sensor.
    Not even an IR filter. This means it takes some of the best black and white photographs ever. Yes, that explains the blog header images.
  • It’s got really pleasing IQ.
    Yup, probably even better than the X100S. And there’s something about the Leica shots that bring up a yesteryear charm. And the sharpness of the sensor is lickable.


  • It’s a 10 year old camera.
    It’s slow to start, operate, and take pictures. Continuous shooting is impossible, and the screen on the back is a joke. Yes, seriously: it’s even hard to figure out if the photo is in focus, so I keep the back of mine entirely covered.
  • It’s noisy.
    Leica has a discreet tag, but frankly the lack of an electronic shutter in this camera means that it’s far, far more noisier than the leaf-shutter on the X100S. I wouldn’t take this to photograph a hostile street until I became a lot more confident.
  • Focusing is slower.
    While it’s wonderful to finally experience a rangefinder (and my photographs are better for it), I’ve been spoilt by autofocus and electronic rangefinders that offer focus-peaking and then some. I’m much slower focusing on the Leica than on my X100S. Hopefully, this will change.

A new Camera, a new Blog

I’ve been writing this blog since September 2003 (yes, just about 14 years). For most of it’s time, I’ve been using WordPress (& it’s predecessors). Around a year and half ago, I switched to Ghost. That was a mistake: my writing suffered, and Ghost itself became a bit of a feature ghost-town while WordPress introduced Jetpack that greatly simplified and modernized the writing experience. So I’ve switched back to WordPress now. Happy times!

I’ll keep posting here. And the header image will keep adding my favourite images.