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
Posts by Thomas Chetwin
Mexican orange blossom
A crow having a snack in the Forgotten Streams
California lilac
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!
And running and lawn mowing and plants and …
During lunch??
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...
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...
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/
Got to check rush hour crush
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? 🥲
For those who were not in London today for State of the Browser 2026 conference, Josh relays @jason-williams.co.uk's talk!
I dare you to push the button. 50:50 chance it makes you look like a tourist
Is this a haiku?
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.
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 💙
Can’t wait for the first @e18e.dev and friends edition! ✨
Honored to host the show 🙌🏻
Grit and pressure washers don’t mix - unless you’re trying to take the paint off
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
How are you doing?
Hello
The lack of paint on macOS is holding me back
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...
Any intuition as to why?
That’s actually my train!
Thanks @mmocny.com for the container timing shoutout and stealing my low effort diagram 😂
Great talk @ #perfnow
The world’s most intense arm wrestle, ended in a draw
Missed #JSConf 2025? No worries, we’ve got you. 🎬 All the talks are now on YouTube.
Watch them here: hubs.la/Q03PNmCK0
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/...
⚓ 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👇