# Devin Schulz > Senior Frontend Engineer at Stripe who builds product interfaces and pays close attention to the small details. This file indexes the site for language models, and every page below is also available as Markdown. - Site: https://devinschulz.com/ - Contact: hello@devinschulz.com - Code: https://github.com/devinschulz - Profile: https://www.linkedin.com/in/devinschulz/ ## Case studies - [Cape](https://devinschulz.com/work/cape/index.md): Designer & Lead Frontend Engineer. Product design and frontend leadership for an AI workspace spanning conversation, risk dashboards, and document review. - [InVision](https://devinschulz.com/work/invision/index.md): Senior Software Engineer, 2014-2020. Frontend engineering on the tools that sit between design and development: Inspect, Conversations and Boards. - [Warranties](https://devinschulz.com/work/warranties/index.md): Designer & Developer, 2023-2025. Designing and building a small app for tracking the things you own and the coverage that comes with them, from first release to the end of support in 2025. ## Writing Archived posts, kept at their original publication dates. - [Using React Component Variants to Compose CSS Classes](https://devinschulz.com/blog/using-react-component-variants-to-compose-css-classes/index.md): 2022. Learn how to build React component variants by composing CSS classes in a typesafe and flexible manner. - [My Definition of a First-Class Pull Request](https://devinschulz.com/blog/my-definition-of-a-first-class-pull-request/index.md): 2020. Learn how to spruce up your pull requests with a few simple tips. These tips shouldn't add more than a couple of minutes to your workflow, and you'll look like a rockstar to your peers. - [Handling an Event Callback Once](https://devinschulz.com/blog/handling-an-event-callback-once/index.md): 2020. Learn how to simplify your code by using a simple trick to remove an event listener after an event has been fired once. - [Rename Fields by Using Aliases in GraphQL](https://devinschulz.com/blog/rename-fields-by-using-aliases-in-graphql/index.md): 2020. Learn how to rename fields of a GraphQL object by using aliases. - [Filter Out Multiple Console Messages in Google Chrome](https://devinschulz.com/blog/filter-out-multiple-console-messages-in-google-chrome/index.md): 2020. Learn how to filter out multiple console messages by using either regular expressions or prefixing a string with a hyphen-minus. - [Restrictions While Styling Visited Links](https://devinschulz.com/blog/restrictions-while-styling-visited-links/index.md): 2020. Learn what the :visited pseudo-class selector is and the limits on how you can style it. - [Modify Create React App's Babel Configuration Without Ejecting](https://devinschulz.com/blog/modify-create-react-apps-babel-configuration-without-ejecting/index.md): 2020. Learn how to modify the underlying Create React App configuration with customize-cra to include new Babel plugins, all without having to eject. - [I've Lost Faith in Client-Side Analytics](https://devinschulz.com/blog/ive-lost-faith-in-client-side-analytics/index.md): 2019. Since switching to Netlify's server-side analytics, I learned how different the data is when compared to Google Analytics. - [Accumulate Complex Objects With the Reduce Method](https://devinschulz.com/blog/accumulate-complex-objects-with-the-reduce-method/index.md): 2019. Learn how to recursively reduce a nested data structure by harnessing the power of the Array.reduce method. - [Building the Inspect Measurement Engine](https://devinschulz.com/blog/building-the-inspect-measurement-engine/index.md): 2019. Thoughts and learnings I had while building the Inspect measurement engine. - [From Hugo to Next.js and Back Again](https://devinschulz.com/blog/from-hugo-to-next-js-and-back-again/index.md): 2019. Learn why I chose Hugo over a React-based static site generator for my blog. - [Reflecting on Four Years of Remote Work](https://devinschulz.com/blog/reflecting-on-four-years-of-remote-work/index.md): 2019. Learn about the good and the bad I've experienced while working remotely over the past four years. - [Building a Likes API With Google Cloud Functions](https://devinschulz.com/blog/building-a-likes-api-with-google-cloud-functions/index.md): 2018. Learn how to use Google Cloud Functions to build a likes API with Node. - [Copy React Props to Your Clipboard in Google Chrome](https://devinschulz.com/blog/copy-react-props-to-your-clipboard-in-google-chrome/index.md): 2018. Learn how to copy React props to your clipboard using Google Chrome and the React Developer Tools. - [Combining Synchronous Actions Using Redux Thunk](https://devinschulz.com/blog/combining-synchronous-actions-using-redux-thunk/index.md): 2018. Learn how to use Redux Thunk for handling several synchronous actions at once to modify different areas of the application state. - [Welcome Readers](https://devinschulz.com/blog/welcome-readers/index.md): 2018. My first post, about why it took me years to launch a blog of my own, why I landed on Hugo, and what I plan to write about. ## Optional - [Home page as Markdown](https://devinschulz.com/index.md) - [Writing index as Markdown](https://devinschulz.com/blog/index.md) - [RSS feed](https://devinschulz.com/index.xml)