Home

Protobuf Field Masks

August 19, 2019

When you design an API to a service, it’s nice if your API is robust enough to return just the data that the user is interested in. For example, take the Google Maps Place Details API. There are about 20 fields that you can query, such as name, formatted_phone_number, website, and rating. You can specify exactly which fields you want returned by specifying a fields parameter. This helps limit responses to just the data we actually want. ...

Exit Talks

August 12, 2019

As a manager, what should you be doing when one of your reports is leaving the company? I believe one of the more important things you can do is the exit talk, a more candid conversation about your report and their career. This is something I started doing as a budding team lead. I’ve had an exit talk with two of my last three interns. By the end of today, I’ll have had one more. ...

Creating a Newsletter

July 29, 2019

I’m a lurker over in the Rands Leadership Slack. As Rands is the VP of Product Engineering at Slack, the folks in this workspace know the ins and outs of using Slack. One of the cool things that they do is curate a newsletter that summarizes interesting discussion, ideas, etc. that occurred over the past month. This seemed like something that would be useful at my work as well, so another engineer and I set out to make our own version. ...

Immutables, Part 4

July 22, 2019

At this point, you’ve made a shift to an immutables world. All of your models are immutable (where appropriate) and you’re benefiting from not having to worry about random code messing with your shit. You’ve also started using non-vanilla generated objects and a custom style in order to cut down on boilerplate (e.g. ImmutableFoo.copyOf) and make immutables feel like other objects (e.g. protobufs). Now, you face a new challenge: how do you serialize and deserialize your model? ...

Immutables, Part 3

July 15, 2019

At this point, we’re fairly comfortable with using Immutables. In Part 1, we introduced how to create and use generated immutable objects. In Part 2, we looked at how we can use various features of the Immutables library to make our immutables nicer to work with. Here, we’ll take a look at styling and usage patterns. This will allow our immutables to be more idiomatic and homogenous with the rest of our code base. ...

Immutables, Part 2

July 8, 2019

Last time, we took a first look at the Immutables library, focusing on the basics of how to generate and use an immutable object. Here, we’ll take a look at how we can use some useful features to make our immutables a bit nicer to work with! Basic Usage In part 1, we used a toy example of an image editing app to highlight where our code would benefit from immutability. ...

Immutables, Part 1

July 1, 2019

A core part of coding in an object-oriented language is, well, creating objects. Plain Old Java Objects (POJOs) are the standard Java object, and they usually look something like this: public class Color { private String rgb; public Color(String rgb) { this.rgb = rgb; } public String getRgb() { return rgb; } } Nice, simple, straightforward. POJOs are fine for modelling things, but they have a problem: they’re mutable. ...

Requesting Feedback

June 24, 2019

How do you get feedback? Even when you want feedback, getting reliable feedback is hard. The person sitting across from you isn’t always able to give you something helpful. This is a conundrum that lots of people face, especially in the workplace. When dealing with your boss, you want her to be able to tell you where you should focus to become better. When dealing with your reports, you want them to give you an accurate picture of how they feel, not one that will just placate you. ...

Understanding Your Tools

June 17, 2019

The other day, I saw my coworker’s kid on my Instagram feed. She’s cute, about two years old, and she was playing with a toy. The toy was just a cardboard box hanging from a string. Kids simply don’t have the same perspective on the world as we do. They’re immensely curious about things that we find mundane, and they love playing with these everyday objects. It’s as if they’re always asking, what is this thing and what can I do with it? ...

Autopilots

June 10, 2019

Whenever we start learning new things, there’s often way too much to cover. For me, I think this was most pronounced when I started software engineering as a recent college grad. With almost no prior industry experience, I was trying to understand the product, how our systems fit together, our tech stack, and coding best practices. It’s actually quite easy to forget how much surface area you get exposed to. ...