OLD COMPUTER CHALLENGE Happily, I am making friends on IRC. And these friendships are leading to new ideas about computers like software minimalism, suckless software, and /the old computer challenge/, which is the subject of this writing here. The Old Computer Challenge is exactly what it sounds like: a challenge to make use of an old computer. The suggested duration is 7 days and the computer should be limited to a single core and use no more than 512 MB of memory. Preparation ---------------------------------------------------------------------- Machine of choice ...................................................................... A few years back I inherited a Lenovo ThinkCentre built in or around 2008. I'll use this machine for the challenge along with a 24" LCD monitor. The machine has a 2Ghz Core 2 Duo CPU and 972MiB of RAM. Obviously this is in excess of what the /Old Computer Challenge/ suggests. I'll crimp the specs during the 7 day challenge period. But I'll run the machine as-is during my preparations. Even now, packages take quite a bit of time to download and install. I'm hoping I can cover ground quickly as I setup my machine so that when the challenge starts I'll be better able to see what it's like to use a slower, less powerful machine on my day-to-day computing activities. IMG Lenovo ThinkCentre on a worn wooden desk OpenBSD ...................................................................... Since learning about OpenBSD I've been meaning to try it. Being a lean distribution, I figured it would be perfect for this challenge. So on a boring weekend afternoon I installed the distro via a USB stick. The installation process was easy and painless, aside from one small hiccup: I couldn't figure out how to install the file sets from the image I'd `dd''d onto a USB stick. So I had to install them from a HTTP mirror instead. Showing some forethought, OpenBSD included a mirror list within the installation procedure. IMG OpenBSD installation is complete! I've never used a BSD derivative in a big way. In fact, I haven't used much more than Ubuntu in all my Linux and UNIX-like experience! For the fun of it I decided I'd dive right into OpenBSD without first intentionally consulting a tutorial, manual, or help guide. I'd see how far I could get using whatever knowledge I already possessed. Surprisingly, I covered quite a bit of ground. I learned to use `su' to install packages using `pkg_add'. I setup `sshd' by using `ed' to edit `/etc/ssh/sshd_config' and then `kill -HUP `cat \/var/run/sshd.pid`''d the daemon to effect the changes. I `scp id_rsa* scarlett@192.168.2.33:/home/scarlett/id_rsa*''d over my public and private keys so I could access my server. I setup `mutt' by following examples I found inside `/usr/local/share/examples/mutt/*'. And somewhere along the way I learned about `man -k <keyword>' as a means of searching installed manuals. I couldn't find `urxvt' at first, but then IanJ on IRC pointed out that `pkg_info -Q rxvt' can be used to find candidates for installation. Getting `i3' setup was a bit trickier. First I installed the package with `pkg_add i3'. Then I set about figuring out how to replace `fvmw', the default window manager on OpenBSD. First I looked at `rc.conf', thinking that the file, being the "startup" script, would include something about windows managers. Finding nothing, I moved onto `login.conf'. I read through that file and gathered it had more to do with login accounts. Following a note at the top of the file, I headed to `man login.conf'. When that still didn't seem to lead anywhere towards windows managers I traced back my steps to my account's home folder. `ls -la'-ing my home folder, I gleaned the many `.X*' files therein. I `less''d through them all. Next, I somehow (I don't remember the path of thinking) ended up looking at the manpage for `xinitrc'. I then peeked into `/etc/X11/xinit/xinitrc' to see what commands the default setup for a user session invoked. Following the instructions in the manpage for `xinitrc', I created a `.xinitrc' in my home folder and added a line to invoke `i3'. I logged out and back in but it didn't work! So I went back to `/etc/X11' to see what other clues I could find. My thinking was that the `.xinitrc' file I'd created wasn't being invoked by X during a new user session. I skimmed through X11's `/etc' files and looked both for occurrences of `fvmw' and any mention of `xinit'-ism. I noticed that `xenodm/xsession' included commands to setup new user sessions. The file included a control block to check if a `~/.Xsession' file exists (if it didn't, a default set of instructions would be supplied). It seemed like this file might be what I'm missing. So I `mv .xinitrc .Xsession''d my init file and then restarted my user session. To my delight `i3' fired up right away! Yay! And with that, I have most of my quality of life features setup on the new machine. There's going to be lots tinkering, no doubt (I don't quite have Urxvt setup well, nor the plumber that makes using it a delight). But to me that's all stuff that I can work on during the /Old Computer Challenge/. I'm now past the initial anxiety of using a new distribution. My feet feel firm on the ground! I'll continue to tinker but will probably leave the next part of this article for my sanctioned /OCC/ experience. The Challenge ---------------------------------------------------------------------- It's July 15 and the challenge is over! So how'd it go? Well... Not as well as I had hoped. For one: I'm not writing this followup on my old computer. I wish I were. Instead, I'm back on my laptop from 2017, a machine that has collected a bloated suite of programs, hacks, config files, and non-default customization over the 5 years of its life with me. Turns out that leaving my sanctuary of complexity for a clean slate isn't easy. I initially thought that the challenge of the old computer challenge would be the /old computer/. But for me the challenge was getting a bare install built up into a usable state. My laptop has what I'd call "a house of cards" inside the home folder. Unfortunately, I didn't think twice or even realize that what I'd built and configured there would ever hold me back. I thought I'd a machine well suited to my habits and needs. But for every bit of customization I've added a byte of complexity. And so while the computing environment on my laptop is well sculpted, it's difficult to understand, replicate, or migrate elsewhere. I'm dependent on the complexity I've created. I'm hindered by it, too. Moving my computing entirely to the old machine proved more difficult than I'd imagined. So no, I didn't succeed at the challenge. I didn't get as far away from my main machine as I was hoping. But at least the first day was an astounding success. How could it not be? I had been fooling around on bug (the old machine) a week prior to the challenge. But as real challenge set in I soon discovered that it was difficult--impossible?--to live exclusively on that old machine. I couldn't access my notes. I couldn't play music or watch TV. I couldn't even get at my address book and find a phone number when I needed help retrieving a lost phone. So eventually I caved, which I'm not proud to admit. But it's not without consequence. The challenge highlighted the flaws in my approach to computing. To reiterate: it wasn't the speed of the old computer that bogged me down. I had become led astray by the complexity of my choices, and my own inability to provide a simple, reproducible deployment of my home environment. Lesson: Make it easy to move configs between machines ...................................................................... Before this challenge I'd given no thought to the preservation, maintenance, and mobility of my non-default program configurations. Yet many of these configurations are necessary to being able to smoothly run my life. For instance: `mutt' (email) requires IMAP information, `tin' (news) needs account information, `urxvt' (terminal) requires `.Xresources' configuration, `emacs' (text editor) needs about 10,000 lines of non-default customizations to startup modes like my knowledge repository. It's all good to invest time into building these configs provided there's a way to quickly copy the code onto a new machine. I don't have that, short of firing off an `rsync' between here and there. This is a big lesson for me: make it easy to move defaults between machines. Lesson: Don't build behemoths ...................................................................... I am reliant on a single laptop for 95% of my computing and entertainment. Crucially, my laptop contains three things I access on a daily basis: - my personal knowledge repository (a bunch of notes on life and computing written in `org-mode' syntax and indexed with `org-roam'). - my media files (photos, videos, and music). - my emacs configuration. Sans notes, I started writing things down on paper. Sans media files, I started using my record player. Sans emacs config, I started using `ed'. While there's a certain romance to going back in time, none of these were adequate substitutions for the "real thing". Eventually I learned to mount my laptop's file-system using `sshfs' so at least I could crudely modify and explore my notes using `ed'. These were all rudimentary salves to a larger problem: everything I do is located on and bound to one computer. Outcome: Explore the operating system ...................................................................... Positively, moving to another operating system encouraged me to explore in ways I hadn't on my existing computer. I'm proud that I figured out how to setup `i3' by crawling through `/etc/X11' files, consulting the man pages, and seeking the occasional hint from IRC. Conclusion ...................................................................... My concluding thoughts are simple: I need to simplify my computer life. I want to get whittle down my enormous stack of crap until I have something simple, predictable, and reproducable.