Filling a Geofence with Geohashes

The nature of my works means that I spend a decent amount of time dealing with geospatial data. Whilst there are many different ways to represent areas on the globe, geohashes are particularly fascinating. A Quick Primer on Geohashes If you're already familiar with geohashes, go ahead and skip this…

How to Run a Better Engineering Organisation

First of all, forgive the brazen and somewhat presumptuous title; I have never run an engineering organisation, so you might want to take my opinions with a pinch of salt. However, I do believe that I can offer a useful perspective on what ICs (individual contributors) want out of the…

The Empathetic Engineer: Developing for Humans

Read The Empathetic Engineer: Part 1 here. TLDR; empathy is an extremely important skill for engineers of all levels. You'll write better code for yourself and others if you keep the people reading your code in mind. To stay empathetic when I write code, I have developed a set of…

The Empathetic Engineer

You've probably seen a classic presentation on code quality. Do it like this, not like that. I'll admit that I was one of those overzealous young engineers that thought I'd stumbled upon the secrets to beautiful code and wanted to share them with the world in a tech talk. I'm…

A Simpler Phabricator Stacked Diff Workflow

TLDR: Squash commits. Branch from branches. Diff against branches. Rebase changes from bottom up, land from bottom up. In this article I'd like to address one of the things that I see people struggling with quite often: how to effectively work on multiple dependent git branches when using Phabricator. Uber…

Where golang got packages wrong

Preface I recently watched a fantastic talk by Rich Hickley. On the face of it, it's about Clojure's spec package, but the underlying principles immediately hit me as applicable to both language ecosystems that I've been working with in the last few years (mainly JavaScript, and now Go). Working with…

Commitment and Consistency

I recently made a commitment to share something new with my team at work - once a week - for the 6 weeks that were left leading up to Christmas. Whilst not all of them are applicable outside of the team, I thought that I may as well cross-post some…

Bold Predictions for the Short-Term Future

New Years Eve is, without fail, the busiest time of the year for Uber. That means that I'll be spending all of my day (and all of the night and into late tomorrow morning UTC) monitoring the systems that my team and I are responsible for. Whilst creating dashboards for…