About

January 13, 2019

I am a full-stack software engineer currently at Audible. Before that, I was at Spotify for six and a half years, which came after a few years at a small digital agency called Sanborn Media Factory, which came after the first time I was ever paid to program, at Teach For America. Before that I was working temp jobs and wondering if moving to NYC "just to see what it was like" had been such a great plan after all. But it worked out, so the answer is "yes."

My roots are in the front end, but I spend a fair bit of time working with databases, servers, back end APIs, and other server-side components. I've found that delivering a good user experience means making sure technical decision are focused on the user throughout all layers of the system. Does the UI do a good job letting the user know what's possible, and then faithfully capturing their intentions? Does the API allow for properly modeling those choices? Does the data persistence layer provide the needed reliability, efficiency, and flexibility to store and query these models? When something goes wrong, is the user left in the dark, or are they provided with alternate paths forward?

In short, I try to make sure my technical decisions are optimizing for product, not process.

The times I've been most successful at this have been with teams that prize collaboration and openness. Teams where I've had the chance to mentor and to be mentored, which practice strong intra-team communication practices such as documentation and constructive code reviews, and which expect (and find) leadership from all team members regardless of tenure, are also the teams I've seen most consistently deliver a great user experience.

That's some broad context. How about specific technologies I've worked with?

My strongest language is JavaScript, thanks to my long experience with it. While the JavaScript ecosystem (in)famously changes quickly, I've found focusing on the language itself rather than worrying about keeping up with the very latest library has been the trick to staying sane. It's an approach that's made moving from jQuery to Angular to React an adventure rather than a slog, and I'm excited for whatever comes next. (I'm eyeing Vue.js right now, and it's also well past time I got into TypeScript.)

Server-side, I like NGINX as a reverse proxy in front of either Express or Flask. I've also been expanding my Java portfolio, and while that language's reputation for clunky verbosity isn't entirely undeserved, I've found that leaning into its object orientation can give you quite of a bit of expressive power for representing business logic in code. For databases, I like PostgreSQL, though NoSQL can be a better fit for some situations. For deploying the whole thing, I'm a big fan of Docker.

If you're looking to get in touch, you can reach me through my LinkedIn or at the email on my resume.