ARR

Taking my time

Posted on Jul 11, 2021

Taking my time… forcefully

I’ve been wanting to do something like this for a while, but never quite got around to it. Encountering Solene’s Old Computer Challenge finally inspired me to give it a go – albeit a bit late to the game.

My attention is all over the place, always has been and always will be – it makes it hard to complete things and as a result unhappy a bunch of the time. Might have something to do with being diagnosed with ADHD not long before turning 30, but let’s not get into that right now. For a week to be begin with, I’m going to try and restrict the resources I use to access the internet and work on personal projects.

The initial idea (that I’ve blabbed to everyone that’ll give me more than a couple of minutes of their time) was to restrict bandwidth to the equivalent of 56K dial-up and observe my behaviour online. Having access to pretty modern hardware would still present me with other things to keep myself distracted with, however.

Aim

I don’t have a target planned for the end of this other than “try this for a week and see how you feel” and “what did you manage to do?”. I do want to see if the experience of working with restricted hardware (and maybe restricted bandwidth, mentioned above) actually forces me to take my time (or at least be more considerate of the time it takes to do things) rather than opening 40~ tabs because I can, with all of the intent to go back to them later, but ultimately never doing that. If I actually get more done that week… FANTASTIC!

The Old Computer Challenge

Solene covers the challenge on her blog, but the main points are:

  • restrict to 1 CPU|Core|Thread maximum
  • 512 MB of memory
  • USB devices allowed
  • only for personal computer
  • relying on services hosted remotely is allowed
  • using a smartphone to replace your computer may work

Things I need to remember

  • work can be tiring - I may not be able to be productive at the end of every day
  • this is meant to be a fun exercise, so if it causes stress, amend it or end it
  • don’t let this get in the way of socialising with friends online (games/video chat)
  • if the armv7 limitation is too restrictive, maybe look into that R51 at work and just boot off of a persistant USB drive
  • phone use will be required for a couple of things like signal (signal-cli hasn’t worked well in the past)

The device

  • Raspberry Pi 2B
  • TL-WN722N Wi-Fi adapter
  • Wireless keyboard and mouse

I don’t have an older display (or the space to keep one), but will restrict the resolution to around 1024x768. I don’t really intend on going portable with this, but if I do end up in at the office, I can take the Pi in with me and plug into a monitor at my desk for use at lunch. There’s also the possibility of running a VNC server and connecting from my phone, but I’m assuming that the resource restrictions will make this cumbersome.

If you’re not aware, the Pi 2B has a quad-core processor and 1GB of RAM, bringing the spec out-of-bounds of the challenge. To get as close I’m going to apply a couple of changes to the Pi’s configuration to restrict to 512MB RAM and a single core.

I do have a Pi Zero-W, but with all of the adapters required, the size ends up being bigger than the 2B.

Note: I’ve been really tempted to get an old T42 or similar off of eBay, but I don’t want to go spending money on this when I can… not do that. I found an old ThinkPad R51 at work, which is close to the specs, but the battery is done in and so is the HDD. It wouldn’t be my device, so I’m not going to go spending money on a new drive and battery. It’s also pretty heavy compared to the T42.

I’ve had a segfault on the Pi once during the time of writing this so the above option may be required.

Concerns

Lack of encrpytion on device

I’m currently thinking this one over. It’s do-able, but can be resource intensive. Again another point for using a different device.

As a quick hack while I work out something else, I could…

  • create a restricted account that has access to /home/
  • use said account to compress and encrypt (preserving permissions) my user account when Pi no longer being used
  • delete the unencrytped user home and log out

Then when I want to use the device…

  • log into restricted account
  • decrypt and decompress user home directory
  • switch user and startx

Restricting resources

Locking the restrictions to the requirements of the challenge is pretty straightforward.

Restrict CPU to single core:

sed -i /boot/cmdline.txt -e "s/$/ maxcpus=1/"

Restrict memory by allocating extra to the GPU:

sed -i /boot/config.txt -e "s/gpu_mem=490//"

Set resolution to 1024x768:

sed -i /boot/config.txt -e "s/framebuffer_width=1024//"
sed -i /boot/config.txt -e "s/framebuffer_height=768//"

Disable swap (might add this back in if segfault was memory related):

swapoff -a

Software

I’m sticking with RaspberryPi OS Lite for now, running i3 for the desktop environment. Very tempted to give FreeBSD a go with it supporting armv7… I’ve used it on a 3B+ as a server and I’m relatively familiar with the OS. I might do this if I figure out a better hardware setup and want to do this longer term.

For general browsing, I’ll try and stick to w3m to limit resource usage, but Firefox/Iceweasel is always an option. Limited video and audio playback seems possible with mpd/ncmpcpp, vlc (mpv was unusable when testing initially though I may just need to tweak a couple of settings) and youtube-dl where necessary.

The armv7 limitation might make life hell, which I’ll address if it comes up.

Recording

I’ll aim to track how I’m feeling during the week, but probably won’t update every day. I’ll point to updates on this page.

Screenshot of Raspberry Pi desktop showing specs and resource usage