Thanks for the thoughtful write-up—always interesting to revisit JavaScript's quirks and strengths through someone else's lens.<p>That said, I think a few of the issues highlighted, while valid, might not be as disruptive in modern practice as they used to be. For instance, the typeof null === "object" behavior is certainly unfortunate, but it's well-understood at this point, and most tooling/linting setups help you avoid tripping over it. Similarly, Array.prototype.sort() sorting lexicographically by default feels odd until you remember JavaScript’s history as a primarily string-focused scripting language. These days, providing a comparator is second nature for most devs working with numeric arrays.<p>The point about accidentally declaring globals is a good one—but thankfully, with ES modules, use strict as the default, and tools like TypeScript, it’s much harder to make that mistake in modern codebases.<p>That said, I really appreciate the focus on JavaScript’s virtues, like closures, async/await, and overall flexibility—those really are part of what makes the language so enjoyable despite its rough edges.<p>I'm curious—have you built or maintained any large-scale JavaScript or TypeScript codebases recently? If so, what were the biggest pain points you ran into? Do the quirks you mention tend to surface in real-world projects at scale, or are they more theoretical annoyances that pop up in isolated cases?<p>There are definitely still many challenges in the language, but the ecosystem has come a long way, and it seems like it's still evolving in the right direction. Hopefully JavaScript keeps improving—both in language design and developer ergonomics—without losing what makes it so approachable in the first place.