– Jeg var drit lei all masingen om oppgraderinger fra MarineTraffic-appen, så jeg lagde like godt min egen app som viser båtene som beveger seg langs norskekysten, skrev Nils Larsgård nylig på LinkedIn.
Larsgård jobber til daglig som utvikler i konsulentselskapet Kodemaker, i hovedsak som backendutvikler – men også av og til med apputvikling. Til daglig koder han i Kotlin, Go og Flutter (Dart).
Han forteller til kode24 at hans nye Farvann-app for iOS og Android er et rent hobbyprosjekt som han fikk idéen til da han satt på hytta til svigerforeldrene og brukte MarineTraffic til å sjekke hvilke båter som gikk forbi.
Oppdaget at dataene var gratis
Som ivrig bruker av Marine Traffic begynte Larsgård etter hvert å irritere seg over at appen stadig vekk maste om å kjøpe oppgraderinger for å låse opp funksjonalitet i appen.
Han begynte derfor å sjekke om det kanskje kunne være mulig å lage et bedre alternativ selv.
– Jeg begynte å kikke litt, og fant ut at Kystverket jo gir ut disse AIS-dataene gratis!
I fjor vår satte han opp en backend for å "parse" den binære datastrømmen, og lagre det i en database. Planen var å på sikt lage en app, men det er først nå at appen er ute i app-butikkene.
– Jeg har lagd appen litt innimellom siden i fjor sommer, men nå fikk jeg endelig ut fingeren og fikk publisert appen.
Appen viser et kart der du kan zoome inn og følge med på båter og hvordan de beveger seg. Kartene hentes fra Kartverket.
I appen kan du også se hvor båtene har vært de siste 30 dagene.
– Det er ikke så mye diskplass på serveren, så etter 30 dager sletter jeg dataene.
Google ville ikke godkjenne
Farvann-appen er laget med kryssplattformløsningen Flutter, i programmeringsspråket Dart.
– Jeg lagde det i Flutter, fordi det er det jeg kan. Vet ikke om det er det beste, men det fungerer veldig greit – spesielt med kryssplattform, sier Larsgård.
Noe av det han liker best med Flutter er at det er det han kaller en "batteries included"-løsning der du ikke trenger noen UI-biblioteker eller annet utover selve Flutter.
– Jeg bruker noen biblioteker for å håndtere kart, og et HTTP-bibliotek som gjør det enklere å jobbe med backendkall. Men det er ikke mer enn åtte dependencies, så det er en ganske enkel app.
Backenden er skrevet i Go, og så brukes PostgreSQL som database.
– Det er min goto-database fordi den har støtte for geografiske typer. Skal du for eksempel spørre om båter innenfor et gitt kartutsnitt, er det veldig enkelt, forklarer Larsgård.
Alt sammen kjører på en VPS (virtuell privat server) hos Hetzner i Tyskland.
– Jeg kjører den på en hobbyserver, og den bruker lite ressurser.
Larsgård mener dette blir billigere enn å kjøre den i skyen, for eksempel i Google Cloud. Og han er redd for at kostnadene kunne eksplodert om han hadde kjørt det i for eksempel Google Cloud Run og trafikken skulle ta av. Hos Hetzner vet han nøyaktig hva han betaler for i måneden.
– Bare databasen er jo dyrere og kjører på dårligere jern enn den Hetzner-instansen jeg har.
«Jeg sitter og putler og skriver appen i mitt eget tempo uten eksterne krav – og så tester jeg ut på svigers!»
– Hva har vært vanskeligst?
– Jeg har strevd mye med AIS-dataene. Jeg parser jo disse binære meldingene selv. Men ellers har det vært mye kos. Jeg sitter og putler og skriver appen i mitt eget tempo uten eksterne krav – og så tester jeg ut på svigers!
Google ville ikke godkjenne
Larsgård forteller at publiseringen til Apples App Store gikk veldig greit, men at han slet med å få den godkjent i Google Play på Android.
– Google har kranglet. De mente tittelen på appen, "Farvann", var misvisende. Det har vært frem og tilbake med Google for å forklare at den ikke er misvisende, men til slutt bare suspenderte de appen.
Han fikk ingen begrunnelse fra Google, selv om han ba om det – men bare til svar at de lurte på om han kunne velge en annen tittel på engelsk.
– Men nå er appen endelig ute på Android også, etter at jeg la den inn som en "ny" app.
Alltid gratis og reklamefri
– Har du noen planer videre for appen?
– I dag kan du bare se hvor båtene har kjørt. Jeg kunne tenkt meg å også få oversikt over hvilke havner og marinaer båtene har vårt innom, for eksempel for de siste 30 dagene.
Larsgård har imidlertid ingen planer om å legge til pushvarslinger.
– Jeg vil holde den så enkel og nyttig som mulig, med et rent brukergrensesnitt. Og så skal den være helt reklamefri og gratis for alltid.