Rapport
fra
desember

Rapport fra desember

En introduksjon

Desember er alltid en travel måned og jeg har ikke fått tid til å skrive så mye som jeg hadde ønsket, men jeg kan melde om at jeg har brukt desember svært godt. Jeg har konsumert enorme mengder julemat, julegodis og julefilmer med god samvittighet. Ved årets siste dag så merket jeg at dressen hadde krympet litt... noe den også gjorde i fjor, men det gikk heldigvis fint!

Jeg har også brukt desember til å tenke litt på tilstanden på den moderne weben. Jeg har irritert meg på GDPR-popups som blokkerer teksten jeg leser og ventet utålmodig mens reklamene spiller ferdig før jeg kan se en kort videosnutt jeg har blitt solgt som 'du vil ikke tro XXXX'. Jeg blir alltid skuffet.

HttpArchive er en nettside jeg har sansen for. Her kan du finne en hel mengde statistikk om vårt kjære internett. Det er spesielt én underside som fanget oppmerksomheten min, nemlig Page Weight. Jeg anbefaler å besøke lenken over og ta en titt på grafen over total kilobytes. I likhet med meg i julehøytiden så har den gjennomsnittlige størrelsen for nettsider økt. Tallene viser at størrelsen på en nettside har mer enn doblet seg siden jeg startet min IT-utdanning og tidoblet seg de siste ti årene.

Et lite eksperiment

Den klatrende grafen over gjennomsnittsstørrelsen på nettsider inspirerte meg til å gjennomføre et lite eksperiment. For ganske nøyaktig to år siden skrev jeg min første artikkel som jeg ga tittelen Setup jEnv to manage multiple Java environments. Jeg var såpass fornøyd med mitt eget arbeid at jeg valgte å publisere denne snutten med tekst på Medium. På en måte så er dette to artikler i én, værsågod!

På disse to årene har over 1900 personer lest denne artikkelen. Det synes jeg er ganske kult! Årsaken til at Medium ble valgt som plattform var at de kunne lokke med at forfatterne kan tjene penger på skriveriene sine. Økonomisk uavhengighet, here I come! På disse to årene har jeg tjent $5.38. Det er $0.007 per dag. Jeg måtte også fylle ut skjema for å være en skattebetaler til De Forente Amerikanske Stater som var litt strev. Du kan bedømme selv om summen er verdt arbeidet.

Jeg tenkte at det kunne vært interessant å måle differansen på nettsidestørrelsen dersom du leser den på Medium eller på min egen nettside. Jeg bruker Mozilla Firefox til å inspisere nettverkstrafikken når jeg laster inn nettsiden. La oss ta en titt på dataene:

Medium:

  • Requests: 171
  • Størrelse/nettverkstrafikk: 4.93 MB / 1.73 MB transferred
  • Finish: 24.87s
  • DomContentLoad: 1.44s
  • load: 2.04s

Privat:

  • Requests: 1 (2)
  • Størrelse/nettverkstrafikk: 8.31 KB / 3.70 KB transferred
  • Finish: 579ms
  • DOMContentLoad: 337ms
  • load: 349ms

Hvordan skal vi tolke dette?

Jeg ble sjokkert da jeg så størrelsesforskjellen på det som skal være en identisk artikkel. Begge nettsidene inneholder de samme ordene og har egne seksjoner for hva som er terminal-kommandoer. Det som er hårreisende er at versjonen hos Medium er 593 ganger større!. Du laster ned nesten 5 MB for å lese den! Det er nesten ti hele Pokémon Red/Blue GameBoy-spill. Jeg er ganske sikker på at det er mer dialog i disse ikoniske spillene enn det er i artikkelen min. Det som er skummelt å tenke på er at dette er normen i dag. Vi har raskere og bedre hardware og vi har råd til å laste 'dyre' nettsider, men tilbyr de noe mer eller er det bare økt strømforbruk og som en konsekvens... høyere utslipp?

Ifølge kalkulatoren til observablehq så vil nedlastingen av Medium-artikkelen på 4.93 MB for mine 1900 lesere ha resultert i et utslipp på 8.231 KG CO2 over to år. Her er jeg ingen ekspert på utregningen av utslipp så jeg kan ikke verifisere om kalkulatoren er korrekt eller ikke. Det jeg dog kan vise til er at 8KG med CO2 koster 2790,- kr hos Akvarieboden, hvor jeg heller ikke er noen ekspert. Kort fortalt så synes jeg det høres mye ut og jeg har dårlig samvittighet. Dersom det samme antallet mennesker hadde besøkt min private nettside i stedet hadde utslippet blitt redusert til kun 1KG utslipp. Jeg skal dusje i kaldt vann de neste dagene for å kompensere. Jeg lover!

Jeg reagerer også på hvor lang tid siden tar å laste. Totalt tar det 24 sekunder å laste ifølge Firefox, men dette stemmer ikke helt. Nettsiden vises etter et par sekunder, men Medium laster den inn gradvis i form av lazy-loading. Det gir et inntrykk av at nettsiden er raskere og mer responsiv enn den egentlig er. Det er 171 requests som blir sendt til serveren for å laste artikkelen. På min private nettside er det kun to nettverkskall og den ene er et automatisk kall til favicon.ico.

Burde vi godta at vi laster ned 5 MB og venter 24 sekunder for å lese 909 ord? Er det dette vi lærer til nye, unge og motiverte utviklere? At nettverkstrafikk, minnebruk og CPU-last er annenrangs hensyn?

Den moderne weben

Jeg har lenge følt en form for nostalgi for hvordan internett var i min barndom. Jeg klarer ikke identifisere meg helt med dagens versjon. Internett er de siste årene utviklet seg til å bli verdens største kjøpesenter. Nettsidene for butikkene er enorme reklameplakater. Tør du gjette for stor Apple sin nettside for den nye iPaden er? Større enn Medium-artikkelen min? Den er svimlende 39.35 MB! Ikke trykk lenken for å redusere utslipp. Har du allerede trykket på den? Jeg tar delvis på meg skylden for å ha lenket til siden ...

Den flotte nettsiden til iPaden kan delvis forklares med flere bilder i høy oppløsning. Hva er unnskyldningen til Medium? Det er ikke mange bilder å se. De topp seks tyngste nettverkspakkene er alle sammen JavaScript. Disse syndebukkene står alene ansvarlig for 2.5 MB. Hva er det jeg trenger 2.5MB med JavaScript for? Det er vanskelig å si da disse JavaScript-filene er minifisert og vanskelig å tolke. Men det ser ut som om det er en motor som genererer selve artikkelen. Dette er vanlig i populære rammeverk som React, Vue og Angular. Jeg er skeptisk. Skal vi falle til ro med at dette blir standard metode for å bygge nettsider? Skal vi la nye utviklere tro at den eneste måten å lage en ordentlig nettside på er om du pakker med 2.5 MB med JavaScript? Det er veldig mange linjer med kode!

Vi er konsumenter

Nettsteder med mye trafikk forsøker også å spore deg slik at de kan selge informasjonen videre til annonsørgiganter som igjen presenterer skreddersydd reklame for deg. En type reklame som har blitt testet til å ha størst mulig statistisk sjanse for å generere et kjøpebehov. Denne innsamlingen har blitt så ekstrem at EU nå forlanger at organisasjoner må forklare hvorfor de trenger å innhente informasjon om deg. Før man i dag får lov til å se hele nettsiden må du håndtere GDPR-popups. GDPR-boksen sier at du får en bedre brukeropplevelse om du godtar vilkårene. Det er ingen løgn! For hvis du skal avslå så må du igjennom et mareritt av knapper og brytere før du har glemt hva det var du opprinnelig besøkte nettsiden for. En liten uke senere så har de glemt at du har avslått og du må gjøre det samme igjen. Den flotte grønne knappen med teksten 'Accept all' virker fristende nå.

Se GIF under for en gjenskapning av min opplevelse da jeg forsøkte å finne ut hvorfor jeg hadde magesmerter etter å ha spist halve kroppsvekten min med julemat.

Hva er det som har skjedd med internett? Det som var en fantastisk teknologi for å dele informasjon har blitt kapret av markedskreftene og blitt vridd til det ugjenkjennelige. Er det slik teknologien skal forvaltes?

Hva er årsaken?

Jeg tror at årsaken til det vi ser i dag er kompleksitet. Kompleksiteten strekker seg fra det vi i dag ser på som backend og helt ut til mobilskjermene våre når vi laster inn 39 MB nettsider. Rammeverk og biblioteker blir brukt til å løse diverse oppgaver og mesteparten av utvikling i dag er å sy sammen disse bibliotekene. Vi vet skremmende lite om innholdet i disse bibliotekene. Dette ble veldig tydelig når omfanget av log4j sikkerhetshullet ble kjent. Noen ganger er det OK å bruke rammeverk og etablerte biblioteker for gjenbruk. Andre ganger er det ikke nødvendig i det hele tatt, men normen er at vi tar i bruk rammeverk og bibliotek uansett. Er det fordi vi har dårlig tid eller er det fordi vi har glemt hvordan man bygger ting fra bunnen av? Kanskje en kombinasjon? Bruker vi mindre tid på å lete etter en NPM-pakke eller en Maven-modul i stedet for å skrive koden selv? Søken etter dokumentasjon på eksempler og potensiell feilsøking krever også tid.

Mitt nyttårsforsett

Mitt nyttårsforsett for 2022 er å ta meg tid. Tid til å sette meg inn i det mest fundamentale vi arbeider med, selve datamaskinen. Jeg håper kunnskapen jeg tilegner meg vil gi meg noe spennende å skrive om neste jul når dressen sitter enda strammere.

Øyvind anbefaler

Helt til slutt vil jeg lenke til noen nettsider og presentasjoner som jeg synes var svært interessante å se/høre/lese. Kanskje synes du også det!

Jonathan Blow sin presentasjon 'Preventing the Collapse of Civilization'

Casey Muratori: The Thirty Million Line Problem.

The Website Obesity Problem av Maciej Cegłowski

Som alltid, hvis du ønsker å komme i kontakt med meg så kan du sende en e-post. oya@progit.no. Godt nyttår!