tiistai 19. heinäkuuta 2016

Yle Uutisten Plus-toteutuksien kehitys

PlusDesk on Yle Uutisissa toimiva tiimi, joka toteuttaa Yle Uutisten verkkosivuille niin sanottuja Plus-toteutuksia. Plus-toteutukset ovat uutisjuttuja, joita ei ole mahdollista toteuttaa julkaisujärjestelmässä. Toisinsanoen esimerkiksi interaktiiviset tai datajournalistiset toteutukset – kun ne vaativat jonkinlaista erityistä verkonkerrontaa – tehdään yhteistyössä PlusDeskin kanssa. Konkreettisesti tällaisia toteutuksia ovat olleet muun muassa:

PlusDesk on toiminut vuoden 2013 alusta eli nyt kolmen ja puolen vuoden ajan. Tänä aikana Plus-toteutuksien toteuttaminen ja julkaiseminen on kehittynyt monilla tavoin. Aloitimme julkaisemisen Ylen verkkolevyn nurkalta, josta on sittemmin luovuttu. Nyt olemme siirtymässä käyttämään AWS-palvelua ja projektikohtaisia Git-repositorioita.

Toteutusten kehitys


Tällä hetkellä PlusDeskissä työskentelee neljä kehitystyötä tekevää henkilöä. Käytössämme on niin Linux- kuin Mac-koneita. Meillä on kaikilla henkilökohtaiset kehitysympäristöt, jotka pyörivät lokaalisti. Kehitysympäristöjen ylläpito ja päivittäminen on pääasiassa käyttäjän vastuulla.

Kehitystyön kannalta olennaista on, että toteutuksia voidaan kehittää ja testata omilla laitteilla mahdollisimman pitkälle ja mahdollisimman vaivattomasti. Tämä helpottaa toteutusten julkaisemista, kun jo kehitysvaiheessa toteutukset testataan mahdollisimman autenttisessa ympäristössä. Eli rautalangasta väännettynä, kehittäjillä on omalla koneellaan kopio Yle Uutisten verkkosivuista, jossa he pystyvät testaamaan kehittämäänsä toteutusta ja näkemään miten toteutus toimii suhteessa muuhun sivustoon. (Kuva 1)

Lokaalisti toimiva kehitysympäristö helpottaa toteutusten testaamista. Kehitysympäristö on kuvankaappaus Yle Uutisten artikkelisivusta. (Kuva 1)

Toteutukset upotetaan suoraan Yle Uutisten sivupohjaan, joten kehittäjän on halutessaan mahdollista rikkoa (muuttaa) koko sivuston toimintaa. Pyrimme hallitsemaan tätä mahdollisuutta rajaamalla kaikki toteutukset koskemaan vain niitä elementtejä, jotka liittyvät itse toteutukseen. Tämä rajaaminen estää, etteivät koodit vaikuta mihinkään toteutuksen ulkopuolisiin elementteihin. Se, että toteutukset asetetaan suoraan sivupohjaan (esimerkiksi iFrame-upotuksen sijaan) kuitenkin mahdollistaa sen, että kehittäjän on helppoa manipuloida myös sivupohjaa niin halutessaan.

Toteutukset noudattavat tiedosto- ja kansiorakenteeltaan aina samaa muotoa, joka on kuvattu alla.

js/
data/
css/
img/
index.html

Näiden lisäksi projekteissa voi soveltuvasti olla mukana esimerkiksi audio, video tai script -nimisiä kansioita. Eri osa-alueet on siis jaettu omiin kansioihinsa. CSS-tyylitiedostot löytyvät omasta css/-kansiosta. Javascript-tiedostot eli toimintalogiikka löytyy js/-kansiosta ja niin edelleen. Käytämme toteutuksissa aina tätä samaa rakennetta, joka helpottaa projektien hallinnointia jälkikäteen ja eri kehittäjien kesken.

Koodauksessa pyrimme käyttämään apuna hyväksi havaittuja ja luotettuja kirjastoja kuten D3.js, jQuery ja Highcharts. Aina tarpeen mukaan käytämme projekteissa myös uusia kirjastoja, mutta näiden käytössä olemme tarkkoja, että ne toimivat varmasti kaikilla laitteilla. Soveltuvasti käytössämme on myös Three.js:n, Reactin ja Angular.js:n kaltaisia kirjastoja. Kirjastot tarjoillaan projekteille joko staattisina tiedostoina tai Node-moduuleina.

Javascriptissä käytämme niin ES5:sta kuin ES6:sta. CSS:ssä meillä on käytössä niin LESS kuin SASS. Nämä kehittäjästä ja projektista riippuen.

Yksinkertaiset projektit pyrimme pitämään mahdollisimman yksinkertaisina (KISS).

Alusta asti olemme käyttäneet Git-versionhallintaa. Versionhallinta mahdollistaa muun muassa koodien jakamisen kehittäjien kesken, mutta myös toteutusten versioinnin. Tähän päivään asti meillä on ollut jokaisen vuoden projekteja varten yksi repositorio, mutta nyt olemme siirtymässä käyttämään projektikohtaisia repositorioita. Projektikohtaiset repositoriot mahdollistavat ketterämmän versionhallinnan hyödyntämisen. Jatkossa nimeämme repositoriot seuraavasti:

"vvvv-kk-projektin_nimi"

Eli esimerkiksi 2016-06-asuntokone. Aikaisemmin kansiorakenne oli muotoa vvvv/kk-projektin_nimi. Meillä on komento, joka luo projektin perustamisen yhteydessä uuden repositorion (myös remoten).

Testaus


Testaamme toteutuksiamme vaihtelevasti, mutta etenkin uudet teknologiat isoimmat projektimme testaamme kattavasti eri laitteilla ja eri ympäristöissä. Tämä tarkoittaa, että kokeilemme toteutuksia puhelimilla, tableteilla, Mac- ja Windows-koneilla sekä eri selaimilla. Meillä on erikseen testaamiseen hankittuja laitteita.

Testaamiseen hyödynnämme Google Chrome DevTools:a, Xcode Simulator:a ja Ghostlab-ohjelmistoa.

Pyrimme siihen, että kaikki toteutuksemme toimivat teknisesti kaikilla nykyisillä laitteilla ja ympäristöillä.

Teemme myös käyttäjätestejä mahdollisuuksien mukaan.

Julkaistavan version buildaaminen


Olemme siirtymässä ja pääosin jo siirtyneet projektien "buildaamiseen". Buildaaminen tarkoittaa, että teemme Plus-toteutuksien koodeista erillisen julkaistavan version. Julkaistavat versiot asetetaan projekteissa public/-nimiseen kansioon, jonka alta löytyy käytännössä sama kansiorakenne kuin yllä kuvatulla kehityspuolella. Public-kansiossa asuvat vain tiedostot joita julkaistava versio tarvitsee.

Käytössämme on muutamia rinnakkaisia buildaustyökaluja, mutta useimmat meistä käyttävät työkalua nimeltä Gulp (olisi mahdollista käyttää myös Grunt:a. Olemme integroineet Gulp:n Sublime Gulp:lla Sublime Text -editoriin, jota käytämme koodin kirjoittamiseen (Kuva 2).

Gulp tarkkailee muutoksia tiedoissa ja suorittaa buildin. (Kuva 2)

HTML, CSS ja JS tiedostoille Gulp suorittaa omat tehtävänsä. Javascript-tiedostojen buildaus tekee seuraavat toiminnot (Suluissa ovat käytettyjen Node-moduulien nimet):

Lint tarkistaa koodin syntaksia, Browserify tekee koodeista selaimessa toimivia, Uglify minifoi koodin, Sourcemaps mahdollistaa minifoidun koodin palauttamisen, Livereload kertoo selaimelle tiedostojen muuttuneen.

CSS-tiedostoille buildi tekee toiminnot:

Less muuntaa Less-syntaksin selaimen ymmärtämään CSS-muotoon, Cleancss minifoi koodin, Sourcemaps mahdollistaa minifoidun koodin palauttamisen, Livereload kertoo selaimelle tiedostojen muuttuneen.

HTML-tiedostoille ajetaan:

Htmlmin minifoi koodin, Livereload kertoo selaimelle tiedostojen muuttuneen.

Gulp rakentaa buildin public/-kansioon, jonka sisältö siirretään julkaisua varten julkisen verkko-osoitteen taakse. Tulevaisuudessa tämä julkinen paikka on AWS:ssa. AWS on pilvipalvelu, jonka kautta voidaan jakaa helposti ja tehokkaasti staattisia tiedostoja. Aikaisemmin olemme käyttäneet Ylen omia verkkolevyjä minne tiedostot on siirretty käsin. AWS:n myötä tämä tiedostojen siirtäminen automatisoituu. Tässä suhteessa yhtenäistämme käytäntöjä Ylen sisäisesti.

Toteutuksen siirtäminen julkaisujärjestelmään


Julkaisujärjestelmämme on nimeltään Escenic. Esceniciä käytetään Yle Uutisten sisällön luomiseen ja tallentamiseen. Escenicistä tiedot haetaan rajapinnan (Yle API) avulla yle.fi/uutiset-sivustolle. Plus-toteutuksien osalta Esceniciin luodaan erillinen sisältötyyppi nimeltä "Ulkoinen sisältö". Ulkoiselle sisällölle määritellään kaikki resurssit, joita toteutus tarvitsee eli tämä tarkoittaa HTML, CSS ja JS-tiedostoja. (Kuva 3)

Asetamme julkaisujärjestelmäämme projektin tarvitsemat resurssit. Tässä esimerkiksi Asuntokoneen ulkoinen sisältö. CSS ja JS resursseja voi tarvittaessa olla useita. (Kuva 3)
Ulkoinen sisältö voidaan sitten liittää uutisartikkelissa mihin tahansa haluttuun paikkaan, jolloin HTML-sisältö liitetään haluttuun kohtaan. CSS- ja JS-tiedostot menevät niille varattuun paikkaan sivupohjassa. Aikaisemmin ulkoiset sisällöt oli mahdollista sijoittaa vain jutun alkuun tai loppuun.

maanantai 9. marraskuuta 2015

PlusDeskin 15 luetuinta juttua vuonna 2015

Ajattelin, että olisi hyödyllistä listata ja lyhyesti analysoida luetuimmat Yle Uutisten jutut vuoden 2015 ajalta, joita PlusDesk on ollut tekemässä. Miksi jutut ovat olleet luettuja ja mikä on ollut PlusDeskin rooli niissä.

PlusDesk on siis osa Yle Uutisia ja meidän tehtävämme on tehdä verkon erityissisältöjä, jotka poikkeavat perinteisestä verkonkerronnasta esimerkiksi esitystavaltaan.



Ylen Vanhusvahti


Tyyppi: Palvelu
Aihe: Vanhuspalvelut
FB-luku: 3 353

Vanhusvahti on palvelu, joka kattaa valtavan määrän aineistoa liittyen kuntien vanhuspalveluihin. Aineistot on kerätty koneellisesti THL:n verkkopalvelusta, jossa ne ovat esitetty hajanaisesti. Vanhusvahtiin nämä tiedot on koottu yhteen palveluun ja käyttöliittymään, jossa tietojen selaaminen on mahdollista. Vanhuspalvelut koskettavat suurta osaa suomalaisista ja niihin liittyvä tieto lainsäädännöstä alkaen on monille epäselvää. Vanhusvahti täyttää siis olemassa olevaa tiedontarvetta.

Vanhusvahdin osalta PlusDeskin rooli on keskeinen, koska millään muotoa näin laajalti ja käytettävästi kaikkien kuntien tietoja ei oltaisi voitu esittää perinteisin muodoin.

Puolue hukassa? Testaa kenen joukoissa seisot


Tyyppi: Testi
Aihe: Vaalit
FB-luku: 4 733

"Puoluekone" on eduskuntavaalien alla julkaistu vaihtoehtoinen vaalikone, joka katsoo äänestyspäätöstä puoluekeskeisesti. Vaalien alla monet vaaliaiheiset sisällöt ovat hyvin vetäviä, mutta testin muotoon puettu puoluekone haastaa lukijan miettimään kysymyksiä eri tavalla kuin jos juttu olisi kirjoitettu tekstimuotoon. Myös koneen visuaalinen ilme, johon on haettu tunnelmaa eduskunnasta, tukee sitoutumista kysymyksiin.

Paljonko kaltaisiasi on uudessa eduskunnassa? Täällä se selviää


Tyyppi: Testi
Aihe: Vaalit
FB-luku: 20 817

"Kaltaisuuskone" on eduskuntavaalien jälkeen julkaistu kone, jolla voi testata miten kansanedustajien demografia on yksiyhteen lukijan demografian kanssa. Tarinaa olisi ollut hyvin vaikea kertoa pelkän tekstin tai kuvien avulla. Somesuosio oli erittäin laaja, koska ihmiset halusivat jakaa oman tuloksensa.

Testaa itsesi: Oletko tiukka vai lempeä tuomari?


Tyyppi: Testi
Aihe: Oikeus
FB-luku: 25 226

"Tuomaritesti" on melko perinteinen testin muotoon puettu juttu, jossa sen sijaan, että kerrottaisiin tekstin avulla suomalaisista oikeuskäytännöistä asetetaan lukija asemaan, jossa hänen täytyy miettiä omaa oikeudenkäsitystään. Tuomaritestiä on näkökulmasta riippuen mahdollista pelata joko niin, että yrittää vastata kuten tuomarit ovat tuominneet tai sitten oman oikeudentajun näkökulmasta. Somenäkyvyys oli laaja, koska aihe puhututtaa ihmisiä. Tällä tavalla juttuun on pystytty pukemaan myös yllätyksellisiä elementtejä, joka tukee suosiota.

Millainen teini olet? Tee nuorten trendisanatesti


Tyyppi: Testi
Aihe: Nuoret
FB-luku: 30 245

"Trendisanatesti" on hyvin perinteinen aihelähtöinen testi, joka linkittyy Ylen Uutisluokka -projektiin. Ei toimisi samalla tavalla tai tehokkuudella pelkkänä tekstijuttuna ilman pelillistä testimäisyyttä. Merkittävä somenäkyvyys toi suuren osan lukijoista.

Kuka on oikeistolaisin, kuka liberaalein? – Katso, miten ehdokkaasi asettuu poliittiselle nelikentälle


Tyyppi: Datajuttu
Aihe: Vaalit
FB-luku: 3 290

Eduskuntavaalien alla julkaistu datajuttu, jossa suuri määrä aineistoa. Juttu oltaisiin voitu toteuttaa staattisina kuvina, joista olisi saanut yleisilmeen puolueiden arvoista, mutta jutussa on myös suuri arvo sillä, että pystyy selaamaan yksittäisten ehdokkaiden tietoja. Kyseisessä jutussa PlusDeskin rooli oli siinä, että juttu saatiin toimimaan ja julkaistua Yle Uutisten ympäristössä. Toteutus ja ideointi tapahtui Yle Uutisten ulkopuolella.

Professori arvioi personal trainerin ruokalistan: "Outoa ettei näitä kyseenalaisteta enempää"


Tyyppi: Erityistaitto
Aihe: Terveys
FB-luku: 14 452

Melko perinteinen juttu puhuttavasta ajankohtaisesta aiheesta. Juttuun rakennettu kaksipalstainen erityistaitto ei tuonut merkittävää lisäarvoa jutulle. Suosio perustui enemmän ihmisten kiinnostukseen terveysuutisista.

Jäätkö luokalle vai saatko ehdot? Testaa pärjäätkö alakoululaisille


Tyyppi: Testi
Aihe: Nuoret
FB-luku: 2 642

"Peruskoulutestin" vetovoima perustuu hyvin vahvasti ihmisten haluun testata itseään. Tämänkaltaiset räätälöidyt testit ovat PlusDeskin työlle ominaista. Somesuosio jäi melko vaatimattomaksi, mutta ehkä syynä oli lopulta testin vaikeus ja kun ihmiset jäivät luokalle ei huonoa tulosta haluttu jakaa eteenpäin.

Väsyttääkö aamulla, valvottaako illalla? Testaa itsesi ja katso tutkijan vinkit


Tyyppi: Testi
Aihe: Terveys
FB-luku: 6 395

"Unitestin" suosion takana on sama mieltymys itsensä testaamiseen kuin peruskoulutestillä.

Väärinymmärretyn Päällikön päiväkirja


Tyyppi: Feature
Aihe: Urheilu
FB-luku: 8 058

Olli Jokisen päiväkirja on ainoa top 15 jutun joukkoon nouseva tekstivetoinen juttu (höystetty toki myös kuvilla). Suosion takana on varmasti vahva ja ainutlaatuinen tarina jääkiekkoilijasta, joka ei ikinä ole ollut juuri julkisuuden parrasvaloissa. Toisaalta myös esillepano on näyttävä, joka tukee osaltaan vaikutelmaa tarinan ainutlaatuisuudesta. Tarina sinänsä olisi elänyt itselläänkin, mutta visuaalisilla elementeillä juttu nostettiin vielä omalle tasolleen.

Näin testaat kuntosi – oletko kovemmassa kunnossa kuin kaverisi?


Tyyppi: Testi
Aihe: Terveys
FB-luku: 1 276

Räätälöity ihmisten terveyteen liittyä testi. Videovetoinen juttu, jossa PlusDeskin panos oli lähinnä somesuosion tukemiseen liittyvät ominaisuudet.

Tulokone – Katso, kuinka asuinalueesi tulotaso on kehittynyt


Tyyppi: Datajuttu
Aihe: Verotiedot
FB-luku: 424

Tulokone on jo useampivuotinen tuote, joka kerää vuodesta toiseen huippulukuja lukijamäärissä mitattuna. Todella iso data paketti, jonka toteuttaminen vaatii erityisosaamista niin substansista kuin verkon omaisuudesta.

Paperimies, maisteri ja nuori jäävät työttömiksi – ja kuinkas sitten käykään?


Tyyppi: Erityistaitto
Aihe: Talous
FB-luku: 921

Kolmen jutun paketti puristettuna yhteen juttuun. Kiinnostavasti otsikoitu, joka on tuonut varmasti suuren osan liikenteestä. Paketoinnin osalta PlusDeskin rooli oli tärkeä, koska muuten juttu olisi levinnyt moneen osaan.

Tässä ovat vuoden 2014 suurituloisimmat – katso koko maan ja maakuntien eniten tienanneet


Tyyppi: Lista
Aihe: Verotiedot
FB-luku: 295

Veropäivän perinteinen juttu, joka kerää lukijoita vuodesta toiseen. PlusDeskin rooli on kuitenkin merkittävä, että tiedot saadaan julkaistua maakunnittain ja koko maan osalta heti aamulla.

Kätilö kärsii lisien leikkauksista eniten – Yle selvitti lisien leikkausten vaikutukset yli 200 ammattiin


Tyyppi: Lista
Aihe: Talous
FB-luku: 7 863

Järjestettävä ja haettava lista uutisjutun yhteydessä, joka syventää juttua yksilön näkökulmasta on usein paljon luettu. Mahdollisuus peilata omaa tilannetta jutun näkökulmaan on mielenkiintoista. Perinteisesti tämänkaltainen jutun personoituvuus on jäänyt tekemättä.



Suurin osa jutuista siis oli sellaisia joissa PlusDeskin rooli oli vitaali. Toisaalta nähdään, että testit ovat suosittuja sisältötyyppejä. Ja aiheena vaalisisällöt ovat paljon lukijoita vetäviä.



Muokkaus 9.11.2015 klo 19.00: Jutut eivät ole missään järjestyksessä. FB-luvut on katsottu SharedCount-palvelun avulla ja ovat Facebook-toimintojen (tykkäykset, jaot, kommentit) yhteenlaskettuja lukuja.

maanantai 21. syyskuuta 2015

PlusDeskin tavoitteet

Työskentelen Yle Uutisissa tiimissa nimeltä PlusDesk. Meitä on tiimissa kaksi tuottajaa, kaksi koodaajaa ja kolme graafikkoa.

Yhdessä muiden tiimien – kuten politiikka, talous, urheilu – kanssa teemme verkkoon uutisjuttuja, jotka poikkeavat esitystavaltaan tai sisällöltään perinteisestä uutisjutun muodosta. Teemme esimerkiksi käyttöliittymiä dataan, laskureita ja erikoistaittoja. Oikeastaan kaiken mihin sisällönhallintajärjestelmämme ei taivu.

Esimieheni pyysi minua listaamaan tavoitteeni. Sama kysymys esitettiin kaikille tiimin jäsenille. Mielestäni kysymys oli siinä määrin mielenkiintoinen, että päätin vastata siihen näin blogissa.



Kysymys kuului.

Millaisia juttuja haluat olla tekemässä jatkossa?

Kysymykseen sai vastata aihe, laajuus tai metodi -lähtöisesti.



Mielestäni vastaus on kiteytyy yksinkertaisesti

"Meidän täytyy tehdä sellaisia juttuja ja journalismia, joita muut Yle Uutisissa Suomessa eivät pysty tekemään."

Mitä tämä sitten tarkoittaa aiheen, laajuuden tai metodin näkökulmasta.



Aihe


PlusDeskin tulisi mielestäni tarttua ensisijaisesti journalistisesti isoimpiin ja tärkeimpiin aiheisiin. Esimerkiksi tällä hetkellä tiimimme työpöydällä olevien aiheiden pitäisi sivuta hallituksen sisäpoliittisia toimia tai pakolaiskriisiä.

Miksi? Koska nämä aiheet ovat erityisen yhteiskunnallisen huomion kohteena. Tämän takia osaaminen, jota meiltä löytyy tulisi olla valjastettu näiden asioiden selvittämiseen. Etenkin jos koetaan, että PlusDesk on Yle Uutisten verkon kerronnan keihäänkärki

Konkreettisesti tarkoitan, että meidän tulisi tehdä nyt enemmän juttuja kuten "Täältä turvapaikanhakijat tulevat – klikkaa ja tutki" ja vähemmän juttuja kuten "Hei hei Facebook! Tällaisen sosiaalisen median nuoret saivat tilalle".

Miksi? Ensinnäkin koska nuoret ovat aiheena ajaton, pakolaiskriisi tapahtuu juuri nyt. Toisaalta koska "nuorisojuttu" olisi voitu julkaista myös ilman meidän panostamme, "pakolaiskriisijuttua" taas ei tässä laajuudessa.

Tätä ei tarvitse ymmärtää niin, ettei meidän tulisi tehdä omia aiheita. Tai etteikö osaamistamme voisi hyödyntää myös kepeämpien aiheiden käsittelyssä.

Laajuus


Juttujen laajuus ei mielestäni ole millään tavalla itseisarvo, ei sen kannalta miten paljon jutun tekemiseen käytetään aikaa, kuin ei myöskään sen kannalta miten laajoja jutut ovat kuluttaa.

Jokaisen tarinan ja uutisen kohdalla on tarkoituksenmukaista pohtia laajuus erikseen. Joskus on hyvä kertoa aiheesta kattavasti eri näkökulmista, kun taas toisinaan on oleellista selvittää yksittäinen asia selkeällä tavalla.

Mielestäni kaltaisemme tiimin tulisi pystyä toimimaan yhtälaisesti nopeassa kuin pitkässä aikaikkunassa. Tämä on myös minulle tekijänä motivoitavaa kun prosessit ovat eri pituisia. On puuduttavaa tehdä vain pitkiä projekteja ja toisaalta stressaavaa jos aikaraja on aina huomenna.

Metodi


Metodia eli esitystapaa sivusin itseasiassa edellisessä postauksessani, joka herätti melko paljon keskustelua.

Mutta jos puhutaan siitä, minkälaista muotoa haluaisin olla tekemässä niin mielestäni PlusDeskin kaltaisen tiimin osaaminen tulee parhaiten hyödynnetyksi kun luomme jotain uutta ja kokeilemme. Toki aina sisältö edellä.

Toisaalta tämä tarkoittaa, että toistuvat muodot, jotka olemme havainneet toimiviksi kuten "järjestettävä taulukko", "erikoistaitto" tai "visa" tulee toteuttaa toimittajan työkaluiksi.

Muotojen toistuvuus ei ole tabu, mutta olemme PlusDeskissä muodon ammattilaisia, jolloin itseääntoistava työ ei inspiroi. Ja työ joka toistaa itseään on lopulta tarkoitettu automatisoitavaksi.

tiistai 1. syyskuuta 2015

Toimittaja: Älä pyydä aikajanaa!

Olen tuohtumuksen vallassa – yritän pitää kiinni siitä tähän postauksen loppuun asti.

Lähde: Twitter.

Ai miksi olen tuohtunut? Koska jos vain saisin euron jokaisesta kerrasta kun toimittaja kävelee luokseni tai lähettää sähköpostia kysyen:
"Saisinko mä tehtyä sellaisen aikajanan."
Sen verran usein tämä kysymys on tullut eteeni, että tänä aamuna katkesi pinna. Sanan aikajana voitte ajatuksissanne hyvät toimittajat korvata vaikka sanoilla:
  • viivadiagrammin
  • kartan
  • erikoistaiton
  • featurejutun
  • näyttävän pläjäyksen

You name it.

No mikä muka menee pieleen? Se, että ne ovat kaikki teknologialähtöisiä lähestymistapoja journalistiseen sisältöön. Ei meidän lukijoita kiinnosta nähdä teknisiä härveleitä, heitä kiinnostavat sisällöt.

Hyvä toimittaja, seuraavan kerran kun haluat tehdä jutun Syyrian pakolaiskriisistä tai SOTE-sopan vaiheista, älä mene pyytämään graafikolta tai datajournalistilta aikajanaa, älä karttaa, älä erikoistaittoa tai mitään muutakaan mielestäsi tosi siistiä diagrammia.

Kerro sen sijaan
  1. mistä aiheesta olet tekemässä juttua
  2. minkälaista aineistoa sinulla on
  3. mikä on viesti jonka haluat välittää

    ja miettikää sitten yhdessä ja keskustelkaa mikä toteutustapa on juuri siihen juttuun paras. Ja sitten jos joku graafinen tai tekninen ratkaisu on sille sisällölle paras lähtekää miettimään miten se kannattaa toteuttaa.

    Uskokaa – jutusta tulee niin parempi kun
    • puhutaan asioista ymmärrettävällä tavalla
    • ei rakenneta ominaisuuksia tai palveluita, vaan ratkaistaan ongelmia
    • haetaan palautetta ihmisiltä, jotka ajattelevat eri tavalla kuin itse
    • muistetaan, että lukijat ovat kallisarvoisia, meidän siistit ideat eivät

    Näillä eteenpäin. Pahoittelut.

    Lisälukemista: Real Chart Rules to Follow

    keskiviikko 29. heinäkuuta 2015

    Näin syntyi eduskuntavaalituloksen analyysijuttu

    Teimme PlusDesk:ssä kevään eduskuntavaaleihin liittyen useampia juttuja.

    Yksi niistä oli vaalitulosta analysoiva juttu "Kokeile, miltä vaalitulos näyttää, jos vain koulutetuimmat tai sairaimmat olisivat äänestäneet", jossa vaalitulosta katsottiin kunnittain viiden demografisen muuttujan kautta. Muuttujiksi olimme valinneet:
    1. tulot
    2. koulutus
    3. työttömyys
    4. eläkeläisten osuus
    5. terveys
    Niin sanotun 100 kuntaa -koneen lähteenä käytettiin Tilastokeskuksen Kuntien avainluvut -aineiston tunnuslukuja 1) valtionveronalaiset tulot, 2) korkea-asteen tutkinnon suorittaneiden osuus, 3) työttömyysaste sekä 4) eläkkeellä olevien osuus väestöstä. Tiedot väestöltään 5) terveimmistä ja sairaimmista kunnista perustuivat THL:n sairastavuusindeksiin.

    Lukijan oli mahdollista valita näkyville viiden eri muuttujan ääriarvot. (Kuva 1)

    Jutun idea oli, että valitulla muuttujalla vaalitulos laskettiin ottaen huomioon vain 100 kuntaa.

    Esimerkiksi jos muuttujaksi valitaan "koulutus" vaalitulos lasketaan niin, että otettiin huomioon vain 100 vähiten tai korkeiden koulutetun kunnan äänet. Vastaavasti jos muuttujaksi valittiin "tulot" pystyi näkemään miten vaalitulos olisi rakentunut jos vain Suomen pieni- tai suurituloisimmat kunnat olisivat äänestäneet. Idea oli lainattu ulkomailta.

    Ajatuksenamme oli hypoteesi siitä, että vasemmiston kannatus korostuisi pienituloisissa kunnissa kun taas porvaripuolueiden kannatus olisi huipussaan suurituloisissa kunnissa. Toki näin suoraviivaisesti ei voi ajatella, mutta kantava ajatus analyysissa oli tämänkaltainen. Eli, että puolueiden voimasuhteet ovat riippuvaisia ihmisten demografisista ominaisuuksista.

    Äänestysdatat saimme Ylen vaalipalvelun rajapinnan kautta. Tiedot tulivat sieltä .json-formaatissa.

    Kehityskaari

    Ensimmäisessa vaiheessa toteutimme uutissovelluksen niin, että valitsemalla muuttujan näki vaalituloksen jakautumisen puolueittain pylväsdiagrammeina. Eli lopullisen toteutuksen sen osuuden, joka näkyy sovelluksen vasemmassa laidassa. Tämä oli oikeastaan vähimmäisvaatimus toimivalle sovellukselle. (Kuva 2)

    Pylväsdiagrammit esittivät äänestystuloksen valitulla 100 kunnalla sekä verrattuna todelliseen äänestystulokseen, jotta vertailu olisi helppoa. (Kuva 2)

    Nopeasti kuitenkin tajusimme, että olisi tuloksen lisäksi hyödyllistä nähdä mitkä nämä 100 kuntaa ovat joista vaalituloksen laskenta tapahtuu ja missä päin Suomea ne sijaitsevat. Näin lisäsimme pylväsdiagrammin rinnalle Suomen kuntakartan, jossa esitetään valitut 100 kuntaa korostevärillä. (Kuva 3)

    Valitulla muuttujalla laskennassa käytetyt kunnat korostettiin sinisellä. (Kuva 3)

    Pelkkä kuntien esittäminen kartalla tuntui kuitenkin nopeasti liian kapealta näkökulmalta ja tajusimme, että olisi kiva tietää myös äänestystulos yksittäisten kuntien osalta. Lisäsimme tämän aineiston selattavaksi kartalle niin, että osoittamalla kuntaa näki yksittäisen kunnan äänestystuloksen. (Kuva 4)

    Osoittamalla näki miten kannatus jakautui puolueittain yksittäisessä kunnassa. (Kuva 4)

    Huomiot

    Teknisesti tuote siis eli koko kehitysprosessin ajan. Tämä on luontevaa nykyaikaisessa ketterässä ohjelmistokehityksessä. Uusia ominaisuuksia lisätään toimivan tuotteen ympärille kun tarve niille havaitaan. Tätä voidaan kutsua esimerkiksi prototypoinniksi.

    Datajournalismin ja uutissovelluksen rakentamisessa tämänkaltainen ketterä kehittäminen on erityisen luontevaa ja tehokasta, koska tilanteet voivat muuttua nopeasti ja mahdollisuus niiden ennakoimiseen on rajallista.

    Ei ole tarkoituksenmukaista etukäteen määritellä syvällisesti mitä ollaan tekemässä ja lyödä lukkoon projektin alkuvaiheessa mikä on lopullinen toteutustapa, koska ymmärrys jota näiden päätösten tekemiseen vaaditaan rakentuu vasta kun sovellusta aletaan tekemään.

    keskiviikko 10. kesäkuuta 2015

    Geodeettiset koordinaatistoformaatit

    Törmäsin eilen Poliisiammattikorkeakoulun toimittamaan aineistoon, jossa oli mukana paikkatietoa.

    Koordinaatit esitettiin aineistossa seuraavasti:

    KOORDINAATTI_N,KOORDINAATTI_E
    5927140,1909800
    5949646,2256613
    5950522,2303040
    5955028,2316795
    5956577,2320602
    6002411,2402822


    Koordinaatit olivat kuvauksen mukaan WGS84-koordinaatistossa ja niiden piti osua maanteiden varsille. Emme kuitenkaan saaneet aluksi selvää missä muodossa koordinaatit ovat, koska sellaisenaan ne eivät olleet ainakaan suoraan asteita eivätkä ne tuntuneet olevan myöskään maantieteellisiä koordinaatteja.

    Sitten huomasin, että koordinaattien kolmas ja neljäs numero juoksee niin, että se ei saanut ikinä arvoja yli 60, josta mieleeni tuli, että koordinaattejahan voi esittää myös minuutteina ja sekunteina. Minuuteissa ja sekunneissa suurin arvo on tuo 60.

    KOORDINAATTI_N,KOORDINAATTI_E
    6059804,2537278
    6059975,2540441
    6100120,2348604
    6100178,2426829
    6100207,2422961


    Ensinsiksi oletin, että koordinaatit olivat muotoa
    Eli, kaksi ensimmäistä numeroa kuvaavat asteita, kaksi seuraavaa minuutteja ja loput sekunteja ja sekuntien desimaaleja. Pian huomasin kuitenkin, että sekunnit juoksivat arvoihin yli 60. Eli esimerkiksi tässä itä-koordinaatissa:
    • 2426829 → 24° 26' 82.9''
    joka ei voinut ollut oikein, koska sekunnit eivät voi saada arvoa yli 60. Eli täytyi olla niin, että koordinaatit olivat muotoa:
    Eli edellä mainittu koordinaattipiste on muotoa:
    • 2426829 → 24° 26.829'

    Muunnos


    Halusin muuntaa koordinaatit muotoon:
    koska tämä on Google Mapsin suoraan tukema formaatti. Tein konvertoinnin Excelissä seuraavalla kaavalla:
    • =REGEXEXTRACT(A2, "^([0-9]{2})") & "." & TEXT(ROUND(REGEXEXTRACT(A2, "^[0-9]{2}([0-9]{5})")/1000/60*100000), "00000")
    Kaava ottaa koordinaatin ensimmäiset kaksi numeroa sellaisenaan. Viisi viimeistä numeroa muunnetaan minuuteista desimaaleiksi jakamalla 60:llä, jonka jälkeen luku kerrotaan tarvittavan suurella luvulla, jotta saadaan mukaan riittävästi tarkkuutta. Lopputulos pyöristetään kokonaisluvuksi ja lisätään mahdolliset tarvittavat etunollat text()-funktiolla. Lopuksi asteet ja asteiden desimaalit yhdistetään erottamalla ne pisteellä.


    Opittua


    Usein kun saan käyttööni paikkatietoa ovat koordinaatistot ja formaatit jonkinmoinen murheenkryyni, joka useimmin juontaa siihen, että aineistoa ei ole kuvattu riittävällä tarkkuudella. Välillä aineistosta ei käy edes ilmi missä koordinaatistossa koordinaatit ovat. Ja kun yhdessä koordinaatistossa koordinaatit voidaan esittää useammassa formaatissa (maantieteellisesti, metrejä ja geodeettisesti, asteita), niin on ongelma vielä monimuotoisempi. Ja tosiaan, geodeettiset koordinaatit voidaan esittää myös käyttäen minuutteja ja sekunteja.

    perjantai 8. toukokuuta 2015

    Nuijamaan rajamiehillä oli todella hyvä pito

    Julkaisimme Yle Uutisten sivuilla 6.5. jutun "He valvovat rajojamme", joka kertoo rajavartioiden työstä Nuijamaalla. Juttu on erikoistaitettu, jossa on annettu suuri tila kuville ja videoille. Materiaalia jutussa on paljon eli juttu on siis pitkä lukupaketti. Jutussa edettiin vierittämällä alaspäin kuten netissä on luontevaa. (Kuva 1)

    Juttu Nuijamaan rajavartioista julkaistiin keskiviikkona kello 11 jälkeen. (Kuva 1)
    Juttu keräsi noin 20 000 klikkausta.

    Juttu jakautui kuvien, videoiden ja grafiikoiden myötä 15:sta kokonaisuuteen. Seurasimme miten pitkälle lukijat vierittivät sivua. Tallensimme tiedon kun käyttäjä saavutti kokonaisuuden alun.

    Ensimmäisen kokonaisuuden alkuun vieritti noin 18 000 käyttäjää. Heti alussa menetettiin siis noin 10 % kävijöistä. Tämän jälkeen pito oli todella hyvä. Loppuun asti jutun vieritti 11 600 käyttäjää eli noin 60 %:a kävijöistä. Tämä on todella suuri osuus, koska aikaisemmin olemme nähneet lähempänä 10–20 % olevia lukuja. Toki edelleen ymmärryksemme lukujen takana perustuu pieneen otantaan. Emme ole vielä tarpeeksi usein mitanneet kuinka kuinka pitkälle tämänkaltaisia pidempiä juttuja vieritetään.

    Jotain perusteluja hyvälle pidolle voidaan kuitenkin etsiä julkaisuajasta. Juttu julkaistiin selkeästi päivällä – kello 11 jälkeen – jolloin ihmiset ovat työpaikoillaan tietokoneiden ääressä. Yleinen sääntö meillä julkaisulle on, että paras julkaisuaika on heti aamulla, mutta tästä ehkä opimme, että tämänkaltaisten erikoistaitettujen juttujen kohdalla viisautta voidaan hakea myös muunlaisesta julkaisuajankohdasta.

    Tilastonikkareille


    Luvut ovat Google Analyticsin yksilöidyt tapahtumat -lukuja.

    Jutun lukijamäärä: 20 028
    1. osion alkuun: 18 176
    2. osion alkuun: 17 340
    3. osion alkuun: 16 240
    4. osion alkuun: 15 318
    5. osion alkuun: 14 981
    6. osion alkuun: 14 512
    7. osion alkuun: 13 774
    8. osion alkuun: 13 579
    9. osion alkuun: 13 142
    10. osion alkuun: 13 074
    11. osion alkuun: 12 516
    12. osion alkuun: 12 451
    13. osion alkuun: 11 928
    14. osion alkuun: 11 702
    15. osion alkuun: 11 432