Tämän vuoden toinen konferenssimatkamme suuntautui keväiseen Budapestiin, jossa järjestettiin JavaScript-kehittäjille suunnattu JSConf. Matkalta haaviin jäi niin paljon mielenkiintoista kerrottavaa, että päätimme kirjoittaa siitä pienen tietopläjäyksen koko kansan ihmeteltäväksi.
JSConf Budapest (12.-13.5.2016) järjestettiin tänä vuonna toista kertaa ja tapahtuma pidettiin edellisestä vuodesta poiketen Akvárium Klub nimisessä yökerhon, konferenssikeskuksen ja kulttuuritalon piirteitä yhdistelevässä paikassa [1]. Paikan nimi juontaa kompleksin katon virkaa toimittavasta vesialtaasta, joka luo taukotiloihin varsin mielenkiintoisia valoilmiöitä sopivan sään sattuessa kohdalle.
Konferenssi oli kahden päivän pituinen tiukka pläjäys puolen tunnin esityksiä, joissa käsiteltiin suorituskykyä, JavaScriptin häkellyttävän erilaisia soveltamiskohteita, inhimillistä näkökulmaa ohjelmistokehitykseen, sekä alan vallitsevia trendejä. Nimensä mukaisesti konferenssi keskittyi JavaScriptin ja web-ohjelmistokehityksen aihepiiriin.
Akvárium Klub oli yökerhon, konferenssikeskuksen ja kulttuuritalon piirteitä yhdistelevä rakennus.
Tapahtuman isäntänä toimi Chromen parissa kehittäjänä tutuksi tullut Jake Archibald (@jaffathecake), jonka hauskat välispiikit muodostuivat tärkeäksi osaksi tapahtuman tunnelmaa.
Mielenkiintoisimpia varsinaiseen JavaScript-ohjelmointiin liittyviä esityksiä olivat muun muassa:
- Loppukäyttäjän kokema suorituskyky (Why Performance Matters, Denys Mishunov)
- JavaScriptin muistinhallinta ja roskienkeräys (The Hitchhiker’s Guide to All Things Memory in Javascript, Safia Abdalla)
- Mitä kaikkien tulisi tietää NPM:stä (What everybody should know about npm, Laurie Voss)
- Tietoturva selaimissa (Offensive and Defensive Strategies for Client-Side JavaScript Security, Anand Vemuri)
Näistä teknisimmistä aiheista käydään tarkemmin läpi vain Denys Mishunovin Loppukäyttäjän kokema suorituskyky ja muuten keskitytään raapimaan pintaa. Ohjelmistokehityskulttuuriin liittyvistä asioista ja JavaScriptin mielenkiintoisista soveltamiskohteista kerrotaan hieman tarkemmalla tasolla.
Loppukäyttäjän kokema suorituskyky
Tämä oli mielestäni hyödyllisin esitys. Piste. Esityksessä Denys Mishunov (@mishunov) latasi täyslaidallisen maalaisjärkeä dogmaatikkojen mittaristoa kohti. Hän aloitti esityksen käymällä läpi klassisia suorituskyvyn mittareita. Esimerkiksi yhden sekunnin suorituskykyparannus sivun latausaikaan nostaa konversiota kaksi prosenttia. Hän ei sinänsä ollut näitä mittareita vastaan, mutta korosti sitä, että pelkästään Chromen DevToolsista sekuntimääriä katsomalla ei näe koko totuutta. Hän myös mainitsi 20% säännön, joka tarkoittaa sitä että usein alle 20% suorituskykyparannukset ovat turhia, sillä ihminen ei pysty erottamaan asioita niin tarkasti. Hän todisti väitteensä näyttämällä kaksi eri sivulatausta, joista toinen oli kaksi sekuntia ja toinen 1.6 sekuntia. Yleisö väitti lähes yksimielisesti kahden sekunnin latausaikaa nopeammaksi.
“The perception of performance is just as effective as actual performance in many cases.” — Apple [2].
Denys korosti aktiivisen ja passiivisen odotusajan merkitystä, joka tarkoittaa sitä, että käyttäjällä täytyy olla jotain tekemistä jotta odottaminen ei tunnu niin pitkältä. Hän antoi mainion esimerkin täsmälleen saman odotusajan optimoimisesta lentokentällä, jossa matkatavaroiden saaminen lentokoneesta hihnalle asti kestää tietyn ajan [3]. Esimerkissä lentokentän asiakkaat olivat tyytymättömiä siihen, että matkatavaroiden saamisessa kesti liian pitkään. Odotusajan lyhentämisen sijaan lentokenttä kokeilikin lopulta ohjata saapuvien matkustajien lentokoneet mahdollisimman kaukaiselle portille heille määritellystä matkatavarahihnasta. Tuloksena matkustajien kävelymatka kuusinkertaistui aikaisemmasta, mutta valituksien määrä putosi lähes olemattomaksi.
Aktiivisen ja passiivisen odotusajan erottaa moderneilla sivustoilla siten, että onko ruudulla heti jotain järkevää sisältöä vai pyöriikö ruudulla erinäiset latausindikaattorit. Lääkkeenä ohjelmistokehityskontekstiin Denys määräsi palvelimen päässä esirenderöityjä resursseja. Tähän aihepiiriin liittyi myös Oliver Joseph Ashin (@OliverJAsh) esitys Building an Offline Page for theguardian.com, jossa ongelmaa on ratkaistu mm. offline-tilassa toimivan ristisanatehtävän avulla.
Henri Lahtinen ja Kai Kulju JSConfissa Budapestissä.
Ohjelmistokehityskulttuuriin ja trendeihin liittyvät esitykset
Ainakin kaksi esityksistä keskittyi kokonaisvaltaisesti empatiaan, erilaisuuteen ja vähemmistöjen turvallisuuden takaamiseen ohjelmistoalalla. Konferenssissa oli muutenkin vahvasti esillä käyttäytyminen ja sen pitäminen asiallisena [4]. Vaikka hyvä käyttäytyminen tuntuisi olevankin aika itsestäänselvyys Suomessa järjestettävissä ohjelmistokehitystapahtumissa, asia on kuitenkin aina olennainen ja siihen tulee suhtautua vakavasti.
Ensimmäisenä käyttäytymisestä kerkesi puhumaan Nick Hehr (@hipsterbrown) esityksessään The Other Side of Empathy, jossa hän korosti kommunikaation tärkeyttä kun keskustellaan internetin välityksellä esimerkiksi OpenSource-projektien GitHubissa. Tärkeimmät tukipilarit hyvässä kommunikaatiossa hänen mukaansa ovat rakentava asenne, toisten ihmisten kunnioittaminen ja tilannetaju. Rakentavankin palautteen antaminen tulisi tapahtua oikeassa paikassa oikeaan aikaan, muuten tilanne saattaa johtaa herkästi ongelmiin. Esiintyjä mainitsi, että Atom-projektissa on hyvät ohjenuorat, joista voi ammentaa ideoita [5].
Nick Hehrillä oli hienoja ajatuksia hyvästä kommunikaatiosta ja sen fasilitoimisesta. Erityisen tärkeää on kuunteleminen ja aito halu ymmärtää mitä kertoja tarkoittaa. Tavallisesta ohjelmakoodistakin saa inhimillisempää jos koodin kirjoittaja käyttää kommentteja luovasti välittämään omia ajatuksiaan tekemistään ratkaisuista. Netissä tapahtuvaa keskustelua voi parantaa vaikkapa siten, että virittää botin (esim. slackbot) esittämään tarkentavia kysymyksiä (“Can you be more descriptive?”) jos keskustelussa esiintyy sana “sucks”. Jos jokin asia “imee”, niin se ei vielä ole itsessään millään tavalla rakentava ilmaisu. Paras tapa oppimiseen on hänen mielestään mentorointi.
Esityksen kalvoista löytyy asiasta enemmän kiinnostuneille aihepiiriin liittyviä kirjasuosituksia ja Nick Hehrin githubista lisätietoja [6]. Katso esityksen kalvot.
Toinen samaa aihepiiriä käsittelevä esitys oli Lena Reinhardin (@lrnrd) Works On My Machine, or the Problem is between Keyboard and Chair, jossa lähdettiin avaamaan – hieman turhan provosoivaan sävyyn minun mielestäni – eri vähemmistöjen asemaa ohjelmistoalalla. Hän esitti mielenkiintoisen yhtäläisyyden ohjelmistokehityksen ja ohjelmistoalan vähemmistöjen ongelmien välillä. Hänen mukaansa ohjelmistokehittäjät elävät kuplassa. Kuplassa ollessaan he ovat huonoja arvioimaan ohjelmistojen käytettävyysongelmia ja samalla tavalla huonoja ymmärtämään ohjelmistoalalla työskentelevien vähemmistöjen edustajien kokemia ongelmia ja vihamielisyyttä. Mahdollisuus muutokseen on kuitenkin ohjelmistoalalla työskentelevien ihmisten käsissä ja vaatii heiltä aloitteellisuutta.
Hieman kevyemmän teeman esitykset
Suz Hinton (@noopkat) esitteli hämmentävää JavaScript-taidettaan, jossa hän visualisoi New Yorkin metron ovien sulkemisääniä esityksessään The Formulartic Spectrum. Tärkein pointti hänen esityksessään oli kuitenkin se, että joskus kannattaa vain rehellisesti leikkiä työkaluillaan ja heittää konventiot romukoppaan. Tällä tavoin pääsee irti arjesta ja voi löytää työkaluistaan täysin uusia puolia.
“Code like nobody’s watching” — Suz Hinton
Useissa esityksissä keskityttiin esittelemään JavaScriptillä toteutettuja keksintöjä. Omituisin ja samalla mielenkiintoisin IoT-viritys oli ehdottomasti Rachel Whiten (@ohhoe) Nodejs:n ja WebSockettien avulla toimiva kissanruokintakone, jonka hän esitteli esityksessä Internet of Cats.
Suorastaan välikevennyksenä Sam Bellen (@sambego) täräytti ilmoille soolot sähkökitarallaan JavaScriptin Web Audio API:n avulla (Changing live audio with the web-audio-api). Esiintyjä oli sitä mieltä, että Chromella on parempi hoitaa äänentoisto, mutta Firefoxilla taas itse devaaminen luonnistuu helpommin. Firefoxissa äänentoistossa oli enemmän latenssia. Web Audio API oli uusi tuttavuus, johon täytyy perehtyä tarkemmin [7].
Sam Bellen ja huikea guitarshow.
Ensimmäisen illan loppuhuipennuksena osallistujakatras pääsi jammailemaan täysin JavaScriptin avulla esityksen aikana nauhotettujen samplejen ja koostettujen biisien tahdissa, sekä SCSS-tiedostojen kautta komennettavien lamppujen välkkeessä. Oli huikeeta!
Kevyt, mutta ei varsinaisen yksinkertainen tieteellisillä faktoilla maustettu esitys nähtiin, kun austraalialainen partamies Rob Kerr (PhD, @robrkerr) kertoi katsojille aivojen toiminnasta ja neuroneiden visualisoimisesta JavaScriptin avulla. En edes yritä tiivistää tätä aihetta mitenkään sen enempää (Science in the Browser: Orchestrating and Visualising Neural Simulations). Hän kuitenkin oli sitä mieltä, että JavaScript on tieteellisen tiedon jakamisen ja visualisoimisen kannalta mullistava ohjelmointikieli ja väline.
Reissusta jäi käteen muutakin kuin känsiä.
Lähteet
[1] JSConf Budapest, Akvarium Klub, 2016.
[2] Basic Performance Tips, Apple, 2013.
[3] Why Waiting Is Torture, Alex Stone, 2012.
[4] Code of Conduct, JSConf Budapest, 2016.
[5] Contributor Covenant Code of Conduct, Atom, 2016.