(Devrant) The sorry state of web programming

Wisecrack
12 min readMar 8, 2018

--

(And who should be punished for it)

I’m just a humble coder, or at least try to be. So when I learn a new tool I try to understand the basics of it before putting it to good use. Naturally this perfectly normal habit becomes a perpetually frustrating obstacle in the bleak face of ten billion dependencies known as the ‘javascript ecosystem.’

Fast forward past the ‘our story starts’ bits, to the good part. Javascript, and who should be punished for it. Before we can know why it is necessary to punish anyone, we need to go back, and figure out how this mess started.

I could explain the origins of javascript, but tens of thousands of articles do that perfectly fine — most people using it are familiar with the tumor now known as javascript, growing on the spine of the internet like the love child of heavy metal toxicity.

For an illustration in controlled insanity that is modern web development. you need only read this article over at Hacker Noon, “How it feels to learn javascript in 2016”, which feels more like a prescient doom-bringers prophecy than a two year old article. It reads like it was written yesterday.

If you scroll through the comments on the article, some guy by the name of ‘Quincy Larson’ , (a name which sounds distinctly like someone whos head is so far up his ass he’s qualified to give himself a colonoscopy, more on that in a moment) — this guy, ‘Quincy’, in all his eminence has the wherewithal to post ‘I just wrote a proper response to this article’ which you can read here.

It wouldn’t be so bad if not for the fact this Quincy fellow is the very prototype of someone who likely started coding back in the ‘bad old days’, when all you had to worry about were browser differences and could learn on the job — instead of having to worry about your tools silently failing because a package they rely on, which relies on another package, which relies on OTHER packages was taken off line, or isn’t compatible with xyz.

Worse, he proceeds to illustrate the problem with a comic of cave men, as if it is so simple and obvious even a caveman could do it. It’s easy guis! Just use stick to get meat, cook meat on fire with stick or rock. Let it cook for a while, and then eat it!

It would be sad how skilled this guy must be to have lived up to the stereotype of a turtle-neck-wearing tone-deaf ‘intellectual’ if his article were not so hilariously inept and ham-fisted. He goes on, at length, pontificating with such gems as if you’re new to JavaScript, remember that all of these new tools are very much a good thing. The open source npm ecosystem is very much a good thing.

No, having 40 solutions that are only superficially different, are not in fact a good thing. And I’ll explain later on exactly what is actually happening in the javascript ecosystem: Hint, it’s not ‘rapid evolution’ as several of his ilk have gone on to claim.

A perfect microcosm of this ‘Infinite Nesting Doll Dependency Hellscape” I just recently encountered was in the process of doing a simple Integration Test on an alexa example for AWS (a corporate rube-goldberg machine if I ever saw one, and one that would make swirly face McJigsaw wince with pain).

While setting up a testing framework called Jest, I was helpfully informed of the following:

Okay, okay. I try that, turns out yarns not installed. I’m so used to npm and so, naturally I go with of all choices, the npm option highlighted right there on the page in front of me beneath the other option and proceed to install jest.

Everything is normal until I encounter the ‘yarn test’ command I’m supposed to enter on the command line. So uh, why did it uselessly inform me of the option to install jest via npm to start with? I felt like saying I’m not a dick, don’t jerk me around.

So I navigate from the Jest website to the yarn website. Easy. I’ll install this and then get back to work. The yarn website ‘getting started’ isn’t actually a ‘getting started’ page, but instead helpfully informs you “Yarn is a package manager for your code.”, uh, I thought that was what npm is for? (But I digress)

I go to the installation page. I’m immediately informed there are three options for installing yarn on windows. Theres the yarn msi, and then theres something called chocolatey, a ‘package manager for windows’. So now we have package managers for package managers? Kafka shudders in his grave.

For a moment I pause and consider my options. On the one hand, when I went with the default for installing jest, I had to install yarn to use it anyway. Is this going to be another one of ‘those’ situations?

I have about as much certainty about this choice as this guy does about wearing that tiara.

Screw it. Lets install Chocolatey. Thats another level of indirection. I navigate to chocolatey, hosted on a website which claims it is "The sane way to manage software on windows.' I keep seeing that word used, ‘sane’..

Apparently they have their own kickstarter which makes about as much sense as asking for crowd funding to reinvent the wheel — one that made a cool fifty grand which, according to their post will allow them to ‘put the things in place for a viable future for chocolately for the next 20 years.’ And all I can think is that the devs are nine years old and have no understanding of what fifty thousand dollars is except ‘a lot of money’ according to them. Maybe they’re based out of India, who knows.

Anyway, so I navigate to the installation page, where lo-and-behold I’m treated to the requirements. Fuckin’ Powershell, and Net 4.0

And why aren’t these part of the download or installation already? Why aren’t the necessary parts included with the chocolatey install? Because .net is suppose to allow us to leave those things out?

I skip over those for a minute to the fun part: About two pages worth of configuration ‘fun’ (hell), where apparently problems installing this software are so common it has an entire dedicated troubleshooting section and it’s own damn faq question. For a fucking *package manager*.

Now the powershell ‘download’ page instead takes me to a bluescreen-autobarf log of what looks like console output instead of something more sensible, like oh say, I don’t know — an actual download link.

Meanwhile the installation page, like all the other opaque documents on corporate sites, informs me I may or may not need windows c univeral runtime if I ‘m using powershell on anything older than windows 10 (and plenty of people are). So wait, why isn’t there just different versions of powershell?

At this point I’m absolutely disgusted and return all the ways back to my original goal, which I have nearly forgotten in the head-fog induced by install a -> install b -> c -> d -> e -> f, configure q, r, s, t, u ,and sacrifice a goat to moloch if none of it works that microsoft appears to be as fond of as amazon is with it’s aws/ec2/alexa documentation.

Don’t get me wrong, installing applications is usually easy, and this is really only an aside to the much worse environment of web development. Like I wrote, it is a microcosm. If you really want a glimpse at the ninth circle of hell, take a look at this article on decrying what you might typically encounter when virtualizing a web app with docker. No, mine is a humble toy example, like a nondescript rusty nail waiting to give you tetanus while you play in the sandbox, instead of the bigger, barbed rusty hobo spindle that is web technology today.

Do package managers count?

After all was said and done I returned to the ‘insane’ option of just installing yarn with the plain old installer they provided right next to the yawning-abyss that was the secondary option.

I returned to the command line, which I had long since forgotten was even open, and proceeded to type ‘yarn test’.

jest’ is not recognized as an internal or external command

Fuuuuuuuuuuuuuuu..

But I already installed it! Theres the gotcha. After staring at the screen for a minute, I took in the documentation, which informed me I could ‘optionally’ add jest as part of my global variables for the command line. So I type ‘yarn global add jest’

Wait, but why? ‘Fetching packages’, ‘linking dependencies’, ‘fs event platform win32 is incompatible’, ‘installed with binaries’? I ALREADY INSTALLED JEST, all that command was supposed to do was add a global variable. What else did it do in the background without my permission? Whats next, is it going to find my wife is incompatible and annul our marriage? Not that I’m married, but I’d like to know for future reference.

And this is the sorry state of web development in a nutshell, a microcosm of a hundred thousand schizophrenic’s obsessive compulsions with decoupling things until it’s squirrels feverishly disassembling everything into individual components. Theres a saying for this symptom: ‘Turtles all the way down’ and rightly so.

This is a broader symptom of ‘TED Talks’, and SXSW, and a host of other self-congratulating ‘thinkers’ and ‘important people’ essentially trying to one-up each other. I’d like to find this guy ted and give him a piece of my mind but I don’t have any mind left to give, I was busy allowing noun.js libraries to feast from my open skull on my grey matter.

All of this naturally follows from what is obvious on it’s face to anyone who has taken a step back to really look at this problem. The tens and tens of thousands of js libraries, many of which are only superficially different, along with things like Amazon, more concerned with marketing lingo-bingo bullshit than giving sensible names to their jungle of enterprise level products, follow from a simple motivation: Marketing.

You see, if you’re a developer, and you take a powerful idea, even one thats been reinvented to death, and put a superficial spin on it and release it as ‘TotallyNotSelfPromotion.js’, or some other apt name you get the life-time achievement byline ‘Invented popular library now used on x, y, ,z’, which you can put on your linkedin profile (scorecard) for everyone to preen over like fawning morons. Likewise, it means you now get to write thick, ‘useful’ volumes, not unlike religious texts, for your cult-like fanatical followers, explaining your ‘deeply held and painfully developed expert opinions on the intricacies of whether to put an opening bracket on the same line as a function or on a new line while using the only real solution to web development, TotallyNotSelfPromotion.js’, a volume likely to be no shorter than 200 pages, and one which probably will cost $50 and could have been printed on two pages for fifty cents.

Afterward you get to host self-involved self-congratulatory TED talks (or worse, TED-X talks) which, with each passing year appear to grow closer and closer to the post 2000s generation’s reincarnation of ‘pot-fuelled million dollar startup ideas on a napkin’ — a phenomenon that is artfully presented by the one and only college humor.

And if you’re really lucky, and your following grows to scientology-levels of fanaticism you may get your own con. Yes con. Like DockerCon, or JsCon, or LongConJs, because thats exactly what all this is — and it’s exactly what we need: more excuses to meet up for the already sterile pollination of bedfellows, the unwashed, unvarnished masses of guys in their 30s, obsessively stroking their perfectly manicured dilbert beards like frilly dildos strapped to their chin and arguing over the comparative differences between vim versus emacs while completely oblivious about things like how you’re supposed to wear a *fucking* undershirt with your button up. If not for hackathons, and ted talks, and sxsw, and conferences, and SomethingCons, and ‘retreats’, and dozens of other pointless synonyms for ‘people just meeting up’, most of us would still be in our cubicle, office, or room, typing away instead of socializing like normal people.

And all of this is in pursuit of recognition and name-dropping. Because if you have name-recognition then *that* translates into X gig opportunities, and Y number of salary increases, and N number of startup or network opportunities, and all of it is just *dollars*.

I see people who remind me of this problem on a daily basis, people who name drop, who live by proximity to someone else’s manufactured fame. It reminds me who all started this.

The problem didn’t start with EveryWordInTheEnglishLanguage.js

Go back further.

Back to the original conferences, the TED talk. Now go back further still.

If only it were that simple

Back to the original ‘intellectual’ of our era, the ‘genius’, the ‘luminary’, ‘the flawless saint’, and all around ‘smart guy’, the vicious, self-involved, self-important turtleneck-wearing sociopath marketer himself.

Who couldn’t trust that smile? It’s almost like hes not plotting, from the grave, at this very moment, how to sell some kid’s kidney’s to the chinese in order to manufacture more iphones.

This guy, this fucking guy. Let me tell you about this guy. He created the prototype for digital self-promotion in the age of everything-is-a-startup and ‘sell before you build’. The very term ‘reality distortion field’ was coined because of him. I can only imagine the apple campus when he was alive, what it must have been like. A brown fog of bullshit, following him every where you go, and if you were walking down the hallway you could always know when he was coming or going because the brown haze would always announce his preeminence.

And this is what we have built the web on. Code on top of code, supporting code. Grunting, Gulping, packing, pushing, shoving, slapping, skin on skin, mentally and verbally masturbating with code. Objects returning objects returning functions, returning promises, consuming services, that consume objects, consuming APIs, consuming your soul like something straight out of Evil Dead, regressing to some unknown-unknown in another dimension where pinhead lurks and waits to be released in all his horror on some unsuspecting developer. Containerizing code. Containerizing containers. Spinning up code. Spinning down code. A never ending impenetrable stream of line noise, ECS, ACF, EC2, SDB, SQS, SNS, ARN, VPC, EBS, BDSM, IBS with constipation, and 456,965 others covering every possible combinations of letters so we can hide our jargon behind crytographs and sleep at night without waking up to cold sweats — that maybe we got it all wrong and hell on earth really does exist, and its right here, lurking in a package manager, or an NPM registry, or another kickstarter, startup, or AWS service. It’s out there, and it’s gonna get you, and suck you in, and if the people feverishly turning the infernal cogs stop working for a minute, stop grinding up the husks of used-up programmers for fuel in the unquenchable dirty grimy misery engine that is web development — then it all crashes and burns overnight while planes fall out of the sky and deliveries of ever-more dragon dildos don’t make it to someones doorstep, piling up at amazon in an ever increasing heap for Bezos to gleeful rule over playground-king-of-the-hill style shoving people off to their doom below, or like a workplace avalanche hazard for some poor underpaid bastard to be buried under, or worse, your uber ride doesn’t show up on time.

Hell isn’t other people. Hell is other people with opinions.

Fuck it, I should have stuck with PHP. Facebook did. Gee, I wonder why.

As I think of this, I’m reminded to push my new micro-library for doing javascript deep copy, not because it is needed, but because I’ve given in to the sadistic desire that one often encounters when faced with the choice between being burned alive by a mob or joining the mob.

Web developers, Where is your god now?

--

--

Wisecrack
Wisecrack

Written by Wisecrack

Shitposter extraordinaire. I like ‘africa’ by toto. Fuck you. Pay me.

Responses (3)