I’m an addict. I use everyday. I think about the fix constantly. When I’m up, it’s pure bliss. There’s no trouble in the world because it is only me and my fix. When we’re together, we’re powerful. And when there is rhythm, I’m unstoppable.
npm install wherever-we-want-to-go
. Variable hoisting, function declarations inside expressions, async
imports, type casting for days.
TypeScript? Get some!
Generic interfaces, blue collar types, <any>
at the end of a long day…idgaf…I’m raging and my files end in .tsx
, We’re hydrating a virtual DOM, so get out of my f*@%ing way!
And then I hit a wall. I’m a JavaScript addict. I felt adrift without my node_modules
directory. But it’s more than that. The hammer is JavaScript and every single conceivable software concept is the nail. I’d start a project with a loose understanding of the architectural direction and fire up a terminal and npm create vite hit-me-again
.
Like a damn junkie, I know.
Recently, I’ve come to question why I resort to JavaScript as my ecosystem of choice for all new projects. The obvious answer is that it's comfortable, and my suppliers, the corporate enterprises and npm
hustlers peddling packages and solutions to my real and imagined software problems, also keep me traquil and numb in the arms of my muse.
This is all true, but I’m a f*&%ing addict and this is my nostalgia and my comfort and my intoxicating game.
JavaScript has taken me to places I’ve never thought I’d go — metaphorically speaking, I think.
I’ve map()
’d and reduce()
’d myself out of some awkward situations, abused so much React syntax and best practices that I should be court ordered away from that framework. I’ve mutated, shallow cloned, deep cloned, spread, de-structured, bound, and gagged (es8 spec) every imaginable Object
; push()
’d, pop()
’d, unset()
, slice()
’d, splice()
’d, and split()
multi-generational Arrays
; server side, client side, web components, APIs, WebGL, maps, payment gateways, intersection observers.
My friend, I tried it all.
And, it was good!
And when my fingers quivered as I typed npm run build
and Webpack hummed to life, the entire bundle was suddenly alive in the console, and the tests ran and passed, and everything was deprecated, but it was just a warning, and the versions in package.json
were no longer supported, but the complier was soaring, and I was flying alongside, and we were at escape velocity and nearly there. The seconds hung suspended. And then there was a blinking silence but there was always silence, and the build was done. We were ready for production. We had an HTML document!
How many times did that ritual repeat itself before I knew my life needed a change?
Too many, I’m afraid.
The utter shame was that this was all in service of rendering text and images to a page. Sure, there was complexity and business requirements, and roadmaps to chart, stakeholders to coddle, and sure, three brands needed to share the same codebase, but we were developers goddammit and we solved problems. We would find a way to rule and we would do it with JavaScript.
It was a nearly four year bender.
I crawled out of that fog, walked away from that job and that stack armed with a resume full of sharp edged keywords any frontend warrior would be proud to wield. But I wanted more. I wanted something old and dusty and secure; a fixture polished through the beatings of wind and time and programmers who tucked flannel shirts into coffee stained denim.
I wanted a language, framework or both that was reliably boring and predictable, evolving at a consistent pace, but not reinventing new iterations of itself every 6 months to satisfy fevered market cravings of addicts like me.
But where to go instead?
I closed my eyes and began to wonder...
There was the truly veteran: the C++ and Java worlds — ruggedly object oriented, loud and verbose, where the compiler is a true adversary and you clean up your own memory waste.
Yes, the spinal column of enterprise software everywhere, grit incarnate.
No, I was too soft for that world.
Then there was Python. Higher level, enlightenment era language capable of billion dollar software applications, scripts to spoof a wifi network and everything in between, carried forward proudly by Pythonic larpers with dictionaries and list comprehensions.
Yes, there was Django and Flask, but Python was just for scraping, solving the occasional code puzzle, and of course, quick and dirty hacking tools. Nevertheless, I rarely tried a drug I didn’t like, so maybe a pull from the Flask was just the medicine I needed. Maybe a web application could be architected from something called pip
.
I entered into a purple haze. Was it smoke? Some kind of fog machine? There was a large entity in the periphery of my gaze, just beyond comprehension.
An elephant?
PHP staggered imposingly into frame and for a moment time stopped. The scale briefly asphyxiated me. I was in the presence of true mass - an electromagnetic force so strong no binary could escape.
The titans - Wordpress, Magento, Drupal, they stalked me in a gaze so profound, my ego seized and temporarily receded into that deep purple void. To say I was lost is unrepresentative of the state of hallucinogenic emptiness I felt under the power of this collective.
Stumbling out, I pressed forward.
And I yearned to see more…another path.
Sages spoke poetry of Ruby and its Zen koan wisdom, and achieving Nirvana on Rails. Philosophy and spiritual evolution in code, and all that; a self proclaimed 'programmer’s best friend'.
Indeed, a companion for my malaise!
Finally, someone to offer structure to my Class-less code, to remedy my glued together application logic into an elegant, yet coherent entity where many hard decisions are made for me. This guru walked alongside me with a gentle countenance to inspire the potential I always knew was there inside me. I was lost in the peaceful, transcendent moment imagining the transformations.
The lights were suddenly glaringly bright as I coaxed my eyes to their full aperture and slowly came to wake in a mild daze.
Where was I? Where was the gentle guru?
I looked around my desk and scattered effects. The browser was frozen, twitching, red with console errors, stuck in some kind of useEffect
loop. Could it all have been a dream? I was back, still in the cold, low lit room in front of a blinking monitor and IDE full of impossible JavaScript.
The moment had come. Inspired, I right-clicked my entire project directory and with a valiant conviction seleted delete. It was time to forge a new path.
A lightness washed over me as I created the new file - index.html
, and began to type.