Codepunk Logo


Giving the Finger to the Bird

by Michael Szul on tags: apotheosis, cyberspace, podcast, podcasting, tildeverse, gopher, finger, ben brown, happynetbox

This is an expanded, written monologue of the Apotheosis pocast episode of the same name. You can listen to the audio version above.

You can blame Ben Brown for this one.

I mentioned Ben in the previous Apotheosis post. He's a current Microsoft engineer that works on the Bot Framework Composer, but made a name for himself in technology and the Austin tech scene for a variety of applications and companies, but most notably, his work on Botkit, which Microsoft subsequently purchased (I suspect this was an acqui-hire to gain Ben's services) and made a part of the Bot Framework. Ben and I are only a year apart in age. We both grew up with similar interests and managed to connect late in life over our work with chatbots (I'm still a Microsoft AI MVP for Bot Framework community contributions) and a love for Max Headroom.

While I was busy putting the research together for a discussion on Gopher and Gemini, Ben was busy building out a version of the Finger protocol that limited the security risk and added a web interface for updating the text that would traditionally be in your .plan or .project file in a Linux/Unix home directory. Welcome to HappyNetBox!

We'll return to HappyNetBox in a bit because it's a good lesson in the history of social software, but if you weren't jacking into Unix machines in the 80's, you might be wondering what the Finger protocol is, or maybe you just need a quick refresher.

On Unix-based systems, prior to the advent of the finger command, information on logged in users was pretty much relegated to using the who command. On my current Linux laptop, this is the result:

szul :1 2021-04-30 06:27 (:1) 

This doesn't really provide us with much other than who is logged into the system. In 1971, Les Earnest wrote the finger program to provide more relevant information. If I run the finger program on my computer, I get the following:

Login Name Tty Idle Login Time Office Office Phone szul Michael Szul *:1 Apr 30 06:27 (:1) 

If I finger the user directly, I get:

Login: szul Name: Michael Szul Directory: /home/szul Shell: /usr/bin/zsh On since Fri Apr 30 06:27 (EDT) on :1 from :1 (messages off) No mail. No Plan. 

If I actually had information in a .plan file in my home directory, it would look like this:

Login: szul Name: Michael Szul Directory: /home/szul Shell: /usr/bin/zsh On since Fri May 7 06:27 (EDT) on :1 from :1 (messages off) No mail. Plan: =============================== ======== szul ================ =============================== Check out I am in meetings until 4:30pm :( 

The finger program is distinct—but related to—the finger protocol. The finger protocol is a daemon exposed to the network that typically runs on port 79. The finger program is a client for this protocol. When a finger request is made, it contacts the corresponding server or network device, which receives the request, processes the query, and responds. The connection between the client and protocol is then closed. This protocol and process was used to provide identifying information like with the examples I've shown. Typically it was meant for co-worker communication and information, hence the office phone. It can include other information like email address, name, logged on time, and through the .plan file could contain more verbose exposition on just about anything. Typically it was used (more...)