Sidequests
Throughout the course, before each technical tutorial in class, I will also offer an optional sidequest for folks who are already experienced programmers and may not need the technical tutorial. These sidequests are meant to be prompts for related exploration that are more technically advanced.
First Sidequest: Terminal Art
Create an artwork or poem for the Terminal using a bash script.
This Terminal artwork should be able to be run entirely via Terminal on a raspberry pi, for example by running a command like ./poem.sh
After creating this, put your Terminal artwork onto the class server at mazhai.commoninternet.net
Second Sidequest: Alternative Tunnel Research
I've done a lot of research on different ways of tunneling and making gateways, but there are many tools and approaches I still haven't explored, and would love your help.
This sidequest is to explore an alternative method of making a local server visible to the public internet, create a short writeup about what you found, and/or make a modified version of the gateway admin interface used by gateway-coop which uses the new tunneling method. If you are interested in this topic and would like more information about it or have questions please send max a message. The current gateway used by gateway-coop uses tailscale, but here are some other possible tools to explore:
- https://narrowlink.com/
- https://github.com/flipt-io/reverst
- https://github.com/rapiz1/rathole
- https://github.com/fatedier/frp
- https://boringproxy.io/
Or for an even-more low-level (possibly life-long) sidequest, create an entirely new tunneling method.
Third Sidequest: P2P Network Latency Tests
On Week Three, we learn how the internet works, and spend some time with maps of internet architecture (https://www.submarinecablemap.com/, Visualizing The Internet). I imagined it would be nice to figure out a hands-on exercise for exploring the internet connections between the participants and servers of the class, but I never was able to get this fully automated to the degree that it could be practically useful. I started experimenting with this in this document, but currently it is too complicated and non-streamlined for most participants to contribute to it. I imagine this could be improved by building some type of packaged tool (probably in one binary), that can be configured to connect to a set of peers (other people in the class) and run a suite of tests, visualizing and recording the results in some way. There are many details to be worked out, but this could be an interesting project to make a real-time multi-player internet visualization and mapping tool along these lines.