Last night I wrote (most of) a toy program to serve up text zines via telnet or dialup, inspired by Dial-a-Zine which is used to serve A New Session. If you aren’t familiar with A New Session, it’s a literary magazine delivered primarily via telnet, emphasizing queer and trans voices. I highly recommend checking it out. Submissions are open for issue 2.

The toy version is a simple shell script. It doesn’t yet do index generation, the main menu, metadata, or early return, all of which I think will be easy to add, and I’ll do that in my next screw around time.

The most remarkable thing about the process wasn’t anything I did, though, but how little I had to do. I wrote this on Plan 9 (because why would I do it anywhere else?). The script itself just produces text output and waits for simple user-driven input: enter to go between pages and (eventually) menu selection. You can call the script on the command line to get the output. In Plan 9, if you want to turn this into something which listens on the telnet port, if you’ve already got the normal listeners running, you can just copy it over /rc/bin/service/tcp23. Conventionally, to make it a bit clearer what’s going on, you’d instead have tcp23 call the zine script, which also gives you an opportunity to override the defaults if you want, but it remains incredibly simple.

But what I really love is the process for turning something which responds to telnet connections to something which serves it over dial-up data connections:

mv tcp23 telcodata

That’s it; job done.

This is all doable on Unix, of course; it’s just a simple network listener. But that “simple” listener involves (if you’re lucky) inetd or xinetd or (if you’re less lucky) launchd or systemd or something similar, and the mechanism for listening on telnet is totally disjoint from listening on a telephone data connection. Dial-a-zine, notably, bypasses the system listeners entirely and uses python’s mechanisms to listen on the telnet port. I have no idea how you’d get that the answer a telephone data call.

I need to buy a modem.