Welcome!

I'm Shane. I build stuff that lives on the internet, and sometimes I write about it, too. If you want to learn a little bit more about me, you can check out my résumé at resume.smoores.dev .

Recent Posts

ESNI: Making the Internet Private by Default

Sept. 19, 2020

The internet as a system is inherently public. The primary protocols, like HTTP for website traffic and SMTP for email traffic, are plaintext protocols, and the underlying Internet Protocol (IP) includes fairly stable addresses (IP addresses) in every request, which means that the computers that serve content, like web servers and DNS servers, are constantly being informed about who, specifically, is making which request.

Dockerizing Legacy Scoop for Reproducible Development Environments

Sept. 14, 2020

That title is a bit of a mouthful, huh? Probably a good idea to start with some context. "Scoop" is the name of the CMS at the New York Times, which is actually made up of a number of separate frontend apps that sit atop a shared backend. Most of the time I work on Oak, the collaborative rich text editor that the newsroom uses for writing news and opinion stories. Oak actually has its own datastore (Google's Cloud Firestore) and backend, but presently the only way to be a part of the Scoop ecosystem is to also store at least a subset of our data in the shared backend.

SMTP: A Conversation

May 9, 2020

One crucial piece of network administration has always evaded me. Past the routers, VPNs, websites and Docker images, always just out reach, sits the big one: email. I have never been able to wrap my head around even the simplest pieces of email networking. Somehow, this fundamental part of the modern internet has always just been a little bit too complex, just a little bit too finicky.

Recent Talks

Slides for talks that I've given recently. These are usually made with reveal.js and hosted on my personal web server.

A Tale of 100 Blue Buttons

A brief intro to The New York Times' content management system, and why we needed to build Ink, a design system for that content management system.

Monads and You: How to think about Promises

A look at how the functional programming notions of functors and monads can help provide us with helpful mental models for thinking about Promises in Javascript. It's not as scary as it sounds, really!