Songs of summer

Alternate space history, koolaid factories, Japanese signage, computers for nature, and more.

A space for ourselves

Thoughts on the challenges of working on the web in the attention economy, and a reminder of how our spaces shape us.

Measuring the health of a design system

Design systems are like community gardens, and understanding their health is key to success. Here's how the team at Sprout Social does it.

The gap problem

Exploring techniques and trade offs for creating reusable grid components using modern CSS best practices.

Generating friendly, unique identifiers

Using the friendly-words package from Glitch to create human readable identifiers.

Orbit design system

Taking a look at a few interesting aspects of's design system.

CSS resets

Examining a few different approaches to modern CSS resets across the web.

Minimum viable dark mode

How to create a quick and dirty dark mode for simple apps and websites using pure CSS.

Creating a useTextContent hook

How to create a custom React hook that can read the text content of a tree of nodes.

Building Sprout Social’s component library

How our team of three built a component library that designers and engineers love using.

Gatsby schema customization is pretty cool

Creating custom schemas for our data allows us to clean separate our view logic from our data source.

XOXO 2018

Highlights from my trip to Portland for the annual festival for creators who work on the internet.

Making computers make art

An introduction, history, and resource for generative art and creative coding.

Some prompted thoughts on design

InVision interviewed the design team at Sprout, and I wrote up some extended thoughts on their questions.

No Reservations

Memorializing Anthony Bourdain and all of the things we can learn from him.

Personal finance perfection

How I manage money with my bank of choice (Simple) and their smart, automated features.

Designing proactively

Thinking about what it means to slow down and design for the future.

Writing design

Thinking about design systems as vocabularies for shared languages.

Default constraint behaviors using Swift protocols