For a long while now I've loved the idea of computing using devices with less capability. My six year old Macbook Pro (dual core i5, 8GB RAM) chugs when opening and browsing Facebook on Chrome. The way I use Facebook, it's not doing anything different for me compared to how I used it six years ago when I got it, so why should it (or Chrome, or the underlying OS) start performing so badly? I started wondering if I could fight back against the resource-hungry web, eschew power-slurping Electron applications, and bend it all to work on something smaller, something more limited. About six months ago I started thinking on this more solidly, what cool hardware could I make it out of, what funky or fancy features could I add to make this the raddest homemade computing device? I even got as far as ordering and mucking around with an [OLKB Planck](https://olkb.com/collections/planck).

New keyboard arrived! @OrtholinearKB + @Massdrop Planck with Kailh speed copper switches. Tiny four row keyboard, practising with it at work but unsure what to commit it to:
- work keyboard
- render/project macro board
- build a cyberdeck RPi and use this pic.twitter.com/rqn1VbFJYF

— Az (@judges119) December 9, 2020
And finally, a couple of weeks ago, I realised that all this daydreaming wasn't helping me acheive my goal. I could shit in one hand and wish in the other and see which fills up first, or I could just use what I had lying around and get started. In the end the only thing I had to buy was a tiny screen that could be powered off USB. I had everything else I needed to get a prototype done. I ended up using the following: * Raspberry Pi Model 3B+ (was my Gopher server, now virtualised) * OLKB Planck keyboard * 1024x600 HDMI 7" Screen with USB Capacitive Touch from [Jaycar](https://www.jaycar.com.au/1024x600-hdmi-7in-screen-with-usb-capacitive-touch/p/XC9026) I initially bought a screen without touch capability, but it was dead-on-arrival and while I've sent it back to claim a refund, it's unlikely a replacement would be possible as it seems to be out of stock in most places, even overseas. So I could keep putting it together while waiting for the refund, I ended up shelling out for a different screen and the model shown above met my needs and I didn't have to set up touch. After everything arrived, I tried a few different boxes I had as cases to emulate that laptop feel (screen on hinged top, keyboard/guts in the bottom), but found the excess cabling dangling to be ugly and interfering, and I would need to rig up some kind of brace to prevent it opening too far. In the end, I've settled on the setup you see below using an archive box/folder from Ikea. Keyboard aligned bottom-left with screen mounted above, both parts on cardboard supports/jigs. Raspberry Pi partially hidden underneath, with the majority of the cabling obscured. ![A homemade laptop/cyberdeck in an archive folio box.](/img/2021-07-06-claude-laptop.jpg) I've procured two mobile powerbanks to use as potential batteries, one for the RPi (which also powers the keyboard) and one for the screen, as it draws enough current to make the Raspberry Pi unhappy feeding it via USB. However, while I'm lounging on the couch, keeping it connected to mains power is no problem. ## Software The laptop/cyberdeck (named `claude`) runs on [Alpine Linux](https://alpinelinux.org), a tiny Linux distribution focused on simplicity and resource efficiency. Unfortunately for Raspberry Pi usage, the supported option runs the whole operating system from RAM. After a long night of wrangling with getting it installed too the microSD card and another half-evening messing with wireless drivers, I eventually had a device that could connect to the internet, that could store files, and that wouldn't be completed wiped on reboot. As you can see in the above pic, I'm not using any graphical desktop environment, this is a conscious choice as I want to push the limits of my terminal/CLI knowledge and get better overall at interfacing with systems this way. This has definitely been an interesting experience so far, lacking the ability to scroll back the viewport requires me to pipe everything to `less` and use `grep` to extract just the information I need from command output. I've installed the [Lynx](https://lynx.invisible-island.net) text-based web browser to challenge myself to surfing with no images, no JavaScript, and I have a few plans to make it more comfortable to use as a regular device. I've used `screen` before, but getting more confident with that (or `tmux`) for swapping between terminal sessions like I would desktop windows should help my productivity. Tonight has probably been the biggest step, which involved setting up `git`, generating an SSH key, checking out my blog (it's a [statically generated site]({{< relref "/dev/advanced-personal-site.md" >}}) and writing half this post on it. In fact write now I'm editing it while a `screen` session running `hugo serve` monitors and rebuilds the site so I can test it in Lynx. It's definitely been a learning exercise, but this isn't a bad thing. If anything, I've really enjoyed it and the revelations it's provided about the conveniences we are normally afforded when computing. I'm interested to do more with this, and see where it takes me. It feels enjoyable, it feels engaging, and fun, and it all feels **mine**.