Christoffer Björkwall
Utvecklare inom Machine Learning
Christoffer Björkwall
Utvecklare inom Machine Learning

Blogginlägg

Utvecklingen av StormWindow

augusti 12, 2021 Projekt, StormWindow
Utvecklingen av StormWindow

StormWindow är en kartbaserad applikation för storm chasers jag byggt under delar av sommaren 2021 med syfte att ge en nulägesbild av vad som händer i USA med avseende på stormar.

Varför StormWindow?

Jag valde att skapa detta projekt då jag länge varit sugen på att göra något som vore kul att skapa, användbart för mig och andra samt bidra till det Storm Chasing-community jag är aktiv inom (läs mer på StormChasingUSA.com). Syftet med applikationen är att ge en översiktsbild över ”vad som händer på stormfronten” i USA.

Applikationen visar dels upp en nulägesbild av var storm chasers befinner sig, var stormarna finns, vad som har setts/rapporterats samt vilka foton och tweets olika personer publicerat vid olika platser. Därtill kan man se en 24h-historik över hur situationen utvecklat sig och var tornados och storm chasers befunnit sig.

Huvudsyftet för projektet var till en början mest att ha ett kul och användbart projekt att testa vissa tekniker på (framförallt Node.js), men allteftersom jag insett användbarheten i applikationen har jag lagt mer tid på finjusteringar.

Teknik

Frontend / Backend

Jag har gjort några enklare lokala testprojekt i Node.js men detta var mitt första större projekt med Node.js och med ett större fokus på JavaScript än jag tidigare skapat. StormWindow kretsar kring Google Maps API och är en ensidesapplikation – därför var JavaScript/Node.js också ett naturligt val.

Cloud

Jag har studerat och arbetat mycket med Google Cloud sedan i våras så att använda Google Cloud var naturligt. Förutom Cloud Storage för att hantera filer så valde jag Firestore (nosql) som databas. Detta val har jag dock senare ifrågasatt rätt mycket under utvecklingens gång. Firestore som produkt tycker jag har en del brister, framförallt frånvaron av ett gränssnitt för att enkelt söka i databasen samt att det är onödigt krångligt att koda läsning/skrivning av data.

Deployment gjorde jag på App Engine, först i Standard mode men senare i Flexible mode allteftersom applikationen växte. I kommersiell drift är det sannolikt att jag kommer använda Kubernetes.

Utöver detta har jag även använt mig av Cloud Scheduler för att hålla informationen aktuell samt Cloud Vision (se nedan) för kategorisering/filtrering av bilder.

Data och API:er

Applikationen bygger mycket på olika öppna API:er, framförallt från amerikanska myndigheter som Storm Prediction Center. Ett viktigt API är från SpotterNetwork.org som är en organisation genom utbildade ”storm spotters” rapporterar in observationer om tex tornados. Denna information förmedlas vidare till allmänheten och är en kritisk del i säkerhetsarbetet kring stormar i USA.

Twitters API har också varit en viktig del av applikationen. Jag använder Twitters API för att hämta relevanta tweets och därtill fotografier från storm chasers. Fotografierna kategoriseras sedan via Google Cloud Vision API så att endast fotografier relevanta för applikationen visas. Målet här är att själv skapa en ML-lösning för bildigenkänning istället för Cloud Vision.

Resultatet

Det som började som mer av ett ”tekniskt provapplikation” har allteftersom blivit ett projekt jag blivit mer och mer committad till. Användbarheten kan vara svår att förstå utanför storm chasing-communityt men jag är mycket nöjd med den produkt jag skapat.

En intressant, men problematisk, sidoeffekt av detta projekt har varit i användningen av datat från SpotterNetwork.org där de anslutna delger sina GPS-positioner med jämna mellanrum (bland annat för att kunna skicka exakta rapporter om tornados mm). Detta data i kombination med hur man kan använda det i applikationen är lite för bra. Detta har skapat frågeställningar kring integritet till den grad att jag inte vet hur jag ska lansera projektet och samtidigt säkerställa personernas integritet.

Projektet har en begränsad kommersiell uppsida då målgruppen i sammanhanget är litet. Min plan är att inkorporera applikationen under mitt StormChasingUSA-varumärke och finansiera med annonser.

Kostnaden för applikationen är cirka 1.200 kr/mån där det främst är App Engine som kostar, och en liten del är för Cloud Vision API:t. Applikationen är för minneskrävande för att köras på Free Tier-delen av Google Cloud.

Status

Status i nuläget är att applikationen är tekniskt sett klar att lanseras, även om det finns en hel funktioner jag hade velat ha med och tekniska förbättringar (framförallt gällande laddningstid) jag skulle behöva göra.

Jag har dock skjutit upp en publik/kommersiell lansering medan jag överväger hur jag ska lösa delarna som rör personlig integritet.

StormWindow går dock att se på StormWindow.StormChasingUSA.com.

Taggs:
Write a comment

Denna webbplats använder Akismet för att minska skräppost. Lär dig hur din kommentardata bearbetas.