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.