Delightful isn’t the word I would use for it, and as much as I want to hate on Javascript and its ecosystem, I do think there is something really awesome about it. The sheer amount of options and choice, the number of new frameworks and new approaches, the variety in builders, transpilers, formatters, linters; it’s all so insane but also incredible. People are just building stuff, new stuff, non-stop.
There is clearly something to JavaScripts “anything goes” mentality, and it’s far more like the wild-west than languages like Haskell or Rust, and because of this I think lends to a creative freedom that many developers love. No compiler to tell you you’re doing it wrong, just a JS engine that will try its best to execute what you wrote, and will do something if what you wrote makes no sense.
JavaScript is not the language for me, and I wish there were alternatives to frontend development that weren’t works-in-progress. The WASM dream is still far away if it comes at all. But there is something delightful about JS, in a way that is more akin to punk than anything. I think it’s easy to judge the ecosystem as buggy and incomplete, but what other ecosystem offers the same sheer amount of variety? Not even Python comes close. There is something really cool about that.
JS ecosystem is much further along than outsiders seem to be able to fathom.
I remember seeing a 2019 talk from David Nolen (clojurescript maintainer) where he was comparing clojurescript to typescript and it was painful, and mostly because I love cljs. He like many others didn’t actually bother to understand the language beyond the very basics before criticizing it, the example that comes to mind was how spec can merge schemas together, but he got caught up that interface doesn’t do that (which it does with extends), but most people use type and & instead of interfaces..
Anyways, its a small and honestly uninteresting point, but the reason why it bothers me is because its not just selling typescript short, its selling clojurescript short for typescript devs who hear that and are like “well, you’re wrong about that, so why would I take anything else seriously”.
I see this often from people in rust, elm, purescript, reason, etc. Your language is great, fair, but if you disregard what’s happening in javascript, its your loss, and if you claim to be better than javascript/typescript/react/anything you should really take the time to learn it.
EDIT: this also applies to people who worked in javascript for many years but haven’t been active for 5+ years.
EDIT: this also applies to people who worked in javascript for many years but haven’t been active for 5+ years.
What is the best way for people who haven’t been deeply involved in the JS ecosystem for years to catch up? It’s a big place and the quality of information can very widely.
I’ve found the State of JavaScript surveys good for getting an overview of what’s new and exciting in the ecosystem. There’s a lot to sort through, but it covers language features, frameworks, tooling, etc.
While I don’t think there’s an easy answer to this, due to its few-to-no idioms nature.
I thought about slimming this down, but there’s not really an easy way. These are few topics that really got me interested, feel free to google them for more depth.
I would say the biggest improvements is vite, its fast & dead simple to use/extend/understand. After that, while typescript has been around forever, its everywhere now, and libraries are 10x easier to use than before.
I’ll split this in a few categories:
Frontend Frameworks:
| Far too many to mention, so I’ll take one that would be hard to imagine 5+ years back
Svelte
What if we extended js to be reactivity
Fullstack (Meta) Frameworks:
| again, lots out there, but some newer
SvelteKit for Svelte **
Super low boilerplate, have to try it to see.
Remix – hard to imagine 5+ years ago for sure
based off forms & sane/simple web standards instead of ajax everywhere, so it boosts being able to run in no javascript mode from what I know
Tooling:
Vite is miles ahead of what came before
I wrote a vite plugin for my own language (coil) in ~5-10 lines of code, and now I can use coil in svelte, react, projects etc.
Runtimes:
Deno
security-first runtime, opt into ability to access system resources like files, and network.
really pleasant to use APIs based on async/await, and Symbol.asyncIterator
built in testing framework
all around 10x DX improvement to node
Cool Libraries:
xState
typesafe state chart library, which really good vscode extension to visually interact with state machines + edit
zod
very clever type safe schema validation library
TypeScript:
| too many to count honestly
Template Literal Types
this may seem wild, but I had a case where I needed to validate that all http endpoint strings sent to API 1 end with a slash, and all endpoint strings sent to API 2 do not. Using template string types I could validate that if my string starts with “https://api1” then it has to have a “/” at the end to type check.. this works and it was trivial to implement, I also got it working with multiple environments with basic union types.
JavaScript it self:
Symbols
due to its uniqueness properties, its allows “safe” monkey patching, no need to rely on conventions like dunderscore in python.
these aren’t new, but they are the way new standard interfaces are being developed and its really clean, I haven’t seen any other language have this.
All this to say, I don’t think all of these categories are unmatched, I think we have yet to hit rails-tier productivity i javascript for example, but I think you would be surprised, and some of these categories are definitely far beyond the competition.
Delightful isn’t the word I would use for it, and as much as I want to hate on Javascript and its ecosystem, I do think there is something really awesome about it. The sheer amount of options and choice, the number of new frameworks and new approaches, the variety in builders, transpilers, formatters, linters; it’s all so insane but also incredible. People are just building stuff, new stuff, non-stop.
There is clearly something to JavaScripts “anything goes” mentality, and it’s far more like the wild-west than languages like Haskell or Rust, and because of this I think lends to a creative freedom that many developers love. No compiler to tell you you’re doing it wrong, just a JS engine that will try its best to execute what you wrote, and will do something if what you wrote makes no sense.
JavaScript is not the language for me, and I wish there were alternatives to frontend development that weren’t works-in-progress. The WASM dream is still far away if it comes at all. But there is something delightful about JS, in a way that is more akin to punk than anything. I think it’s easy to judge the ecosystem as buggy and incomplete, but what other ecosystem offers the same sheer amount of variety? Not even Python comes close. There is something really cool about that.
Yes…. punk just about sums it up!
Yes!
JS ecosystem is much further along than outsiders seem to be able to fathom.
I remember seeing a 2019 talk from David Nolen (clojurescript maintainer) where he was comparing clojurescript to typescript and it was painful, and mostly because I love cljs. He like many others didn’t actually bother to understand the language beyond the very basics before criticizing it, the example that comes to mind was how spec can merge schemas together, but he got caught up that
interface
doesn’t do that (which it does with extends), but most people usetype
and&
instead of interfaces..Anyways, its a small and honestly uninteresting point, but the reason why it bothers me is because its not just selling typescript short, its selling clojurescript short for typescript devs who hear that and are like “well, you’re wrong about that, so why would I take anything else seriously”.
I see this often from people in rust, elm, purescript, reason, etc. Your language is great, fair, but if you disregard what’s happening in javascript, its your loss, and if you claim to be better than javascript/typescript/react/anything you should really take the time to learn it.
EDIT: this also applies to people who worked in javascript for many years but haven’t been active for 5+ years.
What is the best way for people who haven’t been deeply involved in the JS ecosystem for years to catch up? It’s a big place and the quality of information can very widely.
I’ve found the State of JavaScript surveys good for getting an overview of what’s new and exciting in the ecosystem. There’s a lot to sort through, but it covers language features, frameworks, tooling, etc.
While I don’t think there’s an easy answer to this, due to its few-to-no idioms nature.
I thought about slimming this down, but there’s not really an easy way. These are few topics that really got me interested, feel free to google them for more depth.
I would say the biggest improvements is vite, its fast & dead simple to use/extend/understand. After that, while typescript has been around forever, its everywhere now, and libraries are 10x easier to use than before.
I’ll split this in a few categories:
Frontend Frameworks: | Far too many to mention, so I’ll take one that would be hard to imagine 5+ years back
Fullstack (Meta) Frameworks: | again, lots out there, but some newer
Tooling:
Runtimes:
Cool Libraries:
TypeScript: | too many to count honestly
JavaScript it self:
All this to say, I don’t think all of these categories are unmatched, I think we have yet to hit rails-tier productivity i javascript for example, but I think you would be surprised, and some of these categories are definitely far beyond the competition.