Viimeisen vuoden aikana olen ollut paljon tekemisissä Scala-ohjelmoinnin parissa niin töissä kuin vapaa-ajalla. Viime vuonna osallistuin Varsovassa järjestettyyn yhden päivän Scalar-konferenssiin, ja koska tapahtuma oli mielenkiintoinen, päätin osallistua tänä vuonna uudelleen.
Scalarin järjesti paikallinen Softwaremill-niminen yritys, joka toteuttaa web-palveluja Javalla ja Scalalla. Tämänvuotinen konferenssi oli jo kolmas ja käsitti puolen tunnin luentoja Scalan eri aiheista. Kovin syventäviä luentoja ei siis pidetty, mutta tarkoituksena olikin avata ajatuksia ja tutustuttaa ihmiset uusiin asioihin.
Pawel Szulc aloitti konferenssin luennoimalla Scalan tyyppiluokista (engl. type class), jotka ovat tuttua kamaa Haskell-devaajille. Tyyppiluokilla voidaan luoda esimerkiksi Number-tyyppi, johon voi sitten implementoida add() ja subtract() -funktiot sen sijaan että näitä funktioita implementoitaisiin Int ja Double -tyypeille erikseen. Eli periaatteessa tyyppiluokka on toiminnoltaan sama kuin Javassa generic interface.
Mathias Doenitz kertoi reaktiivisesta stream-ohjelmoinnista Swave-implementaatiolla, jota ei ole vielä julkaistu. Mathias demonstroi miten helposti streamin saa luotua, jaettua kahdeksi omaksi säikeeksi ja myöhemmin yhdistettyä taas yhdeksi.
Eric Torreborre esitteli Eff-monadin, mutta kuten yleensäkin monadin käsite on minulla aina ollut hiukan hankala käsittää kunnolla, meni tämänkin monadin esittely hiukan ohi.
Maciej Bilas näytti meille miten hän deployasi frontti- ja backend-koodia Mesos/Kubernetes klusteriin käyttäen Akka etcd:tä. Demollaan Maciej lisäsi ja poisti nodeja web-liittymällä ja sitä mukaa kun nodet valmistuivat, alkoi ruudulla vilkkumaan vihreää.
Lukasz Lenart piti erilaisen luennon. Kalvojen sijaan hän halusi näyttää miten koodata web-sovellus käyttäen Lift-sovellukehystä. Lift toimii hiukan eri tavalla kuin suosittu Play, sillä view-sivuja koodataan ihan normaalilla HTML:llä ja tageihin lisätään data-lift -attribuutteja, joiden mukaan Lift osaa rendata conrollerista siihen sisältöä ajax-kutsulla. Kokonaisuus näytti yrittävän matkia kovasti Reactia/Angularia.
Amira Lakhal demonstroi sovelluksellaan kiihtyvyysanturin tietojen keräämistä Android puhelimesta. Kiihtyvyysanturin tiedot napattiin monta kertaa sekunnissa, jonka jälkeen ne tallennettiin Cassandra-tietokantaan, jota Spark ja MLlib käyttivät. Koneopitulla datalla arvioitiin oliko käyttäjän liike istumista, seisomista, kävelyä vaiko juoksua. Päivän paras demo nähtiin, kun Amira juoksi lavalla edestakaisin saadakseen ruudulle viestin: “You are running!”
Dmytro Petrashko, Dotty-kääntäjän suunnittelija, näytti meille miten luokkien alustukset muuttuvat kun otetaan mukaan luokkien periminen ja mitä pitää ottaa huomioon. Alussa esimerkit olivat helppoja, mutta sitten mentiin sellaisiin esimerkkeihin, jotka muistuttivat sertifikaatiotestin kysymyksiä. Asiaa monimutkaistaa se, että luokkaa voidaan extendata monella traitilla with-avainsanalla. Tästä voisi kirjoittaa vaikka oman blogikirjoituksen, mutta kukin voi käydä itse lukemassa miten alustaminen tapahtuu käytännössä.
Jan Pustelnik esitteli Catz- ja Scalaz-kirjastojen toiminnallisuuksia maustamaan funktionaalista ohjelmointia. Tässä mentiin syvemmälle funktionaaliseen ohjelmointiin, mitä itse olen päässyt kokeilemaan. Joten ehkä siksi se luennon pihvi meni hiukan ohi. Olisiko myös pitkä päivä luentoja osasyynä siihen että osa jutuista meni “ohi”?
Artur Bankowski kertoi use-case tarinan siitä miten 800 miljoonan noden sosiaalisen median sovellusta rakennettiin Scalalla, Elastic Search:lla ja Neo4j:llä. POC-vaiheessa datan keruu ja käyttö kesti useita tunteja, mutta optimoimalla sovellusta ja valitsemalla edellä mainitut teknologiat saatiin homma toimimaan sekunneissa.
Kaiken kaikkiaan Scalar oli antoisa kokemus ja vaikka osa asioista oli oman osaamiseni ulkopuolella, auttoi se tiedostamaan että tällaisia työkaluja on olemassa. Eniten konferenssi kumminkin antoi motivaatiota ja inspiraatiota jatkaa Scalan parissa.
Nordic Hack Day
Asiakkaan kutsusta osallistuin pohjoismaiden järjestämään Nordic Hack Day -tapahtumaan, jossa oli kaksi päivää aikaa koodata joko ryhmän ideaa tai omaa projektiaan. Alussa ryhmät pitchasivat muille omia projektejaan. Koska itselläni oli jo tiedossa React Native -sovellus, joka hyödyntäisi Wikidatan rajapintaa tiedonkeruuseen, oli se luonnollisesti ryhmä, johon liityin.
Otimme tavoitteeksi rakentaa yleisradioille hienon Euroviisusovelluksen, jolla pystyisi katsomaan tämän vuoden kilpailijoista tietoa ja hakemaan statistiikkaa, ja jopa ennakoimaan kilpailijamaiden tämän vuoden sijoituksen perustuen edellisten vuosien naapurimaiden äänestyksiin.
React Native, täältä tullaan. No, ei se ihan niin helposti onnistunutkaan. Yhdellä ei toiminut Android-emulaattori, toisella ei toiminut iOS. Pelkän iOS-emulaattorin toimintakuntoon saamisessa meni kolmisen tuntia, jonka jälkeen pääsikin jo työn makuun.
Wikidata on ilmainen linkattu tietokanta, jota voi pitää kuka tahansa meistä. Tieto on strukturoitua ja luotu Wikipedian tiedoista. Query-työkalun avulla voi luoda kyselyjä kantaan. Sovelluksessamme haimme alussa kilpailijoita, jotka tulevat osallistumaan tämän vuoden Euroviisuissa.
Ongelmaksi muodostui heti tiedon puute, eli tämän vuoden osallistujista ei löytynyt kuin kahden osallistujamaan tiedot. Päätimme demoa varten hakea viime vuoden osallistujat, jotta saisimme käyttöliittymästä monipuolisemman.
Vuodatimme monta tuntia verta ja hikeä uusien asioiden parissa. Iltamyöhään aivot eivät enää pelanneet, joten päätin mennä nukkumaan kun muut jäivät vielä koodaamaan. Aamulla ruokailun jälkeen meillä oli enää neljä tuntia aikaa saada tuote valmiiksi. Lounaan jälkeen oli luvassa projektin demot NRK:n (Norjan yleisradio) toimitusjohtajalle. Paine oli kova saada jotain toimivaa esiteltäväksi. Välillä heräsi epäilys saadaanko jotain siistiä näytille.
Käyttöliittymä valmistui hyvää vauhtia ja erikoisuutena lisäsimme sovellukseen mahdollisuuden lokalisoida kaikki tekstit maailman kaikilla kielillä ilman että luomme jokaiselle kielelle oman käännöstiedoston. Tämä onnistui sillä, että Wikidatan kyselyssä voi määritellä kielen ja vastauksena tulee kaikki otsikot ja tiedot lokalisoituna. Jopa heprea ja kiinan kieli näyttivät hienolta.
Demotilaisuus – Artur koneen ääressä.
Itse demotilaisuudessa olimme kolmantena demoamassa sovellustamme. Kiinnitin läppärin HDMI-piuhaan ja esittelin sovelluksen toiminnallisuutta samalla kun tiimini muut jäsenet kertoivat itse projektista sekä wikidatan implementaatiosta. Emme voittaneet, mutta voitto ei ollutkaan tärkeintä. Oli hieno kokemus osallistua hackathoniin. Se tarjosi mahdollisuuden kokeilla uutta ja pakotti samalla pois omalta mukavuusalueelta. Suosittelen tällaisia tapahtumia lämpimästi kaikille.