tech and whatnot...
About a year ago, Deno’s version 2 was released and immediately made waves across JavaScript Land and the web dev community. With the promise of significant improvements over v1 and a host of other features, a lot of devs made the jump from Node.js or Bun to the shiny new version of Deno.
Right around this time, I was actually contemplating migrating my projects over to using Bun. I just never got around to it, since I was already quite preoccupied with learning Svelte 4.
I thought back then, “Great… Another framework to learn. Oh well, I may as well skip Bun in favor of Deno 2, BUT not before upgrading my Svelte 4 apps to Svelte 5!”
Fast-forward to the present: I finally got a small window of free time to do just that — first, start by migrating one of my Astro sites to use Deno 2, then eventually use Deno on all of my future projects. And boy, that did not go without problems.
While the migration itself is pretty straightforward and the app seems to be working properly without any significant modifications, my problems apparently lay in the pre-deployment tests and the build process that immediately followed. Prior to migration, I use both Vitest and Playwright for unit and E2E testing respectively. But it looks like Vitest (or at least how I use it with JSDom) just wouldn’t work. I had to do some troubleshooting, and even try out Deno’s own testing library before making the unit tests work as I wanted. Nice! “But wait…” I thought. “Why are my E2E tests suddenly timing out??” It turns out that v 2.6.0 was causing this Playwright problem. I decided to downgrade to the previous minor release,v2.5.6. Now Playwright works… But running Vitest now throws a weird fatal error. I opened a Github issue about this problem here and ultimately settled to temporarily using a specific version in between where both Vitest and Playwright worked until the issue has been resolved.
I am currently in the middle of migrating all my unit tests to Playwright to make all my tests simple and easy to maintain. In the middle of all of this, I keep thinking why am I so keen on migrating to Deno? I mean sure, config files are reduced since you can eliminate the use of Prettier or ESlint, and Typescript works out-of-the-box without tsconfig, but you could argue that almost all frameworks use starter templates that takes care of all of this stuff for you. So really, why?!
Let me tell you: SOS. That’s why!
Shiny Object Syndrome — or what I like to acronymize as SOS — can be pretty much defined as the tendency for humans to value something over others because it is novel or trending, only to completely drop it once something newer comes along.
I can’t say if everyone is inherently susceptible to it. As for me, I can recall periods in my life where I exhibited this strange behavior. When I was in my teens, I got into playing guitar. I remember I would often read guitar magazines to check out what new guitars, stompboxes, or amps my favorite bands were currently playing. I would often spend whatever money I had on those gears — or sometimes the second-best thing available, since the best ones were too damn expensive.
I notice the same pattern play out in tech, where people hop on to whatever cool new language or framework is currently available. You can see YouTube coders (or what I call the Ucoders) or tech influencers use clickbaity thumbnails or stupid titles like “Why I’m switching to Framework X from Framework Y,” or “You should ditch your tech stack and use this instead.” And this happens over and over again until it gets too tiring to watch.
In my case, I think I could attribute this to what is currently happening in the tech job market, where recruiters require you to know a slew of redundant tools if you want to be considered for a role. I often get unrealistic questions like, “So you know Terraform, but do you also know Bicep, ARM templates, CloudFormation, Pulumi, etc.? We require experience in all this stuff. Also, you need to be certified in at least two of them.” What a load of crap.
Don’t get me wrong, I love learning new stuff. But I think learning something new should come from a geniune place of curiosity and not FOMO. Naval Ravikant once said “Art is anything done for its own sake”. I think the same applies in learning as well. Learning should be done for learning’s sake.
I think I’ll stick with Node for now.