The Barputer
January 20, 2020
A few years ago (2005, see this blog post), Frosty and I came up with the notion of a small, inexpensive device that one could take to the bar, or elsewhere, without feeling like you were risking an expensive laptop or iPad – with a focus on writing (of code, or words) rather than web-surfing or game-playing. We coined the term “barputer” to describe this concept.
I sketched out the basic elements at the time: a system-on-chip (SoC) computer, small but high-res display, and a high-quality but small bluetooth keyboard. I figured all of those items were available. At the time, they were - but not quite in the form or capability I envisioned. They all had one (or more) issue to contend with, that made the concept more difficult to realize than I thought.
And so the barputer idea went on the back burner. But, every year or so, it rotated to the forefront of my backlog of ideas, and we toyed with it again - were the necessary components ready yet? Were the features we wanted still the necessary ones? Each year, we affirmed the concept, and that it was not quite ready to be (easily) built.
Meanwhile, the Hemingwrite (now Astrohaus Freewrite) went to Kickstarter, and then the commercial market, and it had some interesting similarities, at least for writing. So, too, did the significantly-older AlphaSmart Neo/Dana line of writing devices, now out of production. Highly portable, distraction-free, purpose-built, with a keyboard suitable to pounding out lots of characters. However,the AlphaSmart is long gone, and the Freewrite is pricey, and totally oriented to stream-of-thought writing, with no option to edit, and no accommodation for somewhat different use-cases like writing code. I also feel the Freewrite design locks users in to a very specific and somewhat limiting application. For those with that very particular use, it is glorious; for everyone else, it is a toy, with potentially fatal flaws.
The pieces I was looking for eventually came along – and while they all continue to improve, the threshold has now been crossed! In particular, we now have, readily available and off the shelf:
1) Raspberry Pi Zero W: tiny and cheap (approx. $15 USD) but can run a full Linux-based OS, with all the tools a writer or coder might want. Includes both WiFi and Bluetooth.
2) Pimoroni’s Hyperpixel high-res touchscreen display, that plugs right in to the Pi Zero. This allows 4-inch display that blows away anything previously available, the options for which were either significantly smaller, lower-resolution, or both. Larger HDMI displays have been around for a while, but they all needed a cable or creative wiring to connect to a Pi, and larger = more power consumption. The Hyperpixel display hits the sweet spot - big enough to be useful, high res so the text looks good, small enough to be highly portable, relatively low power consumption, touch screen so you don’t really need a mouse.
3) Compact Bluetooth mechanical keyboards (like the RK61 and similar) - these “60%” keyboards are small enough to be readily portable, and include proper full-travel keys that make typing for hours a much more satisfying prospect. “Gamer” keyboards have been around for a while, and in the compact format too, but the magic combo with Bluetooth finally makes it work for the “barputer” concept.
I wrestled a bit with whether to put a battery inside the case, or not. Incorporating a battery would mean the total package is smaller, as I could use a flat LiIon battery; but I would need to add a battery charge / voltage booster board, and then the barputer would be dependent on the juice in that one battery. I decided that it would be more flexible to use an external battery-bank - these incorporate a charge controller and boost converter into a tidy package, which makes it easy to swap batteries. You can choose a smaller battery pack for portability, or use a big honking one for all-day (or potentially days) of use, or even use a pack that runs on 18650 cells - and then carry a few extra, charge them from a solar panel, or whatever. Having the power supply independent of the barputer itself would also give the most flexibility for the future.
With the components and layout chosen, I ordered up the parts and set about designing a 3D-printed case. I wanted it to be as slim as possible, but substantial enough to protect the display (the most expensive component of the device, by far!) The Pi Zero doesn’t run very hot, but a little convective cooling doesn’t hurt, so I incorporated vent holes on two sides. I chose the sides such that the case could sit in either landscape or portrait orientation, as I wasn’t yet sure which would work best with the small screen. What I quickly came to realize, is that the case needs to provide some means to prop the thing up at a slight angle - neither completely vertical nor horizontal (flat on the desk) really works well for viewing, but about 30 degrees tilt is ergonomically wonderful.
Once everything was put together, and the Raspbian OS installed and basically configured (e.g. with wifi password, locale, language and keyboard layout) I was able to fire it up and connect via ssh, so I could then install the necessary display drivers from Pimoroni. Rebooting, the display came right up with the graphical desktop, and I used the touchscreen to start bluetooth and connect the keyboard – this all worked fine, with no hiccups (somewhat to my surprise!).
The standard LXTerminal uses a font size that is pretty small to look at on the small but high-res display, and the largest size available (32px) is still not really big enough. This led me to look for a terminal program that would use “modern” fonts; I found ‘st’ from the Sucks Less team. It is very light-weight – also a good feature on a Pi Zero, which just doesn’t have much resources. St doesn’t offer much in the way of bells and whistles, though - no tabs, for instance - so one needs to plan to use a terminal multiplexer like screen or tmux. St plays nice with the window manager to go full-screen.
With a decent terminal in hand, I installed and configured the other essentials for a barputer: vim and mutt (well, neomutt). Vim is my go-to editor/IDE, and I’ve spent a lot of time tuning my configuration on other systems, so I chose to duplicate that on the barputer. Even if one is trying to accomplish “distraction-free” writing/coding, it’s very useful to be able to access email even at a basic level. For many, Gmail is the default, and the Pi Zero just isn’t up to running Google’s bloated web browser client. I tried to find a command-line browser that would work with Gmail, but web Gmail is totally dependent on Javascript; in theory there are CLI browsers that can make it work, but I haven’t found anything that works in practice, let alone on a Pi.
So I now have my fully-functioning “barputer” up and running, well enough to be writing this very blog post on it… I’m sure there will be additional tweaks and changes as I get some experience on it, but thus far I’m pretty happy with the result.