Serving Gossips: Difference between revisions

From XPUB & Lens-Based wiki
 
(79 intermediate revisions by 3 users not shown)
Line 1: Line 1:
[[Category:SI29]]
[[Category:SI29]]


== afternoon timeline ==
== Why a Tmux session in this SI ? ==
 
* Tmux is a '''pedagogical tool''', everyone can teach to each others things about the terminal, empowering each others! think about HowSpot, and inclusive pedagogy.
* Tmux is a very '''gossipy tool''', because we see what everyone type at the same time it is a way to interact with computers that include people subjectivity, mistakes, opinions, not trying to delimit the "official" from the "unofficial" the inputs.
* it asks for all of you to invent '''social practices to be able to organize''' as a temporary group
* by having a web and printed output with tmux2web2print, it shows we can '''produce experimental publishing that is collective, that capture it's process, doesn't filter, and use the server as a space'''.
 
== Gossip round ==
 
* did you ever used a server and have a story to tell about it, or heard some news about a server?
* did you ever had an incident, or friction relating to a server, a moment where it became an obstacle, or displayed some socio-political problem?
* is there a nice functionality, something either technical or social, that you'd like to share about server or using the terminal?
 
our gossips are here: https://pad.xpub.nl/p/19012026_ServingGossips
 
== Timeline ==


{| class="wikitable"
{| class="wikitable"
Line 26: Line 41:


<blockquote>
<blockquote>
From wikipedia, we learn that:
The Secure Shell Protocol (SSH Protocol) is a cryptographic network protocol for operating network services securely over an unsecured network. Its most notable applications are remote login and command-line execution.  
* The Secure Shell Protocol (SSH Protocol) is a cryptographic network protocol for operating network services securely over an unsecured network. Its most notable applications are remote login and command-line execution.
* In 1995, Tatu Ylönen, a researcher at Helsinki University of Technology in Finland designed the first version of the protocol (now called SSH-1) prompted by a password-sniffing attack at his university network. The goal of SSH was to replace the earlier rlogin, TELNET, FTP and rsh protocols, which did not provide strong authentication nor guarantee confidentiality. He chose the port number 22 because it is between telnet (port 23) and ftp (port 21).
</blockquote>
</blockquote>


[[File:Remote-login-is-a-lot-like-astral-projection.png | 400px | thumb | right | ]]
[[File:Remote-login-is-a-lot-like-astral-projection.png | 400px | thumb | right | ]]


What do we mean?  
What do we mean? I am on my computer using its keyboard and its screen. But when I SSH, '''it's like i am on another (distant) computer, but using the interface (keyboard, screen) of my computer'''. We do that to interact with a server, without having to be in the same space or to plug a keyboard, or screen on it (maybe it's in a datacenter and I don't have access to it physically even...). I can use that computer, through my computer, using SSH.


I am on my computer using its keyboard and its screen. But when I SSH, '''it's like i am on another (distant) computer, but using the interface (keyboard, screen) of my computer'''. We do that to interact with a server, without having to be in the same space or to plug a keyboard, or screen on it (maybe it's in a datacenter and I don't have access to it physically even...). I can use that computer, through my computer, using SSH.
== Communal servers ==


Communal servers can be said to be like shared space, a colocation.
Communal servers can be said to be like shared space, a colocation.
Line 55: Line 68:
* [https://en.wikipedia.org/wiki/Tmux Tmux on wikipedia]
* [https://en.wikipedia.org/wiki/Tmux Tmux on wikipedia]
* [[Tmux| Tmux on xpub wiki]]
* [[Tmux| Tmux on xpub wiki]]
* [https://sharingshells.diebin.at/english.html great tmux zine by server collective diebin]


[[File:Tmux-is-a-lot-like-merging-our-minds.png | 400px | thumb | right | ]]
[[File:Tmux-is-a-lot-like-merging-our-minds.png | 600px | thumb | right | ]]


<blockquote>
<blockquote>
From wikipedia, we learn
Tmux is an open-source terminal multiplexer for Unix-like operating systems. It allows multiple terminal sessions to be accessed simultaneously in a single window. It is useful for running more than one command-line program at the same time. It can also be used to detach processes from their controlling terminals, allowing remote sessions to remain active without being visible.
* tmux is an open-source terminal multiplexer for Unix-like operating systems. It allows multiple terminal sessions to be accessed simultaneously in a single window. It is useful for running more than one command-line program at the same time. It can also be used to detach processes from their controlling terminals, allowing remote sessions to remain active without being visible.
TMUX was first published as open-source code in 2007 by Nicholas Marriott.
* TMUX was first published as open-source code in 2007 by Nicholas Marriott.
</blockquote>
</blockquote>


What do we mean?
What do we mean? If SSH is astral projection TMUX is like '''we merge our souls and interact as one person with a (distant) computer''' over SSH. It is handful because communication over SSH relied on established protocol in files and filenaming, while inside of a TMUX session '''everyone sees what everyone type immediately''', like if we merged our soul we all have the same POV. But then actually typing stuff is difficult because '''collaboration become "character granular"''', if we we both try to type <code>echo</code> we might end up with like <code>echehocho</code> or something...
 
If SSH is astral projection TMUX is like '''we merge our souls and interact as one person with a (distant) computer''' over SSH. It is handful because communication over SSH relied on established protocol in files and filenaming, while inside of a TMUX session '''everyone sees what everyone type immediately''', like if we merged our soul we all have the same POV. But then actually typing stuff is difficult because '''collaboration become "character granular"''', if we we both try to type <code>echo</code> we might end up with like <code>echehocho</code> or something...


Tmux allows you to  
Tmux allows you to  
Line 80: Line 91:
'''a session''' is a workspace inside a socket. it's the mindspace in which we merged our souls.
'''a session''' is a workspace inside a socket. it's the mindspace in which we merged our souls.


While we use Tmux mainly for collaborating, many people use it for window management and structuring their shells over time.
While we use tmux for collaborating, many people use it for window management and structuring their shells over time.
 
== Why do we do that in this SI ? ==
 
* Tmux is a '''pedagogical tool''', everyone can teach to each others things about the terminal, empowering each others! think about HowSpot, and inclusive pedagogy.
* Tmux is a very '''gossipy tool''', because we see what everyone type at the same time it is a way to interact with computers that include people subjectivity, mistakes, opinions, not trying to delimit the "official" from the "unofficial" the inputs.
* it asks for all of you to invent '''social practices to be able to organize''' as a temporary group
* by having a web and printed output with tmux2web2print, it shows we can '''produce experimental publishing that is collective, that capture it's process, doesn't filter, and use the server as a space'''.


== your first TMUX session ==
== your first TMUX session ==


(20min)
# Everyone SSH into sergio (this year server)  
 
# Kaa starts a session for everyone to join.
small exercice to write,
#:  <code>tmux -f tmx/tmux.conf -S /tmp/(socket) new -s (session)</code>
one big session started by us.
#:  with our folder structure: <code>tmux -f /home/xpub/tmux2web2print/tmux/tmux.conf -S /tmp/(socket) new -s (session)</code>
 
# Kaa grant access to everyone
  tmux -S /tmp/(socket) new -s (session)
#:   <code>chmod 777 -S /tmp/(socket)</code>
within session:
#:  if it doesn't work then try: <code>chmod 777 /tmp/(socket)</code>
  chmod 777 -S /tmp/(socket)
#:  <code>tmux server-access -a (username)</code>
  tmux server-access -a (username)
# Everyone "attach" to the session
 
#:   <code>tmux -S /tmp/(socket) attach -t (session)</code>
for the students after getting access, attach:
# Kaa (traceroute), Doriane (tree), and one or two students shows a command they like 
  tmux -S /tmp/(socket) attach -t (session)
# Everyone leaves the session with
 
#:   <code>ctrl+b and then d</code>
 
# We end the session with
we show 2 things:
#:  <code>exit</code>
* kaa show a command
* doriane show a command
* we asked if a student want to show a command.


== tmux2web2print: serving gossips ==
== tmux2web2print: serving gossips ==


(20min)
=== Printing a Tmux session! ===


What are the server gossiping about?
'''What are the server gossiping about?''', '''What is being gossiped on the server?''' and of course '''can we print it!'''.


* teletype and RTTY, telex machine, the first "terminal" print recipe instead of having a screen
* if we come back at the origin of the "terminal", it used to look like a printer. those machines, called teletype (starting in 1890s) or teleprinter, or telex (in the late 1920s), where basically '''like a typewriter but connected to a network'''. In those case we didn't had a screen, '''the inputs and outputs where printed on a paper!''' (if you wanna know more, a whole SI has been done on the [[TTY]] (teletype) )
* feminist server, documentation is hard, can we have documentation generated on the go, with all the organic chaos that comes from it as part of the pedagogy
* '''Documentation is hard''', but also - specifically for Feminist server, wanting to be inclusive and welcoming - '''documentation is important'''. Can we have documentation generated on the go? (with all the organic chaos that comes from it as part of the pedagogy?)
* tmux hook activating using bash script
* By doing Tmux hooks that activate a set of bash scripts, we can '''"record" what we type''' inside of our Tmux session and print it '''into some HTML file''' directly hosted on a server.
* HTML/CSS are generated immediatly on the served folder to acces it online
* So our collective history is accessible online, but because we can print webpages, '''we can make a zine out of it!'''
* we can print them using ctrl+p !
* For that we'll need to edit the CSS, but also draw/insert images? add little comment about how was the session for us, print it in different format or paper that translate what we did into a physical object.


The zine capture what is send, so if you write things in the prompt but remove it, it's not going to be there.
'''IMPORTANT NOTE:''' The zine capture everything that we type. even if you remove it (with backspace), it will still show in the final output. However, what we do inside an editor like <code>nano</code> isn't recorded, but you can <code>cat</code> after saving to still get a trace of the editing. if you type and remove a lot, maybe try repeating them or using <code>echo</code>. Also, if you paste content with line breaks it will unfortunately only recognize the first line as user input.
Think about the outcome, it's nice to use echo: if you type some interesting comment collectively in the prompt zone, someone can just write echo in front and send it so the interesting comment is saved in the zine later.


=== quick starting guide ===
=== quick starting guide ===


├── README.md
this the code this repository [https://codeberg.org/czkaa/tmux2web2print.git tmux2web2print] will contains a tmux configuration that
├── scripts
│   ├── append-content.sh
│   ├── create-session.sh
│   ├── handle-event.sh
│   └── handle-log.sh
├── template
│   ├── index.html
│   └── style.css
├── tmux
│   └── tmux.conf
└── tmux-cheat-sheet.md
 
 
this the code this repository [https://codeberg.org/czkaa/tmux2web2print.git] will contains a tmux configuration that
* for every session creates a html website
* for every session creates a html website
* logs events (creating, attaching, detaching from the session) to the website
* logs events (creating, attaching, detaching from the session) to the website
Line 147: Line 133:
* contains minimal styling to print the logs into a zine
* contains minimal styling to print the logs into a zine


==== install dependencies ====
  ├── README.md
  ├── scripts # contains the scripts executed by the hooks
  │   ├── .env
  │   ├── append-content.sh
  │   ├── create-session.sh
  │   ├── handle-event.sh
  │   └── handle-log.sh
  ├── template # the html template that is cloned for every session
  │   ├── index.html
  │   └── style.css
  ├── tmux # contains all the hooks we want to add to our session
  │   └── tmux.conf
  └── tmux-cheat-sheet.md


If tmux is not installed yet
=== quick starting guide ===
    apt install tmux


Tmux gives us very raw output. This includes ANSI terminal escape codes for colors, cursor movements etc.
the code from the repository allows to
We need a parser for that: [https://github.com/andre-simon/ansifilter] (if we don't want to write our own)
* for every session creates a html website
Run:   
* logs events (creating, attaching, detaching from the session) to the website
apt install ansifilter
* logs everything you write in that session and the output to the website
* contains minimal styling to print the logs into a zine


=== start a session ===


==== clone repository ====
we already cloned the repository, installed dependencies and set access right


    git clone https://codeberg.org/czkaa/tmux2web2print.git
start a session:
    cd tmux2web2print
  tmux -f /home/xpub/tmux2web2print/tmux/tmux.conf -S /tmp/(socket) new -s (session)


==== set paths and permission ====
allow others to join:
  chmod 777 tmp/(socket)
  tmux server-access -a (username)


  chmod +x scripts/*.sh
this created a website folder at !!!path/where/websites/are/cerated/ with the title <code>(socket)-(session</code> with an <code>index.html</code> and <code>style.css</code> file inside. (alomst) everything that happens in the session will be appended to the <code>index.html</code>.
so that tmux hooks can execute scripts


set the location for the generated website files
see [https://codeberg.org/czkaa/tmux2web2print/src/branch/main/tmux-cheat-sheet.md tmux cheat sheet] for more functionality
  echo "SITES_DIR=/path/to/folder" > scripts/.env


=== styling and printing the fanzine ===
== merged soul pedagogy ==


...
# form group of max 4 persons.
# you start a Tmux session together.
# once we made sure that the setup is working for everyone. you have to first select at least 3 command that some people of the group don't know, and at least one person know about.
# <s>then the groups split in the space of the school.</s> (we didn't do that part)
# the exercice is to teach or collaborate together, by showing how those command work inside of a Tmux session.  


=== tmux cheatsheet ===
Warning 45min goes fast, try to not spend more than 15min on a command.


...
moving around <code>cd</code> <code>ls</code>


== merged soul pedagogy ==
displaying stuff
<code>echo</code> <code>cat</code> <code>tree</code> <code>figlet</code>


by group of max 4 persons.
editing stuff
<code>chmod</code> <code>nano</code> <code>chown</code>


1. you start a tmux session together.
grabbing stuff
  (put back the command to do so)
2. once we made sure that the setup is working for everyone. you have to first select at least 3 command that some people of the group don't know about and at least one person know about.
3. the groups split in space.
4. then teach them to each others by showing how they work inside of a tmux session. warning 30min goes fast, try to not spend more than 10min on a command.


moving around
<code>grep</code> <code>history</code>


* cd
network
* ls


displaying stuff
<code>ifconfig</code> <code>ping</code> <code>traceroute</code><code>curl</code>


* echo
== Documentation ==
* cat
* tree
* figlet


grabbing stuff
Here's what we made out of our (glitchy, often broking because of weird bash problems) tmux session.
They where immediatly (live) served here: https://hub.xpub.nl/sergio/SI29/tmux-zines/
Kaa proposed to continue working on the tool and update us if she push a new version!


* grep
We diveded into 3 groups based on affinity
* history


changing authority
# valentin, daan, lea, sibyl, phillip -- (grabbing) grep, tr
# tommi, barbs, youjung, ema -- (network) curl, ping, traceroute
# kiki, robin -- (exploring) cd, ls, tree, mkdir, touch


* chmod
Here's maybe some of the bugs
* chown


network
* figlet with specific character
* echo with specific character
* when someone leaves the session?
* but also sometime something is printing in the middle of another line like "pintg" instead of "ping" (only in the fanzine version, in tmux everything is fine)


* ifconfig
Then we quickly edited the CSS in a shoulder2shoulder way and printed 4 of them.
* ping
* traceroute
* curl


yours!!!
<gallery widths="240" heights="240">
File:Tmuxzine 1.jpg
File:Tmuxzine 2.jpg
File:Tmuxzine 3.jpg
File:Tmuxzine 4.jpg
File:Tmuxzine 5.jpg
</gallery>


* ...
After posting about this session on mastodon (https://post.lurk.org/deck/@doriane/115944035594398542), Simon shared with us


== zine printing and CSS! ==
[[File:Xpub_logo_2020_1.png|500px|thumb|center|Simon: From the XPUB class of 2020, a reflection on when we all suddenly had to do tmux in our prototyping classes because of COVID-19]]

Latest revision as of 13:30, 5 March 2026


Why a Tmux session in this SI ?

  • Tmux is a pedagogical tool, everyone can teach to each others things about the terminal, empowering each others! think about HowSpot, and inclusive pedagogy.
  • Tmux is a very gossipy tool, because we see what everyone type at the same time it is a way to interact with computers that include people subjectivity, mistakes, opinions, not trying to delimit the "official" from the "unofficial" the inputs.
  • it asks for all of you to invent social practices to be able to organize as a temporary group
  • by having a web and printed output with tmux2web2print, it shows we can produce experimental publishing that is collective, that capture it's process, doesn't filter, and use the server as a space.

Gossip round

  • did you ever used a server and have a story to tell about it, or heard some news about a server?
  • did you ever had an incident, or friction relating to a server, a moment where it became an obstacle, or displayed some socio-political problem?
  • is there a nice functionality, something either technical or social, that you'd like to share about server or using the terminal?

our gossips are here: https://pad.xpub.nl/p/19012026_ServingGossips

Timeline

hour session
14h00-14h30 🖐️ your first TMUX session
14h30-15h00 🗨️ presenting tmux2web2print, a tool made by Kaa
15h00-15h15 ⏳ small break
15h15-16h00 🖐️ collective TMUX pedagogy
16h00-16h15 🗨️ sharing how it went
16h15-17h00 🖐️ web2print zine of our session

what is SSH

The Secure Shell Protocol (SSH Protocol) is a cryptographic network protocol for operating network services securely over an unsecured network. Its most notable applications are remote login and command-line execution.

Remote-login-is-a-lot-like-astral-projection.png

What do we mean? I am on my computer using its keyboard and its screen. But when I SSH, it's like i am on another (distant) computer, but using the interface (keyboard, screen) of my computer. We do that to interact with a server, without having to be in the same space or to plug a keyboard, or screen on it (maybe it's in a datacenter and I don't have access to it physically even...). I can use that computer, through my computer, using SSH.

Communal servers

Communal servers can be said to be like shared space, a colocation. In order to feel good in a colocation we need shared rules as much as shared agency. However if we connect at many on a server there isn't a chat room to share links or explain things to each others. For shared rules and shared agency, we resort to:

  • naming the folder/file in a way that convey a meaning, and standard naming practice, like what's hosted is it /var/www/ (balconny), and /home/ (our bedrooms) contain one folder per users with their 'home' directory. Things like this already induce that some spaces are more intimate and other more shared.
  • putting README.txt (like little note on the fridge) file in directory to invite people to read them as little manuals of what's happening there (using cat to dump the text, or nano to edit it).
  • read and write access can be given using chmod and chown (keys and lock we put on the doors) to give different rights to different users.

Communal "tilde" server, where everyone has a room in a big mansion type of vide:

what is TMUX

Tmux-is-a-lot-like-merging-our-minds.png

Tmux is an open-source terminal multiplexer for Unix-like operating systems. It allows multiple terminal sessions to be accessed simultaneously in a single window. It is useful for running more than one command-line program at the same time. It can also be used to detach processes from their controlling terminals, allowing remote sessions to remain active without being visible. TMUX was first published as open-source code in 2007 by Nicholas Marriott.

What do we mean? If SSH is astral projection TMUX is like we merge our souls and interact as one person with a (distant) computer over SSH. It is handful because communication over SSH relied on established protocol in files and filenaming, while inside of a TMUX session everyone sees what everyone type immediately, like if we merged our soul we all have the same POV. But then actually typing stuff is difficult because collaboration become "character granular", if we we both try to type echo we might end up with like echehocho or something...

Tmux allows you to

  • Run multiple terminal sessions/shells inside a single terminal window
  • Detach and reattach sessions without stopping programs
  • Split a terminal into multiple panes or windows -Share sessions with other users via sockets

a shell is the program the terminal starts for you. it provides the command-line interface that lets you write commands to an operating system.

a socket is a direct connection between two points. each connection point is updated automatically. it is a server running in the background. for Tmux, it means that one or two users are directly connected to terminal shells via ssh. it's what makes the connection between two astral projection.

a session is a workspace inside a socket. it's the mindspace in which we merged our souls.

While we use tmux for collaborating, many people use it for window management and structuring their shells over time.

your first TMUX session

  1. Everyone SSH into sergio (this year server)
  2. Kaa starts a session for everyone to join.
    tmux -f tmx/tmux.conf -S /tmp/(socket) new -s (session)
    with our folder structure: tmux -f /home/xpub/tmux2web2print/tmux/tmux.conf -S /tmp/(socket) new -s (session)
  3. Kaa grant access to everyone
    chmod 777 -S /tmp/(socket)
    if it doesn't work then try: chmod 777 /tmp/(socket)
    tmux server-access -a (username)
  4. Everyone "attach" to the session
    tmux -S /tmp/(socket) attach -t (session)
  5. Kaa (traceroute), Doriane (tree), and one or two students shows a command they like
  6. Everyone leaves the session with
    ctrl+b and then d
  7. We end the session with
    exit

tmux2web2print: serving gossips

Printing a Tmux session!

What are the server gossiping about?, What is being gossiped on the server? and of course can we print it!.

  • if we come back at the origin of the "terminal", it used to look like a printer. those machines, called teletype (starting in 1890s) or teleprinter, or telex (in the late 1920s), where basically like a typewriter but connected to a network. In those case we didn't had a screen, the inputs and outputs where printed on a paper! (if you wanna know more, a whole SI has been done on the TTY (teletype) )
  • Documentation is hard, but also - specifically for Feminist server, wanting to be inclusive and welcoming - documentation is important. Can we have documentation generated on the go? (with all the organic chaos that comes from it as part of the pedagogy?)
  • By doing Tmux hooks that activate a set of bash scripts, we can "record" what we type inside of our Tmux session and print it into some HTML file directly hosted on a server.
  • So our collective history is accessible online, but because we can print webpages, we can make a zine out of it!
  • For that we'll need to edit the CSS, but also draw/insert images? add little comment about how was the session for us, print it in different format or paper that translate what we did into a physical object.

IMPORTANT NOTE: The zine capture everything that we type. even if you remove it (with backspace), it will still show in the final output. However, what we do inside an editor like nano isn't recorded, but you can cat after saving to still get a trace of the editing. if you type and remove a lot, maybe try repeating them or using echo. Also, if you paste content with line breaks it will unfortunately only recognize the first line as user input.

quick starting guide

this the code this repository tmux2web2print will contains a tmux configuration that

  • for every session creates a html website
  • logs events (creating, attaching, detaching from the session) to the website
  • logs everything you write in that session and the output to the website
  • contains minimal styling to print the logs into a zine
  ├── README.md
  ├── scripts # contains the scripts executed by the hooks
  │   ├── .env 
  │   ├── append-content.sh
  │   ├── create-session.sh
  │   ├── handle-event.sh
  │   └── handle-log.sh
  ├── template # the html template that is cloned for every session
  │   ├── index.html
  │   └── style.css
  ├── tmux # contains all the hooks we want to add to our session
  │   └── tmux.conf
  └── tmux-cheat-sheet.md

quick starting guide

the code from the repository allows to

  • for every session creates a html website
  • logs events (creating, attaching, detaching from the session) to the website
  • logs everything you write in that session and the output to the website
  • contains minimal styling to print the logs into a zine

start a session

we already cloned the repository, installed dependencies and set access right

start a session:

  tmux -f /home/xpub/tmux2web2print/tmux/tmux.conf -S /tmp/(socket) new -s (session)

allow others to join:

  chmod 777 tmp/(socket)
  tmux server-access -a (username)

this created a website folder at !!!path/where/websites/are/cerated/ with the title (socket)-(session with an index.html and style.css file inside. (alomst) everything that happens in the session will be appended to the index.html.

see tmux cheat sheet for more functionality

merged soul pedagogy

  1. form group of max 4 persons.
  2. you start a Tmux session together.
  3. once we made sure that the setup is working for everyone. you have to first select at least 3 command that some people of the group don't know, and at least one person know about.
  4. then the groups split in the space of the school. (we didn't do that part)
  5. the exercice is to teach or collaborate together, by showing how those command work inside of a Tmux session.

Warning 45min goes fast, try to not spend more than 15min on a command.

moving around cd ls

displaying stuff echo cat tree figlet

editing stuff chmod nano chown

grabbing stuff

grep history

network

ifconfig ping traceroutecurl

Documentation

Here's what we made out of our (glitchy, often broking because of weird bash problems) tmux session. They where immediatly (live) served here: https://hub.xpub.nl/sergio/SI29/tmux-zines/ Kaa proposed to continue working on the tool and update us if she push a new version!

We diveded into 3 groups based on affinity

  1. valentin, daan, lea, sibyl, phillip -- (grabbing) grep, tr
  2. tommi, barbs, youjung, ema -- (network) curl, ping, traceroute
  3. kiki, robin -- (exploring) cd, ls, tree, mkdir, touch

Here's maybe some of the bugs

  • figlet with specific character
  • echo with specific character
  • when someone leaves the session?
  • but also sometime something is printing in the middle of another line like "pintg" instead of "ping" (only in the fanzine version, in tmux everything is fine)

Then we quickly edited the CSS in a shoulder2shoulder way and printed 4 of them.

After posting about this session on mastodon (https://post.lurk.org/deck/@doriane/115944035594398542), Simon shared with us

Simon: From the XPUB class of 2020, a reflection on when we all suddenly had to do tmux in our prototyping classes because of COVID-19