Posts

  • Remove Asynchronous Work from the Critical Path

    Our APIs often involve a mix of work that needs to performed before a success/fail response can be sent and some work that needs to happen, but doesn’t need to happen immediately. Work that must happen along the request path we say is synchronous. Work that must happen eventually we call asynchronous. When writing high performant APIs, we should strive to remove as much asynchronous work off the request’s critical path as possible.

  • How Much Land Does a Man Need

    This was the first Tolstoy that I’ve read and it certainly didn’t disappoint. How Much Land Does a Man Need is a short story that explores themes of greed and ambition.

  • Get It Working, Then Clean It Up

    My team was preparing to GA a new email feature on Friday 12/13 (good thing we didn’t believe in bad omens!). The goal was to send users emails about ways they can improve the instrumentation for the services they care about. As of 12/9 we still had one non-trivial feature to build before our GA date. The other members of the team were busy tying up some loose ends so I took on the responsibility for getting this last piece done. I estimated that it would take me two days to get the code written. I got it done, but I caused myself a lot of headache and added unnecessary risk to the project in the process.

  • Your Mind is a Garden

    Man’s mind may be likened to a garden, which may be intelligently cultivated or allowed to run wild; but whether cultivated or neglected, it must, and will, bring forth. If no useful seeds are put into it, then an abundance of useless weed-seeds will fall therein, and will continue to produce their kind.

  • Mock External Dependencies In Local Development

    At LightStep, we can run our entire application on our laptops when doing local development (well, most of it anyhow). At some point this will no longer be feasible but I’m hoping to ride the wave for as long as possible. I’ve found that running the app locally is a great way to build intimacy with the product we’re building. It has also helped me develop a deep understanding of how the various services fit together to form our complete architecture. However, running a complex app like ours locally comes with challenges.

  • Why Didn't You Just

    I regularly peruse the latest Hacker News listings on my way to work. I skip most articles, skim a few, and occasionally choose one to deeply engage with. Today, my scrolling was especially valuable — I found an article that made me a better person.

  • How to Run a Meeting

    Today I found a brilliant article on the problem with meetings and how to run a successful one. I loved it. Like the author, I tend to bag on meetings. But that’s because in my 4+ years as a working professional I can count the number of truly valuable meetings I’ve had on my fingers. Ok, maybe I need my toes too — but still!

  • Writing a CSV With Go

    Today I worked on a task that required me to transform some data into a CSV file that would be attached to an email. Even though I had never generated a CSV with Go before, I estimated that the task wouldn’t take too long — the standard library had to have something to make this easy. Lucky for me, I was right!

  • Checkpointing Eases Context Switching

    Today I experienced the value that periodically checkpointing progress on a task can have.

  • Use Server Streaming RPC's for ListAll__() Requests

    Originally written: November 27, 2019

    While investigating an issue with one of our internal services, I came across the following error message:

    …(rpc error: code = ResourceExhausted desc = grpc: received message larger than max (8985920 vs. 8388608)) at … 
    
  • Propose a Sprint Goal Before Planning the Sprint

    Originally written: November 25, 2019

    In our team’s Sprint Planning meeting today we quickly veered into a detailed discussion about if and how we should manage the email subscription preferences of our users.

  • Don't Page on Transient Issues

    Originally written: November 26, 2019

    LightStep’s current on-call responsibilities are rotated across individuals who serve as an all encompassing front-line responder to incidents. My shift is this week and this morning I was paged for an issue with our statistics ingestion pipeline, known internally as USGS.

  • Being Deliberate About Work

    In my previous post I mentioned that I had temporarily reframed my approach to work as a quest of continuous learning. I began to approach each work day with the explicit goal of learning something new. While I was diligent about this I experienced a renewed vigor and greater satisfaction with my day-to-day work life. Like most resolutions, unfortunately, after a couple of weeks I slacked off and lost my commitment.

  • Is This Good Enough?

    During a recent guided meditation session (I use Sam Harris’ Waking Up), I was instructed to bring my attention to the attitude I was approaching the practice with. Was I waiting for something pleasant? Or was the present already good enough?

  • Lab Notebooks

    Originally published: August 26, 2019 - LightStep

    Many engineering teams create some form of a Design Document in the early stages of a new project. These documents are useful because they help the team debate and arrive at a high-level architecture and implementation plan to move forward with.

    At LightStep we do things a bit differently. Rather than Design Documents, we’ve created “Lab Notebooks.”

  • Thinking About Error Codes

    Last week I had a discussion with Spoons (LightStep Co-founder & CTO) about a PR I submitted for him to review. He is usually way too busy to look at code but I was modifying the error codes returned by our core authentication code and I knew that he couldn’t resist a PR that dealt with errors and authentication. The nerd snipe was too easy.

  • The Perfect Team

    Originally published: August 2, 2017 - LinkedIn

    What makes the perfect team? I’ve been thinking about this a lot recently. As a Tech Lead, one of my main responsibilities is ensuring that my team is as effective as possible. Until recently, I didn’t understand exactly what that entailed.

  • Jury Selection

    I vividly remember when I received my first ever jury summons. Suffice it to say that I was not pleased.

subscribe via RSS