Blog

You can find my latest AI engineering articles on Substack, leadership on LeadDev, or browse my topic guides and personal blog posts below.

Personal Blog

React Server Components

React Server Components

React Server Components aim to enable modern UX with a server-driven mental model. In this post I will share some notes I took while catching up on the latest RFC and talk aroun...

The Import On Interaction Pattern

The Import On Interaction Pattern

Tip: Lazy-load non-critical resources when a user interacts with UI requiring it. Your page may contain code or data for a component or resource that isnt immediately necessary....

Incremental Migrations

Incremental Migrations

Incremental migrations are excellent for updating large legacy projects. Migrate a small piece at a time with lower risk then gradually do the rest.

Faster Web App Delivery with PRPL

Faster Web App Delivery with PRPL

PRPL is a pattern for structuring and serving web applications and Progressive Web Apps with an emphasis on improved app delivery and launch performance.

Fast page labelling in Chrome for Android

Fast page labelling in Chrome for Android

Chrome on Android will begin to highlight high-quality user experiences on the web, starting with Fast page labelling of fast links via the link context-menu.

Preload late-discovered Hero images faster

Preload late-discovered Hero images faster

If you are optimizing Largest Contentful Paint, preload can be a game-changer for speeding up late-discovered hero images and resources, loaded via JavaScript.

We've improved image lazy-loading in Chrome!

We've improved image lazy-loading in Chrome!

We improved image lazy-loading in Chrome! The new thresholds for when we lazy-load images offer much better data-savings, are closer to JavaScript lazy-loading libraries and are...

What (not) to Prefetch/Prerender

What (not) to Prefetch/Prerender

This post outlines a number of edge-cases we have encountered while developing libraries like Quicklink. We believe most of these edge-cases apply equally to efforts leveraging...

Profiling React.js Performance

Profiling React.js Performance

This guide looks at measuring React component render performance with the React Profiler API, measuring interactions with React's new experimental scheduler and measuring custom...

Substack

LeadDev

Managing the chaos of context switching

It's time to examine the good, the bad, and the very ugly elements of context switching. Even better, we'll take a look at some strategies for managing it.

What makes an effective software engineer?

Being a good software engineer is not necessarily the same as being an effective one. Here, Google's Addy Osmani identifies the ten key traits of effective software engineers.