Something I’ve noticed this weekend is that a lot of my technological choices are tending towards simplicity. Here’s a quick summary of where I’m at with things:
- Operating system: Arch Linux
- Desktop environment / window manager: xmonad
- IDE / text editor: Neovim
- Preferred programming language: Haskell
- Browser: vimb
- Music player: vimpc w/ mpd backend
- Email client: aerc
- Managed dotfiles
It might not be immediately obvious what about this is “simple”…
Running Arch requires some upfront effort to familiarise with Linux to a greater extent than you’ve likely ever done prior.
xmonad is configured in Haskell.
Neovim requires a lot more effort than something like VSCode if you want LSP integration, which as a professional software engineer I consider a must.
Haskell is a notoriously difficult language with an emphasis on correctness.
vimb - a web browser - doesn’t support tabs.
My music player is split between a client and a server on the same machine.
My email client isn’t a Gmail tab!
And to make all of this viable I have to track everything in a dotfiles repo.
But it is genuinely the simplest setup I’ve ever had, having spent long periods of time with Windows, macOS, and various flavours of Linux. In fact, I still dual boot with Windows for VR and am forced to run macOS on my work machine, so it’s not as if I’m out of the loop on alternative technological lifestyles.
I think the common thread that ties these together is that less is more, analagous to the Unix philosophy. Alternative operating systems are very easy to get started with, but I think everyone has had the experience of things going so wrong that your only recourse was to reinstall the whole thing. In my experience, large updates (as opposed to rolling release) are more likely to break things, and when they do it’s much harder to debug and fix, not only because there are more changes to sift through but also because these operating systems tend to treat the user like an idiot who shouldn’t be allowed to see beyond the facade of a shiny UI. They’re not wrong to do so, most people don’t spend as long as their computer as me; I’m certainly thankful when, say, DIY products are designed with novices like me in mind. The consequence however is that it does leave power users out in the cold, and all too often threads on Microsoft or Apple’s forums about obscure issues will be met with little more than “try a reinstall”.
It’s a similar story with everything else I listed and everything I’ve omitted to mention. I don’t want a clunky web UI or walled garden for playing music. I don’t even want a native music player that manages everything for me, because that needlessly ties my playlists et al to my preferred interface, making migration a pain. And why would I want browser tabs when my window manager handles it natively far, far better?
Granted, it’s not all sunshine and rainbows. It takes time to set new things up. If I wanted to install a camera into my desktop tomorrow, I’m not confident it’d work out of the box. I’d have to research it a bit ahead of time, and expect to spend maybe 15 minutes or so setting it up. But if this is the cost of, after that initial setup, everything just working, then that’s a worthwhile time investment to me.
As for what prompted this blog post, I rewrote samhh.com this weekend to host my blog posts, inspired by some posts from sircmpwn on the creeping centralisation of everything on the web. During development I noticed that I’d previously set it up such that any 404 was redirected to the homepage. A simple question arose: What benefit does this provide? It takes power away from the user. They can no longer see the URL they were trying to get to, and if they wanted my homepage they could always get there with ease anyway. So why do it? I’ve since removed that redirect and replaced it with a simple 404 page.
(Not sponsored, just happy with it.) I feel compelled to shoutout Gatsby here. I first set it up a couple of years ago and it’s still really easy to work with for anyone who already works with React at their day job. It produces static sites that can be deployed virtually anywhere without devoting any time to devops. My site is currently hosted by Netlify, but I’m not locked in at all in terms of the project’s structure, which I think tangentially ties into the above themes.