Alphasmart Neo2

I’m writing this from Tuckahoe State Park, the first leg of a multinight car camping trip which I (for practice, I suppose) opted to treat like a backpacking trip. My goal was to fit everything, aside from food (handled as a group), that I needed in or on a 30L pack for the one evening here followed by three in the sand at Assateague Island. Good way to try out a few things for when I ordinarily need to pack food but fewer clothes. So, why am I wasting precious pack space on a writing device?

‘Writing device’ is a funny thing to call a laptop, but I didn’t bring a laptop. I’m writing this on an Alphasmart Neo2, a device that is primarily just for writing on. Designed for the educational market, Alphasmarts are just keyboards with relatively small black and white LCDs stuck to the top. Earlier ones had character-driven LCDs with a fixed number of rows and columns; the Neo and Neo2 have graphical LCDs with an adjustable font size. You write as much as you can fit into 512MB (which is a lot, we’re talking about plaintext and no fancy encodings), then you plug the Alphasmart into you’re computer’s USB port, fire up a text editor, and send the data.

Why fire up a text editor? It’s a holdover, I suppose, from before when there were no such luxuries as USB mass storage. Alphasmarts have been around since the Apple ADB port, and the simplest way to transfer a bunch of text was to just… be a keyboard. So you plug the thing in (at this point you can actually use it as a keyboard if you’d like), pick a file (you have 8 slots to work with), and hit send to watch your keystrokes go flying one at a time into your text editor. It’s arguably a hackish solution, but it works.

My workflow is something like cding to my blog directory, running hugo new post/2016-08/alphasmart.md, then running >> content/!!:21. The terminal is then ready to accept input, and I can send those keystrokes on their merry way. Once the transfer is done, I can hit Ctrld on either my normal keyboard or the still-connected Alphasmart to close out my file. I’ll then go and edit my metadata (frontmatter) and proofread in Vim; Vim isn’t a great choice for receiving the input because of some insert-mode plugins I use for brace/quote balancing and the like.

The hardware itself is perfect for what the device does. The screen is a little small and awkward-looking, but neither of those things is an impediment to the task at hand. It isn’t backlit (some folks have managed to replace the older 3000’s character-driven screen with a backlit one; this screen seems far more proprietary), but the contrast is good — the Black Diamond Moji on its lowest setting that hangs from my tent ceiling is plenty of light to write by. Furthermore, the keyboard is so good that touch-typing in total darkness is entirely possible for smaller chunks of text.

The keys are full-sized, comfortably concave and amazingly tactile. I’m really quite curious what sort of keyswitches they’ve used to make such a slim profile keyboard so good to type on. It easily bests my Lenovo X220 (known for being one of the last great laptop keyboards), and doesn’t lag far behind my clicky Alps switch-wielding Matias. In fact, if I didn’t have the Matias, and if I had the desk space, I don’t think I’d mind using this as a full-time keyboard for my Mac at all.

A few final thoughts on why this is such a wonderful writing device. It takes three AA batteries, and battery life is measured in… hundreds of hours, I believe? It’s very durable, having been designed for the (early) educational market. It’s also very affordable — in the era of the Chromebook or educational iPad, I suppose they’re a bit outmoded, which means there are countless surplus units available on the internet. I think mine ran me under $30. So if I accidentally spill a jar of honey on it, and a bear eats it… I’m really only out these words.


  1. I believe zsh allows this by default, and bash can be configured to as well. >> without a command just pipes STDIN to the target file, giving you a quick-and-dirty way to lay down some text. !! references the last line, and :2 picks the 3rd element, in this case the partial path to the file. ↩︎