I write about things I'm learning, building and thinking about whenever I can. If you want to get notified when a new post lands, see the RSS feed on the top righ-hand-side corner.
- 2023-08 Implementing a Simple Client-Side Cache With Promises
- 2022-12 Making a HTML table keyboard navigable
- 2022-07 Overview of key TypeScript language features
- 2022-04 TypeScript — Transforming a Union to Another Union
- 2022-04 TypeScript — Deriving a Union Type From an Object
- 2022-04 Adding a Performant, Flicker-Free Dark Mode to Next.js Apps
- 2022-03 Managing Multi-branch Workflows With Git Worktrees
- 2022-03 Notes on the Critical Rendering Path (CRP)
- 2022-03 Template Literal Types in TypeScript
- 2022-02 useReducerWithLocalStorage — Persisting Reducer State to Local Storage
- 2022-02 Setting Fake Times Natively in Jest
- 2022-02 Scrolling Elements Into View in React
- 2022-02 Things I've Learned About useEffect
- 2022-02 Working with Static Query Hooks in Objection.js
- 2022-01 Avoiding and Handling Data Fetch Race Conditions in React
- 2022-01 Using Nextjs Middleware for Geolocation Detection
- 2022-01 Hook Flow - The Order in Which React Hooks Execute
- 2021-12 Summary - What is beautiful is usable
- 2021-10 Providing a fallback for Safari when querying Permissions API
- 2021-10 Serving Next.js app over HTTPS locally using ngrok
- 2021-08 Making useEffects abortable
- 2021-07 JQ - An easy way to manipulate JSON from the command line
- 2021-07 Actor-observer Bias
- 2021-06 Fix for Unexpected "<" when using mdx-bundler