Navigation Menu

Screen Free Writing With the Alphasmart

Published: Jul 27, 2023

Last Modified: Nov 20, 2023

The AlphaSmart 3000 is single purpose word processing computer from the early 2000s. In this note, I’ll describe how I use my AlphaSmart to write code effectively, and how I use my headless server to upload content from the AlphaSmart to ctrl-c.club.

tl;dr: The AlphaSmart 3000 is neat. If you like retro hardware and writing, then they’re well worth the ~50$CAD it costs to buy one off eBay. They’re suprisingly versatile and lots of fun.

The AlphaSmart 3000 has a four row dot matrix LCD display and 200kb of memory spread across eight files. It takes three AA batteries, which I’m told last about four hundred hours to a charge. (I’ve never had to replace them in the three years that I’ve used my AlphaSmart.) The way that that the AlphaSmart communicates with a computer is by emulating a USB keyboard. One plugs in the AlphaSmart, hits a Send button, and it manually “types” the contents of a file in to the computer as though it were a keyboard. This functionality lends itself to a nice hack that I’ll describe below.

Writing Effectively

There are three hacks that I’ve found helpful on the AlphaSmart: keeping a table of contents, copying common code blocks, and manually generating raw TTY input. The AlphaSmart has eight “files” for storing text. One can copy and paste between the files freely. The search functionality searches all the files in numerical order.

I noticed that when I use the AlphaSmart after a long pause, I tend to forget which files had which projects or content in them. This led me to keep a “Table of Contents” in the first file. Whenever I turn on the AlphaSmart, I switch to File 1 and look at where everything is.

File 1 is also the first file to get searched when looking for text. This means that I keep all my re-usable code snippets in there. I tend to write a lot of lecture notes using $\LaTeX{}$ for my work. This writing requires lots of repetitive code blocks from frames.

 %% QFRAME %%
 \begin{frame}{TITLE} % (fold)
    \begin{question}
        QUESTION
    \end{question}
 
    \vspace{\stretch{100}}
    %<*solutions>
        \fbox{\parbox{\textwidth}{ 
            SOLUTION	
        }}
    %</solutions>
 \end{frame} % (end)

I store these snippets of code in File 1, and access them using the search function. If I need to add a “question frame” to my lecture notes, I can search for QFRAME and pull up the required code in a few seconds. Some other things that I store in File 1 include: headers for my Hugo site, and a bit of raw TTY input to upload the contents of a file to ctrl-c.club.

Transferring Content to ctrl-c.club

It is nice to write offline on the AlphaSmart 3000, but we have all come to expect our devices to have the ability to upload written material to the cloud. I usually write on the AlphaSmart in the basement, which happens to have a headless server in it. One day, it occurred to me that I could use the headless server to upload material from the AlphaSmart to ctrl-c.club.

Setup the Headless Computer to Start without An X Server

This is the setup that I used on Ubuntu to make my headless server boot to login prompt. Edit /etc/default/grub with your favourite editor, e.g. nano:

sudo nano /etc/default/grub

Find this line:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

Change it to:

GRUB_CMDLINE_LINUX_DEFAULT="text"

Update GRUB:

sudo update-grub

Send The Text to the Headless Computer

In File 1, I have the following bunch of raw TTY input. It creates a file, opens it in ed, and dumps a bunch of raw text, writes the file, quits, and uploads it to ctrl-c.club. The LOCAL-USERNAME is my username on my headless server, and USERNAME is my username on ctrl-c.club. (In my case, these happen to be identical.)

LOCAL-USERNAME
LOCAL-PASSWORD
ALPHASMART="alphasmart-$(date --iso=second).txt"
touch ~/$ALPHASMART
ed ~/$ALPHASMART
a
This is some text from the AlphaSmart
You can include all sorts of stuff here.
Except, of course, a line containing a single period.
.
w
q
⏎
⏎
scp $ALPHASMART ctrl-c.club:/home/USERNAME/
exit
⏎

One could really go nuts with this idea. I’ve thought of adding bells and whistles to notify me that everything was a success. If you play with these hacks, or even if you don’t, please let me know! Thanks for reading.

~pgadey

Tags

Navigation Menu

Thanks for reading! If you have any comments or questions about the content, please let me know. Anyone can contact me by email.