> Ok, so what are some legit criticisms of node.js and npm?

I am glad you asked! You know how everyone runs to circle-jerk the praise "use the right tool for the job"? Well, Javascript is NEVER the right answer when the "job" is business logic or systems development or almost anything else. But here we are.

Do you know why people think Javascript is fucking cancer? Because it was developed to animate visitor counters and help with animated menu and resize issues that css wasn't up to at the time. It doesn't have strong types and rigid structure because it was created to be a language that assists your browser in little ways. So a little more history is in order.

Along comes Microsoft and creates XMLHttpRequest which could offer a "real-time" feel to some websites, and it was awesome! This was the first horseman of the apocalypse.

Then Google blew everyone's fucking minds with google maps (inc. google earth) and gmail. And was basically single-handedly responsible for the Web 2.0 (single-page app) explosion...and the second horse of the apocalypse.

Javascript grew and metastasized in every way imaginable, because everyone felt that single-page apps were exactly what they needed for their new toilet-sharing app idea, and so it went.

Then one dark day Node.js emerged from is leathery egg and blew everyone's fucking mind again with what could be done when you get a genius to abuse the javascript engine for entertainment. And the worst pale horse of the apocalypse rode forth.

For, you see, now webpage developers who know two days worth of shitty Javascript could now call themselves "full-stack developers". And oh my fucking god did they develop! Every afterbirth of an idea was haphazardly put together into a short script and posted to blow everyones fucking minds with how awesome their new 1,000-line sentence capitalization script was.

Now with this torrent of javascript libraries from all the new developers that didn't know they were developers but totally were, came a problem. How could we get all of the diarrhea into everyone's mouths as efficiently as possible? I mean how are you going to write your single-page todo-list webapp without the 300 supporting javascript libraries?

So npm came to the rescue! People saw how shitty the dependency hell that RPM was and said, "How can we make this worse in every possible way?" And the last terrible horse of the apocalypse was born.

Now all the pieces were there for people that don't know what they are doing to do those things on a large scale, with nothing remotely close to a reasonable development/debugging environment, and inject themselves as dependencies everywhere in the matrix. And then, of course, capriciously abandon the idea a week later.

So rather than list all the valid criticism of the ways Javascript is being abused, just ask yourself "If I should use the right tool for the job, when is Javascript it?"

I will tell you now that if "the job" is web-server, database, command line tool, yet another web-application framework (maybe), anything that needs reasonable or reliable error and failure handling, anything that looks like or acts like an desktop app, or anything that doesn't look or act like an desktop app (except for visitor counters and animated menus), or anything that any living human will ever have to support or debug ... then the answer is no.