Remix.run Logo
paxys 4 hours ago

> I wanted to know if the hundreds of hours I’d spent mastering Deno was a sunk cost

Hundreds of hours? I'm sorry but if you truly needed that much time to find your way around an incredibly straightforward runtime that's on you. Skills for Deno, Node.js, Bun, Cloudflare Workers, browser-based JS and all the rest are like 99% transferable. If Deno doesn't work for you then use something else. It would probably be simpler to switch than writing all these aggressive blog posts.

balamatom an hour ago | parent [-]

The one that wasted me hundreds of hours was TypeScript on Node with ESM. The most common, familiar, boring stuff which everyone is intimately familiar with, right?

Got shanghaied into TS-land right around Node 16 when they and TypeScript imposed mutually incompatible handling of ESM modules (that extensions mess).

Not only the type checker fail to understand of the kind of JS I had been shipping (and testing, and documenting, and communicating) up to that point; both the immediate toolchain, and people's whole pattern language around the toolset, were entirely broken as soon as you were doing anything different from the kind of React.js that later became Vercel.

Not only I was able to do 10% of what I was able to do previously conditional on jury-rigging the billion dollar stack to work, I also had a little cadre of happy campers on my ass blatantly gaslighting me that it is all, in fact, working; and suggesting the most inane "solutions" once I'd bent over backwards to demonstrate how there is, indeed, a problem of absurd dimensions, straight outta nowhere.

Later I met more such people. Same people who would insist JS runtimes are not trivially interchangeable, having committed to not examine what they're doing beyond a meager level of abstraction.

I see it as a rather perverse form of "working to spec" (have had to pick up surreal amounts of slack after such characters), but with incentives being what they are you get a cutthroat environment (such as the author of this blog post imagines to be living in), and from a cutthroat environment you get the LLMs eating everyone's breakfasts -- because no matter how yucky a word "synergy" is, synergizin' is that "fake open source" is designed to preclude, throughout the JS ecosystem.

"Fake open source" is how I call MIT/BSD licensed devtools and frameworks from hyperscalers that don't need to do an opencore rugpull because they're a piece of a long-term ecosystem strategy. They benefit from immense decade-long marketing and astroturfing efforts, lending them "default status" in the mindshare; and ultimately serve to carry the vendor's preferred version of reality into unrelated downstream projects. Which is why they often spectacularly fail to respond to the community's needs: they are built to preclude, past a certain point, the empowerment of implementors as a community.

Mastering some of that shit, now there was a sunk cost for me, but in modern JS land all these churning agglomerations play the role of "pay to play" gatekeepers. Considering what that's made the playing field be like, I'm happy pivoting to more niche technology just to keep away from said churning agglomerations.