Loading…

Joe Steinbring

The text-only edition of jws.dev

telnet.jws.dev

jws.dev in a terminal: the same experience, résumé, travel, projects and posts, rebuilt from the site’s public JSON API and served over telnet by one Node.js process with no dependencies.

Stable
A terminal window connected to telnet.jws.dev: a greyscale portrait drawn in square blocks beside JWS.DEV in large letters, a short introduction, counts of technologies, roles, places and projects, and the prompt “Press ENTER to begin.”
A terminal window connected to telnet.jws.dev: a greyscale portrait drawn in square blocks beside JWS.DEV in large letters, a short introduction, counts of technologies, roles, places and projects, and the prompt “Press ENTER to begin.”
The first screen of telnet.jws.dev, captured from the live server in a terminal 100 columns wide.

Getting there

How to connect

Any telnet client will do. Connect, press Enter, and type the number of whatever you want to read.

telnet telnet.jws.dev

Getting a telnet client

macOS

Apple stopped shipping telnet with macOS High Sierra. Homebrew puts it back:

brew install telnet
Windows

Turn on the Telnet Client feature from a command prompt run as administrator, then use the command above in Command Prompt or Windows Terminal. PuTTY works too, with Telnet as the connection type.

dism /online /Enable-Feature /FeatureName:TelnetClient
Linux

Most distributions package it as telnet; on Debian and Ubuntu:

sudo apt install telnet
No telnet at all

Netcat, which most systems already have, gets you in too. It skips the negotiation, so you get plain line mode and perhaps a few stray characters at the top.

nc telnet.jws.dev 23

Finding your way around

KeysAction
1–999 + EnterOpen a numbered entry
B + EnterGo back
M + EnterReturn to the main menu
SpacePage through a long screen (the arrow keys work too)
any word + EnterSearch the whole site
T + EnterSwitch between colour with line drawing, plain colour, and plain ASCII
H + EnterShow every command
Q + EnterDisconnect

Telnet is not encrypted. That is fine for reading a public website, which is all this is: there is no login, and nothing you type goes anywhere but this server.

At a glance

Project statistics

API collections it reads
7
Runtime dependencies
0
Display modes
3
Travel destinations
112
Technologies documented
84
Uptime
100%Over the last 30 days, measured by UptimeRobot.
Days since last change
41

Purpose and direction

The goal

telnet.jws.dev is jws.dev rebuilt from nothing but its public JSON API, for a client about as far from a web browser as a client gets: a telnet session in any terminal, browsed by typing numbers. It holds the whole site in memory and checks the API’s manifest every five minutes, downloading only the collections whose content has changed, so whatever is published on jws.dev turns up in the terminal without anyone touching the server. It is one Node.js process with no dependencies — the telnet negotiation, the text layout and the PNG decoder that draws the portrait are all written against the standard library — and it runs on the same server as jws.dev, as an unprivileged, locked-down service that is built to shrug off the bots that scan port 23 all day. It is published in English only.

Changelog

Recent changes

The last few things I have documented about telnet.jws.dev.

  1. ChangedLatest

    Posts, changelogs, and a harder shell

    The telnet site now carries the posts written for jws.dev and each project’s changelog, letters wait for Enter, and the server is stricter with abusive clients.

  2. Added

    A portrait in the banner

    The welcome screen now draws my portrait from the site’s icon: greyscale half blocks on a modern terminal, ASCII shading on anything else.

  3. Added

    jws.dev, over telnet

    A telnet server that rebuilds jws.dev from its public JSON API, with experience, résumé, travel and projects as numbered menus in any terminal.

All 3 changes

Connected to my experience

Technologies used

Select a technology to read more about my experience with it and how I use it.

Explore the technology stack