# Devin Schulz

Senior Frontend Engineer at Stripe. I build product interfaces where clarity, trust, and the tiny details are not optional.

- Web: https://devinschulz.com/
- Email: hello@devinschulz.com
- GitHub: https://github.com/devinschulz
- LinkedIn: https://www.linkedin.com/in/devinschulz/

## Selected work

### Cape

Designer & Lead Frontend Engineer

At Cape, I was both the designer and the lead frontend engineer. I designed the interfaces and led their frontend development, bringing conversation, data-heavy dashboards, and document review into one coherent workspace.

Full case study: https://devinschulz.com/work/cape/index.md

### InVision

Senior Software Engineer · 2014 — 2020

A design is more than the image on a screen. It’s the spacing, the decisions, and the conversation around it. At InVision, I worked on the tools that helped teams carry those details into what they built.

Full case study: https://devinschulz.com/work/invision/index.md

### Warranties

Designer & Developer · 2023 — 2025

Warranties was a personal product. I designed it and I built it. It kept a record of the things you own — what they cost, where they came from, and how long they stay covered — so that the information is there on the day something breaks.

Full case study: https://devinschulz.com/work/warranties/index.md

## Writing

A decade of writing, archived with its original dates. Index: https://devinschulz.com/blog/index.md

- 2022 — [Using React Component Variants to Compose CSS Classes](https://devinschulz.com/blog/using-react-component-variants-to-compose-css-classes/index.md)
- 2020 — [My Definition of a First-Class Pull Request](https://devinschulz.com/blog/my-definition-of-a-first-class-pull-request/index.md)
- 2020 — [Handling an Event Callback Once](https://devinschulz.com/blog/handling-an-event-callback-once/index.md)
- 2020 — [Rename Fields by Using Aliases in GraphQL](https://devinschulz.com/blog/rename-fields-by-using-aliases-in-graphql/index.md)
- 2020 — [Filter Out Multiple Console Messages in Google Chrome](https://devinschulz.com/blog/filter-out-multiple-console-messages-in-google-chrome/index.md)
- 2020 — [Restrictions While Styling Visited Links](https://devinschulz.com/blog/restrictions-while-styling-visited-links/index.md)
- 2020 — [Modify Create React App's Babel Configuration Without Ejecting](https://devinschulz.com/blog/modify-create-react-apps-babel-configuration-without-ejecting/index.md)
- 2019 — [I've Lost Faith in Client-Side Analytics](https://devinschulz.com/blog/ive-lost-faith-in-client-side-analytics/index.md)
- 2019 — [Accumulate Complex Objects With the Reduce Method](https://devinschulz.com/blog/accumulate-complex-objects-with-the-reduce-method/index.md)
- 2019 — [Building the Inspect Measurement Engine](https://devinschulz.com/blog/building-the-inspect-measurement-engine/index.md)

