JavaScript

Oh, remember that time six years ago when I said one day soon we'll be able to use ES Modules everywhere, even inside Web Workers and Service Workers? Well that day is next week when the last browser ships support for ES Modules in Workers - finally!

Yes, I know that ES Modules are terrible, actually - but the fact is that they are the future of JavaScript / TypeScript / Node / Deno development so we all might as well accept it. I actually think they're great. I've been using them for hobby projects forever - though I rarely use transpilers, bundlers, etc.

Celebrate

Sure, it will be some time before CommonJS modules are resigned to the ash heap of history, until then https://esm.sh/#docs can help... but I for one welcome our Isomorphic JavaScript overlords.

§1350 · May 31, 2023 · JavaScript, Software, Technology, Web · (No comments) ·


Roll the dice

I'll try to keep this one short - it's not exactly tech-related, but it kinda is. A tiny story about a tiny story that you might enjoy, in three parts.

Part One

I got into some speculative short story reading during the pandemic and Ray Bradbury was one author I got into. I think it started with some of my comic book research from the 1950s. Now I won't go as far as Rachel Bloom on ol' Ray, but the man definitely knew how to spin a yarn. In terms of sheer volume of interesting ideas, he beats out Isaac Asimov for me big time.

Anyway, in 1950 Ray Bradbury wrote this great short story called "The Veldt". It's only 13 pages and, rather than read a synopsis about the story, I think you should read it. Here's a free copy I found, though I noticed some typos. G'wan read it, I'll wait.

Back? I thought it was great, what about you? I think it's got a lot to say about how tech has invaded our lives, de-sensitized us from each other, maybe other things that are way over my head. And it holds up today - nice and dark.

Part Two

Ever hear of deadmau5? He's an electronic music artist from my homeland. Not sure if you're into progressive house or the techno scene, but the guy has earned a lot of awards for his work. Anyway, he wrote a song called The Veldt in 2012 (the year Ray Bradbury died). Here you should watch the video:

Rolling Stone thought it was one of the 50 best songs of 2012. My musical wheelhouse is more the 1990s and early aughts, but I really love the tune.

Part Three

And how did this come to be? Apparently deadmau5 created the music in a "22-hour live streaming session" back in March 2012. Crazy, but what's even crazier is that one day later, deadmau5 discovered that a fan named Chris James had posted vocals for the track. He was ready to shred the guy on his live stream but instead this happened:

So yeah, that music video you watched, the song that officially landed on the album, the one that Rolling Stone thought so highly of, is the combination of deadmau5 and Chris James' vocals weaved together over the course of 48 hours.

In some way, I find this a satisfying balance to Ray's meditations on technology... Anyway, I'm off to play in Africa!

§1343 · May 17, 2023 · Entertainment, Music, Technology · (No comments) ·


Logo for JSON

I decided to learn a bit of React again for some toy projects (my day job JS framework is Angular). Most of the tutorials for setting up a React project "from scratch" ultimately result in using the create-react-app library to hide a lot of the complexity (transpilers, bundlers), but I'm not interested in Webpack or Babel - primarily because I know browsers don't need them anymore. Also, I like to learn about how the bits and bobs work together for small projects like this. Here are the 3 things I want: Typescript, JSX, and compile/deploy to ES modules. Can this actually be done? Yes, and it's not that difficult.

Read the rest of this entry ...
§1318 · April 8, 2023 · JavaScript, React, Software, Technology, Web · (No comments) ·


Logo for JSON

The elder days of my blog are littered with useless musings on XML and JSON. So why not throw another one on the pile? 🙂

I wish JSON supported:

  1. Multi-line strings (but no string interpolation)
  2. Trailing commas (in arrays and object property lists)
  3. Comments

Of course none of these will probably ever happen, but having any of these three would keep JSON wonderfully simple but vastly improve the user experience of those who have to hand-tweak JSON files (which is a lot of people!). I kept these feature requests to only things supported by ECMAScript itself. I also note that several parsers seem to accept JSON with #2 and #3.

YAML has all these, but of course it has many other features that, I assume, make it burdensome to write a fully compliant parser.

[Update Jan 2023: I finally filed a bug on VS Code for this idea of back-ticked string support in their tasks.json. Maybe it's crazy, I haven't decided... but feel free to vote it up!]

§1306 · October 26, 2022 · JavaScript, Software, Technology · Comments Off on 3 Wishes for JSON · Tags: , ,


JavaScript logo

The esteemed Dr. Axel Rauschmayer has written a blog post about a new proposal for JavaScript: Types as Comments. It definitely has got me thinking.

On the one hand, I'm a huge fan of JavaScript evolution over the last decade or so. Arrow functions, const/var, classes, modules - that's all good stuff that has improved the language.

Typescript logo

Seemingly on the same side of this argument: I'm also a huge fan of Typescript. It changed how I do large-scale frontend development four or so years ago - static typing in a language helps me write clear code, catches a huge number of bugs at compile-time, and the tooling and overall ecosystem around it is top-notch. Kudos to Microsoft on this one.

But I'm not convinced the value of this proposal nets out positive. The proposal itself says that the primary motivation is to inch JavaScript evolution towards eventually supporting static types:

Does JavaScript need static type-checking?

"Given how much effort organizations and teams have put into building type-checkers and adopting them, the answer is yes."

Why?

Tools

You have to accept that JavaScript is the language of the runtime. We shouldn't be caring about types at runtime - that's the job of the toolchain prior to deploying. That's the way every other language works (feel free to tell me how wrong I am in the comments - I am no language expert!).

Static typing only helps developers, not users.

Think about it this way: what level of performance degradation are you willing to accept for full support of static types? Is it ok for the JavaScript parser and runtime to be 5% slower for every web page or 15% larger in code size? Of course I'm pulling these numbers out of my ass.

When I was first fanboying out on TS, I used to think "gee, wouldn't it be really cool for browsers to support Typescript natively". Wouldn't that be an awesome way to learn and view source, etc. But you know what's good for that instead? Super-fast and small JavaScript for best performance and if you want to share your developer brilliance, have an optional compile-mode and source maps that point to your awesome Typescript.

Patrick the Star

Another thing I don't like about the proposal is that, while they are clearly heavily influenced by Typescript, they hedge:

How does this proposal relate to TypeScript?

"This proposal is a balancing act: trying to be as TypeScript compatible as possible while still allowing other type systems"

You are JavaScript - if you are adamant about eventually supporting static types, why not boldly point towards a "north star" of a language that has already proven itself? Is it that you don't want to admit Typescript won? Is it lingering anti-Microsoft bias?

My opinion: If we are going to add static typing for web apps, we should just use Typescript as a new script type. <script type="application/x-typescript"> seems a better option to me so that the browser can choose an appropriate parser, etc.

§1296 · March 10, 2022 · JavaScript, Software, Technology, Uncategorized, Web · 1 comment ·