Expanding Our Vision: Unifying Client-Side Observability Data

Expanding Our Vision: Unifying Client-Side Observability Data

In 2021, we started Request Metrics as a simple and developer-friendly service to measure and improve web performance. We built an incredible platform that d... Read more »
Measuring Web Performance in 2023: The Definitive Guide

Measuring Web Performance in 2023: The Definitive Guide

This is the complete guide to the metrics, methods, and measurements of web performance in 2023. If you run a website, this guide has all the fundamental i... Read more »
Google Analytics 4 Has Me So Frustrated, We Built Our Own Analytics Service

Google Analytics 4 Has Me So Frustrated, We Built Our Own Analytics Service

Google Analytics was the go-to analytics tool. It set the standard, we all learned on it, and we all used it. But Google Analytics 4? It’s a nightmare. I’ve ... Read more »
Our Super Friendly AI Sloth that Analyzes Your Observability Data

Our Super Friendly AI Sloth that Analyzes Your Observability Data

Seems like everyone is building a ChatGPT thing right now, doesn’t it? Well we are too! Inspired by so many others, we decided to see what AI could do with o... Read more »
Expanding Our Vision: Unifying Client-Side Observability Data

Expanding Our Vision: Unifying Client-Side Observability Data

In 2021, we started Request Metrics as a simple and developer-friendly service to measure and improve web performance. We built an incredible platform that d... Read more »
How to Use wp_redirect in WordPress

How to Use wp_redirect in WordPress

You can use the wp_redirect function to initiate a redirect at different points on your WordPress site. And in this post, I’ll teach you how to use this func... Read more »
Svelte vs. React: Which is Better for Performance?

Svelte vs. React: Which is Better for Performance?

You can hardly even talk about web development without mentioning JavaScript. Because of its popularity, JavaScript has given birth to several frameworks and... Read more »
Measuring Web Performance in 2023: The Definitive Guide

Measuring Web Performance in 2023: The Definitive Guide

This is the complete guide to the metrics, methods, and measurements of web performance in 2023. If you run a website, this guide has all the fundamental i... Read more »
High Performance Images: 2023 Guide

High Performance Images: 2023 Guide

Images engage users, drive clicks, and generally make everything better–except performance. Images are giant blobs of bytes that are usually the slowest par... Read more »
CSS Image Effects: A Detailed Guide

CSS Image Effects: A Detailed Guide

Pictures speak louder than words. When you’re a web developer, the pictures or images on your website can speak even louder, in a number of different ways. I... Read more »
Explaining Performance to Non-Technical Stakeholders

Explaining Performance to Non-Technical Stakeholders

Whether you’re an e-commerce company, a SaaS provider, or a content publisher, understanding the performance of your website is important to everyone on the ... Read more »
Audit Google Ad Performance With Lighthouse

Audit Google Ad Performance With Lighthouse

Implementing Google Ads can be complicated. If done incorrectly, it negatively impacts your website’s performance. Fortunately, there is a new Google Light... Read more »
How To Read Flame Charts and Percentiles

How To Read Flame Charts and Percentiles

Charting can be complicated and intimidating, especially when dealing with web performance data, flame charts, and percentiles. There is so much data crammed... Read more »
Google Ads Are Slowing You Down

Google Ads Are Slowing You Down

Google has a well earned reputation for speed. At least on their own sites. It’s an entirely different story when it comes to their ad network. Google ads ... Read more »
See Current Core Web Vitals with Chrome

See Current Core Web Vitals with Chrome

Google is using Core Web Vitals as a factor in search results rankings. They’ve also found that improving Core Web Vitals can lead to increased traffic, sale... Read more »
Optimizing Static HTML And Images With Webpack

Optimizing Static HTML And Images With Webpack

Webpack is great for building JavaScript applications, but did you know it can optimize static HTML assets too? In this article, we use Webpack to process HT... Read more »
Optimizing Images for Web Performance with NGINX

Optimizing Images for Web Performance with NGINX

Images are a constant source of pain when developing websites. There are many formats and resolutions a developer must consider in order to maximize web per... Read more »
Fast Inline Images With React and Webpack

Fast Inline Images With React and Webpack

Webpack is great for building React applications, but did you know it can help you optimize app performance too? Webpack can automatically inline image data,... Read more »
5 Tips To Make Google Fonts Faster

5 Tips To Make Google Fonts Faster

Google Fonts is a fantastic tool for web designers and developers, but it is sometimes one of the slowest resources on your website. It’s frustrating and iro... Read more »
Using Brotli Compression in NGINX

Using Brotli Compression in NGINX

Brotli is gaining steam as the compression algorithm du jour for high performance websites. Created back in 2013 by Google to decrease the size of WOFF files... Read more »
HTTP/3 is Fast

HTTP/3 is Fast

HTTP/3 is here, and it’s a big deal for web performance. See just how much faster it makes websites! Read more »
Using HTTP Caching

Using HTTP Caching

The fastest website is the website that is already loaded, and that’s exactly what we can do with HTTP caching. HTTP caching lets web browsers reuse of previ... Read more »
Synthetic Testing and Real User Monitoring

Synthetic Testing and Real User Monitoring

Synthetic Testing and Real User Monitoring are the most important tools in your performance toolbox. But they do different things and are useful at different... Read more »
Advertising's Performance Tradeoffs

Advertising's Performance Tradeoffs

Advertising is everywhere on the web and users have noticed. More than 40% of internet users block ads. Are these users sticking it to the man or just tired ... Read more »
Fix Your First Contentful Paint (FCP): Cheat Sheet

Fix Your First Contentful Paint (FCP): Cheat Sheet

Are slow FCP scores getting you down? Worried that website performance is frustrating your users and hurting your SEO rankings? This FCP cheat sheet has all... Read more »
Using First Contentful Paint (FCP)

Using First Contentful Paint (FCP)

First Contentful Paint, or FCP, measures the time take to render the first element of a webpage. It’s a modern, user-centric measurement of how fast users s... Read more »
Tutorial: Monitoring Your Core Web Vitals

Tutorial: Monitoring Your Core Web Vitals

Web performance used to be easy. You’d time how long a page takes to load, easy. But the rise of client-side JavaScript has introduced bold new ways for web... Read more »
How Hacker News Crushed DavidWalshBlog

How Hacker News Crushed DavidWalshBlog

Earlier this month, David’s heartfelt posting about leaving Mozilla made the front page of Hacker News. Traffic increased by 800% to his already-busy website... Read more »
The Limitations of Lighthouse

The Limitations of Lighthouse

Google Lighthouse helps you identify page performance issues. It generates an overall performance “score” to make you feel good (or bad) about your site’s sp... Read more »
Web Performance Profiling: Instacart.com

Web Performance Profiling: Instacart.com

Grocery shopping is tedious and time consuming. In search of a more streamlined experience, I decided to try Instacart. Unfortunately, using their site is ... Read more »
Vital Web Performance

Vital Web Performance

I hate slow websites. They are annoying to use and frustrating to work on. But what does it mean to be “slow”? It used to be waiting for document load. Then ... Read more »
Web Performance Profiling: Google.com

Web Performance Profiling: Google.com

How is Google so fast? It’s so fast we take it for granted. It feels instant from the time you search to when results are displayed. What can we learn abou... Read more »
Measuring First Input Delay (FID)

Measuring First Input Delay (FID)

First Input Delay (FID) measures how long the browser took to respond to the first user input event. It’s one of several Core Web Vital metrics that measure ... Read more »
Web Performance Profiling: Nike.com

Web Performance Profiling: Nike.com

Google has long used website performance as a ranking criteria for search results. Despite the importance of page experience for SEO, many sites still suffe... Read more »
Privacy and Ethical Web Analytics

Privacy and Ethical Web Analytics

Web analytics is often based on invasively collecting and aggregating user data. But web analytics doesn’t have to be an invasion of privacy. A growing movem... Read more »
Measuring Largest Contentful Paint (LCP)

Measuring Largest Contentful Paint (LCP)

Largest Contentful Paint (LCP) is a measurement of how long the largest element on the page takes to render. It’s one of several Web Vital metrics that measu... Read more »
Fastest News: Best Performing News Website

Fastest News: Best Performing News Website

News teams often compete to break the story first. We think they should also compete on being the first to load their website. Let’s apply our web performanc... Read more »
Measuring Cumulative Layout Shift (CLS)

Measuring Cumulative Layout Shift (CLS)

Cumulative Layout Shift (CLS), sometimes known as jank, is a measurement of how much elements move due to late-rendered content. You can think of it as a mea... Read more »
Breaking Out of Webpack Based Build Chains

Breaking Out of Webpack Based Build Chains

JavaScript build chains have gotten outrageously complicated. Let’s create one that isn’t. Request Metrics monitors how real users experience the performance... Read more »
Using the Beacon API

Using the Beacon API

We need to capture performance data as the user is leaving the page. The Beacon gives us a reliable way to do that. Users are so annoying! There they go, lea... Read more »
Using NGINX as a Queue for JSON Data

Using NGINX as a Queue for JSON Data

We need a queue to push our incoming performance data to. What we have is NGINX. Can we use NGINX and a custom log format to create a poor man’s queue? You b... Read more »
Episode 17: User Sign Up and Simple Access Control

Episode 17: User Sign Up and Simple Access Control

Users can’t actually sign up for an account. Today we fix that. Request Metrics won’t be very successful if users can’t sign up! We recently completed cookie... Read more »
Episode 16: Using Redis for Distributed User Sessions in ASP.NET Core

Episode 16: Using Redis for Distributed User Sessions in ASP.NET Core

We need distributed session state because load balancing with sticky sessions is whack. Spoiler: We DON’T roll it ourselves. ASP.NET session storage is usefu... Read more »
Episode 15: Simple Cookie Based Authentication in ASP.NET Core

Episode 15: Simple Cookie Based Authentication in ASP.NET Core

ASP.Net Core Identity is too magical. Will rolling authentication ourselves finally catch up to us? There are as many ways to set up authentication as there ... Read more »
Episode 14: Storing User Data In Redis

Episode 14: Storing User Data In Redis

Redis only supports a handful of data types. Our data model has to fit within them. Are we crazy for trying this? It’s time to think about the data model for... Read more »
Episode 13: Testing In .NET Core Using NUnit

Episode 13: Testing In .NET Core Using NUnit

Testing framework arguments are almost as bad as tabs vs spaces. We’ve definitely picked the right one though. We’re professionals. We’ve started writing app... Read more »
Episode 12: Tweaking Systemd Services With Ansible

Episode 12: Tweaking Systemd Services With Ansible

We thought we were done with infrastructure work. We were wrong. Just as we’ve started work on application code, it turns out our server configuration needs ... Read more »
Episode 11: Connecting to Redis in .NET Core 3.1

Episode 11: Connecting to Redis in .NET Core 3.1

We’ve finally finished screwing around with basic groundwork. Today we start writing actually useful application code! First, can we connect to Redis? Now we... Read more »
Episode 10: Installing Redis Using An Ansible Galaxy Role

Episode 10: Installing Redis Using An Ansible Galaxy Role

A pre-built playbook from Ansible Galaxy lets us easily install Redis. (Even we don’t re-invent the wheel every time.) The Request Metrics application will u... Read more »
Episode 9: Running ASP.NET Core Applications Using Systemd and Ansible

Episode 9: Running ASP.NET Core Applications Using Systemd and Ansible

A web application isn’t much use if it isn’t running. We’ll hand in our neckbeard cards and copy+paste our way out of the problem. Last episode, we configure... Read more »
Episode 8: Using Ansible to Configure NGINX for ASP.NET Core

Episode 8: Using Ansible to Configure NGINX for ASP.NET Core

It’s best practice for ASP.NET Core applications to have a “real” webserver in front of them. We’ll configure NGINX for the job using Ansible. We don’t hate ... Read more »
Episode 7: Using Ansible Roles for Common Linux Settings

Episode 7: Using Ansible Roles for Common Linux Settings

Being Linux, some tweaks are needed right out of the box. Since we aren’t proper neckbeards we rely on Ansible to ensure we get them right for each new machi... Read more »
Episode 6: Buying an SSL Certificate

Episode 6: Buying an SSL Certificate

How to buy a wildcard SSL certificate like grumpy old men. How to buy a wildcard SSL certificate like grumpy old men. While there are other options like Let’... Read more »
Episode 5: Let's Encrypt? Let's Not.

Episode 5: Let's Encrypt? Let's Not.

We need a SSL certificate for our new site. Let’s Encrypt makes it easy, right? Actually, it’s complicated. SSL support is table stakes for any modern websit... Read more »
Episode 4: Deploying Code to Linux From TeamCity

Episode 4: Deploying Code to Linux From TeamCity

We setup TeamCity to deploy the latest build to Linux using SSH. TeamCity is so slick, it can make anyone look like a wizard. Even us! We’re ready to deploy ... Read more »
Episode 3.5: Basic Ansible With SSH Keys

Episode 3.5: Basic Ansible With SSH Keys

We finally use our new SSH key to provision our Linux dev server with Ansible. Witness the “Hello World” of Ansible setups. Now that we have a SSH key, we ca... Read more »
Episode 3: SSH Keys For Server Authentication

Episode 3: SSH Keys For Server Authentication

We create a new SSH key to use for authentication to a Linux dev server. We’re rather unhip so we do it all from Windows. In the previous video, we created a... Read more »
Episode 2: Building the Code

Episode 2: Building the Code

We set up a repeatable CI build for our new .NET Core project so we can pretend we’re professionals. We’re old and crotchety though so we still use TeamCity ... Read more »
Episode 1: File->New Project

Episode 1: File->New Project

Every journey begins with a single step. We wade through the myriad options of creating a new .NET Core project in 2020. We just make it look harder than it ... Read more »
Episode 0: Introducing Request Metrics!

Episode 0: Introducing Request Metrics!

Announcing Request Metrics, a new tool from the team who built TrackJS. Request Metrics is a web performance tool that records how fast your production Page ... Read more »