Advertisement · 728 × 90

Posts by Paul Irish

Yup.

5 days ago 5 0 1 0
A JSON file representing a source map. The code contains:

{
  "version": 3, // Always the integer 3
  "file": "out.js", // Optional: name of the generated file
  "sourceRoot": "", // Optional: prefix prepended to each entry in "sources"
  "sources": ["foo.js", "bar.js"], // Required: list of original source URLs/paths (or null)
  "sourcesContent": [null, null], // Optional: inlined source text, aligned with "sources"
  "names": ["src", "maps"], // Optional: symbol names referenced by "mappings"
  "mappings": "A,AAAB;;ABCDE", // Required: encoded mapping data (base64-VLQ deltas)
  "ignoreList": [0] // Optional: indexes into "sources" considered "third-party"
}

A JSON file representing a source map. The code contains: { "version": 3, // Always the integer 3 "file": "out.js", // Optional: name of the generated file "sourceRoot": "", // Optional: prefix prepended to each entry in "sources" "sources": ["foo.js", "bar.js"], // Required: list of original source URLs/paths (or null) "sourcesContent": [null, null], // Optional: inlined source text, aligned with "sources" "names": ["src", "maps"], // Optional: symbol names referenced by "mappings" "mappings": "A,AAAB;;ABCDE", // Required: encoded mapping data (base64-VLQ deltas) "ignoreList": [0] // Optional: indexes into "sources" considered "third-party" }

Source maps are a vital part of modern web development, but the lack of a standard made it impossible for us to add new features or improve the debugging experience.

This is the story of how we standardized source maps and how we continue to ship features through standards 📜

🧵

1 month ago 80 17 5 4
Preview
Headless Sync - Obsidian Help Obsidian Sync offers a headless client to sync vaults without using the desktop app. Useful for CI pipelines, agents, and automated workflows. Sync the latest changes or keep files continuously up to ...

good news for yall huh? :) help.obsidian.md/sync/headless

1 month ago 3 0 1 0
Chrome 145 with the flag enabled and showing the context menu to move the tabs to the side

Chrome 145 with the flag enabled and showing the context menu to move the tabs to the side

Chrome 145 with the tabs shown to the side (vertical tabs)

Chrome 145 with the tabs shown to the side (vertical tabs)

Vertical Tabs are available behind a flag in Chrome 145 (current beta)

1. Go to `chrome://flags/#vertical-tabs`
2. Set it to enabled
3. Relaunch Chrome
4. Right click the tabbar and choose “Move Tabs To The Side”

Attached are before and after screenshots.

3 months ago 127 10 15 3

HOLY SHIT BALLS YES.
YESSSSSSSSS FINALLY

WHY did this have to take SO LONG!?!

3 months ago 3 0 0 0
trace.cafe

Confirmed that profiling skills are super transferable. 🙂‍↕️

viztracer is a delight for profiling python: github.com/gaogaotianti...

And since it exports to the standard trace format, I could bring it back to my home turf: analyzing the flamechart in Chrome DevTools and sharing via trace.cafe :D

3 months ago 15 0 2 0
A flame chart of loading NVIDIA's flagship ASR model, Canary. Captured with viztracer and shown in trace.cafe. It shows the load takes 52 seconds only for 3s of inference! Several annotations point out some opportunities for optimization (redundant tar extract, config read/write thrashing etc)

A flame chart of loading NVIDIA's flagship ASR model, Canary. Captured with viztracer and shown in trace.cafe. It shows the load takes 52 seconds only for 3s of inference! Several annotations point out some opportunities for optimization (redundant tar extract, config read/write thrashing etc)

Been loving NVIDIA's NeMo models recently to complement Whisper for transcription, but the startup felt a bit heavy.

So I went on a profiling adventure!
github.com/NVIDIA-NeMo/...

Turned out to be fruitful… stoked to land a big optimization in NeMO.
github.com/NVIDIA-NeMo/...

3 months ago 143 6 2 0
Advertisement

I've replaced a lot of my old ARRAYFORMULA's with a BYROW+LAMBDA combo and feel like it's slightly more readable now. But just slightly. :)

4 months ago 3 0 1 0
Monitor your web application with the Reporting API  |  Capabilities  |  Chrome for Developers Use the Reporting API to monitor security violations, deprecated API calls, and more.

AFAIK, crashes are observable in Chromium via the Reporting API. developer.chrome.com/docs/capabil...

4 months ago 7 0 2 0

In my AGENTS.md I'll add something like "I'm already running the dev server. You can access it at port 5173". Alternatively yah you can suggest it should prefix with `timeout 30s` if it may be a long-running process.

4 months ago 11 0 2 0

Aw shoot. So sorry to hear that.
Really enjoyed what you brought to Playwright!

4 months ago 5 0 1 0

The real asset here is that sample file. I'm thinking something similar to the SKILL file for frontend-design: github.com/anthropics/c...

I'll make it if nobody's got anything to offer, but I figured the Una's and Adam's of the world might have something up their sleeves.

4 months ago 4 0 1 0

I always prompt with "use modern CSS" but models rarely use *proper* modern, Baseline-y CSS. I want nesting, @layers, view transitions, oklch, light-dark(), etc.

Does anyone have some prompt text which does a good job with this?

4 months ago 14 0 5 1
Preview
The present and potential future of progressive image rendering Exploring progressive image rendering across JPEG, PNG, WebP, AVIF, and JPEG XL.

I dug into progressive image rendering and found a bunch of common assumptions aren't quite true.

➡️ JPEG & WebP progressive-renders worse in Safari
➡️ AVIF _does_ support progressive
➡️ But JPEG XL in Safari doesn't
➡️ JPEG XL decodes much slower than AVIF
⬇️ and more

jakearchibald.com/2025/present...

6 months ago 171 41 15 6
Post image

forgot to put this up somewhere so here you go. visualize your favorite zlib stream! lynn.github.io/flateview/

6 months ago 300 100 21 6

Meanwhile, the mobile web gmail UI m.gmail.com is so fast and delightful, despite being ~unmaintained for 10+ years.

7 months ago 10 0 0 0
Advertisement
Gmail Gmail is email that’s intuitive, efficient, and useful. 15 GB of storage, less spam, and mobile access.

You'll probably appreciate the mobile web gmail UI: m.gmail.com Sadly, it now requires a mobile UA. But despite being ~unmaintained for 10+ years, it's so fast and delightful.

7 months ago 3 0 1 0
ripple the <progress> html energy - drag the slider

I joined the HTML Day festivities today and made a lil homage to the <progress> tag: paul.irish/2025-progres...

💪 @htmlenergy.bsky.social

8 months ago 49 4 2 0
Preview
Rename from "proposal-upsert" to "proposal-getorinsert" · Issue #83 · tc39/proposal-upsert Generally "upsert" means your updating or creating. But this method seems to be getting or creating. Consider renaming this proposal from "proposal-upsert" to "proposal-getorinsert". https://x.com/...

Some discussion in
github.com/tc39/proposa...
github.com/tc39/proposa...
github.com/tc39/proposa...

But.. it seems like not many advocates for 'upsert' itself. ¯\_(ツ)_/¯

8 months ago 5 0 3 0
A group of handdrawn fish.

A group of handdrawn fish.

Why I 🧡 the web.

drawafish.com

Just draw the fish. Trust me. 🐟

8 months ago 2315 1208 100 225

This is hot. And aligns with some work I've been hacking on. Can I give it a whirl?

9 months ago 2 0 1 0

Prompts as MCP payloads are def not getting much attention but I also think they have good potential.
Interesting that Claude doesn't act on the prompt response type without extra nudging.. especially since this is all their design.

10 months ago 0 0 1 0
The decision to pursue the indictment against Abrego Garcia led to the abrupt departure of Ben Schrader, a high-ranking federal prosecutor in Tennessee, sources briefed on Schrader's decision told ABC News. Schrader's resignation was prompted by concerns that the case was being pursued for political reasons, the sources said.

Schrader, who spent 15 years in the U.S. Attorney's Office in Nashville and was most recently the chief of the criminal division, declined to comment when contacted by ABC News.

The decision to pursue the indictment against Abrego Garcia led to the abrupt departure of Ben Schrader, a high-ranking federal prosecutor in Tennessee, sources briefed on Schrader's decision told ABC News. Schrader's resignation was prompted by concerns that the case was being pursued for political reasons, the sources said. Schrader, who spent 15 years in the U.S. Attorney's Office in Nashville and was most recently the chief of the criminal division, declined to comment when contacted by ABC News.

Weirdly buried in the article:

The Nashville chief federal prosecutor (who'd lead this case?) decided to resign in protest over this case being pursued for political reasons.

10 months ago 23 1 1 0
DevTools Perf panel open against paulirish.com. A bitmap representation of the poop emoji is displayed in the profiler. (It was done with a lot of performance.measure() calls)

DevTools Perf panel open against paulirish.com. A bitmap representation of the poop emoji is displayed in the profiler. (It was done with a lot of performance.measure() calls)

Sometimes I let my website draw pictures in the Profiler

10 months ago 13 1 2 0
Performance debugging in DevTools
Performance debugging in DevTools YouTube video by Chrome for Developers

My talk from I/O: a 10min jaunt jam-packed with DevTools Performance panel goodness. youtu.be/BHqxD9qr6Gw

Really proud of what we've landed in the past year, including JS bundle analysis, framework tracing APIs, auto-annotations, CrUX context, and deep insights.

10 months ago 46 7 0 0

😵‍💫 Dayum.
@kizu.dev is a deep magic css wizard.

10 months ago 3 0 0 0
Advertisement
VINTAGE COMMERCIAL - LISTERINE
VINTAGE COMMERCIAL - LISTERINE YouTube video by Historic Films Stock Footage Archive

🤨 In a v weird fit of serendipity, I *just* swished with Listerine and wanted to show my partner one of their commercials from the 90s..
This isn't the one but... Listerine was all about that text-fitting! youtu.be/o_P3HElQbsM

10 months ago 2 0 0 0
Preview
inverse text-sizing with attr ...

Hot damn!!!

codepen.io/paulirish/pe...

omg its the modern bigtext.js/fittext.js. i love this so hard.

10 months ago 13 1 4 0
Video

👀 Coming to Chrome DevTools in Chrome 138: CSS Value Tracing

When you hover a --custom-prop in a `var()`, DevTools currently shows you the computed value. From Chrome 138 onwards, you can hover the `var` part to see how CSS actually got to that value.

10 months ago 298 56 9 9
Performance debugging in DevTools
Performance debugging in DevTools YouTube video by Chrome for Developers

Yeah, fair. I don't have this in a non-video blog post yet but.. here's the 10min version with actual words: youtu.be/BHqxD9qr6Gw?...

10 months ago 5 0 1 0