Advertisement · 728 × 90

Posts by Thomas Chetwin

Preview
How The Heck Do QR Codes Work? (An Interactive Exploration) Interactively dive into the layout and encoding of QR codes

Have you ever scanned a dirty or crumpled up QR code, *certain* it wouldn't work, and then it instantly does?

They're built to be really resilient! Here's a guide I put together, full of interactive visuals to show the design choices in the QR spec.

perthirtysix.com/how-the-heck-do-qr-codes-work

11 months ago 38 16 1 2
Mexican orange blossom

Mexican orange blossom

A crow having a snack in the Forgotten Streams

A crow having a snack in the Forgotten Streams

California lilac

California lilac

St. Paul’s Cathedral

St. Paul’s Cathedral

Had a blast in London!

Thanks @tchetwin.bsky.social, @legendecas.bsky.social and many volunteering Bloombergers for organising a great Node.js collab summit 😇 This was one of the most attended summits I’ve been to, so didn’t get to say hi to everyone, but very happy to see many new faces!

4 days ago 19 2 1 0

And running and lawn mowing and plants and …

1 week ago 3 0 0 0

During lunch??

3 weeks ago 3 0 1 0
A banner that reads: Temporal: It's about time!, Jason Williams, 2026 State of the Browser and it features a colourful geometric graphic in the background.

A banner that reads: Temporal: It's about time!, Jason Williams, 2026 State of the Browser and it features a colourful geometric graphic in the background.

The recording of @jason-williams.co.uk talk ‘Temporal: It’s about time!’ is now available to watch online!
2026.stateofthebrowser.com/speaker/jaso...

And Temporal has reached Stage 4: www.igalia.com/2026/03/13/T...

1 month ago 13 12 1 2
Code example showing the usage of Temporal.ZoneddateTime

```js
// London DST starts: 2026-03-29 01:00 -> 02:00
const zdt = Temporal.ZonedDateTime.from(
  "2026-03-29T00:30:00+00:00[Europe/London]",
);

console.log(zdt.toString());
// → "2026-03-29T00:30:00+00:00[Europe/London]"

const plus1h = zdt.add({ hours: 1 });

console.log(plus1h.toString());
// "2026-03-29T02:30:00+01:00[Europe/London]" (01:30 doesn't exist)
```

Code example showing the usage of Temporal.ZoneddateTime ```js // London DST starts: 2026-03-29 01:00 -> 02:00 const zdt = Temporal.ZonedDateTime.from( "2026-03-29T00:30:00+00:00[Europe/London]", ); console.log(zdt.toString()); // → "2026-03-29T00:30:00+00:00[Europe/London]" const plus1h = zdt.add({ hours: 1 }); console.log(plus1h.toString()); // "2026-03-29T02:30:00+01:00[Europe/London]" (01:30 doesn't exist) ```

Temporal is now Stage 4 at TC39 🎂🎂🎂

Thanks to all the other champions of JavaScript's new date-time API. It has been a wild ride over many years!

I wrote a blog post explaining how we got here 📜

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

1 month ago 345 82 20 16
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...

1 month ago 23 4 2 0
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/

1 month ago 72 14 4 0

Got to check rush hour crush

1 month ago 1 0 0 0
Advertisement
A bar graph showing requests per 12 hours. It sits nicely at 1000 or so until the last 2 bars where it jumps to ~3300.

A bar graph showing requests per 12 hours. It sits nicely at 1000 or so until the last 2 bars where it jumps to ~3300.

Request volume to jsdate.wtf (from the nginx logs). Is this you state of the browser folks? 🥲

1 month ago 45 3 6 2

For those who were not in London today for State of the Browser 2026 conference, Josh relays @jason-williams.co.uk's talk!

1 month ago 7 2 0 0

I dare you to push the button. 50:50 chance it makes you look like a tourist

2 months ago 4 0 1 0

Is this a haiku?

2 months ago 2 0 1 0
Preview
State of JavaScript 2025 The 2025 edition of the annual survey about the latest trends in the JavaScript ecosystem.

It took a while, but the State of JS 2025 survey results are now live! 2025.stateofjs.com/en-US

Thanks to @danielroe.dev for contributing the conclusion.

2 months ago 88 31 3 4
Preview
The Year Ahead (2026) A look ahead at what's coming in 2026 for the e18e community

here's a brief look ahead at what we have planned in the e18e community for 2026 🎉

great collaborations, and many useful developer tools are in the works.

also a huge thanks to all who contributed so far - many of the libraries, tools, and frameworks we use today are faster because of you 💙

2 months ago 41 15 1 2

Can’t wait for the first @e18e.dev and friends edition! ✨

Honored to host the show 🙌🏻

2 months ago 25 4 2 0
Advertisement

Grit and pressure washers don’t mix - unless you’re trying to take the paint off

3 months ago 1 0 0 0

Your TypeScript year in review

You "silenced" 417 errors with `as any` that turned into runtime errors as soon as the code ran

TypeScript printed 4,693 error messages. 26 of them made sense

You spent 98 minutes waiting for tsc to run. During this time you spent 544 minutes reading social media

3 months ago 182 17 4 0

How are you doing?

4 months ago 3 0 0 0

Hello

4 months ago 4 0 1 0
Yes Hello

I recommend yeshello.org

4 months ago 2 0 1 0

The lack of paint on macOS is holding me back

4 months ago 5 0 1 0
Preview
git/Documentation/gitdatamodel.adoc at master · git/git Git Source Code Mirror - This is a publish-only repository but pull requests can be turned into patches to the mailing list via GitGitGadget (https://gitgitgadget.github.io/). Please follow Documen...

this fall I worked with the core Git folks on writing an official data model for Git and it just got merged! I learned a few new things from writing it. github.com/git/git/blob...

4 months ago 402 63 8 0

Any intuition as to why?

4 months ago 0 0 1 0

That’s actually my train!

5 months ago 5 0 0 0
Post image

Thanks @mmocny.com for the container timing shoutout and stealing my low effort diagram 😂

Great talk @ #perfnow

5 months ago 19 4 1 0
Advertisement

The world’s most intense arm wrestle, ended in a draw

5 months ago 19 0 0 0
Post image

Missed #JSConf 2025? No worries, we’ve got you. 🎬 All the talks are now on YouTube.

Watch them here: hubs.la/Q03PNmCK0

5 months ago 6 3 0 0
Preview
build: build v8 with -fvisibility=hidden -fvisibility-inlines-hidden by joyeecheung · Pull Request #56290 · nodejs/node Split from #56275 since it seems to cause gcc on some machines in the CI to time out or run out of memory. Trying to see if it's just a CI hiccup or if it's something that needs to be worke...

Stalled this PR for almost a year due to CI build cache issues, last week I realized (once again?) the Linux binary size is a bit out of hands and gave the CI another try, and the CI miraculously handled it , so finally landed this and shed of 8MB off the binaries at least github.com/nodejs/node/...

6 months ago 25 3 1 0
Post image

⚓ Oxlint now supports plugins written in JavaScript ⚓

Developers can customize and extend Oxlint using JavaScript, but at a speed approaching Rust, due to 'raw transfer' between Rust and JS, and other breakthroughs

Many ESLint plugins can run without any modification.

Read the full post👇

6 months ago 122 15 7 1