Prosjekter

Tilbake til hovedskjerm

Nyeste Prosjekter:

Prosjekter i regi av studiet:


Airborn WX – App for Pilots

I've created a landing page for the new version of the Airborn app, which you can find here. It includes some of the same details as below, plus a few extras.

Airborn was originally developed as a group project in the IN2000 – Software Development course at the Department of Informatics, University of Oslo. The course focused on team-based development of an Android app based on a set of predefined use cases. Our team chose to build an app for small aircraft pilots in Norway, aiming to help them plan flights by gathering and presenting relevant weather data.

  • Read about the school project here
  • More information about the IN2000 course can be found here

The core functionality of the app is integrating various API endpoints from MET Norway and displaying the data in a user-friendly way. This gives pilots a quick and comprehensive overview of weather and other flight-related information.

Rewriting the App in React Native

The original app was developed over a year ago. In my personal project, I rewrote it in React Native to make it available on both Android and iOS. I also restructured parts of the app and updated some components, but kept the core features and continued using the same APIs.

How Airborn Works

When you open the app, you land on a map showing all airports in Norway, marked with clickable annotations. Selecting an airport gives you info about it and lets you set it as either a departure or arrival location.

A floating action button labeled "New Trip" opens a bottom modal where you can search for airports by name or ICAO code. You can also mark airports as favorites, which pins them to the top of the list. To proceed, you only need to choose a departure airport. An arrival airport is optional (useful for round-trip flights).

SIGMETs and AIRMETs

If a SIGMET or AIRMET is active, the affected area will be shown on the map using labeled polygons. Each polygon has an ID that matches its description, which can be viewed in a bottom modal.

Flight Briefing Screen

The Flightbrief screen has three tabs:

Departure – Shows weather and other data for the selected departure airport.

Arrival – Shows the same for the arrival airport, if selected. If not, you can set one here.

Overall – Displays general flight info not tied to a specific airport, such as a Nordic weather forecast (SIGCHART).

Data Related to Airport

The data shown in the departure and arrival tab is:

  • Sunrise/Sunset
  • METAR
  • Turbulence
  • Location Forecast
  • Live Webcams

General Data

The data shown in the overall tab is:

  • Distance between airports (if departure and arrival selected)
  • SIGCHARTS (norway / nordic)
  • GEOSATELLITE IMAGE
  • Radar Animations
  • Route Forecast (if IGA route)
  • NLA Routes

App Screenshots

sigmets/airmetsmapscreensunrise/sunsetmetarturbulenceweather datalive webcamssigchartsgeosat imageroute forecastradar animationsnla routes

More about the Airborn projects


Creative Dataviz Project

Topic: Exploration of Global Temperature Trends

A creative datavisualization project demonstrating the rise of global temperatures and related trends

NB: This page will only include a summary of the project. To see the whole project → Read my full report here

My project focus was on the rise in global temperatures and the trends surrounding it, aiming to use the power of visualization to convey the data in a more meaningful way. The goal was to create an interactive webpage with visualizations built using d3.js, designed to help users not only learn something from the data but also explore it in their own terms.

I ended up using a total of five different datasets from Our World In Data:

  1. Global temperature anomalies by month
  2. Global warming: Contributions to the change in global mean surface temperature
  3. Carbon dioxide concentrations in the atmosphere
  4. Ice sheet mass balance
  5. Sea level rise

Prototyping

I used d3.js a lot during this stage, mainly to explore the data, try out different ways of structuring it, and see what formats would work best for the kinds of visualizations I had in mind. At the same time, I sketched out different ideas for how the visualizations could look. Going back and forth between working directly with the dataset in d3.js and sketching helped me figure out what worked. I found that just playing around with the data often revealed interesting patterns or details I hadn't noticed before. Once I saw those, it became easier to sketch ideas that put the most interesting parts of the data in focus. The figure below shows a selection of sketches (low-fidelity prototypes) alongside some of the SVG visualizations created with d3.js (high-fidelity prototypes):

prototypes

The Full Story

So the webpage ended up with a lot of different visualization built with d3.js, but it's necessary to zoom out and look at the project as a whole. That was my main goal throughout this process, and it's also reflected in how the webpage is designed. The structure tells a story, moving through one dataset at a time, where each visualization naturally leads into the next. Each section takes up the full height of the screen to make the visualizations large, clear, and easy to focus on. As users scroll, one visualization smoothly pushes the previous one up, reinforcing the sense of connection between them. The figure below shows each screen from the webpage, with an arrow simply indicating how the next section would appear beneath the last one to the left:

webpage

As users scroll through the webpage, each new visualization is animated as it comes into view. I added these animations to make the experience more dynamic and engaging. Simple effects, like a line chart gradually drawing from start to end, or the “rivers” in the ice sheet visualization flowing from the top left to the bottom right, help bring the visualizations to life and make the data feel more vivid and immersive. I included a sidebar, helping the viewer's keep track of where they are in the process and how much more is left. The sidebar also allows user to click the different topics and the page immediately scrolls to that section.

Together, the structure, animations, and flow of the webpage was designed to guide the viewer through a connected journey, from CO2 emissions and global temperature changes to melting ice and rising sea levels. By placing each dataset in sequence and using visual storytelling, the aim was not only to present the data clearly, but to create a sense of buildup and context.

Reflections on Project

Looking back at my project I realize that my personal step-by-step process of exploring and discovering how the data was related, directly influenced how I built the final project. The website is designed like a journey, guiding the user through each dataset in a specific order. Each visualization leads to the next one, and this sequence, from CO2 emissions and temperature changes to melting ice and rising sea levels, mirrors the same process I went through when I explored and analyzed the different datasets.

The visualizations, made with d3.js, act like guides on this journey. By putting the datasets in a thoughtful order and using visual storytelling, the goal is not just to show the data clearly, but also to create a sense of flow and understanding. Animations make the experience more dynamic and en- gaging, helping bring the data to life. The structure, animations, and overall flow of the website are all meant to take the user on a connected journey, giving them a better and deeper understanding of climate change.


Coffee Stats

Download CoffeeStats on the App Store

Coffee Stats is a simple app designed to track your coffee consumption. Log every coffee you drink by selecting the type (like espresso) and adding it to your personal history. You can easily view stats like the earliest and latest coffee you've had, as well as charts that show your consumption trends. Keep track of your progress with a rank that increases as you drink more coffee. Stay on top of your coffee habits and enjoy insights about your daily routine!

→ Download on the App Store

Track. Discover. Improve.
Your coffee journey starts here

Functionalities:

  • Log a coffeetype with a certain amount
  • Select types as favorites or hide them
  • Get daily recommendations
  • View history of coffees you have consumed
  • View statistics of your coffee consumption:
    • coffees today, caffeine today, total cups, total caffeine consumtion, earliest coffee, latest coffee, first coffee recorded, recent coffee recorded, most active hour and coffee type that has provided largest amount of caffeine
  • View statistics as a line-chart comparing weeks and months
  • View statistics as a pie-chart comparing types and amount (caffeine/cups)
  • Keep a score and obtain a level based on how many coffees you have consumed

Screenshots

Here is some snapshots from different screens and components from the app:

homescreenbottomsheethiddenhistoryallhistorystatschartsprofile

About the creation of this app

about the app

Rapid Iteration - Prosjektoppgave i informatikk: interaksjonsdesign

Dette prosjektet ble gjennomført i tett samarbeid med en forskningsgruppe ved Institutt for Informatikk ved Universitetet i Oslo, som undersøker hvordan kunstig intelligens (AI) påvirker diskursen rundt Participatory Design (PD). Vår gruppe fant dette arbeidet svært interessant og ønsket å bygge videre på det.

Prosessen startet med en grundig gjennomgang av relevant litteratur, hvor vi leste flere artikler om både Participatory Design (PD), kunstig intelligens (AI) og samspillet mellom disse feltene. Vi systematiserte deretter våre funn ved å identifisere viktige temaer, løsninger og problemstillinger som vi fant spesielt relevante for vårt prosjekt.

En fellesnevner som gikk igjen i flere PD-artikler var at eldre ofte er en underrepresentert målgruppe i utviklingen av ny teknologi. Dette inspirerte oss til å utforske muligheten for å utvikle en AI-basert løsning der eldre mennesker kan være aktive deltakere i designprosessen.

Videre ønsket vi å skape en løsning som, ved hjelp av generativ AI, kunne styrke eldres rolle som meddesignere i en designprosess. Dette ledet oss til vårt forskningsspørsmål:

How can generative AI be used to strengthen the role of older adults as co-designers in a participatory design process?

Vi begynte med å teste flere forskjellige ideer ved å lage lavoppløselige prototyper som vi deretter testet med masterstudenter ved universitetet, som hadde erfaring med å jobbe med den samme målgruppen i sitt eget arbeid. Målet var å få raske tilbakemeldinger fra personer som hadde mer erfaring enn oss med å utvikle løsninger sammen med eldre mennesker. Dette resulterte i tre evalueringer tidlig i prosessen.

For å holde oppsummeringen kort, hopper jeg til utviklingen av den endelige prototypen. Vi kalte den Rapid Iteration.

Tidlig prototype:

rapid

Bilde av ferdig prototype:

rapid

Målet var å utvikle en nettsidebasert løsning spesialtilpasset for å jobbe med et konkret scenario, hvor eldre fra målgruppen kunne generere bilder som var relevante for scenarioet, og deretter manipulere og eksperimentere med bildene for å utvikle dem til noe de likte, eller ikke likte.

AI spilte en sentral rolle i løsningen ved å utnytte dens effektivitet til å generere et stort antall bilder på sekunder, uten anstrengelse. Dette gjorde det mulig for brukerne å gi kritiske tilbakemeldinger uten å føle at de var tilknyttet det produserte materialet. Denne anonymiteten gjorde det lettere for brukerne å uttrykke sine meninger og forbedre designprosessen.

For å realisere dette benyttet vi OpenAI sine API-er til både bilde- og tekstbehandling. Vi brukte en kombinasjon av følgende endepunkter:endepunkter:

  • tekst-bilde
  • bilde-tekst
  • tekst-tekst

Bilde av AI flyt:

rapid

Vi sørget også for at brukerne kunne eksportere økten etter å ha generert bilder, gjort endringer og tatt notater, slik at de fikk noe å ta med seg videre. Brukerne som hadde deltatt i bildeprosessen mottok en PDF med alle bildene som ble generert, samt en oversikt over hvilke prompt-endringer som førte til de ulike bildene.

Den fungerende prototypen ble først testet med eksperter på huset, noe som forberedte oss godt til den siste evalueringen av prosjektet, en workshop med faktiske brukere fra et seniorsenter i Oslo. Under workshopen brukte vi prototypen i et scenario hvor fjernkontroller med altfor mange ubrukelige knapper skulle forbedres. Vi benyttet Rapid Iteration for å utforske alternative designmuligheter for fjernkontrollen. Totalt ble det generert 24 bilder i løpet av en én-times økt, noe som ga oss verdifull innsikt i brukernes preferanser for ulike fjernkontrolldesign.

Vi observerte også at AI spilte en dominerende rolle i workshopen, noe som uforvarende stjal mye av fokuset fra deltakerne. Dette er ett av flere temaer vi diskuterer i rapporten/artikkelen som ble skrevet etter prosjektet (kan sendes på anmodning).


Airborn - IN2000 Software Engineering med prosjektarbeid

Android app laget for småflypiloter

Målet med dette prosjektet var å utvikle en Android-applikasjon ved å bruke Kotlin som programmeringsspråk og Jetpack Compose som rammeverk for UI-elementer og interaksjon. Prosjektet ble gjennomført i samarbeid med Meteorologisk Institutt, hvor hensikten var å bruke, teste og gi tilbakemeldinger på deres API-er.

I tillegg var det et stort fokus på teamarbeid og smidig utvikling. Mye arbeid ble lagt ned i å skape en god teamdynamikk og etablere faste rutiner for en smidig arbeidsprosess. Dette innebar å jobbe i sprinter samt gjennomføre typiske smidige metodikker som daily standups, reviews og retrospectives.

Prosjektet startet med at hvert team skulle velge ett av flere ulike case. Mitt team valgte å utvikle en app for småflypiloter. Tidlig i prosessen engasjerte vi en småflypilot som kilde til domenekunnskap og som kontinuerlig tester av applikasjonen. Dette samarbeidet var avgjørende for utviklingen av appen.

Det første delmålet i prosjektet var å lage en MVP (Minimum Viable Product). Vi filtrerte bort alle aspekter som ikke var essensielle for dette målet og fokuserte på å utvikle en MVP med kjernefunksjonaliteten til appen – uten unødvendige tillegg.

Bilder av MVP

mvpmvpmvpmvp

Etter å ha utviklet en fungerende MVP, begynte arbeidet med å løfte appen til et nytt nivå, både når det gjaldt funksjonalitet og design. På dette tidspunktet hadde teamet fått solid erfaring med Kotlin og Jetpack Compose, og dynamikken i gruppen var svært god. Arbeidsprosessen ble stadig mer effektiv, med et sterkt fokus på samarbeid.

Ingen deler av appen ble utviklet av kun én person; alt var et resultat av tett samarbeid på tvers av teamet. Selv om oppgavene ble fordelt mellom medlemmene, jobbet vi aktivt sammen på tvers av ansvarsområder for å sikre en helhetlig og godt integrert løsning.

For å holde kontroll på ansvarsområder og oppgaver holdt vi en backlog i Notion.

Utklipp av backlog i Notion

backlogbacklog

Vi i teamet fikk etterhvert noe man kan kalle overtenning og vi startet å utvide appen med mer og mer funksjonalitet. Vi endte til slutt med å bruke omtrent alle aviation-apiene til MET + andre.

Liste over API'er brukt i appen

backlog

Til slutt rant dessverre tiden ut, selv om teamet gjerne skulle ha fortsatt utviklingen av appen. Dette var et utrolig givende prosjekt som ga meg stor glede, både gjennom samarbeid i teamet og gjennom arbeidet med apputvikling.

Jeg har lagt ved noen skjermbilder som viser hvordan appen så ut til slutt. For en mer helhetlig opplevelse av prosjektet finner du også en lenke til GitHub-repositoriet med kildekoden samt en annen nettside med mer informasjon:

Bilder av sentrale funksjoner i ferdig app:

finishedapp finishedapp finishedapp

ICU - IN1060 Bruksorientert Design

Bilder er hentet fra egen rapport

I dette prosjektet var fokuset å utvikle en løsning i tett samarbeid med målgruppen. Rammene for prosjektet var å bruke Arduino (mikrokontroller) til å lage en håndgripelig prototype som kunne benytte sensorer til å registrere sanseinntrykk som mennesker enten ikke oppfatter eller har vansker med å oppfatte. Vi valgte å jobbe med personer på spekteret døv til hørselshemmet, og i samarbeid med dem utviklet vi prototypen Hysj.

Hysj

Prosessen fulgte en iterativ livssyklus, der vi gjennomførte flere runder med datainnsamling, prototyping og evaluering. Brukerne var involvert i store deler av denne prosessen, noe som ga oss verdifulle tilbakemeldinger underveis.

Vi la stor vekt på prototypingsfasen og startet med en rekke lavoppløselige prototyper for å utforske ulike konsepter tidlig. Siden prototypene i hovedsak bestod av skisser og enkle wireframes, var det lettere å vurdere dem kritisk og gå videre med de mest lovende løsningene. Gradvis jobbet vi oss mot en fungerende, men fortsatt enkel prototype, ved å bruke en pappeske som grunnlag. Denne testet vi sammen med brukerne, som fikk prøve den ut og gi tilbakemeldinger på funksjonaliteten. Dette ga oss verdifull innsikt til videre forbedringer av den endelige prototypen.

iterasjoner
iterasjoneriterasjoneriterasjoneriterasjoner
Les mer om prosjektet
Scroll til toppen