👋 I'm Cam McHenry

I am a software engineer that is passionate about building great web applications. Currently, I work at GitHub and I live in State College, Pennsylvania.

I often write about TypeScript and React in my blog, and occasionally write some useful tools.

Featured work

  • How to write custom ESLint rules for your project

    — ESLint is a great tool for analyzing code, but it can be a bit of a hassle to set up when it comes to making your own rules. This is a quick guide on how to create a TypeScript ESLint plugin, write a custom rule, and write tests for it.

  • Everything You Need To Know About TypeScript Union Types

    — Union types are a powerful feature of TypeScript to ergonomically model a finite number of mutually exclusive cases and ensure that every case is handled safely.

  • TypeScript Type Guards Explained

    — Type guards are conditional checks that allow types to be narrowed from general types to more specific ones. With type guards, we do run-time type checking and ensure that code is safe.

Recent posts

  • How I write accessible Playwright tests

    — Five practical tips for writing tests to check the accessibility of web applications with Playwright, as well as generally improve the robustness of end-to-end tests.

  • How to test accessible descriptions with Playwright

    — Playwright recently added support an assertion to check accessible descriptions and labels, allowing you to more easily test the accessibility of elements in your web application.

  • Mini-skills

    — Mini-skills are small, focused skills that can be learned and used within a short amount of time.