Sovelluskehityksen vihreällä lehdellä

Ohjelmistojen tehokkuudesta puhutaan aina välillä ja viime aikoina asiaa on käsitelty vihreämmällä otteella Green ICT:n ja Vihreä koodi -teemojen kautta. Etenkin Exoven Janne Kalliola on edistänyt vihreän koodin ajatusmaailmaa ja kirjoittanut aiheesta kirjan: Vihreä koodi. Helmikuun alussa (8.2.2023) Koodia Suomesta järjesti vihreästä koodista webinaarin ja tässä on muutamia muistiinpanojani siitä.

Vihreä koodi (kirjan kansikuva)

Muistiinpanot Vihreä koodi -webinaarista

ICT-ala ja kasvihuonepäästöt

  • ICT-ala vastaa 4-10% maailman energiankulutuksesta ja 2.1-3.9% kasvihuonepäästöistä (lentoteollisuuden kokoinen)
  • 3% => 1 580 000 000 tonnia / vuosi
  • päästöt tulevat monesta asiasta, käyttäjien laitteista, siirtoverkoista, datakeskuksista
  • sekä niiden rakentamisesta että käytöstä

Rauta

  • elektroninen jäte on maailman nopeiten kasvata jätemäärä, vain 17% jätteestä käsitellään asiallisesti
  • kierrätys on energiaintensiivista

Ohjelmistot

  • Tehokkuus ja ympäristönäkökulmat ovat toissijaisia asioita kehityksessä
  • Lisää rautaa rajalle (eri budjetista)
  • Olisi tärkeää ulottaa vastuu sovelluskehitykseen

Energiantuotanto tuottaa eri määrän hiilijalanjälkeä riippuen maasta

  • Suomi 54gCO2/kWh, Saksa 349gCO2/kWh

Laitteet ja päästöt

  • Valmistus vie suurimman osan päästöistä
  • Käyttö 15-18% koko elinkaaresta -> Älä osta turhaan uusia laitteita

Päästöjen mittaaminen

  • Monimutkaista mitata eri osa-alueiden takia
  • Joten, mitä tehokkaampi ohjelmointikieli ja mitä vähemmän aikaa se on ajossa, sen vähemmän käyttää sähköä, mitä vähemmän siirretään dataa, sen vähemmän tuottaa päästöjä -> Hukan ja päästöjen vähentäminen (Lean)

Hukan tyyppejä

  • ylimääräiset sovellukset
  • sovellusta käytetään vääriin tehtäviin
  • käyttäjävirheet: ei saada aikaan mitä halutaan
  • väärä arkkitehtuuri: ei täytä tarkoitusta tai vaatimuksia
  • väärä datamalli: datamalli ei vastaa käyttöä
  • ylimääräinen data: tyypillisesti vanhan datan säilyttäminen, tarpeettomat raportit ja siihen datan keruu
  • ei optimoitu data: ei pakattu
  • siirretään dataa varmuuden vuoksi: ei siirretä vain deltaa
  • algoritmien tehottomuus: vanhalle arkkitehtuurille tehty
  • käyttäjän huijaus: dark patternit
  • liikaa koodia: ei poisteta vanhaa koodia (ihmiset käyttää vaan 5% kirjastojen koodista)
  • väärä ohjelmointikieli: ei käytetty tehtävään optimointia kieltä
  • initialisoinnin hukka: run-once ohjelmistokielet kuten PHP
  • liikaa tavaraa: silmäkarkki tai videot, jotka eivät tuo arvoa käyttäjälle, esim. turha animaatio että algoritmi tekee jotain

Hukan poistaminen

  • vaatii analysointia, mitä poistetaan
  • iso vaikutus, pieni työmäärä => tee heti
  • iso työmäärä, pieni vaikutus => mieti asiaa
  • iso vaikutus, käyttökokemus heikkenee => mieti asiaa
Hukan vähentäminen: arvioi vaikutus ja työmäärä

Minimaalinen ratkaisu

  • tee pieni sovellus, joka keskittyy päätoiminnallisuuksiin ja tekee ne hyvin

Käytännön ratkaisuja

  • vähennetään datan määrää (jota siirretään)
    • valitaan oikeat kuvamuodot (webp)
    • välimuistetaan kaikki mikä järkevää
    • pakataan kaikki
    • minimoidaan virheiden mahdollisuudet
    • vähennetään videoiden määrää, korvataan ne animaatioilla tai kuvilla
    • kasvatetaan datan lähettämisen aikaväliä
    • poistetaan fonteista turhat leikkaukset ja glyphit
  • vähennetään koodin määrää
    • poistetaan kuollut koodi
    • mietitään uusien kirjastojen käyttöönottoa, tarkistetaan niiden koko, älä tee itse jos voit käyttää kirjastoa
    • parsi kirjastosta se osa, jota tarviit (jos lisenssi sallii)
  • paranna koodin tehokkuutta
    • etsi ohjelmiston hot spotit ja optimoi ne, mutta älä muuta
    • älä optimoi ennenaikaisesti, keskity isoon kuvaan
    • käytä oikeita algoritmeja tehtävään
    • harkitse kriittisten osien kirjoittamista eri kielellä (tehokkaammalla), jos mahdollista

Energiansäästö on matka

  • tärkeintä on ottaa ensi askel
Vihreä koodi: tärkeintä on ottaa ensiaskel.

Pelattuna Hellblade: Senua’s Sacrifice

Pelaamisessa sopivien pelien valinta on aina hankalaa tasapainottelua rahankäytön ja pelin viihdearvon välillä käytettävissä olevan ajan suhteen. Tältä osin Microsoftin Xbox Game Pass on ollut hyvä hankinta, sillä sitä kautta tulee pelattua pienellä kynnyksellä pelejä, joita ei muuten välttämättä harkitsisi, mutta jotka yllättävät pelikokemuksellaan. Yksi tällainen on Ninja Theoryn viikinkien aikaan sijoittuva Hellblade: Senua’s Sacrifice.

Hellbladessa kelttiläissoturi Senua matkaa piinaavien näkyjen kanssa Helheimiin, kuolleiden valtakuntaan, josta hän yrittää pelastaa tapetun rakkaansa Dillionin. Senuan matka on pelinä enemmän elämys kuin toimintapeli ja vaikean aiheen pohjalta on rakennettu kiehtova ja paikoin jopa sivistävä jännäri. Tarinan ohessa välillä tarjolla on taistelutoimintaa ja yksinkertaista pulmanratkontaa, jotka rytmittävät peliä, mutta molemmat ovat aika nopeasti nähty. Pelin eteneminen on suoraviivaista ja se on läpäistävissä muutamassa tunnissa. Itselläni meni kaikki tarinakivet keräten muutama ilta tarinan pelaamiseen.

Kevyttä taisteluatoimintaa (kuva Steam)

Pelillisesti Hellblade on viihdyttävä ja tarjoaa kompaktin ja vaikuttavan pelikokemuksen siitä, mitä mielenterveysongelmista kärsivän soturin pään sisällä tapahtuu. Hieman painostava teemojensa takia 18 vuoden ikärajalle on vahvat perusteet. Parasta pelissä on sen äänisuunnittelu yhdistettynä viimeisen päälle toteutettuun ja elokuvalliseen miljööseen. Parhaimmillaan se on kuulokkeet päässä.

Pelin tarkempi arvostelu löytyy muun muassa Pelaaja.fi-sivustolta.

Pisteet: 7/10
Pelattu: Xbox Series X