RE: Why Are Websites Embarrassing

some commentary on a post about egregiously bad web design by Robin Rendle and a rant about modern web development that you’ve probably read before


I’ve been reading a blog post by Robin Rendle about why websites are embarrassing in which he writes:

I truly want every website to be worthy of our browsers.

But modern websites are not worthy. They’re slow, hard to navigate, and plagued with visual crap; pop-ups, bad typography, newsletter modals, and everything else imaginable. And that’s just the baseline. When I use a website on my phone I likely won’t trust it to show me the same information, I won’t trust interactions when I click buttons or fill in forms or even when I try to navigate elsewhere.

I don’t even trust the back button any more.

This last bit is where I lost patience. Robin Rendle should know why websites so frequently suck:

Look at this shit.

It’s so bad that visiting a website in 2023 is like falling into a blackhole and being hit by a bunch of random junk on your way to being crushed into an infinite nothing in the center. No, I don’t want to give you permission about cookies, no I don’t want to sign up to your newsletter, no I don’t want to talk with some half-baked chatbot.

It’s usually fucking JavaScript.

Why are websites embarrassing? I could just say it’s JavaScript, but you know what? It’s deeper than that.

Most developers, I would like to think, care about performance. They care about clean design. They probably don’t want to make shitty websites.

But they don’t make the decisions. If marketing wants analytics, the developers generally can’t say no. If they want scroll-jacking, or manipulation of browser history, the developers generally can’t say no. Likewise demands for cookie consent, newsletter popups, ads, and all that other shit.

Actually, the developers could say no – and be fired for it. Or they could just quit. Either way, management will find other developers who don’t give a fuck if a webite turns out to be a complete and other pile of shit as long as they get paid on time. Such developers would justify doing so with the time-dishonored retort: “a man must live”.

I don’t think Rendle spends enough time visiting personal or noncommercial websites, though. Check this out.

When I find a website that doesn’t hijack the scroll, or a website with pleasantly sized text, or a website that loads in under 300ms then it makes me bolt upright in my chair. I wonder at what tech they’re using under the hood, what kind of conversations they had in those rooms, I try to imagine what kind of grueling process the team went through to make something so quiet and simple. All the things they had to say no to.

I don’t know why Rendle is so shocked by such sites. It wasn’t that hard for me to build one. I used HTML and CSS, without JavaScript. Rather than write all of the HTML myself, I wrote plaintext files that I could process into HTML, and instead of some godawful mess of JavaScript and nested npm dependencies I used pandoc, shell scripts, basic UNIX tools like grep, sed, and awk, and a makefile. I push everything with rsync over SSH.

I’m not hijacking the scroll. I can’t, because I didn’t use any JavaScript. Nor do I fuck with the back button or context menu. My site should have pleasantly sized text, I hope, because my stylesheet’s basic font size matches the browser’s preferred font size (usually 16 pixels) and all other font sizes are scaled with rem units. The site loads in 300ms or less in most cases because it’s just HTML and CSS. No web fonts, either, and usually not that many images, if any.

As for ads: there aren’t any. How do I finance the site? I have this magical thing called a day job. It’s not that expensive to run a blog unless every page is at least 1MB in size and you’re getting at least 100,000 visitors a day. For example, I’ve got a novel all on one page that’s about 1.6MB in size. It’s 289,000 words long. Twitter, by comparison, needs at leaast 1.5MB just to serve a 280 character shitpost – but I’m not using fucking React to build my site or running all sorts of algorithms to manipulate and monetize your attention.

I’d be lucky if I got more than 100 visitors in one day, and I don’t know what kind of traffic I get because I don’t use analytics. Why should I even care? My stuff is there if you want it. And if you don’t, that’s no skin off my ass. You might recall that I’ve got a day job, and it’s not like these numbers actually matter to anybody but MBAs, and MBA stands for “making bigger assholes” so their opinions matter as much as a wet fart in a hurricane.

What about my development process? I didn’t have to have any conversations. I didn’t have to go through any sort of grueling process. I didn’t have to say no to anybody. I am the owner, the operator, and the editor in fucking chief. My website is relatively simple because it’s my work, done my way.

It isn’t that hard to build a motherfucking website. We make it hard. We make it complicated. We do it because it’s easier than saying no to people who don’t have a goddamned clue about how websites work but have the power to fuck over our livelihoods because we don’t have the brains or the courage in the US to unionize and stage nationwide general strikes to put an end to the scourge of at-will employment.

So, how do we make websites that aren’t embarrassing? Maybe it’s time to put JavaScript in its proper place. Anything that can be done with standard HTML5, CSS3, and server-side code should be done with these technologies even if it negatively impacts the “developer experience”. Anything that can’t be implemented with standard HTML5, CSS3, and server-side code can be implemented with plain JavaScript1. Any app2 that depends on JavaScript should be scrapped and the senior personnel responsible should have pies thrown in their faces3. Likewise for unnecessary use of frameworks like Angular, Vue, React, etc.

Finally: any developer who fucks with the back button, the scroll bars, or the context menu using JavaScript should be condemned to spend the rest of their lives scrubbing my toilet with a toothbrush4. I’m as serious as the explosive diarrhea I wish on people who do tamper with such basic functionality.

notes


  1. Use of JavaScript merely to avoid a full-page refresh should not be tolerated unless implemented as a progressive enhancement.↩︎

  2. If an app doesn’t work in a browser that doesn’t implement JavaScript, then it doesn’t fucking work. This most certainly includes Mastodon, Friendica, Google Maps, Twitter, Facebook, YouTube, etc.↩︎

  3. I was going to suggest the use of a firing squad, but I’ve been in this trade long enough to want management to suffer. So why not just pie the bastards?↩︎

  4. If you think that’s not a harsh punishment you haven’t seen my toilet. Not once in our almost 20 year marriage have I asked my wife to clean the toilet. I do it myself because she already deals with enough of my shit.↩︎