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.

Pros:

  • 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.

Cons:

  • 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.

October Trip to Italy, Spain, and Portugal

DSCF5252.jpg

So Uma & I went on a very nice trip to Europe this October, and I’d like to jot down the itinerary and a few other things that might help people.

First off: some general thoughts:

  • Europe isn’t too far away. It’s like a 10-hour flight, but because you fly against time when you are going there, it feels like it’s much less. When you are coming back, of course, your trip is done, and well… who cares.
  • The costliest bit of the trip are the flight tickets to and fro. If you book really early (like 2 months+), there’s huge savings potential here.
  • The best times to go (& the costliest naturally) are the summer months. September & October is good because it’s either late season or end of the season in most places.
  • We went to Italy, Spain, and Portugal, in that order. All three places are friendly to tourists and we didn’t encounter any difficulty to speak of. Most big cities understand spoken English, and even if they don’t, getting by with hand signals and exaggerated gestures is possible.

DSCF5050.jpg

Here’s how we planned:

  • We picked the cities and places we want to go first.
  • Then we sat down and found out the best ways to travel between the cities, and especially within countries.
  • Then we booked hotels.
  • and we booked travel between countries and connecting flights.
  • & finally, we decided on the places we wanted to go within the cities and pre-booked tickets for those.

DSCF5195.jpg

For the cities and places we wanted to go, this was the list:

In Italy:

  • Rome
  • Florence
  • Pisa
  • Venice
  • Milan

In Spain:

  • Ibiza
  • Barcelona
  • Malaga
  • Madrid

& in Portugal:

  • Lisbon
  • Porto

The best way to travel in Italy in via Train. ItaliaRail is pretty amazing. We didn’t take the EuroRail pass but costs weren’t too expensive even when booking long-distance trains.

In Spain, train travel was rumored to be not too reliable and much too long with our packed itinerary. So we took internal flights. Honestly, it was a bit of a pain to reach the airport, go through all that security and then get out with the bags. If I’d had to do it all over again, I’ll pick the train even with added travel.

DSCF5784.jpg

We planned a day trip to Porto from Lisbon, but apparently, Porto is too far for a day trip. This is one of the perils of a trip planned without much research.

We booked hotels throughout. You can also reliably book through Airbnb (in fact, for a budget trip, that’s what I’d suggest). There are tons of hotels to choose from but here are some thumb rules:

  1. Don’t splurge on any expensive ones. The one time we did (to treat ourselves), we regretted it. On this kind of a schedule, you stay max for a day or two, and the differences are simply not worth it.
  2. Pick spots very near the places you want to visit within a city. Or, pick spots very near a train station or airport.
  3. Don’t pick the seedy places. Read reviews & look at user pictures on sites like Tripadvisor.

DSCF6065.jpg

The standard deviation of experience and quality between hotels wasn’t too high, and most provided a good, safe, clean place to stay.

Booking travel between countries depends on your itinerary, so it’s best to first check that the things you absolutely want to do during the trip are possible during the dates you pick. For us, one major change (after booking a lot of flight tickets) that came up was attending the Ibiza parties. Ibiza shuts down after the second week of October, so we had to rejig a lot of the travel to account for it.

Pre-booking tickets for venues and museums and places you want to go is the secret to a hassle-free and cheap trip. Ticket prices, when booked in advance, are easily 30% off, and when you skip queues, that’s heaven. We pre-booked tickets for pretty much everything we went to online, but we did it only a day or two before. This meant that we missed a trek of a lifetime in Lisbon. So if there’s any lesson to be learned from this post: book early.

DSCF5924.jpg

Here’s our final itinerary, listed down:

  • Day 1: Kochi to Rome Flight. Stay in Rome.
  • Day 2: Checkout from Rome. Train to Florence. Stay in Florence.
  • Day 3: Checkout from Florence. Day trip (Train) to Pisa. Train to Venice. Stay in Venice.
  • Day 4: Stay in Venice.
  • Day 5: Checkout from Venice. Train to Milan. Stay at Milan.
  • Day 6: Checkout from Milan. Train back to Rome. Stay in Rome.
  • Day 7: Stay in Rome.
  • Day 8: Checkout from Rome. Flight to Ibiza. Stay at Ibiza
  • Day 9: Stay at Ibiza
  • Day 10: Checkout from Ibiza. Flight to Barcelona. Stay at Barcelona
  • Day 11: Stay at Barcelona
  • Day 12: Checkout from Barcelona. Flight to Malaga. Stay at Malaga.
  • Day 13: Stay at Malaga
  • Day 14: Checkout from Malaga. Flight to Lisbon. Stay at Lisbon.
  • Day 15: Stay at Lisbon
  • Day 16: Stay in Lisbon. Day trip to Porto.
  • Day 17: Checkout from Lisbon. Flight to Madrid. Stay at Madrid.
  • Day 18: Stay at Madrid
  • Day 19: Checkout from Madrid. Flight to Rome. Stay at Rome
  • Day 20: Stay at Rome
  • Day 21: Stay at Rome
  • Day 22: Flight back to Kochi

IMG_1351.jpg

Here are a few places that we saw that were great:

  • Colosseum in Rome. It’s simultaneously bigger and smaller than you expect.
  • The Vatican Museums in Rome. The ones that contain much of the loot of the civilized world 🙂
  • The Pantheon in Rome. Probably my favorite of the Rome tourist sites. It’s really amazing.
  • The Leaning Tower. In Pisa. Get that Leaning Pisa photo checklist out of the way 🙂
  • Piazzale Michelangelo in Florence. The sunset from here is pretty great.
  • Pretty much everything in Venice. This was my favorite stop on the trip. The Rialto bridge, Grand Canal and the Bridge of Sighs are awesome. Also, don’t miss the St. Mark’s Square at night.
  • Milan was a bit of a disappointment. Too much fashion and nothing much else.
  • The closing parties at Ibiza. We, unfortunately, caught the early start of the rains and so a daylight party was canceled. If possible, go earlier in September.
  • La Sagrada Familia in Barcelona. Probably the weirdest church ever.
  • Palau de la Música Catalana. The most beautiful theater I’ve been to yet.
  • Tibidado. The to and fro journey via funicular is great. The amusement park is so-so, but the views are spectacular.
  • Alcazaba in Malaga. I loved this city and its history: Phoenician roots, Moorish conquerors, and the eventual Christian reclamation.
  • The Lisbon Oceanarium was the best I’ve been in. Beats Kuala Lumpur’s and Dubai’s hands down. I really liked the temporary exhibition that was about Ocean Forests.
  • El Retiro Park in Madrid was nice, especially the boating.

DSCF6047.jpg

Now, one section that’s here at Uma’s request. Food! These are the two best items we had on the trip:

  • The African food in Lisbon is really great. Do try to find a traditional African place, that serves the best food. We went to Restaurante Cantinho do Aziz.
  • Seafood from Malaga is a must-have.

That’s pretty much it. If you have any questions, do ask.

And finally, to remember our visit, we made a small booklet about it.

New Gaming PC

So after a long, long time, I assembled a PC again.

The inspiration for this was the untimely demise of my Xbox, and the vigorous urging of my brother Hari who is certainly of the PC Gaming Master Race camp. After Hari’s initial list of parts, I went ahead and did a whole lot of reading about assembling PCs and realized had stuff had changed a lot (a lot) since the old days when I helped dad assemble a few PCs at home1.

Building a PC from scratch is pretty much the opposite of the usual world where I live and thrive (hello the vertically integrated fiefdom that is the Apple Universe!) but I have to say, it’s a very rewarding process for the inner geek.

Why? You get to choose exactly the components you want. And you get to unbox all of them, separately. And then you get to put them together one after the other until you have a fully working PC. If you haven’t done this before, I recommend you do this someday. It’s a great experience.

Parts

The first task when you assemble a PC is to pick parts. This means you pick your Form Factor, Motherboard, CPU & Cooler, Graphics Card, RAM and SSD/HDD.

I wanted a high-end PC that I could use for the next 5 years or so without much upgrades. I also wanted one that I can place in my living room and connect to my TV. This meant a nice case & a smaller form-factor.

These are the parts I picked:

  • Case: Corsair CC-9011061-WW Graphite Series 380T Portable Mini ITX Case. It looks cool and it’s a Mini ITX form-factor, which means it’ll fit under most desks. I always planned to keep mine on display, so a cool-looking case was a must. If you’re planning to keep the case hidden away, an alternative could be the Cooler Master Elite 130 Mini-ITX Computer Case. Price ₹10,1002.
  • PSU: Corsair RM Series RM650 – 650 Watt 80 PLUS Gold Certified Fully Modular SMPS. The important bit here is to buy a fully-modular PSU. This means that you can choose (& reduce) the power connections that go through the case to keep everything cleaner. For a small case, this is super important. Note: be sure to check the dimensions of the PSU against the case. Next: How much power do you want? For a single graphics card system, 450W is A-OK. Choosing a higher-rated PSU however means that the PSU fans can run silent at lower power-draws, especially if you buy a PSU from a quieter-line (like the RM series). Price ₹8,853.00.
  • Motherboard: Asus Maximus VIII Impact Mini-ITX Motherboard. One of the most flexible Mini-ITX motherboards out there. Frankly, you can go with any motherboard that supports the latest-gen Intel CPUs. Gigabyte GA-Z170N-WIFI Motherboard is a cheaper alternative. Price ₹23,999.00
  • CPU: Intel Core i7-6700K LGA 1151 Processor). Buying a CPU depends heavily on the kind of games you play. The game I play the most doesn’t do threading well, so I went for a higher base-clock. For most systems, this CPU will be an overkill. Buy a Core i3 instead. Price ₹27,799.00
  • RAM: 2xG.SKILL Ripjaws 4 16GB (2 x 8GB) DDR4 SDRAM 2400Mhz. I just bought these for the looks. Matches the case. You can buy RAM that can be seriously overclocked, but I wasn’t interested. Price ₹6,100.00
  • SSD: Kingston UV300 480GB 2.5-inch Solid State Drive. This is pretty much how much you want to store. For me, this was mostly a gaming PC where I’ll install a few games, so didn’t need much storage. Add a slower terabyte HDD if you’d like to store more media. Price ₹9,045.00.
  • CPU Fan: Corsair Hydro SeriesTM H100i V2 Extreme Performance 240MM Liquid CPU Cooler. You need a good clean CPU fan, and I opted for a water-cooled model. This was not for any added cooling efficiency. A normal CPU-mounted fan will work the same. The water-cooled model made good use of my case-space & combined with the combo front & back coolers in the case, provides very good ventilation3. Price ₹8,940.00.
  • UPS: APC BX600C-IN 600VA, 230V Back UPS. It’s India, with its power cuts and voltage fluctuations. Save your costly investment with a UPS! This one has sufficient amp to backup my entire Gaming PC setup (including TV & Internet router) for 15-30 minutes. Price ₹2,698.00.
  • & finally, the Graphics Card: MSI GTX1080 Gaming X – Twin Frozr VI. The GeForce 10 models had just come out, so buying one of the series was a no-brainer. Frankly, this card is a bit overkill for me. I bought this one simply because I didn’t want to plan on an upgrade any time soon (if ever). You can safely opt for a cheaper 1070. On the other end of the spectrum, true 60fps 4K would probably require two of these babies4. Price: ₹63,200.
  • Total Bill of Parts: ₹174,633.005 (yes that’s a whopper).

Assembly

  • The guide I most closely followed was this excellent Build Log from Corsair. Almost every step is exactly the same.
  • The motherboard didn’t exactly fit into the holes in the case & come out the back. Hari & I had to remove the back-padding on the motherboard to make everything fit fine.
  • Fitting the cooler was a bitch & not at all as easy as in the video. This was compounded by the fact that I bought a smaller version of the cooler first3, and that didn’t fit at all.
  • The system worked at the first try, so that was great.

Other Notes

  • The ASUS Bios software is very good. I haven’t played around with all the settings yet (especially the overclocking ones6) but it’s a sensible no-nonsense BIOS. I like the aesthetic of the default launch screen too.
  • The case with the fans look really nice. A lot of people (especially the newer generation who have never used anything but laptops) are genuinely confused as to what that red thingy is. The most common guess is high-end speakers.
  • The performance is super-sweet. There’s no game that’s not playable at high settings in 1080p. 4K is a different matter, but if you are willing to go below 60fps, almost every game is playable.
  • This is VR-ready and more. That obviously means more hardware though.
  • The entire case can easily be lifted and transported, especially with the grab-handle at the top. It’s almost like a console in that respect. Heavier and denser than you’ll expect though.
  • PC Gaming has a lot to go for it. One of the best reasons is probably much cheaper games. Steam Sales ftw! I’ve already amassed more games than I had in my Xbox collection. A lot of them are PC-only. A few of them turned out to be the best games I’ve played.

Final Photos

IMG_2791.jpg

IMG_2793.jpg

IMG_2794.jpg

IMG_2796.jpg

That’s it. If you’ve got any questions, holler at me in the comments or on Twitter.


  1. Just for context, this was in the days of serial ports, so yeah a pretty long time ago.
  2. All prices are from when I bought. They keep swinging up and down.
  3. Note, I screwed up initially and bought and returned the one-fan version of this model. That did’t fit. Again case fit = important when you are building out Mini ITX.
  4. If you are building out a dual GTX setup, please opt for a full form-factor PC. Otherwise you are just in for a world of trouble.
  5. Software costs extra when you are building a PC. Add ₹7500 for Windows 10 Home.
  6. Auto-overclocking is also an option.