Another day of being extremely thankful I decided not to learn JavaScript
I mean, the people relying on such packages didn’t learn it either.
This can happen in any project that uses dependencies, javascript or not
Sure, but when was the last time you saw, say, a Python project using some third-party library instead of simply calling isnumeric() from the standard library?
There’s a reason for these jokes always being about Javascript.
Python has other stupid problems related to pip. As much as stupid micro-dependencies suck in Javascript, they’re not the shitshow managing dependencies in Python is. It’s an inefficiency that never actually caused me noticeable issues in my former webdev life.
And let’s not talk about C++… People reinvent all sorts of wheels all the time because sharing anything is so annoying.
And let’s not talk about C++…
Don’t worry, people make plenty of jokes about C++ too.
Hell, people joke about my favourite language too - Cargo build times are a meme unto themselves.
I don’t think there’s a truly great dependency management system there. Though all in all, I’ve generally had no MAJOR issues with Cargo, Maven or Gradle.
lol just use a virtual environment, it’s the default now anyways
I know it is, and I find it to be a pretty ridiculously complex fix for a self-inflicted wound.
The disruption it’s caused me outweighs by far any minor inconvenience with the multiplication or micro packages in the NodeJS world. There’s that, and the Python 2 vs 3 shitshow from which the world still hasn’t fully recovered from yet.
I mean it: Python has no business laughing at Javascript. Get your act together, snek 😜
Look at what you’re missing!
Edit: also,
is-odd
depends onis-number
Heaven forbid they make a package
is-even-or-odd
with both. Wait. Don’t give them ideas. They’ll just make it depend on both.These are both made by the same person from this PR (who also made both the package the PR is on, and the is-number package that is being removed as a dep)
I only glossed over it… but this looks like it’s trying to check dynamic typing issues? It’s like a statically typed language with extra steps?
I don’t think typescript exists because JavaScript wasn’t designed to be statically typed. I think Typescript exists because JavaScript wasn’t really designed, period.
How’s the view up there on your high horse?
Must be pretty good, considering literally every time I check in on the JavaScript community it is somehow more on fire than it was last time. I guess I must have a front row seat to all their misfortune. Either that or they’re just incompetent, but it couldn’t be that, could it?
Note that the PR was later merged by a member who got fed up with his colleagues.
And who hasn’t contributed any code to this particular repo (according to github insights).
Not familiar with this exact team, but a skilled reviewer/issue triager is useful. We can hope this person at least tested the changes.
Seems to me the only reason for these kind of dependencies to exist in the first place is that people really, really, really, REALLY can’t code.
this is exactly the kind of thing the senior engineers above me at my last job would use… Their code made me cry
If you think
is-number
can be replaced with a one-liner, you don’t have the enterprise code mindset. What if the world gets more inclusive and MMXXIV, ½ and ⠼⠁ become recognized as numbers? 𒐍𓆾 were numbers in the past but what if people start assigning numeric value to other characters? Are 🖐🔟💯🆢🂵🀌🁅 numbers of the future???
/sI’m not even all kidding, Regex implementations are split on whether “٣” matches
\d
.All junior devs should read OCs comment and really think about this.
The issue is whether
is_number()
is performing a semantic language matter or checking whether the text input can be converted by the program to a number type.The former case - the semantic language test - is useful for chat based interactions, analysis of text (and ancient text - I love the cuneiform btw) and similar. In this mode, some applications don’t even have to be able to convert the text into eg binary (a ‘gazillion’ of something is quantifying it, but vaguely)
The latter case (validating input) is useful where the input is controlled and users are supposed to enter numbers using a limited part of a standard keyboard. Clay tablets and triangular sticks are strictly excluded from this interface.
Another example might be
is_address()
. Which of these are addresses? ‘10 Downing Street, London’, ‘193.168.1.1’, ‘Gettysberg’, ‘Sir/Madam’.To me this highlights that code is a lot less reusable between different projects/apps than it at first appears.
It’s simple ⅯⅯⅩⅩⅣis a number, MMXXIV is not.
You may argue that writiing 2024 as “
MMXXIV
” and not “ⅯⅯⅩⅩⅣ
” is a mistake but while typists who’d use “2OlO
” for “2010
” (because they grew up using cost-reduced typewriters) are dying out, you’ll never get everyone to use the appropriate Unicode for Roman numerals.Wouldn’t surprise me if even Unicode advices against using Roman numerals depending on meaning.
It was mostly a joke (though frankly if you try any implementation more complicated than that joke you’re going to have a bad time).
Even if they did use unicode, any codeset , glyph or language changes over time , ulimately they emerge out of communication, not the other way round.
If some culture decides they want to use the glyph “2” to mean a word “to”, they can and will, and no codeset is going to stop them. And if they get their message to their intended audience it doesnt matter that somebody else’s isnumber fuction get’s it wrong.
A person, community or standard codeset or dictionary cannot deny the accuracy or content of encrypted communication just because they can’t decipher it.
Put another way a more robust isnumber() should maybe have a second argument to specify the codeset being used, and maybe whether written words - in some defined languare - are also to be converted
On the other hand “1/4/12” is not a fucking date.
“1/4/12”
Excel is going to have a Date with you, and it’s not asking further questions. If you didn’t wish to consent to have your col’n shattered, you should have preceded it with a
'
.yeah, I’ve been rohypnolled by both microsoft and oracle, and general cloud shit , and various co workwers so many times now i barely even notice.
Hilariosly excel has recently started asking now, I think it says something like: “I’ve just fucked up several columns in your csv that you went to the bother of enquoting.” “Do you want me to reload it and i’ll try to un-fuck a few of those columns? ( whispers to audience - but probably not all of them - tee hee).”
I think my employer just needs to employ 25-50 more “delivery” managers and empower them to spend millions on a prettier barrel for us to bend over, that’ll solve it. Maybe it’ll have flufffy handcuffs.
I really need a community here solely dedicated to GitHub drama. This is so much better than Twitter drama, more relatable.
The only two people arguing against the change were both authors/contributors of is-number lol
How many contributors could there possibly be
3, about two lines per contributor
Is it because they included a crypto miner in the package?
i think programmers need a self inflicted rule of it being less than 500 lines of code means you need to write it instead of using a pre written package/library.
On the other hand, we could make the packages like is-number the worst possible way of checking if something is a number, which would be really fucking funny…
I’ve literally told my coworkers “I’m not saying we should never use dependencies. But every time you add a dependency, you should hate yourself a little bit more. Some self flagellation can’t hurt either.”
So, every time I use a library to recognize patterns on a picture, to interact with Kafka, do some SSL, or do database mapping, I should hate myself, noted
We did Elastic API integration in Java by creating and maintaining huge half-codegenerated transformer from code to Elasticsearch’s JSONs, it was a pain and it was source of more than one error
Dependences should be reviewed and audited to make sure they do what you need and they are worth using. Just making everything in-house gets you nowhere most of the time
Nobody is arguing that you should never depend on anything and create everything yourself, but adding a dependency for literally a one liner function is awful. Like one of the Go proverbs goes, a little copying is better than a little dependency.
Yeah, there’s mention of doing the opposite in C++ community in a neighbouring thread
You code in Java, of course you should self flagellate on a daily basis just for that. The entire ecosystem is completely fucked.
Joke’s on you, I code in Rust
Then the joke is very much on us.
To be fair, it wasn’t ecosystem that made want to abandon Java, but now I can see it should’ve :)
I’ve honestly never understood why someone at Google or Mozilla hasn’t decided to write a JavaScript Standard Library.
I’m not opposed to NPM, because dumb shit like this happens everywhere. If such a package is used millions of times a day, perhaps it would make sense to standardise it and have it as part of the fucking browser or node runtime…
someone at Google or Mozilla hasn’t decided to write a JavaScript Standard Library.
Core APIs (including data types like strings, collection types like Map, Set, and arrays), Browser, and DOM APIs are pretty good these days. Much better than they used to be, with more features and consistent behaviour across all major browsers. It’s uncommon to need browser-specific hacks for those any more, except sometimes in Safari which acts weird at times.
The main issue is server-side, and neither Google nor Mozilla have a big interest in server side JS. Google mostly uses Python and Java for their server-side code, and Mozilla mostly uses Rust.
Having said that, there’s definitely some improvements that could be made in client-side JS too.
I wish they would replace JavaScript with something that was made for what it’s used for. JavaScript should have died years ago.
I’m still waiting for webassembly to take off
Let’s use Flash!
Actionscript, my beloved
Java applets 🌈
Sometimes it’s hard to detach It, specially dealing with web dev.
The browser expects JS, since JS was made for the browser, so you make a front in JS. But now you need a back, and hey, you already have all models and repos in JS, might as well make the back with JS.
It’s a vicious cycle. Honestly, JS is fine for either if you are component enough (ie. not using stuff like “is-number”), don’t get the hate on It.
No, JS is for scripts, it should have never been a whole framework for a frontend. But we can’t get away from it now, because it’s the only thing we have for browsers.
What do you want to use for frontend framework then?
python, ruby, java, C? Invent a new language?
you will see me screaming “X is for Y, it should have never been a whole framework for a frontend”
Anything, as long as it’s not a bunch of scripts which form a framework after you downloaded a terabyte of shady dependencies.
React it is then 😄. It only has 2 dependencies:
- react - loose-envify - js-tokens
Static? I mean for most of the web it honestly seems like the move. HTMX?
There’s a js runtime called bun that is 90-something% feature equivalent to node and also has built in alternatives to many packages like express and bcrypt. I haven’t used it myself so I can’t speak to its quality but it’s always nice to see a little competition
So is Deno! You can easily import
npm:
andnode:
packages and run typescript without transpiling. With Bun and Deno there’s no reason to use Node tbh.node now supports stripping types, which is good enough for one-off TS snippet.
(available only in nightly for now)For starting new projects i absolut agree. At work we have a legacy react app that just will not run on bun and for deno we would probably have to rewrite some stuff.
I’ve updated some legacy nodejs to Deno recently and it’s actually not bad! If you’re using serverless Denoflare is super convenient and DTN is a tool for building Deno to NPM (both esm and commonjs) so you can have easy backwards compatibility if needed, it even shims all of the Deno standard lib.
It’s really impressive what Deno and Bun people have done - for the first time I actually somewhat enjoy server side JS!
That sounds neat. For our nodejs server this could be done without too much effort. Will keep that in mind, thanks. But I also have to check for the cra app we’re having a lot of issues with.
Bun is used by us in production, in dev, everywhere. It’s great. We don’t even use (p)npm to build js packages on our docker images for apps anymore.
core-js is exactly that, but it focuses on implementing baseline features that can be polyfilled.
Support for int64s out of the box and without jumping through hoops would be nice.
I’ve honestly never understood why someone at Google or Mozilla hasn’t decided to write a JavaScript Standard Library.
This picture honestly looks more like C++ than JS, and before you yell at me, JS doesn’t have any standards let alone competing standards so ¯\_(ツ)_/¯
JS doesn’t have any standards
ECMAScript would like to have a word with you.
If however by “doesn’t have any standards” you meant it’s willing to sink to new low grounds every day, you would be correct.
The latter, and the underutilization of the fact that the standard library exists, and consequently the existence of so many micro dependencies.