The Web and Stuff.


I like to make things—usually with web technologies, and usually for the web.

At the moment I'm most interested in jamstack and design systems. I work with things like React, Next.js, node.js, and GraphQL. Although there are parts of the stack I'm very focused on, I am most passionate about making stuff.

Blah blah blah I make websites.

Blog posts

#JSON Feed

JSON Feed Types

I've been working on adding JSON Feed to my blog, but I was surprised to discover that nobody has published JSON Feed TypeScript types yet. So I made some.


Missing Sanity documents in unauthenticated query results

If you notice documents missing from the results of unauthenticated Sanity queries, check whether the affected document ids are a path (a string segmented by periods).

#Open Graph Protocol

I added dynamic Open Graph images to my site

Using Next.js and Puppeteer, I created a set of dynamic OG images that reuse the design system components from my site.


Component-level static props in Next.js

The Next-CMS project gives us a peek at component-level static props in Next.js. How does it work, and how can we use the pattern ourselves?


Exploring the Stylus Cache Function

Let's learn about Stylus' cache function.


"Why I Left Gulp and Grunt for npm Scripts"—Cory House

Cory House provides many good reasons for using npm scripts instead of an alternative task runner such as Gulp.

Recent work

  • Added a Google Cloud Pub/Sub layer to improve the reliability of a service that ingests data from webhooks.

  • Created a song picker for Sanity CMS using serverless functions, Sanity UI, the iTunes API, and the Odesli API.

  • Created React Native apps with realtime maps and complicated backend API integrations.

  • Built a GraphQL API layer over an old and inconsistent REST API.

  • Created TypeScript types for the JSON Feed spec.

  • Created a helper library for generating Open Graph preview images with serverless functions.

  • Created a headless site builder with WordPress and Next.js.