• A Conceptual Look at Theming

    August 10, 2019

    The word theme can mean a lot of different things and invoke a lot of different interpretations, which can be both a blessing and a curse. In user interface design, the term theming is used for various purposes, including end-user customization, white…

  • Code Literacy

    July 25, 2019

    Ah yes, everyone's favorite question: should designers code? As much as I'd love to pontificate on the matter, I think the framing of this question is fundamentally wrong. At the heart of this conversation is the idea of code literacy , that is, the…

  • Portability

    July 23, 2019

    In software development, formats help ensure that content and data are portable and can be used in many different applications. By adhering to HTML standards set by the WHATWG and W3C, browsers created by different organizations can render HTML documents…

  • Themeability

    July 21, 2019

    I've been interested in the idea of constraint-based design for a while. By constraining the solution space for a particular problem, new and novel ideas can emerge beyond the initial problem's scope. In the context of UI design, when you don't need to…

  • The Cascade is Not Inheritance

    July 20, 2019

    On more than one occasion, I've heard people conflate the cascade feature of CSS with inheritance . While it's an understandable thing to mix up because they are, in fact, related, I think it's important to use the correct terms when talking about…

  • Why you should definitely learn how to use CSS-in-JS

    July 20, 2019

    From time to time, I've heard that CSS-in-JS poses a barrier to entry for some people. Like any new software abstraction, CSS-in-JS is intended to abstract away some of the complexities from a lower level implementation, in this case CSS. Abstractions…

  • The Modern Front-End Design System Stack

    July 18, 2019

    Design systems come in all shapes and sizes and can encompass a wide range of skillsets and roles within an organization. As a front-end developer, I'd like to share some of the tooling that I've found to be helpful when building out the components and…

  • Iterations on a Theme

    April 06, 2019

    As my personal GitHub account rolls over 500 repos (apparently a few of them are private), it felt like a good time to reflect on how I approach using GitHub personally. You might say, "500! Whoa, buddy, that's way too many repos!" Believe me, it is…

  • Interoperability

    March 21, 2019

    Back in early 2013, I was working at a small startup in San Francisco called Stitch Fix, alongside Adam Morse and a handful of others. We were designing and building out early versions of their marketing pages and some internal tools. I had the word…

  • The Three Tenets of Styled System

    March 17, 2019

    I released Styled System around a year and a half ago, and since then, the library has been growing steadily and has even resulted in a few copycat libraries that use some of the same conventions. Up until now, I haven't really written much about the…

  • Progressive Documentation

    September 01, 2018

    When building out JS libraries and components, everyone knows the importance of good documentation. Without it, good code can end up going unused, which leads to duplication. For many libraries, markdown is an excellent format for writing docs since it's…

  • Defining Component APIs in React

    July 08, 2018

    Over the years, I’ve noticed patterns in how I tend to approach component APIs and building out applications and libraries. The following is a collection of thoughts, opinions, and advice for defining component APIs that are meant to be more flexible, composable, and easier to understand. None of these are hard-and-fast rules, but they’ve helped guide the way I think about organizing and creating components.

  • Patterns for Style Composition in React

    August 13, 2016

    While React is extremely flexible in terms of how you can structure your application’s UI, I’ve found that a few patterns for style composition have helped me keep things organized and easy to work with.

  • Universal UI Components

    July 06, 2016

    For a while now, I’ve been interested in the idea of creating portable, interoperable functional UI components that can work in any DOM rendering library, whether it’s React , Preact , hyperscript , bel , yo-yo , or some other library. The idea of…

  • Unit testing UI

    June 20, 2016

    I recently read this excellent article , where the design team at Vox has devised a testing framework for new UI components introduced into their pattern library. While the methods they suggest are excellent, and what I’d consider something that should…

  • Components

    June 17, 2016

    Everything in a UI is a component. This includes buttons, inputs, forms, promotional modules, pages, user flows, etc. I use the word component not only because this is how the underlying code is written in libraries like React and Ember, but also because…