Something that I really enjoy is making old hardware far more useful than new, off-the-shelf laptops and workstations by means of carefully configured installations of Debian Stable. To me there is great aesthetic value in making a system useful in this way, that puts to shame the aesthetic values the computer industry would have us adopt: faster, shinier, newer.

Here is my desk here in Tucson. I arrived with my 2009 laptop, which you can see on the right. I bought this Amazon Basics keyboard for a few dollars. And my housemate gave me use of the mouse and monitor. The pillows are pile of books are a new attempt to improve the ergonomic situation. I can get so much done at this workstation!

When I video call my girlfriend over in South Korea, we like to watch films together and sometimes play Minecraft. And for simply calling, watching videos and playing Minecraft she is continually running into problems with her fancy laptop which is only a couple of years old and has hardware much more capable than my laptop. Why is it that Windows installations slow down so dramatically over time? I’ve been told that it’s partly a result of the NTFS file system not scaling well. She’s planning to take it to a Samsung shop where they’ll soup it up for her. Of course it’ll still be less useful than my Debian installation is.

Back in Europe, my grandfather is using an ancient laptop from the mid-2000s to read and write e-mails and browse the web. On that machine I set up Debian with the LXDE desktop environment. He collects his e-mail by the POP3 protocol, and reads it in Mozilla Thunderbird. In the UK, my mother is using my desktop workstation that I built for myself back in 2008 when I played a lot of video games. I added a second hard drive for her and installed Debian with the Cinnamon desktop environment. She connects into her university’s LAN using a remote desktop client.

The most fun thing about this is the software I use to manage these configurations: Propellor. My computer in Tucson, the ancient laptop deep in the Limousin, and the workstation in my parent’s house are all configured to periodically pull from a central git repository which contains a statement of how they should all be configured (stated in fairly terse Haskell). (The host of this central git repo also updates its own configuration in the same way. And this host can be a VPS provided by any standard VPS provider because the configuration as a git host can be very quickly applied to a fresh host.) I cryptographically sign commits to the git repo and once this signature is verified, new configuration directives are applied. Here is an (edited) sample of the full configuration:

-- #### Sean's desktop workstation

zephyrSda :: Host
zephyrSda = spwWorkstation "zephyr.silentflame.com" "i386"
    & "/etc/timezone" `File.hasContent` ["Europe/London"]

    -- Default to booting from sdb.
    & "/etc/default/grub" `File.containsLine` "GRUB_DEFAULT=2"
    `onChange` cmdProperty "update-grub" []
    `describe` "GRUB default entry /dev/sdb"

    -- SSH in only from LAN
    & "/etc/hosts.allow" `File.containsLine` "sshd: 192.168.0.0/255.255.255.0"
    `describe` "ssh login permitted from LAN"
    & "/etc/hosts.allow" `File.containsLine` "sshd: localhost"
    `describe` "ssh login permitted from localhost"
    & "/etc/hosts.deny" `File.containsLine` "sshd: ALL"
    `describe` "ssh login denied from elsewhere"

-- #### Sean's desktop workstation, secondary HDD

zephyrSdb :: Host
zephyrSdb = spwMachine "zephyr.abbeydaled.local" (Stable "jessie") "i386"
    & "/etc/timezone" `File.hasContent` ["Europe/London"]
    & User.accountFor (User "hschra")
    & LightDM.autoLogin (User "hschra")
    & userStandardGroups (User "hschra")

-- #### Sean's laptop

artemis :: Host
artemis = spwWorkstation "artemis.silentflame.com" "i386"
    & "/etc/timezone" `File.hasContent` ["America/Phoenix"]

-- #### Old laptop deep in the Limousin
-- Under Wheezy, quentin was known as 'quentinou'

quentin :: Host
quentin = spwMachine "quentin.silentflame.com" (Stable "jessie") "i386"
    & "/etc/timezone" `File.hasContent` ["Europe/Paris"]
    & User.accountFor (User "pawhitton")
    & userStandardGroups (User "pawhitton")
    & LightDM.autoLogin (User "pawhitton")
    & quietGrub
    & Apt.installed ["icedove"]

A few years ago I made an effort to dismantle my little empire of computers all talking to each other because I was sinking too much time into maintaining and fiddling with their configurations. I moved all my stuff to a hosting provider as part of this effort. Now I’ve gone back the other way, but with a new purpose in mind. It’s about the lessons that can be learnt and taught by doing more with less in the face of contemporary consumerism.