Från labbet

Post Apocalyptic Future

Vi tror att driftstopp kommer att vara en del av det nya normala i den postapokalyptiska framtiden. Vår prototyp utforskar det enklaste, möjliga sättet att kommunicera: en virtuell mailbox innehållande textdokument som kan kodas och avkodas med base64.

Tech used

  • Go
  • Python
  • Base64

Bakgrund och problem

Världen förändras och måste anpassas efter nya globala omständigheter, samtidigt som våra jobb som utvecklare behöver anpassa sig i samma takt. Det är omöjligt att förutse exakt vilka färdigheter som kommer att behövas i framtiden men vi har försökt titta på några troliga begränsningar som kan komma att uppstå som en följd av klimatförändringar och dess effekter.

Energikrisen i Europa hösten 2022 har gjort det ännu mer realistiskt att föreställa sig att el i framtiden inte kommer att vara gränslös utan en bristvara. Mot den bakgrunden samt med vetskap om att många nya teknologier uppfinns i krigstider har vi också undersökt vilka kommunikationsmedel som har använts i kriget i Ukraina.

Vi tror att det är viktigt att våga föreställa sig en framtid som kan se dystrare och mörkare ut än hur världen ser ut nu, men att ändå planera med en hoppfull inställning. Det här projektet har varit ett sätt för oss att kunna känna att vi åtminstone försöker göra något. Lösningen vi har valt att utveckla kommer förmodligen inte att användas av någon i skarpt läge, men projektet har givit oss en känsla av att arbeta med något meningsfullt.

För det här projektet ville titta på både rimliga behov och begränsningar i den framtiden vi föreställer oss. Vi försökte därför att skala ned, och att ta bort möjligheten att ladda upp bilder och videos, och istället fokusera på att hitta ett minsta möjliga sätt att kommunicera.

För oss kändes projektet väldigt relevant och har lett till filosofiska diskussioner. Vi ägnade nästan halva projekttiden åt att diskutera olika behov och att göra research om begränsningarna som ramar in projektet.

Det största hindret i detta projekt har varit att försöka förstå vilka begränsningar man kan komma att behöva anpassa sig till. Vilken typ av teknik kommer att vara tillgänglig i en framtid som inte bara är lite tuffare, utan faktiskt postapokalyptisk? I vår research tittade vi mycket på det här projektet för inspiration: https://100r.co/site/about_us.html

Hösten 2022 har komponentbristen på marknaden redan varit framträdande. Stigande havsnivåer kommer med största sannolikhet att begränsa användningen av hamnar och minska transportmöjligheter. Framåt kommer det med största sannolikhet att bli ännu värre. Möjligheterna att skapa helt nya enheter när en enhet går sönder kommer troligen att minska. Därför måste vi istället titta på att skapa nya enheter från gamla komponenter, och att använda mindre komplexa system av i bästa fall teknik som vi redan har tillgång till.

Att förvänta sig att CPU-kraft, minne, lagring mm skulle förbli statisk eller sjunka med tiden fick oss att titta på språk som har lägre beroende av dessa funktioner. Vi ville inte förlita oss på konstant drifttid, utan istället använda oss av tekniker som är mer bestående över tid. Vi ville välja ett språk som kunde göra mycket med lite, och därmed både skala upp och ner vid behov. Vi ville också säkerställa att vi körde på lätta system, med låg bandbredd, och därför göra de digitala paketen vi skickar och tar emot så små som möjligt.

Idé och lösning

Vi tror att driftstopp i den postapokalyptiska framtiden kommer att vara en del av det nya normala. Vi kan helt enkelt inte förvänta oss något i närheten av den genomsnittliga prestanda och drifttid vi har idag när vi bygger kommunikationsverktyg för framtiden.

Projektet resulterade både i en enkel lagringsmapp innehållande textdokument som kan kodas och avkodas med base64. Vi ser det som en virtuell brevlåda, som finns i nätverket, där användare kan lämna meddelanden till andra. Meddelanden kan laddas ner när mottagaren har upptid. Det finns också en chattfunktion, där en TCP-tunnel öppnas mellan användare där de kan chatta med Netcat. Med sina portskanningsfunktioner kan Netcat användas för att söka efter öppna portar och potentiellt hitta andra att ansluta till.

Implementering och resultat

Vi diskuterade möjligheterna att skapa vårt eget lokala nätverk, med minimala, soldrivna, lätta webbservrar, för att fungera som ett nav för ett IP-register. Vi utforskade även möjligheten att göra en peer-to-peer-anslutning möjlig, utan någon server emellan, som skickar meddelanden i det nedre transportskiktet av nätverksprotokollet.

Många, om inte de flesta, kanaler som används idag kontrolleras och genereras av stora företag och användarna har mycket liten insikt eller makt. Med öppen källkod och ett enkelt ramverk ville vi skapa ett alternativ. Vi ville bidra till att upprätthålla ett fritt och demokratiskt samhälle, där människor fritt ska kunna dela sina tankar och kunskap med varandra, även i en postapokalyptisk värld. Därför valde vi att fokusera på kostnadsfri kommunikation över gränserna, och att skapa så hög tillgänglighet som möjligt.

Mot denna bakgrund, varför valde vi då Golang, ett programmeringsspråk skapat av Google? Även om vi vill lita mindre på stora företag ser vi fördelarna med ett språk som Go; det är designat för att vara enkel, lätt att läsa och förstå. Appar skrivna på Go är högpresterande och skalbara. Språket har obestridliga arkitektoniska fördelar jämfört med sina föregångare. Det är helt enkelt designat för att klara morgondagens stormar och kan göra mycket med lite.

I vårt fall vill vi arbeta närmare djupare lager i nätverket, spara minne och komplexitet och arbeta närmare hårdvaran. Vi vill ha en minimal teknikstack för att vara mer effektiva och mindre beroende av andra parter som kanske inte är tillgängliga i framtiden.

Netcat har använts av nätverksadministratörer i decennier (sedan 1995). Det är ett mångsidigt och funktionsrikt nätverksfelsöknings- och utredningsverktyg, eftersom det kan producera nästan alla slags anslutningar; inklusive funktioner som portskanning, överföring av filer och portlyssning.

Vi använder Python för att vara värd för vår webbserver, på grund av dess extremt enkla installation med ett enda kommando. På webbservern valde vi att ha ett enkelt html-dokument, innehållande ett formulär där användaren kan lägga till sin IP-adress, namn, plats och annan kontaktinformation. Att visa detta register på servern gör det möjligt för människor att ansluta.

Vi föreställer oss många minimala servrar som tillsammans skapar ett kluster som kan skalas upp till en större databas genom att lägga till fler noder.

Insikter och reflektioner

En insikt från projektet är att internet och att få tag på varandra – funktioner som vi idag använder dagligen – är mycket mer komplexa än man kan tro. Idag är vi mycket beroende av statlig infrastruktur för att uppnå detta, vilket vi tycker är ögonöppnande och skrämmande. I detta projekt har det varit svårare att skapa en lösning, oberoende av andra tjänster och företag, än vad vi förväntat oss och önskat.