-
How to Monitor Cross-Origin Resource Performance
Browsers provide detailed performance information about every resource a webpage loads. Most of this information is hidden during cross-origin requests howev... Read more »
-
Improving Your Interaction to Next Paint (INP)
Interaction to Next Paint (INP) is the newest addition to Google’s Core Web Vital metrics. It measures how real users perceive the responsiveness of modern w... Read more »
-
Trying and failing and trying again
Starting software products is hard, and it’s easy to make mistakes. We’ve started a lot of products – and we’ve made a whole lot of mistakes along the way. B... Read more »
-
Frontend vs Backend Performance: Which is Slower?
Kent C Dodds made a claim on Twitter (X) that the “biggest performance problems are probably backend, not frontend related.” Is this true? Some websites have... Read more »
-
What is a 'Rage Click'?
You know that thing where you are so angry at a broken website that you furiously click that button until it does what you want? Yea, we all do that. It’s ca... Read more »
-
What Is Time to Interactive? A Comprehensive Guide
Website performance is critical to understand user experience and engagement, but there are so many different metrics! What do they all mean? Not to worry, d... Read more »
-
Announcing Custom Metadata Reports & Filters
We just released support for custom metadata in Request Metrics! Metadata allows you to describe your user, session, application, environment, account, A/B T... Read more »
-
Debugging a Slow Core Web Vital Score
A Request Metrics customer asked for some help troubleshooting poor scores on their Core Web Vitals, specifically the Largest Contentful Paint. I did a deep ... Read more »
-
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 Performance 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 »
-
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?
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 2024: 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: %YEAR% 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
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
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
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
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 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
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
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
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
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 »
-
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 here, and it’s a big deal for web performance. See just how much faster it makes websites! Read more »
-
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 previous... Read more »
-
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 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
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)
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
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
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
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
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
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
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)
Warning. First Input Delay (FID) was retired as a Core Web Vital in 2024 due to several shortcomings in measuring interactivity. It was replaced with Interac... Read more »
-
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
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)
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
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)
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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.
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
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
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
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
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
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!
Announcing Request Metrics, a new tool from the team who built TrackJS. Request Metrics is a real user monitoring performance tool that records how fast your... Read more »