Jon Kuperman's Avatar

Jon Kuperman

@jonkuperman.com

TC39 - Signals - Source Maps - TS/JS @Bloomberg. Previously I did web at Adobe and Twitter. Opinions are my own.

6,771
Followers
816
Following
1,872
Posts
23.04.2023
Joined
Posts Following

Latest posts by Jon Kuperman @jonkuperman.com

It was lavender!!

10.03.2026 21:22 ๐Ÿ‘ 0 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0

100% agree. These days you're at worst one prompt away from correcting and getting the same quality app in the framework of your choosing

10.03.2026 19:47 ๐Ÿ‘ 1 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0

yes please

10.03.2026 19:42 ๐Ÿ‘ 1 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0

It was lavender flavored! ๐Ÿ‘€

10.03.2026 19:17 ๐Ÿ‘ 1 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0
Lavender flavored cheese that is actually blue!

Lavender flavored cheese that is actually blue!

Iโ€™ve heard of blue cheese before but never like this

10.03.2026 19:05 ๐Ÿ‘ 12 ๐Ÿ” 0 ๐Ÿ’ฌ 3 ๐Ÿ“Œ 0

๐Ÿ“ฎ In the first feature-length article on the Bloomberg JS Blog...

@jonkuperman.com explains:

๐Ÿ—บ๏ธ what are source maps
โœ… how he worked with others to standardize them in TC39
โœจ the new debugging features this unlocks

10.03.2026 18:16 ๐Ÿ‘ 26 ๐Ÿ” 7 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0
Preview
Source Maps: Shipping Features Through Standards Source maps are a vital part of modern web development, but a lack of standard has made it impossible for us to add new features or improve the debugging experience. This is the story of how we standa...

bloomberg.github.io/js-blog/post...

10.03.2026 18:15 ๐Ÿ‘ 15 ๐Ÿ” 1 ๐Ÿ’ฌ 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 ๐Ÿ“œ

๐Ÿงต

10.03.2026 18:14 ๐Ÿ‘ 52 ๐Ÿ” 8 ๐Ÿ’ฌ 3 ๐Ÿ“Œ 3
Preview
Bloomberg JS Blog The official Bloomberg JavaScript blog - insights, tutorials, and best practices from Bloomberg's JavaScript engineering team.

Some time ago, @jonkuperman.com & @tchetwin.bsky.social had a dream for the JS engineers at Bloomberg to be more public about the cool JS work we have going on.

That dream has come true - now we have a blog platform ๐ŸŽ‰

(You'll see more articles over the next few days)

bloomberg.github.io/js-blog/

09.03.2026 19:08 ๐Ÿ‘ 69 ๐Ÿ” 14 ๐Ÿ’ฌ 4 ๐Ÿ“Œ 0

YES! One of my absolute favorite combination activities

07.03.2026 21:02 ๐Ÿ‘ 1 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0

๐Ÿ‘‹

07.03.2026 15:44 ๐Ÿ‘ 3 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0

looks fun!

05.03.2026 22:44 ๐Ÿ‘ 1 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0

Great docs! Very excited about Solid 2.0!

04.03.2026 21:15 ๐Ÿ‘ 0 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0
Preview
Release v2.0.0 Beta - The <Suspense> is Over ยท solidjs/solid I know you all probably weren't expecting this announcement next. But after reviewing the roadmap, we spent so long iterating in the Experimental phase, most of the goalposts within Alpha don't app...

The <Suspense> is over.

Solid 2.0 Beta is now released (next tag on npm). ๐ŸŽ‰

github.com/solidjs/soli...

03.03.2026 23:49 ๐Ÿ‘ 155 ๐Ÿ” 34 ๐Ÿ’ฌ 5 ๐Ÿ“Œ 4

British people gave the letter z the coolest name and then refuse to use it ๐Ÿค”

03.03.2026 17:12 ๐Ÿ‘ 8 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0

Thereโ€™s a weird law in the UK where if someone leaves a newspaper on the Tube seat you want you legally have to read it

03.03.2026 10:49 ๐Ÿ‘ 10 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0

Love this! What a great crew!!

02.03.2026 22:26 ๐Ÿ‘ 1 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0

wow

01.03.2026 19:49 ๐Ÿ‘ 1 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0

my bluesky "for you" feed feels a lot like old twitter today, very cool to open it up and catch up quickly on #SotB26

28.02.2026 17:10 ๐Ÿ‘ 21 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0
Preview
Towards structured concurrency Towards Structured Concurrency

Put together a presentation on a possible direction for getting native structured concurrency in JS, taking as a constraint that we already live in a world where cancellation means AbortController. Interested in your thoughts!

docs.google.com/presentation...

28.02.2026 04:06 ๐Ÿ‘ 13 ๐Ÿ” 3 ๐Ÿ’ฌ 4 ๐Ÿ“Œ 0

Everyone's asking: what time will @jason-williams.co.uk talk about Temporal?

The answer is *today* at State of the Browser 2026 ๐ŸŽ‰

2026-02-28T14:20:00+00:00[Europe/London][u-ca=iso8601]

If your parser doesn't support RFC 9557, you're living in the past.

28.02.2026 10:51 ๐Ÿ‘ 28 ๐Ÿ” 5 ๐Ÿ’ฌ 2 ๐Ÿ“Œ 0

This is so cool!

27.02.2026 16:36 ๐Ÿ‘ 2 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0
Preview
We deserve a better streams API for JavaScript The Web streams API has become ubiquitous in JavaScript runtimes but was designed for a different era. Here's what a modern streaming API could (should?) look like.

After implementing web streams in multiple runtimes, supporting them for years, talking with other implementers, dealing with issues... I think it's well past time we talked about something better blog.cloudflare.com/a-better-web...

27.02.2026 14:14 ๐Ÿ‘ 83 ๐Ÿ” 29 ๐Ÿ’ฌ 5 ๐Ÿ“Œ 5

Sorry!!!!

27.02.2026 15:22 ๐Ÿ‘ 1 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0
Google stocks showing Block down 1% over the past month despite the huge layoff.

Google stocks showing Block down 1% over the past month despite the huge layoff.

27.02.2026 15:17 ๐Ÿ‘ 2 ๐Ÿ” 0 ๐Ÿ’ฌ 2 ๐Ÿ“Œ 0

Wow! All great updates, thank you! I'll be keeping an eye out for the v1.0 launch!

27.02.2026 00:11 ๐Ÿ‘ 3 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0

Laid off 40% of the company. Not because the company share price is down 80% over the last 5 years but because of AI, the CEO says.

26.02.2026 23:55 ๐Ÿ‘ 4 ๐Ÿ” 0 ๐Ÿ’ฌ 2 ๐Ÿ“Œ 0

Help me understand this: The entire internet is going wild about Block stock going up 23% today but if you zoom out just a tiny bit they are still below where they were January of this year.

26.02.2026 23:46 ๐Ÿ‘ 15 ๐Ÿ” 1 ๐Ÿ’ฌ 2 ๐Ÿ“Œ 0
Preview
What We Do | Bloomberg L.P. From engineering and data science to sales and customer support, discover the work that Bloomberg employees perform โ€“ and where your skills and talents fit.

I'm so sorry to hear! If you are located near any Bloomberg offices I would be more than happy to chat or refer you! www.bloomberg.com/company/care...

26.02.2026 23:40 ๐Ÿ‘ 4 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0

How do you measure when a component is โ€œreadyโ€? โฑ๏ธ

LCP is too global; Element Timing is too specific.

๐Ÿ› ๏ธ Iโ€™ve been working with Bloomberg on a new #webperf API: Container Timing. Think of it as โ€œLCP for a web componentโ€, providing aggregated paint timing for a subtree.

10.02.2026 16:06 ๐Ÿ‘ 16 ๐Ÿ” 5 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 2