<!DOCTYPE html><html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Tim Kadlec</title><meta name="description" content="Tim Kadlec writes about performance, product management, and the web."><link rel="alternate" type="application/rss+xml" title="Tim Kadlec - All Posts" href="/atom.xml"><link rel="alternate" type="application/rss+xml" title="Tim Kadlec - Writing" href="/remembers/atom.xml"><link rel="alternate" type="application/rss+xml" title="Tim Kadlec - Links" href="/saved/atom.xml"><link rel="icon" type="image/x-icon" href="/favicon.ico"><link rel="stylesheet" href="/_astro/Base.D5E6Z3tN.css">
<style>.post-list[data-astro-cid-nni2rj4u]{list-style:none}.post-item[data-astro-cid-nni2rj4u]{padding-block:var(--space-xl);border-bottom:1px solid var(--color-border)}.post-item[data-astro-cid-nni2rj4u]:first-child{padding-top:var(--space-xl)}.post-item--post[data-astro-cid-nni2rj4u] h2[data-astro-cid-nni2rj4u]{font-size:var(--text-2xl);margin-top:var(--space-xs)}.post-item--post[data-astro-cid-nni2rj4u] h2[data-astro-cid-nni2rj4u] a[data-astro-cid-nni2rj4u]{color:var(--color-text);text-decoration:none}.post-item--post[data-astro-cid-nni2rj4u] h2[data-astro-cid-nni2rj4u] a[data-astro-cid-nni2rj4u]:hover{color:var(--color-accent)}.post-tags[data-astro-cid-nni2rj4u]{display:flex;flex-wrap:wrap;gap:var(--space-sm);list-style:none;margin-top:var(--space-sm)}.post-tags[data-astro-cid-nni2rj4u] a[data-astro-cid-nni2rj4u]{font-family:var(--font-heading);font-size:.75rem;text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-secondary);text-decoration:none}.post-tags[data-astro-cid-nni2rj4u] a[data-astro-cid-nni2rj4u]:hover{color:var(--color-accent)}.post-item--link[data-astro-cid-nni2rj4u]+.post-item--link[data-astro-cid-nni2rj4u]{margin-top:var(--space-md)}.post-item--link[data-astro-cid-nni2rj4u] h2[data-astro-cid-nni2rj4u]{font-size:var(--text-lg);margin-top:var(--space-xs)}.post-item--link[data-astro-cid-nni2rj4u] h2[data-astro-cid-nni2rj4u] a[data-astro-cid-nni2rj4u]{color:var(--color-text);text-decoration:none}.post-item--link[data-astro-cid-nni2rj4u] h2[data-astro-cid-nni2rj4u] a[data-astro-cid-nni2rj4u]:hover{color:var(--color-accent)}.external-link[data-astro-cid-nni2rj4u]{display:inline-flex;align-items:baseline;gap:.35em}.external-icon[data-astro-cid-nni2rj4u]{display:inline;flex-shrink:0;position:relative;top:.1em}.link-body[data-astro-cid-nni2rj4u]{margin-top:var(--space-md);font-size:var(--text-base);line-height:var(--leading-normal);color:var(--color-text)}.link-body[data-astro-cid-nni2rj4u] p+p{margin-top:var(--space-md)}.link-body[data-astro-cid-nni2rj4u] ul,.link-body[data-astro-cid-nni2rj4u] ol{padding-left:var(--space-xl)}.link-body[data-astro-cid-nni2rj4u] li+li{margin-top:var(--space-xs)}.link-body[data-astro-cid-nni2rj4u] blockquote{border-left:3px solid var(--color-accent);padding-left:var(--space-lg);margin-block:var(--space-md);font-style:italic;color:var(--color-text-secondary)}.link-body[data-astro-cid-nni2rj4u] a{color:var(--color-accent)}.link-body[data-astro-cid-nni2rj4u] a:hover{color:var(--color-accent-hover)}.permalink[data-astro-cid-nni2rj4u]{display:inline-block;margin-top:var(--space-sm);font-family:var(--font-heading);font-size:var(--text-sm);color:var(--color-text-secondary);text-decoration:none;opacity:.6}.permalink[data-astro-cid-nni2rj4u]:hover{color:var(--color-accent);opacity:1}.post-item--review[data-astro-cid-nni2rj4u] h2[data-astro-cid-nni2rj4u]{font-size:var(--text-lg);margin-top:var(--space-xs)}.post-item--review[data-astro-cid-nni2rj4u] h2[data-astro-cid-nni2rj4u] a[data-astro-cid-nni2rj4u]{color:var(--color-text);text-decoration:none}.post-item--review[data-astro-cid-nni2rj4u] h2[data-astro-cid-nni2rj4u] a[data-astro-cid-nni2rj4u]:hover{color:var(--color-accent)}.post-type-label[data-astro-cid-nni2rj4u]{display:inline-block;text-transform:uppercase;letter-spacing:.06em;font-family:var(--font-heading);font-weight:600;font-size:.7rem;color:var(--color-accent);margin-bottom:var(--space-xs)}time[data-astro-cid-nni2rj4u]{font-family:var(--font-heading);font-size:var(--text-sm);color:var(--color-text-secondary)}
.intro[data-astro-cid-j7pv25f6]{padding-block:var(--space-3xl);border-bottom:1px solid var(--color-border)}.intro-content[data-astro-cid-j7pv25f6]{display:flex;align-items:center;gap:var(--space-2xl)}.intro-text[data-astro-cid-j7pv25f6]{flex:1}.intro[data-astro-cid-j7pv25f6] h1[data-astro-cid-j7pv25f6]{font-size:var(--text-2xl);margin-bottom:var(--space-sm)}.intro[data-astro-cid-j7pv25f6] p[data-astro-cid-j7pv25f6]{font-size:var(--text-lg);line-height:var(--leading-relaxed);max-width:38rem;color:var(--color-text-secondary)}.intro-sketch[data-astro-cid-j7pv25f6]{flex-shrink:0;width:200px;height:auto}@media(max-width:600px){.intro-content[data-astro-cid-j7pv25f6]{flex-direction:column-reverse;align-items:flex-start;gap:var(--space-lg)}.intro-sketch[data-astro-cid-j7pv25f6]{width:65vw;max-width:225px}}.recent-posts[data-astro-cid-j7pv25f6]{padding-top:var(--space-xl)}.see-all[data-astro-cid-j7pv25f6]{margin-top:var(--space-xl);font-family:var(--font-heading);font-size:var(--text-sm);text-transform:uppercase;letter-spacing:.05em}
</style></head> <body> <header class="site-header" data-astro-cid-3ef6ksr2> <div class="container container--wide header-inner" data-astro-cid-3ef6ksr2> <a href="/" class="site-name" data-astro-cid-3ef6ksr2>Tim Kadlec</a> <nav aria-label="Main navigation" data-open="false" data-astro-cid-3ef6ksr2> <button class="nav-toggle" aria-expanded="false" aria-controls="nav-menu" data-astro-cid-3ef6ksr2> <span class="sr-only" data-astro-cid-3ef6ksr2>Menu</span> <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" data-astro-cid-3ef6ksr2> <line x1="3" y1="6" x2="21" y2="6" data-astro-cid-3ef6ksr2></line> <line x1="3" y1="12" x2="21" y2="12" data-astro-cid-3ef6ksr2></line> <line x1="3" y1="18" x2="21" y2="18" data-astro-cid-3ef6ksr2></line> </svg> </button> <ul id="nav-menu" role="list" data-astro-cid-3ef6ksr2> <li data-astro-cid-3ef6ksr2> <a href="/remembers/" data-astro-cid-3ef6ksr2> Writing </a> </li><li data-astro-cid-3ef6ksr2> <a href="/speaking/" data-astro-cid-3ef6ksr2> Speaking </a> </li><li data-astro-cid-3ef6ksr2> <a href="/about/" data-astro-cid-3ef6ksr2> About </a> </li> <li data-astro-cid-3ef6ksr2> <a href="/atom.xml" class="rss-link" aria-label="RSS Feed" data-astro-cid-3ef6ksr2> <svg width="18" height="18" viewBox="0 0 24 24" fill="currentColor" data-astro-cid-3ef6ksr2> <circle cx="6.18" cy="17.82" r="2.18" data-astro-cid-3ef6ksr2></circle> <path d="M4 4.44v2.83c7.03 0 12.73 5.7 12.73 12.73h2.83c0-8.59-6.97-15.56-15.56-15.56zm0 5.66v2.83c3.9 0 7.07 3.17 7.07 7.07h2.83c0-5.47-4.43-9.9-9.9-9.9z" data-astro-cid-3ef6ksr2></path> </svg> </a> </li> </ul> </nav> </div> </header>  <script type="module">const t=document.querySelector(".site-header nav"),e=document.querySelector(".nav-toggle");e&&t&&e.addEventListener("click",()=>{const n=t.getAttribute("data-open")==="true";t.setAttribute("data-open",String(!n)),e.setAttribute("aria-expanded",String(!n))});</script> <main>  <div class="container" data-astro-cid-j7pv25f6> <section class="intro" data-astro-cid-j7pv25f6> <div class="intro-content" data-astro-cid-j7pv25f6> <div class="intro-text" data-astro-cid-j7pv25f6> <h1 data-astro-cid-j7pv25f6>Hey, I'm Tim.</h1> <p data-astro-cid-j7pv25f6>
I'm a product manager at Cloudflare, working on making the web faster. I write here about observability, web performance, product management, and whatever else catches my attention.
</p> </div> <img src="/images/tim-sketch.png" alt="Pencil sketch of Tim Kadlec" class="intro-sketch" width="200" height="182" data-astro-cid-j7pv25f6> </div> </section> <section class="recent-posts" data-astro-cid-j7pv25f6> <ul class="post-list" role="list" data-astro-cid-nni2rj4u> <li class="post-item post-item--post" data-astro-cid-nni2rj4u> <article data-astro-cid-nni2rj4u>  <time datetime="2026-05-18T20:39:32.000Z" data-astro-cid-nni2rj4u>May 18, 2026</time> <h2 data-astro-cid-nni2rj4u> <a href="/remembers/2026/05/losing-focus/" data-astro-cid-nni2rj4u>Losing Focus</a> </h2>   <ul class="post-tags" role="list" data-astro-cid-nni2rj4u> <li data-astro-cid-nni2rj4u><a href="/tags/ai/" data-astro-cid-nni2rj4u>ai</a></li><li data-astro-cid-nni2rj4u><a href="/tags/productivity/" data-astro-cid-nni2rj4u>productivity</a></li><li data-astro-cid-nni2rj4u><a href="/tags/engineering/" data-astro-cid-nni2rj4u>engineering</a></li> </ul> </article> </li><li class="post-item post-item--link" data-astro-cid-nni2rj4u> <article data-astro-cid-nni2rj4u>  <time datetime="2026-05-17T00:55:08.677Z" data-astro-cid-nni2rj4u>May 17, 2026</time> <h2 data-astro-cid-nni2rj4u> <a href="https://2ality.com/" class="external-link" data-astro-cid-nni2rj4u> 2ality blog: temporarily offline <svg class="external-icon" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" data-astro-cid-nni2rj4u> <path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6" data-astro-cid-nni2rj4u></path> <polyline points="15 3 21 3 21 9" data-astro-cid-nni2rj4u></polyline> <line x1="10" y1="14" x2="21" y2="3" data-astro-cid-nni2rj4u></line> </svg> </a> </h2> <div class="link-body" data-astro-cid-nni2rj4u><p>Seeing a prominent voice in the web community for years go dark because of AI is depressing.</p>
<blockquote><p>Two things happened recently:</p></blockquote>
<blockquote><p>The income from my book sales went from being enough for me to live off (2024) to zero (2026).</p></blockquote>
<blockquote><p>The traffic to my blog and my books (which were free to read online) increased beyond what I can currently afford. Virtually all of it comes from AI crawlers, so there is no ad income.</p></blockquote>
<p>Finding a sustainable way of compensating authors for their work in this world where bots are scraping it all so aggressively for their own commercial gain is one of the most important problems to solve on the web.</p></div> <a href="/saved/2026/05/2ality-blog-temporarily-offline/" class="permalink" data-astro-cid-nni2rj4u>&infin; Permalink</a>  </article> </li><li class="post-item post-item--link" data-astro-cid-nni2rj4u> <article data-astro-cid-nni2rj4u>  <time datetime="2024-12-02T14:26:50.993Z" data-astro-cid-nni2rj4u>December 2, 2024</time> <h2 data-astro-cid-nni2rj4u> <a href="https://calendar.perfplanet.com/2024/goodharts-law-in-action-3-webperf-examples/" class="external-link" data-astro-cid-nni2rj4u> Web Performance Calendar » Goodhart’s law in action: 3 WebPerf examples <svg class="external-icon" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" data-astro-cid-nni2rj4u> <path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6" data-astro-cid-nni2rj4u></path> <polyline points="15 3 21 3 21 9" data-astro-cid-nni2rj4u></polyline> <line x1="10" y1="14" x2="21" y2="3" data-astro-cid-nni2rj4u></line> </svg> </a> </h2> <div class="link-body" data-astro-cid-nni2rj4u><blockquote><p>Real world examples of how over-optimizing for metrics can be at odds with performance.</p></blockquote>
<p>Good cautionary reminder of Goodhart's law. This is why it's so important to choose your primary metrics with care, and to make sure everyone understands why.</p></div> <a href="/saved/2024/12/web-performance-calendar-goodhart-s-law-in-action-3-webperf-examples/" class="permalink" data-astro-cid-nni2rj4u>&infin; Permalink</a>  </article> </li><li class="post-item post-item--link" data-astro-cid-nni2rj4u> <article data-astro-cid-nni2rj4u>  <time datetime="2024-12-02T14:24:30.765Z" data-astro-cid-nni2rj4u>December 2, 2024</time> <h2 data-astro-cid-nni2rj4u> <a href="https://csswizardry.com/2024/12/a-layered-approach-to-speculation-rules/" class="external-link" data-astro-cid-nni2rj4u> A Layered Approach to Speculation Rules – Harry Roberts – Web Performance Consultant <svg class="external-icon" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" data-astro-cid-nni2rj4u> <path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6" data-astro-cid-nni2rj4u></path> <polyline points="15 3 21 3 21 9" data-astro-cid-nni2rj4u></polyline> <line x1="10" y1="14" x2="21" y2="3" data-astro-cid-nni2rj4u></line> </svg> </a> </h2> <div class="link-body" data-astro-cid-nni2rj4u><p>I love when standards, like Speculation Rules, are built in a way where there's a natural upgrade path. It's great for helping companies to gradually roll out support, but it also allows for some very smart optimizations, like what Harry does here pairing prefetch and prerender rules together.</p></div> <a href="/saved/2024/12/a-layered-approach-to-speculation-rules-harry-roberts-web-performance-consultant/" class="permalink" data-astro-cid-nni2rj4u>&infin; Permalink</a>  </article> </li><li class="post-item post-item--link" data-astro-cid-nni2rj4u> <article data-astro-cid-nni2rj4u>  <time datetime="2024-10-21T13:36:32.517Z" data-astro-cid-nni2rj4u>October 21, 2024</time> <h2 data-astro-cid-nni2rj4u> <a href="https://nolanlawson.com/2024/10/20/why-im-skeptical-of-rewriting-javascript-tools-in-faster-languages/" class="external-link" data-astro-cid-nni2rj4u> Why I’m skeptical of rewriting JavaScript tools in “faster” languages | Read the Tea Leaves <svg class="external-icon" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" data-astro-cid-nni2rj4u> <path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6" data-astro-cid-nni2rj4u></path> <polyline points="15 3 21 3 21 9" data-astro-cid-nni2rj4u></polyline> <line x1="10" y1="14" x2="21" y2="3" data-astro-cid-nni2rj4u></line> </svg> </a> </h2> <div class="link-body" data-astro-cid-nni2rj4u><p>Good food for thought here from Nolan Lawson about rewriting JS tools in "faster" languages.</p>
<p>The point that a rewrite is often faster simply because it's a rewrite is a very valid one—over time we add more features/functionality to our code and it starts to have a cost not just on perf, but on maintainability as well. A rewrite lets us start with those learnings already in mind.</p>
<p>But my favorite point is around the accessibility of JavaScript tools built in JavaScript:</p>
<blockquote><p>For years, we’ve had both library authors and library consumers in the JavaScript ecosystem largely using JavaScript. I think we take for granted what this enables.</p></blockquote>
<p>I wrote about this <a href="https://css-tricks.com/oh-the-places-javascript-will-go/">a few years back</a>, but having JavaScript available on the front-end, back-end, on the edge, and in build tools is a powerful way to let developers extend their reach into different part of the tech stack and any decision to move away from that needs to be VERY carefully considered.</p></div> <a href="/saved/2024/10/why-i-m-skeptical-of-rewriting-javascript-tools-in-faster-languages-read-the-tea-leaves/" class="permalink" data-astro-cid-nni2rj4u>&infin; Permalink</a>  </article> </li><li class="post-item post-item--link" data-astro-cid-nni2rj4u> <article data-astro-cid-nni2rj4u>  <time datetime="2024-10-21T13:34:59.847Z" data-astro-cid-nni2rj4u>October 21, 2024</time> <h2 data-astro-cid-nni2rj4u> <a href="https://developer.chrome.com/blog/paint-holding" class="external-link" data-astro-cid-nni2rj4u> Paint Holding - reducing the flash of white on same-origin navigations <svg class="external-icon" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" data-astro-cid-nni2rj4u> <path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6" data-astro-cid-nni2rj4u></path> <polyline points="15 3 21 3 21 9" data-astro-cid-nni2rj4u></polyline> <line x1="10" y1="14" x2="21" y2="3" data-astro-cid-nni2rj4u></line> </svg> </a> </h2> <div class="link-body" data-astro-cid-nni2rj4u><p>Oldie but a goodie describing Chrome's "Paint Holding" optimization.</p></div> <a href="/saved/2024/10/paint-holding-in-chrome/" class="permalink" data-astro-cid-nni2rj4u>&infin; Permalink</a>  </article> </li><li class="post-item post-item--post" data-astro-cid-nni2rj4u> <article data-astro-cid-nni2rj4u>  <time datetime="2024-07-24T09:33:58.000Z" data-astro-cid-nni2rj4u>July 24, 2024</time> <h2 data-astro-cid-nni2rj4u> <a href="/remembers/2024/07/what-to-expect-when-optimizing/" data-astro-cid-nni2rj4u>What to Expect When You&#39;re Optimizing</a> </h2>   <ul class="post-tags" role="list" data-astro-cid-nni2rj4u> <li data-astro-cid-nni2rj4u><a href="/tags/performance/" data-astro-cid-nni2rj4u>performance</a></li><li data-astro-cid-nni2rj4u><a href="/tags/optimizations/" data-astro-cid-nni2rj4u>optimizations</a></li><li data-astro-cid-nni2rj4u><a href="/tags/process/" data-astro-cid-nni2rj4u>process</a></li> </ul> </article> </li><li class="post-item post-item--post" data-astro-cid-nni2rj4u> <article data-astro-cid-nni2rj4u>  <time datetime="2023-07-26T09:33:58.000Z" data-astro-cid-nni2rj4u>July 26, 2023</time> <h2 data-astro-cid-nni2rj4u> <a href="/remembers/2023/07/introducing-perfwork/" data-astro-cid-nni2rj4u>Introducing perfwork</a> </h2>   <ul class="post-tags" role="list" data-astro-cid-nni2rj4u> <li data-astro-cid-nni2rj4u><a href="/tags/hiring/" data-astro-cid-nni2rj4u>hiring</a></li><li data-astro-cid-nni2rj4u><a href="/tags/product/" data-astro-cid-nni2rj4u>product</a></li><li data-astro-cid-nni2rj4u><a href="/tags/jobs/" data-astro-cid-nni2rj4u>jobs</a></li> </ul> </article> </li><li class="post-item post-item--post" data-astro-cid-nni2rj4u> <article data-astro-cid-nni2rj4u>  <time datetime="2023-06-30T09:33:58.000Z" data-astro-cid-nni2rj4u>June 30, 2023</time> <h2 data-astro-cid-nni2rj4u> <a href="/remembers/2023/06/single-visionary-fairytale/" data-astro-cid-nni2rj4u>The Single Visionary Fairytale</a> </h2>   <ul class="post-tags" role="list" data-astro-cid-nni2rj4u> <li data-astro-cid-nni2rj4u><a href="/tags/user feedback/" data-astro-cid-nni2rj4u>user feedback</a></li><li data-astro-cid-nni2rj4u><a href="/tags/product/" data-astro-cid-nni2rj4u>product</a></li><li data-astro-cid-nni2rj4u><a href="/tags/data/" data-astro-cid-nni2rj4u>data</a></li> </ul> </article> </li><li class="post-item post-item--post" data-astro-cid-nni2rj4u> <article data-astro-cid-nni2rj4u>  <time datetime="2023-06-01T14:08:58.000Z" data-astro-cid-nni2rj4u>June 1, 2023</time> <h2 data-astro-cid-nni2rj4u> <a href="/remembers/2023/06/performance-is-not-a-checklist/" data-astro-cid-nni2rj4u>Performance Is Not a Checklist</a> </h2>   <ul class="post-tags" role="list" data-astro-cid-nni2rj4u> <li data-astro-cid-nni2rj4u><a href="/tags/user experience/" data-astro-cid-nni2rj4u>user experience</a></li><li data-astro-cid-nni2rj4u><a href="/tags/performance/" data-astro-cid-nni2rj4u>performance</a></li><li data-astro-cid-nni2rj4u><a href="/tags/web vitals/" data-astro-cid-nni2rj4u>web vitals</a></li> </ul> </article> </li><li class="post-item post-item--link" data-astro-cid-nni2rj4u> <article data-astro-cid-nni2rj4u>  <time datetime="2023-05-17T19:55:15.364Z" data-astro-cid-nni2rj4u>May 17, 2023</time> <h2 data-astro-cid-nni2rj4u> <a href="https://chriscoyier.net/2023/05/17/tracking-blocked-scripts/" class="external-link" data-astro-cid-nni2rj4u> Tracking Blocked Scripts - Chris Coyier <svg class="external-icon" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" data-astro-cid-nni2rj4u> <path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6" data-astro-cid-nni2rj4u></path> <polyline points="15 3 21 3 21 9" data-astro-cid-nni2rj4u></polyline> <line x1="10" y1="14" x2="21" y2="3" data-astro-cid-nni2rj4u></line> </svg> </a> </h2> <div class="link-body" data-astro-cid-nni2rj4u><blockquote><p>So at first, it looked like about 10% of the BuySellAds scripts were being blocked. But after replacing how we were tracking the blocks with an internal service (just a little Redis counter), it was showing more like 28% of scripts being blocked.</p></blockquote></div> <a href="/saved/2023/05/tracking-blocked-scripts-chris-coyier/" class="permalink" data-astro-cid-nni2rj4u>&infin; Permalink</a>  </article> </li><li class="post-item post-item--link" data-astro-cid-nni2rj4u> <article data-astro-cid-nni2rj4u>  <time datetime="2023-05-17T19:50:26.716Z" data-astro-cid-nni2rj4u>May 17, 2023</time> <h2 data-astro-cid-nni2rj4u> <a href="https://medium.com/airbnb-engineering/improving-performance-with-http-streaming-ba9e72c66408" class="external-link" data-astro-cid-nni2rj4u> Improving Performance with HTTP Streaming | by Victor | The Airbnb Tech Blog | May, 2023 | Medium <svg class="external-icon" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" data-astro-cid-nni2rj4u> <path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6" data-astro-cid-nni2rj4u></path> <polyline points="15 3 21 3 21 9" data-astro-cid-nni2rj4u></polyline> <line x1="10" y1="14" x2="21" y2="3" data-astro-cid-nni2rj4u></line> </svg> </a> </h2> <div class="link-body" data-astro-cid-nni2rj4u><blockquote><p>Our experiments showed that Early Flush produced a flat reduction in First Contentful Paint (FCP) of around 100ms on every page tested, including the Airbnb homepage.</p></blockquote></div> <a href="/saved/2023/05/improving-performance-with-http-streaming-by-victor-the-airbnb-tech-blog-may-2023-medium/" class="permalink" data-astro-cid-nni2rj4u>&infin; Permalink</a>  </article> </li><li class="post-item post-item--link" data-astro-cid-nni2rj4u> <article data-astro-cid-nni2rj4u>  <time datetime="2023-05-11T01:15:59.538Z" data-astro-cid-nni2rj4u>May 11, 2023</time> <h2 data-astro-cid-nni2rj4u> <a href="https://ishadeed.com/article/css-text-wrap-balance/" class="external-link" data-astro-cid-nni2rj4u> CSS Text balancing with text-wrap:balance - Ahmad Shadeed <svg class="external-icon" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" data-astro-cid-nni2rj4u> <path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6" data-astro-cid-nni2rj4u></path> <polyline points="15 3 21 3 21 9" data-astro-cid-nni2rj4u></polyline> <line x1="10" y1="14" x2="21" y2="3" data-astro-cid-nni2rj4u></line> </svg> </a> </h2> <div class="link-body" data-astro-cid-nni2rj4u><p>A bunch of examples of how <code>text-wrap:balance</code> could be useful.</p>
<p>Could've used this just the other day, actually.</p></div> <a href="/saved/2023/05/css-text-balancing-with-text-wrap-balance-ahmad-shadeed/" class="permalink" data-astro-cid-nni2rj4u>&infin; Permalink</a>  </article> </li><li class="post-item post-item--link" data-astro-cid-nni2rj4u> <article data-astro-cid-nni2rj4u>  <time datetime="2023-05-03T14:54:24.479Z" data-astro-cid-nni2rj4u>May 3, 2023</time> <h2 data-astro-cid-nni2rj4u> <a href="https://adactio.com/journal/20154" class="external-link" data-astro-cid-nni2rj4u> Adactio: Journal—The intersectionality of web performance <svg class="external-icon" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" data-astro-cid-nni2rj4u> <path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6" data-astro-cid-nni2rj4u></path> <polyline points="15 3 21 3 21 9" data-astro-cid-nni2rj4u></polyline> <line x1="10" y1="14" x2="21" y2="3" data-astro-cid-nni2rj4u></line> </svg> </a> </h2> <div class="link-body" data-astro-cid-nni2rj4u><p>Jeremy discussing why performance isn't <em>just</em> about business, but actually has impact across several broad categories:</p>
<ul><li>Business</li>
<li>Sustainability</li>
<li>Inclusivity</li></ul>
<p>Naturally, I agree.</p></div> <a href="/saved/2023/05/adactio-journal-the-intersectionality-of-web-performance/" class="permalink" data-astro-cid-nni2rj4u>&infin; Permalink</a>  </article> </li><li class="post-item post-item--post" data-astro-cid-nni2rj4u> <article data-astro-cid-nni2rj4u>  <time datetime="2023-04-23T14:08:58.000Z" data-astro-cid-nni2rj4u>April 23, 2023</time> <h2 data-astro-cid-nni2rj4u> <a href="/remembers/2023/04/growing-contentful-gap/" data-astro-cid-nni2rj4u>The Growing &quot;Contentful&quot; Gap</a> </h2>   <ul class="post-tags" role="list" data-astro-cid-nni2rj4u> <li data-astro-cid-nni2rj4u><a href="/tags/chrome/" data-astro-cid-nni2rj4u>chrome</a></li><li data-astro-cid-nni2rj4u><a href="/tags/performance/" data-astro-cid-nni2rj4u>performance</a></li><li data-astro-cid-nni2rj4u><a href="/tags/web vitals/" data-astro-cid-nni2rj4u>web vitals</a></li> </ul> </article> </li><li class="post-item post-item--post" data-astro-cid-nni2rj4u> <article data-astro-cid-nni2rj4u>  <time datetime="2023-04-10T14:08:58.000Z" data-astro-cid-nni2rj4u>April 10, 2023</time> <h2 data-astro-cid-nni2rj4u> <a href="/remembers/2023/04/the-golden-rule-revisited/" data-astro-cid-nni2rj4u>The Performance Golden Rule Revisited</a> </h2>   <ul class="post-tags" role="list" data-astro-cid-nni2rj4u> <li data-astro-cid-nni2rj4u><a href="/tags/backend/" data-astro-cid-nni2rj4u>backend</a></li><li data-astro-cid-nni2rj4u><a href="/tags/frontend/" data-astro-cid-nni2rj4u>frontend</a></li><li data-astro-cid-nni2rj4u><a href="/tags/user experience/" data-astro-cid-nni2rj4u>user experience</a></li> </ul> </article> </li><li class="post-item post-item--post" data-astro-cid-nni2rj4u> <article data-astro-cid-nni2rj4u>  <time datetime="2023-04-05T14:08:58.000Z" data-astro-cid-nni2rj4u>April 5, 2023</time> <h2 data-astro-cid-nni2rj4u> <a href="/remembers/2023/04/returning-to-performance-consulting/" data-astro-cid-nni2rj4u>Returning to Performance Consulting</a> </h2>   <ul class="post-tags" role="list" data-astro-cid-nni2rj4u> <li data-astro-cid-nni2rj4u><a href="/tags/personal/" data-astro-cid-nni2rj4u>personal</a></li><li data-astro-cid-nni2rj4u><a href="/tags/consulting/" data-astro-cid-nni2rj4u>consulting</a></li><li data-astro-cid-nni2rj4u><a href="/tags/performance/" data-astro-cid-nni2rj4u>performance</a></li> </ul> </article> </li><li class="post-item post-item--link" data-astro-cid-nni2rj4u> <article data-astro-cid-nni2rj4u>  <time datetime="2023-03-31T13:32:18.885Z" data-astro-cid-nni2rj4u>March 31, 2023</time> <h2 data-astro-cid-nni2rj4u> <a href="https://www.jason.af/creativity-and-editing/" class="external-link" data-astro-cid-nni2rj4u> Kill Your Darlings: The Ugly Other Half of Creativity <svg class="external-icon" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" data-astro-cid-nni2rj4u> <path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6" data-astro-cid-nni2rj4u></path> <polyline points="15 3 21 3 21 9" data-astro-cid-nni2rj4u></polyline> <line x1="10" y1="14" x2="21" y2="3" data-astro-cid-nni2rj4u></line> </svg> </a> </h2> <div class="link-body" data-astro-cid-nni2rj4u><blockquote><p>Creativity happens in two stages: first, unbounded imagination; then — more importantly — ruthless editing.</p></blockquote>
<p>Loads of great advice in this post from Jason on the part of "ideas" that tends to get less attention: editing.</p>
<p>One of the ones that jumped out to me was his note about the importance of underutilizing people's time:</p>
<blockquote><p>On top of that, a healthy team is intentionally underutilized. This creates free time for chasing shiny things with low risk. A roadmap with this kind of slack built-in supports exploratory tinkering by defining a clear plan with clear boundaries: I know I need to complete these 5 tasks this week to keep us on track; I finish them by lunchtime Thursday; I now have a day and a half to do whatever I find exciting without hurting the overall strategic goals or slowing things down.</p></blockquote>
<p>What a healthy (and wise!) counter from the way most organizations tend to operate.a</p></div> <a href="/saved/2023/03/kill-your-darlings-the-ugly-other-half-of-creativity/" class="permalink" data-astro-cid-nni2rj4u>&infin; Permalink</a>  </article> </li><li class="post-item post-item--link" data-astro-cid-nni2rj4u> <article data-astro-cid-nni2rj4u>  <time datetime="2023-03-31T12:35:12.683Z" data-astro-cid-nni2rj4u>March 31, 2023</time> <h2 data-astro-cid-nni2rj4u> <a href="https://github.com/w3c/longtasks/blob/main/loaf-explainer.md" class="external-link" data-astro-cid-nni2rj4u> longtasks/loaf-explainer.md at main · w3c/longtasks · GitHub <svg class="external-icon" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" data-astro-cid-nni2rj4u> <path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6" data-astro-cid-nni2rj4u></path> <polyline points="15 3 21 3 21 9" data-astro-cid-nni2rj4u></polyline> <line x1="10" y1="14" x2="21" y2="3" data-astro-cid-nni2rj4u></line> </svg> </a> </h2> <div class="link-body" data-astro-cid-nni2rj4u><blockquote><p>All of the above are part of the same issue - a task is an incomplete and inaccurate cadence to measure main-thread blocking.</p></blockquote></div> <a href="/saved/2023/03/longtasks-loaf-explainer-md-at-main-w3c-longtasks-github/" class="permalink" data-astro-cid-nni2rj4u>&infin; Permalink</a>  </article> </li><li class="post-item post-item--post" data-astro-cid-nni2rj4u> <article data-astro-cid-nni2rj4u>  <time datetime="2023-03-22T14:33:58.000Z" data-astro-cid-nni2rj4u>March 22, 2023</time> <h2 data-astro-cid-nni2rj4u> <a href="/remembers/2023/03/safari-and-a-healthier-web/" data-astro-cid-nni2rj4u>Health Benefits of Browser Diversity</a> </h2>   <ul class="post-tags" role="list" data-astro-cid-nni2rj4u> <li data-astro-cid-nni2rj4u><a href="/tags/safari/" data-astro-cid-nni2rj4u>safari</a></li><li data-astro-cid-nni2rj4u><a href="/tags/ios/" data-astro-cid-nni2rj4u>ios</a></li><li data-astro-cid-nni2rj4u><a href="/tags/browsers/" data-astro-cid-nni2rj4u>browsers</a></li> </ul> </article> </li> </ul> <p class="see-all" data-astro-cid-j7pv25f6> <a href="/remembers/" data-astro-cid-j7pv25f6>See all posts &rarr;</a> </p> </section> </div>  </main> <footer class="site-footer" data-astro-cid-sz7xmlte> <div class="container" data-astro-cid-sz7xmlte> <p class="copyright" data-astro-cid-sz7xmlte>&copy; 2026 Tim Kadlec.</p> <p class="feeds" data-astro-cid-sz7xmlte>
If RSS is your sort of thing, you can subscribe to a few different feeds.
      The <a href="/atom.xml" data-astro-cid-sz7xmlte>main feed</a> has everything.
      There are also individual feeds for
<a href="/remembers/atom.xml" data-astro-cid-sz7xmlte>just posts</a>,
<a href="/saved/atom.xml" data-astro-cid-sz7xmlte>just links</a>, and
<a href="/read/atom.xml" data-astro-cid-sz7xmlte>just book reviews</a>.
</p> </div> </footer> <script type="module">"serviceWorker"in navigator&&navigator.serviceWorker.register("/sw.js",{scope:"/"});</script> </body> </html>