█ AARONJ operator // signal
◀ back to log

JavaScript was a mistake

What are we really getting out of the modern web?

This isn't my first personal site. The first one lived under another domain that I regrettably let lapse, and was just as distinctive and snappy as this one, if less aesthetically cohesive, with no JavaScript at all. I created the site when I was first dipping my toes into self-hosting, and kept it in my own Gitea server. Some lessons are best learned the hard way, and a drive failure later I learned the importance of redundancy. The site itself ran on a VPS whose real job was hosting a Minecraft server for my friends, and when I let that expire, I forgot the site was on the same box. I went without a site for a couple of years.

Building it again without JavaScript was never in question. JavaScript is synonymous with every excess of Web 2.0 and the modern responsive web, like pop-ups, lazily loaded content, and ads everywhere. A JS-first internet is hostile to users and developers alike. It limits how much you can script against it, and brings with it massive amounts of dark patterns and data harvesting against our will. Its rise is the corporatization of the web, the slow replacement of personal sites, blogs, and lovingly crafted pages with whatever monstrosity front-ends like Jira are.

For years I browsed with NoScript blocking everything by default, painstakingly whitelisting functionality by hand only where it was indispensable, until a change in my work requirements a couple of years ago made me give it up, begrudgingly. Building a site this way asks for much less compromise. Modern HTML and CSS are lenient and complete, I have yet to hit a feature here that needed JavaScript, and the whole site reads fine in w3m and lynx. Next I want to add support for text-only protocols like Gopher.

JavaScript came with the promise of a better, more intricate and useful web. It was co-opted by profit incentives, and the very functionality that made it attractive is what makes it so effective at turning the user into a product. It doesn't have to be like this. Run a blog.