Who Are We Excluding in Our Systems Designs

Multicolored containers by Håkan Dahlström. CC License Systems Design has long been a fascination of mine. Whether that is technical, sociological, or philosophical—how do we codify that which we value and want to streamline and how does that impact those who don’t neatly fit into that mould. As I started my technical career building out website UIs, the topic of universal design captivated me. How are accessibility measures for some, appreciated by the many? Clear curb cuts serve those who rely on wheeled transport—wheelchairs, medical scooters, and more—but they also help parents with strollers, someone pulling a wagon full of supplies, and me pushing one of those small carts to get groceries. ...

May 22, 2025 · 11 min · Skyler Lemay

TypeScript Utility Types Part 3: Extract, Exclude, and NonNullable

TypeScript utility types provide built in type composition tools to generate new types. They capitalize on TypeScript generic types to enable this functionality. In the third part of this series, we will be covering the Extract, Exclude, and NonNullable utilities. For more coverage on other utility types, check out the previous two posts in the series. TypeScript Utility Types Part 1: Partial, Pick, and Omit TypeScript Utility Types Part 2: Record, Readonly, & Required Extract Extract<T, U>. is a utility for pulling out values that are shared between the two type arguments it receives. This can be useful for refining types for other implementations, or to remove types that another implementation may not accept. ...

May 25, 2020 · 5 min · Skyler Lemay

How to Bundle Knex with Webpack for Serverless

Bundling Knex with Webpack doesn’t always play well. In this particular case I was trying to bundle a serverless application with only the runtime dependencies. Since this project was utilizing TypeScript and other tooling and dev-dependencies I definitely did not want to ship all of the node modules. Additionally, most of the 10 module resolution errors I was receiving were for packages I didn’t even have installed. In this blog post we’ll cover utilizing a Webpack plugin to resolve this build error. ...

May 22, 2020 · 2 min · Skyler Lemay

TailwindCSS: From Skeptic to Advocate

At it’s core Tailwind creates extensible yet constrained design systems with reasonable defaults. TailwindCSS is a configurable CSS tool that generates CSS utility classes. These utility classes each set one CSS property, and are combined with other utility classes to generate the styles for a layout. In a utility first CSS approach, elements generally have more classes attached to the DOM in favor of writing bespoke CSS. This is a high level simplification of the tool, but it is an important baseline of understanding before moving forward. ...

May 18, 2020 · 7 min · Skyler Lemay

TypeScript Utility Types Part 2: Record, Readonly, & Required

TypeScript utility types provide built in type composition tools to generate new types. They capitalize on TypeScript generic types to enable this functionality. Previously we talked about the Partial, Pick, and Omit types as well as utility types as a concept in part 1 of this series. In this post we will dive into three more of the utility types provided by TypeScript: Record, Readonly, and Required. ...

May 4, 2020 · 5 min · Skyler Lemay