RSSAmplifier

Blog

Kent C. Dodds Blog

The Kent C. Dodds Blog

kentcdodds.comRSS feed ↗212 posts

Latest posts

Implementing Hybrid Semantic + Lexical Search

Semantic search alone wasn't good enough. Here's how I improved search on kentcdodds.com through three rounds of iteration with Cursor and GPT-5.4, each time learning something that the previous design missed.

Simplifying Containers with Cloudflare Sandboxes

How I replaced a long-lived Cloudflare Container with a one-shot Cloudflare Sandbox, deleted most of the control-plane code, and let an agent do the heavy lifting in less than an hour of my own time.

Migrating to Workspaces and Nx

The interesting part of moving kentcdodds.com to npm workspaces was not the file moves. It was everything the file moves broke.

Offloading FFmpeg with Cloudflare

How I moved Call Kent podcast episode processing off my primary Fly.io app server and onto Cloudflare Queues and Containers: what broke, what I missed, and whether it was worth the complexity.

Building Semantic Search on my Content

I've added some pretty cool AI-powered features to kentcdodds.com and I want to tell you all about it.

Helping YOU ask ME questions with AI

Here's how I've made it easier for you to call into the Call Kent podcast without having to record yourself and also make yourself anonymous using AI.

How I used Cursor to Migrate Frameworks

I upgraded kentcdodds.com from Remix v2 to React Router v7 in a day with over 17k lines of code changed. Here's how I did it.

The Dow's Start on the Covenant Path

My experience sharing the gospel with Jeremiah and Beiyi Dow

2025 in Review

Looking back over my 2025 and looking forward to my 2026

The next chapter: EpicAI.pro

What I'm working on with AI education and why I think it's the future.

AI is taking your job

AI is changing how hiring works, and that makes in person connections even more important.

How I increased my visibility

Someone asked me this and here's my answer.

2023 in Review

A review of what happened in the life of Kent C. Dodds in 2023

Launching Epic Web

The story of how Epic Web came to be

Stop Being a Junior

Some advise for people who still consider themselves junior developers

RSC with Dan Abramov and Joe Savona Live Stream

I had a live streamed conversation with Joe Savona and Dan Abramov. Here's a summary of our discussion.

Fixing a Memory Leak in a Production Node.js App

How I found and fixed a memory leak on kentcdodds.com

2022 in Review

A review of what happened in the KCD world in 2022

My Car Accident

I was involved in a very bad car accident in 2022. Here's the story.

I Migrated from a Postgres Cluster to Distributed SQLite with LiteFS

Why and how I migrated from distributed postgres to distributed sqlite on kentcdodds.com

I'm building EpicWeb.dev

I've struck out on my own again to focus on my most ambitious project yet.

A review of my time at Remix

As I move on to my next adventure, I want to take this opportunity to review what I accomplished while at Remix.

Remix: The Yang to React's Yin

Remix fills the missing piece that all React web applications need: The Network Chasm

How I help you build better websites

I'm making a career move to more effectively help you make the web (and the world) better.

Why I Love Remix

I've written tens of thousands of lines of code with Remix and I want to tell you why I love using this framework.

The State Initializer Pattern

A simple pattern used in libraries like downshift and ReachUI to enable component/hook users to initialize your state and even reset it to that initial value.

How to React ⚛️

Let's see how learning React ⚛️ in the right order can make it less overwhelming.

Get a catch block error message with TypeScript

TypeScript forces you to acknowledge you can't know what was thrown making getting the error message a pain. Here's how you can manage it.

Building an awesome image loading experience

How Unsplash's blurred image loading works and why I did mine differently for a more excellent experience on my site.

How Remix makes CSS clashes predictable

Remix has this beautifully simple feature for CSS that I want to tell you all about.

Introducing the new kentcdodds.com

This site just experienced a huge rewrite and I want to show you around a bit.

How I built a modern website in 2021

I rewrote kentcdodds.com using the latest technologies and I want to talk about what I did.

How to use React Context effectively

How to create and expose React Context providers and consumers

Static vs Unit vs Integration vs E2E Testing for Frontend Apps

What these mean, why they matter, and why they don't

The Testing Trophy and Testing Classifications

How to interpret the testing trophy for optimal clarity

Array reduce vs chaining vs for loop

A comparison of different approaches to operating on an array

Don't Solve Problems, Eliminate Them

How eliminating problems can drastically simplify your codebases and life

Super Simple Start to Remix

The simplest distraction-free version of a remix app

Super Simple Start to ESModules in Node.js

All supported versions of Node.js support ESModules now. Here's how to get started using them.

JavaScript Pass By Value Function Parameters

How it works and how to work with it... and around it

How to write a Constrained Identity Function (CIF) in TypeScript

A handy advanced TypeScript pattern to increase your productivity.

How to optimize your context value

Why and how you can optimize your context provider's value to avoid performance issues

How to write a React Component in TypeScript

There are plenty of ways to do it, here's how I recommend typing React Components

TypeScript Function Syntaxes

The syntax for various functions and function types in TypeScript with simple examples.

Listify a JavaScript Array

Make a human readable list from an array in JavaScript.

Build vs Buy: Component Libraries edition

Some things to think about before you decide to create your own component library.

Using fetch with TypeScript

How to make HTTP requests with fetch and TypeScript

Wrapping React.useState with TypeScript

How to make a custom hook that wraps useState with TypeScript properly

Define function overload types with TypeScript

Have your JS expressiveness and type it too.

2020 in Review

An overview of what I accomplished in 2020 and a bit about my goals for 2021.