The PageSpeed Insights API
The PageSpeed Insights API provides free access to performance monitoring for web pages and returns data with suggestions for how to improve. The V5 API includes lab data from L...
You can find my latest AI engineering articles on Substack, leadership on LeadDev, or browse my topic guides and personal blog posts below.
The PageSpeed Insights API provides free access to performance monitoring for web pages and returns data with suggestions for how to improve. The V5 API includes lab data from L...
Happy new year! Here are my lessons from the decade:
Adaptive Loading is a pattern for delivering a fast core experience to all users (including low-end devices) where you progressively add high-end-only features, if a user's netw...
Tips I use to avoid burnout:
Tip: Break tasks you procrastinate into smaller, low-energy ones. It helps.
Tip: Avoid large pull requests. Find ways to break them up into smaller ones.
In 2019, I explored a new term - AI-Assisted Engineering - to describe how machine learning could one day augment software engineering. This post speculates on what the next dec...
At Google I/0 2019, we announced that we would finally be bringing support for font-display to Google Fonts. I’m happy to share this is now available in production for all Googl...
A quick overview of paint holding. A Chrome feature for reducing the flash of white on same-origin navigations
In this post, we’ll look at the new loading attribute which brings native <img> and <iframe> lazy-loading to the web!. For the curious, here’s a sneak preview of it ...
If you use React and need to display large lists of data efficiently, you may be familiar with react-virtualized. It’s a windowing library by Brian Vaughn that renders only the ...
Are there known large JavaScript dependencies your team wish they could disallow from a project? Good news! ESLint supports disallowing specific imports from projects using the ...
How browsers schedule and execute scripts can impact the performance of web pages. While techniques like <script defer>, <link rel=preload> (and others) influence sc...
bfcache creates a cache allowing for instant navigations to previously-visited pages.
Learn about approaches to reduce the cost of rehydration in server rendered experiences
Learn about why modern web performance metrics matter
Learn how to speed up next-page navigations using prefetching
Use Lighthouse to detect opportunities to reduce the cost of JavaScript to your user experience.
Learn how to adaptively serve content based on the user's effective network connection type
Building a web experience and want to stay fast? Performance budgets are critical for success.
Exploring how AI and modern tools are democratizing personal software development, making it accessible to everyone.
Occasionally, you may need to install npm packages while offline. This could be due to a flaky network connection, being on a flight or during a workshop. Getting this working h...
There’s been much welcome discussion about Progressive Web Apps lately. They’re still a relatively new model, but their principles can equally enhance apps built with vanilla JS...
Practical strategies for engineering careers in the future
A field guide and why we need to rethink our expectations
Engineering with user empathy is the foundation of great products
How to thrive in imperfect conditions
Navigating comparison with mindfulness
Actionable advice for empowerment
My lessons learned along the way.
Extending your influence past your immediate circle isn't as straightforward as you'd like to hope. But there are a few strategies you can employ to help.
Building a tech strategy requires a lot of moving parts. Learn about what routes to take and whether decisions should be top-down.
With so many developments in the tech world it's difficult to keep up. Here are some strategies to stay on top of your upskilling.
How can you prioritize when everyone's ask is an urgency and you don't have time to fit it all in?
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.
Software engineering teams should focus on outcomes over outputs to deliver the best user and business value.
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.