December 9, 2018 Technical infrastructure is never complete. System processes can always run with less overhead or be bin-packed onto fewer machines. Data can be retrieved more quickly and stored at a cheaper cost per terabyte. System design can broaden the gap between failure and user impact. Transport layers can be more secure.

August 13, 2018 Folks are sometimes surprised to learn that I started out working as a frontend engineer. I'd like to imagine it's because I'm so terribly knowledgeable about infrastructure, but I suspect it's mostly grounded in my unconscionably poor design aesthetic. Something that has stuck with me from that experience was feeling treated as a second-tier engineer: folks were unwilling to do any frontend work, but were careful to categorize it as trivial.

July 14, 2018 I've come to believe that most organizational design questions can be answered by recursively applying a framework for sizing teams. Over the past year I've refined my approach to team sizing into a bit of a framework, and even changed my mind on several aspects, especially the viability of small teams. This post describes how I now size teams

July 2, 2018 Digg was having a rough year. Our CEO left the day before I joined. Senior engineers ghosted out the door, dampening productivity and pulling their remaining friends. We had only one remaining shot at revival, launching our two-years in the making rewrite: Digg v4. It did not go as planned.

April 15, 2018 Migrations are both essential and frustratingly frequent as your codebase ages and your business grows: most tools and processes only support about one order magnitude of growth before becoming ineffective, so rapid growth makes them a way of life. This post takes a look at why migrations are so important, and also how to run them effectively.