We’re Gonna Get Weird

JavaScript for Everyone. Launching Autumn 2025

I've done a lot of writing about JavaScript over the years, and one of the through lines of all that writing has always been that you don't need to have been born with a special JavaScript-brain to sit down and start writing JavaScript.

An entire programming language seemed like too much to ever fully understand, and I was certain that I wasn't tuned for it. I was a developer, sure, but I wasn't a developer-developer. I didn't have the requisite robot brain; I just put borders on things for a living.

— JavaScript for Web Designers

For years I would hear this sentiment — once my sentiment — echoed by unbelievably talented designers and incredibly technical CSS specialists who somehow couldn't fathom calling themselves a "JavaScript developer" despite doing JavaScript development, as if they weren't born with whatever gland produced the chemicals that make a person immediately understand variable scope. They seemed to think that they didn't count — that just because they do it for a living doesn't mean they, like, do it.

I stand by everything I said in JavaScript for Web Designers, with the exception of using alert in a couple of examples (it was a long time ago). Anybody with a text editor and a gleam in their eye can and should haul off and write some JavaScript, if they're so inclined. Type a semicolon and you've written JavaScript; write JavaScript and you're a JavaScript developer. Not one of us was born in accordance with some ancient dork-prophecy and went on to fulfill their destiny as a True JavaScript Developer — none of us had JavaScript-brain the first time we interacted with a keyboard.

Now, listen. There's a catch here, and if you're here reading this newsletter in the first place, I think you're ready to hear it: to get really good at JavaScript — to really understand JavaScript — you do need to develop some degree of JavaScript-brain. I'm not saying you need to delete any cherished memories to make room for the edit history of ECMA-262 or go get a degree in The Special Maths that Make Computers Go, but you do need to gain a sense of how JavaScript "thinks" about the code you're writing, beyond how you're writing it, or even the end result of it. You need to be able to channel a little JavaScript-brain.

I'm probably not telling you anything you don't already know when I say that JavaScript, in ways both large and small, only makes a kind of sense. It makes sense for something developed thirty years ago over the course of a week and a half. It makes sense for something that can be infinitely expanded, but cannot, per a principle known as "One JavaScript," be changed or fixed. For example: null is a value that represents the explicit absence of a value and, per the spec, specifically represents the intentional absence of any object value, making it a not-a-value value that is especially not-a-value if the value that it's not is an object, which is, of course, what null is. An object. null is an object:

typeof null;
// result: "object"

Sure! Sure, of course it is. Because JavaScript is, in no uncertain terms, deeply weird. And to really understand it, well, we need to get a little weird too.

So while working on the course, I've started writing what I'm calling "Weirding Modules" (absolutely a reference to Dune (1984), which is a good movie, actually). Think of them as side-quests — the main scenario questline that is the course will cover the deep magic, for certain, but it stays pretty focused on the practical: "here's why you get this error," "here's exactly what this syntax does," and so on. But these Weirding Modules are focused on helping you better understand the way JavaScript thinks. To do that we're gonna get into the weird stuff, just like it says on the tin — like how and why our ol' friend NaN, the number that means "Not a Number," isn't equal to itself:

NaN === NaN;
// result: false

Or why this is perfectly valid JavaScript:

(() => {
  const /**/ theString = `Seems fine.`;
  /*
   */ return /**/ theString; /**/
})();
// result: "Seems fine."

Or how this evaluates to 5:

!+[] + !+[] + !+[] + !+[] + !+[];
// result: 5

Weird? Absolutely. But by the time you reach the end of the course, these will all make perfect sense — and I don't mean "sense" as in "hm, I guess," but "sense" as in "yes, of course it works that way; it could only work that way." JavaScript sense.

JavaScript feels chaotic from the outside, because from the outside, it is. But knowing how JavaScript understands a syntax compared to how we read and write it is the difference between a Junior and Senior Developer. To tap into that, you have to go deep. You have to get a little weird. You have to develop a little bit of JavaScript-brain. You can. Anyone can.

-M

P.S. if you've been enjoying these newsletters, you might get a kick out of the livestreams I've been doing while I write them — the behind-the-scenes behind the behind-the-scenes. I am extremely bad at it, in my estimation, but what the hell; you gotta make your own fun, right?

Come hang out if you want to talk about the course and web development in general, make a game out of seeing how many times you can trick me into talking about ancient video games or grindhouse films, or just watch a man grow increasingly wild-eyed and frantic while staring at an empty Markdown file in what is effectively a renovated closet. Tune in, co-work, and help keep me off the streets* and out of trouble**.

* from playing Mega Man
** from playing Mega Man 2