Jonas (35) er CTO for en norsk undervanns­drone

Ukas Koder Jonas Follesø er ansvarlig for teknologien som ble brukt under hevingen av KNM Helge Ingstad.

CTO Jonas Follesø med dronen Blueye Pioneer. Den utvikles i Norge, og kan dykke til 150 meters dyp mens den sender video til brukeren. 📸: Marit Røkenes / Blueye Robotics
CTO Jonas Follesø med dronen Blueye Pioneer. Den utvikles i Norge, og kan dykke til 150 meters dyp mens den sender video til brukeren. 📸: Marit Røkenes / Blueye Robotics Vis mer

Hvordan begynte du med koding? 👶

Jeg var heldig og fikk fra tidlig barndom tilgang på datamaskiner gjennom jobben til pappa. I begynnelsen gikk det mest i spill, men via en skolekamerat ble jeg introdusert for programmering i Turbo Pascal i 10-11 års alderen.

Jeg fikk lånt bøker om Pascal programmering via folkebiblioteket og jobben til pappa, og implementerte mange av de klassiske eksempelprogrammene som gjett et tall, tegn et juletre med ASCII grafikk osv.

Det første komplette prosjektet av litt størrelse jeg kodet var et enkelt snowboard-spill utviklet i QBasic. Man styrte en enkel strekmann av en snowboarder, som kunne utføre enkle triks basert på tastekombinasjoner utført på riktig tidspunkt. Dette lagde jeg andre året på ungdomsskolen, og jeg husker dette ga stor motivasjon til å lære mer. Læreren min i IT-valgfag lærte meg blant annet grunnleggende trigonometri, slik at jeg kunne bruke SIN-funksjonen i QBaisc til å få strekmannen til å bevege seg i en bue over skjermen.

«Vi måtte støtte samisk tegnsett, noe som ikke var like enkelt i IE 5 på Windows 98.»

Senere ble det mer fokus på webutvikling i ASP og VB-Script med MS Access-databaser som backend. Jeg og noen kamerater startet et firma hvor vi lagde webløsninger for bedrifter i Nord-Norge, hvor vi også måtte støtte samisk tegnsett, noe som ikke var like enkelt i IE 5 på Windows 98. Vi drev dette firmaet fulltid et par år etter videregående, før jeg flyttet til Trondheim og tok en Bachelorgrad i informatikk på NTNU.

Ved siden av studier jobbet jeg som IT-konsulent, noe som videre ble karriereveien for meg fra 2005 til 2016 (Abeo, Capgemini og BEKK). I årene som konsulent var jeg en aktiv bidragsyter i det norske utviklermiljøet, og holdt en god del presentasjoner og foredrag på faggrupper og konferanser i inn- og utland. I september 2016 begynte jeg å jobbe for oppstartsbedriften Blueye Robotics i Trondheim.

Jonas Follesø er del av et teknisk team på 14, hvorav syv er utviklere. Selv har han jobbet mest med mobilappen, men bidrar også på tvers av stacken. 📸: Marit Røkenes / Blueye Robotics
Jonas Follesø er del av et teknisk team på 14, hvorav syv er utviklere. Selv har han jobbet mest med mobilappen, men bidrar også på tvers av stacken. 📸: Marit Røkenes / Blueye Robotics Vis mer

Hva jobber du med akkurat nå? 🛠️

Som Chief Technology Officier i Blueye har jeg ansvaret for å lede teknologidelen av Blueye. Totalt er vi 14 personer (pluss noen studenter på deltid) som jobber med teknologiutvikling, fordelt på områdene mekanikk, elektronikk, software, prosjektledelse, testing og prototyping.

I Blueye utvikler vi en undervannsdrone som kan dykke ned til 150 meter dyp, og som styres fra en Android- eller iOS-enhet. Dronen sender video i HD-format til overflaten, og brukes av alle som har behov for enkel tilgang til å se under vann. Utviklingen av Blueye Pioneer, som dronen heter, begynte for fullt høsten 2016 og vi startet opp produksjon og leveranse av dronene ved nyttår. Elektronikk, mekanikk og software er primært utviklet av Blueye i Trondheim.

Selve dronen består av to hovedkomponenter som kjører kode. Vi har et lavnivå delsystem som styrer motorer, lys og strøm og henter data fra sensorer. Dette systemet kjører på et eget kretskort og er drevet av en mikrokontroller med firmware skrevet i C. Det andre hovedsystemet er et høynivå system som leverer videostrømmen til overflaten, og kjører kontrollsystemet som er ansvarlig å lese sensorverdier og brukerinput, og styre dronen basert på dette. På dette systemet kjører vi en forholdsvis kraftig embedded datamaskin integrert i et egenutviklet hovedkort.

Datamaskinen kjører Blunux, en egentilpasset Linux-distribusjon basert på Yocto. Som programmeringsspråk til kontrollsystem og videosystem bruker vi C++ og Python, og rammeverkene ROS, GStreamer og Django.

Dronen er koblet til overflaten via en tynn kabel, som går til en egenutviklet trådløs ruter, som brukerens mobilenhet er koblet til. På ruteren kjører vi OpenWRT og litt firmware skrevet i C.

«Datamaskinen kjører Blunux, en egentilpasset Linux-distribusjon basert på Yocto.»

Til mobilutvikling bruker vi Xamarin og C#, og vi deler mye kode mellom iOS- og Android-versjonen av appen. Nå som Xamarin Forms begynner å bli mer modent og komplett, har vi og begynt å skrive en del enklere funksjonalitet som innstillinger, nedlastning og dykkelogger i dette. Dette har vist seg å fungere svært godt, særlig med tanke på opplæring av nye mobilutviklere.

Vi har og en liten desktop applikasjon for overføring av videofiler fra drone til PC/Mac. Denne er utviklet i Electron, med JavaScript og React.

For egen del har jeg jobbet på tvers av hele stacken, men hovedfokuset på mobilutvikling og utvikling av støttesystemer for salg, support og logistikk.

Jonas Follesø liker å dykke. Det er en fordel, når du jobber med undervannsdrone. 📸: Hege Røkenes / Privat
Jonas Follesø liker å dykke. Det er en fordel, når du jobber med undervannsdrone. 📸: Hege Røkenes / Privat Vis mer

Hvordan ser en typisk arbeidsdag ut for deg? ☕

Vi forsøker å samle møter til mandager, hvor vi har et kort morgenmøte for hele Blueye. Annenhver uke leder jeg et møte for det tekniske teamet hvor vi koordinerer oppgaver som går på tvers av utviklingsprosjekter vi jobber med. Deretter er det møte i ledergruppen, hvor vi behandler saker som gjelder hele selskapet.

«Selv om jeg er en del av ledergruppen i Blueye, får jeg programmert hver dag.»

I Blueye bruker vi Slack i stor grad, og vi har etterhvert blitt ganske effektive på dette med god kultur for markering av leste innlegg, bruk av tråder for å holde oversikt i diskusjoner, samt diverse roboter som rapporterer testresultater, logistikk, salgs- og support-aktivitet og lignende fortløpende.

Nå som vi er i produksjon med Blueye Pioneer, er salgsstøtte, kundesupport og logistikk viktige oppgaver som hele selskapet bidrar i. Når jeg er à jour med oppgaver knyttet til dette, jobber jeg gjerne med videreutvikling av mobilappene våre. Akkurat nå jobber jeg med nedlastning av videofiler fra dronen til Android-enheter. Dette er funksjonalitet som foreløpig kun finnes i iOS appen, men som kommer i neste oppdatering av Android-appen. Selv om jeg er en del av ledergruppen i Blueye, får jeg programmert hver dag.

Pulten til CTO Jonas Follesø i Blueye. 📸: Marit Røkenes / Blueye Robotics
Pulten til CTO Jonas Follesø i Blueye. 📸: Marit Røkenes / Blueye Robotics Vis mer

Hva synes du er de mest spennende språkene, rammeverkene eller teknologiene akkurat nå? ✨

Det er et helt annet fokus på å hele tiden finne det siste innen språk og rammeverk i en hardware-startup enn hva jeg opplevde i konsulentbransjen. Som konsulent var det veldig viktig å hele tiden være oppdatert på det siste, og å markere seg innenfor et teknologiområde som en del av markedsføringen mot kunder eller for å tiltrekke seg flinke kolleger.

I Blueye bruker vi veldig mye forskjellig; noe nytt, og noe gammelt og vell utprøvd. Av nyere ting har en av embedded-utviklerne våre begynt å se på Rust som et alternativ til C på mikrokontroller-koden vår. Rust er et språk med mange gode egenskaper, og språk og verktøy som kan føre til raskere utviklingssyklus med mindre feil og enklere testing er absolutt av interesse.

Selv synes jeg Xamarin Forms begynner å bli veldig bra. Jeg er godt fornøyd med hvordan det har gjort det mulig å raskt omskolere en dyktig kybernetikkutvikler til mobilutvikler, uten at han har måtte lære seg hele iOS eller Android plattformen for å kunne bidra på appen vår. Det meste av ny funksjonalitet utvikles nå i Xamarin Forms parallelt til Android og iOS.

Dronen Blueye Pioneer kan kjøpes som alle andre produkter. Men før du finner fram lommeboka, bør du vite at prisen per i dag er 84.260 kroner - før moms. 📸: Marit Røkenes / Blueye Robotics
Dronen Blueye Pioneer kan kjøpes som alle andre produkter. Men før du finner fram lommeboka, bør du vite at prisen per i dag er 84.260 kroner - før moms. 📸: Marit Røkenes / Blueye Robotics Vis mer

Hva er du mest stolt av å ha laget? 🏆

Jeg er utrolig stolt over jobben Blueye-teamet har lagt ned gjennom de siste to-tre årene for å designe og utvikle Blueye Pioneer og få denne i produksjon. Det var en utrolig deilig følelse å se de første forsendelsene fra fabrikken med komplette droner i esker klar for utsendelse til kunder.

«Den ble mye brukt under arbeidet med hevingen av KNM Helge Ingstad i vinter.»

Det er veldig inspirerende å se hva kundene våre har fått til med Blueye Pioneer.

Den ble mye brukt under arbeidet med hevingen av KNM Helge Ingstad i vinter, har vært på forskningstokt i Arktis, filmet dypvannskorallrev, inspisert drikkevannsinntak og en rekke andre bruksområder.

Det å ha fått vært med på hele prosessen med å realisere et produkt som har åpnet så mange nye muligheter for kundene våre er jeg veldig solt av.

Blueye Robotics holder til i Trondheim. 📸: Marit Røkenes / Blueye Robotics
Blueye Robotics holder til i Trondheim. 📸: Marit Røkenes / Blueye Robotics Vis mer

Hva er det vanskeligste ved å være utvikler? 🤷

Høyt tempo og stadig nye rammeverk, plattformer, teknikker eller programmeringsspråk kan virke overveldende. Men holder du ut som utvikler, vil du etterhvert innse at ting egentlig ikke endrer seg så fort, og at det finnes mye tidløs kunnskap rundt kodekvalitet, gode arbeidsmetoder, ikke funksjonelle krav og arkitektur som du kan bygge på senere.

Det å vurdere hva du tenger å kunne inngående, og hvor det holder med en overordnet forståelse, er utfordrende - men blir enklere med erfaring.

De vanskeligste utfordringene jeg personlig har måtte løse i Blueye har vært når en abstraksjon vi benytter av oss av feiler. For eksempel har vi hatt noen virkelige vanskelige problemer med videodekoding, hvor avspilling av videostrømmen vår har feilet på enkelte Android-enheter, på grunn av feil eller forskjeller i hvordan hardware-dekoderen på Android-enheten spiller av h.264-strømmen fra dronen. Når dette fungerer er avspilling av video trivielt, men når du møter på problemer og må gå bak abstraksjonsnivået du programmerer mot, blir det fort veldig utfordrende.

Det aller meste av utviklingen på dronen foregår i kontorene i Trondheim. 📸: Marit Røkenes / Blueye Robotics
Det aller meste av utviklingen på dronen foregår i kontorene i Trondheim. 📸: Marit Røkenes / Blueye Robotics Vis mer

Hva synes du norske utviklere bør bli flinkere på? 🙋

Generelt har jeg inntrykket av at det er utrolig mange flinke utviklere i Norge. Det er god aktivitet i brukergrupper, fagkonferanser, podcaster og andre arenaer for kunnskapsdeling.

«Mange går for tidlig over til mer administrative roller.»

Et økt fokus på mangfold, i form av flere kvinner innen yrket og utviklere med variert bakgrunn både faglig og kulturelt, opplever jeg at har blitt bedre de 15+ årene jeg har jobbet som utvikler.

Norske bedrifter og ledere kan nok bli flinkere til å legge til rette for at flere ønsker, og får mulighet til, å jobbe som utvikler lengre. Virkelig erfarne utviklere som fortsatt jobber aktivt med kode er en mangelvare, og mange går for tidlig over til mer administrative roller.

Hva liker du å gjøre når du ikke jobber? 🕹️

Jeg er veldig glad i dykking og å utforske historien (skips- og flyvrak) og livet som finnes under vann. Denne interessen var mye av grunnen til at jeg søkte meg til Blueye. Som dykker er det begrenset hvor dypt du kan gå, og selv er jeg sertifisert til 52 meter dyp. Med dronen kan jeg gå mye dypere og besøke vrak som ellers ville vært utilgjengelig, selv om ingenting kan måle seg med følelsen av å selve sveve vektløs rundt under vann.

Samboeren min og jeg er begge glade i foto og video, og vi tar mye bilder under vann. Det er en morsom hobby, og en fin måte å dele opplevelser og bilder av noe av det spennende som finner seg under overflaten. Mange blir forbløffet over alt det fine som finnes langs kysten vår. Av marint liv er jeg særlig interessert i haier, og forsøker å få dykket med så mange forskjellige arter som mulig. Foreløpig har jeg dykket med 31 forskjellige arter.

Tidligere hadde jeg nok flere utviklingsprosjekter på fritiden. Jobben som CTO i en oppstartsbedrift er ingen 9-17-jobb, så stort sett all ledig kapasitet går til å løse oppgaver knyttet til Blueye. Samtidig er jobben så spennende og lærerik at jeg ikke har behov for hobbyprosjekter for å prøve ut eller lære ny teknologi.