Tämä on Janne Aukian blogi.
Fiilistelen arkea, taidetta ja tekniikkaa.

Kuutio

Kymmenen ajatusta käyttäjädatan analysoinnista

24.8.2010 klo 12:34

Monesti web-palveluita kehitettäessä on tarvetta datan keräämiseen käyttäjistä ja sen analysointiin. Tässä kymmenen ajatusta verkkopalveluista kerätyn datan analysointiin liittyen.

  1. Kerättävä data riippuu siitä, mitä halutaan tutkia. Eli ennen datan keruuta olisi hyvä ymmärtää, mihin (liiketoiminta-) ongelmiin datan haluaisi vastaavan ja miten sitä saadaan hyödynnettyä. On vaikeaa tietää etukäteen mitä dataa tarvitaan. Siksi “kerätään kaikenlaista dataa tulevan varalle” -strategia on hankala.
  2. Jos voi vaikuttaa siihen, minkälaista dataa kerätään, kannattaa yrittää kerätä data algoritmeille helpossa muodossa. Eli mitä siistimpää dataa, sen parempi.
  3. Jo alkuvaiheessa kannattaa jo miettiä, miten integroinnit, datan siirto yms voitaisiin tehdä keskeisten järjestelmien välillä — integrointi ja automatisointi on yleensä varsinaista data-analyysiä työläämpää.
  4. Parasta olisi jos kerättävää dataa voisi säätää ja muuttaa samalla kun kehitetään tapoja hyödyntää sitä. Eli käytännössä vuorotellaan hypoteeseja ja testejä kunnes saadaan ymmärrys havaittavasta kohteesta.
  5. Nopeaan datan testailuun R:n kaltaiset työkalut ovat käteviä. Vasta myöhemmin kannattaa alkaa tehdä raskasta ohjelmakoodia Javalla tai PHP:llä – jos silloinkaan.
  6. Datalta kannattaa yrittää kysyä avoimia kysymyksiä, silloin voi oppia jotakin uutta. Eli vaikka etukäteen olisi mielessä, mitä datasta saattaisi löytyä, kannattaa datan esitysmuodot rakentaa niin, että työkaluja voi käyttää eri tavoin ja että niiden avulla voi löytää myös uusia ja yllättäviä yhteyksia asioiden välillä.
  7. Eri käyttäjät käyttävät palveluita eri tavoin. Siksi käyttjiä kannattaa segmentoida iän, sukupuolen, tulon tai käyttäjien käyttötapojen perusteella.
  8. Data on mielekästä yleensä vain jos sillä on vetailukohtia. Eli yksittäinen vaikkapa tietyn sivun tunnusluku ei ole yleensä kiinnostava, ellei sitä pääse vertaamaan muiden sivujen tai päivien vastaaviin lukuihin.
  9. Dataa voi monesti hyödyntää myös osana palvelua, näyttämällä sitä loppukäyttäjille yhteenvetojen, yleiskatsausten ja samanlaisten kohteiden muodossa.
  10. Joskus valmiit työkalut, kuten Google Analytics tai Tableau, ovat riittävän hyviä. Monesti kuitenkin analyysitarpeisiin on vaikea vastata puhtaasti valmiita työkaluja käyttämällä.

Design laadun mittarina

23.8.2010 klo 8:51

Nykyään jotkut amatööriblogit näyttävät todella laadukkailta hienojen, ilmaisten blogitemplatejen ansiosta. Ennen on tuotteiden laatua voinut yrittää päätellä designin perusteella, mutta nykymaailmassa tämä ei enää aina päde. Fiilis on vähän sama kuin jos paikallislehti olisi paremmin taitettu ja paremmalla paperilla kuin design-aikakauslehdet.

Valokuvioita

10.8.2010 klo 8:29

Voisi tehdä joukon pieniä itsenäisiä laatikoita jotka voivat lähettää valoa ja jotka syttyvät kun niiden lähellä palaa valoa. Tavoitteena olisi saada aikaan jonkinmoisia emergenttejä valokuvioita, esimerkiksi aaltoja.

Javascript/fronttitapahtuma Helsingissä

6.8.2010 klo 15:05

Perustettiin sitten Frontend Finland -yhteisö, jonka ensimmäinen, Javascript-aiheinen tilaisuus järjestetään 15.9. Lisätietoja Fronted Finlandin sivulta.

Franticin toimistolla on rajoitetusti tilaa, joten tilaisuuteen kannattaa ilmoittautua pikapuoliin. Ilmoittautuminen alkaa tänään.

Juoksuapplikaatio äänellä

2.8.2010 klo 15:51

Mietittiin tänään lounaalla Petrin kanssa, että juoksuapplikaatio joka kertoisi äänellä milloin olet alle tavoitekeskinopeuden (ja milloin yli) olisi kätevä. Tai vaihtoehtoisesti voisi juosta edellisiä juoksujasi vastaan, vanhojen autopelien tyyliin. Ja iPhonen ruudulla näkyisi tietysti kartta jossa juoksureitillä vertailujuoksijat olisivat erivärisiä palloja.

Päivitys 3.8.2010, GhostRace tuntuisi tekevän jotain tämänsuuntaista, mutta se ei ole myynnissä suomen App Storessa.

Tilastoa kansanedustajista

10.6.2010 klo 14:32

Mietin tänään, että voisi tehdä webbipalvelun, jossa seurattaisiin, miten kansandustajien verkkonäkyvyys kehittyy ajassa, Tuijan postauksen pohjalta.

Tai sitten voisi vaan kirjoittaa jännityskirjan tietokoneviruksista autoissa ja lentokoneissa.

Javascript-tilaisuus Helsingissä?

18.5.2010 klo 10:20

Pitäisikö järkätä jonkinmoinen Javascript-meetup Helsingissä? Porukka voisi demota projektejaan tai sitten muita Javascript-kirjastoja tms joita on tullut vastaan.

Zoomooz: zoomauskirjasto Javascriptillä

8.5.2010 klo 14:06

Sain vihdoinkin perjantaina FrozenRails-loppupresiksen aikana Zoomooz-Javascript-kirjaston sellaiseen kuntoon, että kehtasin laittaa sen verkkoon jakoon. Kirjaston avulla voi zoomata sivua niin, että tietty html-elementti näkyy täysilevyisenä selainikkunan keskellä. Se toimii Webkitissä ja Firefoxissa.

Koska Firefox ei tue vielä css-transformaatioiden animointia, vaati Firefox tuki jonkin verran javascript-magiaa. Muutenkin oli hauskaa pyöritellä matriiseja javascriptissä. Ihme kyllä, javascript-temput tuntuisivat myös toimivan! Lähdekoodista voi ihmetellä tarkemmin, mitä kaikkea tuolla tapahtuu.

Tämä on myös ensimmäinen open source -kirjasto, jonka olen tehnyt. On kiinnostavaa nähdä, olisiko tällä käyttöä myös jollekin toiselle.

PageRank logistiikassa

22.2.2010 klo 12:00

Viime viikkoiseen suositusjärjestelmäpostaukseen liittyen tuli vastaan kiinnostava blogikirjoitus Panjivasta, joka käyttää PageRankia logistiikan ja liiketoimintaverkkojen optimoinnissa.

Ajatus on vähän vastaava kuin lokaaleissa hauissa: hyödynnetään tietoa siitä, kuka ostaa keneltä ja sitä kautta hahmotetaan keskeiset (ja luotettavat) toimittajat. Mielenkiintoista myös, kuinka nettialgoritmit voivat vaikuttaa perinteisen teollisuuden yritysten toimintamalleihin.

Ammuskelu-urheilupeli

17.2.2010 klo 14:10

Päivän huono idea: voisi tehdä futispelin jossa voisi myös ammuskella. Mitä enemmän aseita, sen hitaampaa liikkuminen ja maalien tekeminen olisi. Konsepti yhdistäisi kaksi suosittua peliformaattia. Kai joku tällaisen on jo keksinyt toteuttaa, kun kerran Lingerie Football Leaguekin on olemassa, onhan?

Haku suositteluongelmana

15.2.2010 klo 15:12

Webbisivustojen paikalliset hakutoiminnot ovat yleensä kehnoja. Monesti paras hakuvaihtoehto tietyn sivuston sisällä hakemiseksi on nykyään käyttää Googlea, sillä Googlen hakualgoritmi toimii yksittäisillekin sivuille usein paremmin kuin sivustojen omat hakukoneet. Yhtenä syynä tälle on, että Google pystyy hyödyntämään sivujen suosittelussa myös muilta sivustoilta tulevia linkkejä.

Eräs tapa parantaa hakutuloksia voisi olla ajatella hakua suositusongelmana, jossa käyttäjälle pitäisi suositella parasta sisältöä hakusanojen ohjeistamana. Tässä ongelmassa voisi hyödyntää sivustojen kävijädataa sen ymmärtämiseksi, mitkä sivut ovat keskeisiä minkäkin käsitteen osalta.

Sivuston suositusjärjestelmän voisi rakentaa käyttölokidataan perustuen. Datana toimisi siis verkko sivuista ja käyttäjistä, jossa käyttäjä joka on käynyt kahdella sivulla on linkki niiden välillä:

UID -> PAGE
2234 -> /
2234 -> /products/3399
2234 -> /products/4325
2551 -> /products/4325
2551 -> /products/21
...

Haun kannalta olennaista olisi, että sivu saisi sijoituksensa sen perusteella, kuinka hyvin sekä se että sitä verkossa lähellä olevat sivut ovat sijoittuneet. Eli hakusanan osalta keskeiset sivut nousisivat rankingissa. Tämä muistuttaisi hieman Googlen Page Rankia.

Kätevää ongelman tässä muotoilussa olisi, että samaa hakuengineä voisi käyttää myös tuotesuositusten — ja personoitujen hakutulosten — tekemiseen. Parasta olisi, jos tällainen engine toteutettaisiin avoimen lähdekoodin projektina Javalla vaikkapa Hadoopia käyttäen. Ja mukavaa olisi tietysti, jos engine integroituisi automaattisesti yleisimpiin cms:iin (tai sitten vaikkapa suoraan Apacheen).

Onkohan moisia jo olemassa? Pikaisella Googletuksella tuli ainakin vastaan Search and Recommendation: two sides of the same coin? -kalvoesitys, josssa oli esitetty ajatus hausta suosittelun yksinkertaistuksena.

Vuoden 2009 retrospektiivi

2.1.2010 klo 17:47

Aral Balkanin blogipostauksen inspiroimana ajattelin vähän fiilistellä mennyttä vuotta 2009.

Suurin asia vuonna 2009 on ollut seurata meidän tyttäremme kasvamista. On aika mieletöntä, että yhden vuoden aikana voi oppia ryömimään, konttaamaan, kävelemään ja puhumaan. Ja lisäksi myös laulamaan, tanssimaan, lukemaan kirjoja — ja jekuttamaan vanhempiaan.

Kesällä olin nelisen kuukautta kotona tyttäremme kanssa. Oli mukavaa saada itse otetta lapsenhoidosta ja omaa käsitystä siitä, miten päivärutiini toimii. Se toi itsevarmuutta lapsenhoidossa. Suosittelen kotona olemista myös muille isille — kotona lapsen kanssa kahden oleminen on paljon yleisempää esimerkiksi Ruotsissa kuin Suomessa. Pientä mökkihöperyyttä huomasin jo tuona aikana tulevan: kun Anni tuli töistä, oli minulla jo monesti fiilis, että olisi mukavaa käydä kaupungilla tai edes kauppakeskuksessa.

Syksyllä aikaa ja energiaa vei putkiremontti, jonka vuoksi olimme evakossa kolmisen kuukautta. Onneksi remontti alkaa olla jo pääpiirteissään ohi. Jäljellä on vain kaikkien pikkuasioiden hoitamista ja laittamista, jotka vievät aina oman aikansa. Myöskään tyttäremme huonetta emme ehtineet vielä tämän vuoden puolella remontoimaan, vaikka niin olimme alun perin ajatelleetkin.

Vuoden alussa asetettu tavoite lukea kirja kuukaudessa ei toteutunut alkuunkaan. Ehkä vuodelle 2010 vuosi asettaa ylimalkaisemman tavoitteen nähdä, ajatella ja oppia uutta.

Töistä

Vuonna 2009 vaihdoin myös työpaikkaa ja työnkuvaa. Edellisenä vuonna tein pienen softafirman markkinointia: kirjoitin whitepapereita, suunnittelin esitteitä ja istuin palavereissa suunnittelemassa tuotemarkkinointia. Vuoden alussa olin isojen päätösten edessä, kun mietin, menisinkö pikkufirmaan töihin tekemään markkinointitehtäviä, lähtisinkö jatko-opiskelemaan koneoppimista, työskentelisinkö koodarina vai saisiko minusta ux-asiantuntijan. On hankalaa miettiä pitkälle eteenpäin, mitä oikein tekisi. Joillekin ihmisille on selkeää, mitä he haluavat tehdä työkseen. Itse olen tottunut puuhaamaan monenlaisia asioita ja yhden osa-alueen valitseminen tuntuu rajoittavalta.

Lopulta päädyin töihin Futuriceen. Siellä olen tehnyt pääasiassa ohjelmistonkehitystä, vähän konseptoinnilla ja visioinnilla höystettynä. Ohjelmoinnissa on mukavaa, että työn tulokset ovat konkreettisia, työ on asiakkaalta laskutettavaa ja oman toteutuksen osalta melko vapaata. Silti voi olla, että jossakin vaiheessa kaipaa myös muunlaisia työtehtäviä. Pääsin nopeasti vauhtiin ohjelmistonkehityksessä. Käyttöliittymiä lähellä voi hyödyntää myös muuta osaamista: ymmärrystä käyttäjistä ja kykyä käyttää fotaria tarvittaessa.

Tänä vuonna olen nauttinut selkeistä projekteista ja siitä, että työ ja vapaa-aika ovat pysyneet hyvin erillään. Töitä hakiessa oli kuitenkin kiinnostavaa tavata erilaisia ihmisiä ja pohtia rooleja joissa voisin toimia. Myös myöhemmin vuoden aikana olen käynyt mielenkiintoisia keskusteluja eri ihmisten kanssa liittyen siihen, minkälaisia hankkeita voisi joskus tulevaisuudessa viedä eteenpäin. Uusille konsepteille on oma aikansa.

Työkaluista

Vuoden aikana olen käyttänyt ja opetellut paljon eri tekniikoita, mikä on ollut omalta osaltaan kiinnostavaa. Olen ohjelmoinut Flexiä, tehnyt Javascriptiä eri frameworkeillä, mobiiiliwidgettiprototyyppejä ja verkkopalvelukehitystä Drupalilla. Nykyaikaisesta webbipalvelun käyttöliittymäkehityksestä on myös muodostunut selkeä kuva.

Konsepteissa mielenkiintoista on ollut miettiä paikannus- ja karttapohjaisia palveluita sekä webissä että mobiilisti. Näissä tuntuisi olevan vielä paljon potentiaalia, mutta erilaisia startupejakin tällä alueella on paljon. Kokeilullisten karttavisualisointien pohjalta pitää kyllä saada jotakin tehtyä myös nyt alkavana vuonna.

Vuoden lopussa pidin töissä sisäisen presentaation html5:stä ja webin tulevaisuudesta, jonka osalta sain paljon hyvää palautetta:

@jaukia spreading some HTML5, CSS3 and WebGL love. Some truly awe-inspiring stuff! http://twitpic.com/tqwe8.

Esittäminen oli mukavaa ja sitä voisi yrittää harjoitella jotenkin myös ensi vuonna. Oli hauska huomata, että aihepiiri joka kiinnostaa itseä voi myös innostaa toisia. Esityksessä kävin läpi muun muassa css3-transformaatioita, webgl:ää ja canvas-elementin käyttämistä. Samasta setistä olisi mukavaa pitää myös julkinen esitys jossakin vaiheessa. Ehkä voisin pitää yrityksen sisäisen presentaation vaikkapa neogeografiasta/-kartografiasta tai avoimen datan hankkeista.

Vuoden lopussa huomaan käyttäväni yhtä aikaa blogia, Facebookia, Deliciousia, Google Readeria ja Twitteriä ihmisten kanssa kommunikointiin ja viestintään. Yhdistelmä on jo vähän liikaa, mutta jokaisella välineellä tuntuisi olevan vähän eri käyttötavat ja sosiaaliset piirit. Tilanne on kestämätön, mutta en ole vielä keksinyt ongelmaan patenttiratkaisua.

Alkuvuodesta saamani iPhone vaikutti tapaan jolla käytän verkkopalveluita. Kesällä huomasin käyväni RSS-feediäni läpi joskus hiekkalaatikon reunalla. Samoin olen lukenut Facebookia bussimatkoilla töihin ja käyttänyt iPhonen kameraa arjen dokumentointiin.

Reissuista vauvan kanssa ja ilman

Vuoden aikana teimme muutaman matkan vauvan kanssa. Jo vuoden vaihteessa 2008-09 kävimme Barcelonassa. Ihmettelimme kaupunkia suurimman sesonkiajan ulkopuolella ja harjoittelimme lapsen kanssa matkustamista.

Huhtikuussa matkasimme Lontoossa. Marylebone oli hyvä tukikohta Lontoon tutkimisessa ja reissussa tuli myös pohdittua esimerkiksi historiaa ja rahavirtoja 1500-luvun maailmassa.

Kesällä kiersimme Suomea autolla. Tämä matkustustapa tuntui reppureissaamiseen tottuneelle eksoottiselta tavalta matkustaa. Kävimme ensimmäistä kertaa Jyväskylässä ja ihmettelimme siellä, kuin oikeat turistit, Aallon arkkitehtuuria.

Syksyllä kävin Tallinnassa veljesmatkalla isän kanssa. Oli mukavaa, että saatoimme reissata yhdessä ja oli muutama päivä aikaa rauhassa saunoa, syödä ja olla vapaalla.

Harrasteprojekteista

Varsinaisten työprojektien lisäksi vuodelle 2009 sai mahtumaan myös muutaman harrasteprojektin. Ideat harrasteprojekteihin syntyivät kesällä hiekkalaatikon laidalla istuessa, vaikka kesällä en koneeseen liiemmin koskenut.

Maaliskuussa plottasin uuden version matka-aikakartasta. Tämä pohjautui vanhaan kouluharjoitukseen jonka teimme joskus aikanaan Annin kanssa. Lopputulos oli aika kiinnostava ja tarjoaisi myös paljon jatkokehitysmahdollisuuksia. Karttojen osalta innostuin Stamenin tekemistä visualisoinneista, jotka motivoivat minua vuoden aikana.

Elokuussa visualisoin osakedataa, johon käytin Pythonia. Osakkeiden klusterointi toimi varsinkin jenkkidatalle hyvin, mutta suomalaisten osakkeiden osalta tulokset olivat kummallisia. En analysoinut niitä tarkemmin.

Marraskuussa kokeilin myös vanhojen karttojen esittämistä ja vertaamista uusiin karttoihin. On mukavaa, että demo toimii jo tällaisenaan.

Vuoden lopussa innostuin ActionScriptin muuttamisesta ohjelmallisesti Javascriptiksi. Teinkin jotain kokeiluja tähän liittyen Antlr:lla, mutta mahdollinen jatkokehittely jää vielä tuleville vuosille.

Vuoden isoin harrasteprojekti oli äidin sukukirja, jonka saimme Annin kanssa valmiiksi lopulta joulukuussa. Taitoimme sen ja painatimme sen Lulussa. Projekti oli yllättävän työläs, sisältäen kuvien asemointia, tekstin siistimistä ja lopulta vielä painatusta. Lopputuotteena syntyi pino kovakantisia, kansipaperillisia kirjoja, joita voi jakaa sukulaisille. Täytyy miettiä, mihin tässä projektissa opittuja taitoja voisi hyödyntää. Lulun kautta voisi painattaa jotakin muutakin.

Alkavalle vuodelle

Ehkä tuleva vuosi on samaa kuin edellisenä mutta hieman rauhallisemmin. Toivon, että voisin keskittyä parantamaan ja optimoimaan sitä mitä tänä vuonna on saanut aluilleen. Tämä tarkoittaa omaa kotia, ohjelmistonkehitystä ja perheen kanssa olemista. Ohjelmistonkehittäjänä olisi mukava saada kontaktia ja kuulua jollakin tavalla ammatilliseen yhteisöön. En tiedä kuitenkaan, mitä tämän pitäisi käytännössä tarkoittaa.

Vuodessa ehtii paljon: elämää eletään yhtä aikaa monella eri tasolla. On projekti-ideoita, työtä, perhettä ja kirjoja. Matkustamista ja lapsen elämän seuraamista. Perheellisenä on haasteena löytää aikaa kaikille elämän tasoille ja monesti se vaatii erilaisten asioiden tekemistä päällekäin, peräkkäin ja pieniin palasiin pilkottuna. Arjen päivät jakautuvat tunteihin, minuutteihin ja sekunteihin. Kokonaiskuva eletystä elämästä muodostuu selvemmin vasta jälkikäteen.

Toivottavasti omat läheiset ihmiset pysyvät terveinä vuonna 2010. Ja toivottavasti kaikki jaksavat nähdä elämän moninaisuuden liikaa murehtimatta. Vinkiksi uudelle vuodelle voi ottaa Internetin self-help-tulvasta vaikkapa Charlie Hoehnin, 23v, elämänviisauden: Chase after the things that interest you and make you happy. Stop acting like you have a set path, because you don’t. No one does. Tästä tulee vielä hyvä vuosi!

3d-kirja Javascriptillä vaiko oma ristiinkääntäjä?

22.12.2009 klo 10:02

Mietin että voisi tehdä 3d-kirjan javascriptillä jota voisi selailla kursorilla sivuja kääntämällä. Kirja tuntuisi kuin oikealta, sillä sivujen käyttäytymisen pohjana olisi 2d-fysiikkamalli. Tietysti olisi hienoa jos kirjan sivuille voisi piirtää Canvas-elementin avulla ja piirrokset saisi myös talteen palvelimelle.

Toteutukseen ajattelin käyttää Box2d-fysiikkaengineä ja WebGL:ää – tai sitten css3 3d-muunnoksia. Box2d-kirjastosta on olemassa Javascript-porttaus, joka on portattu automaattisesti vanhasta ActionScript-versiosta kirjastosta.

Tässä kohtaa ajatukset alkoivat kuitenkin jo harhailla — kirjastojen automaattinen porttaaminen kielestä toiseen voisi olla myös kiinnostavaa. Aloin miettiä oman porttauksen tekemistä ja katsoinkin työkaluvaihtoehtoja. Voisin joko konveroida sen uudemmasta ActionScript-portista, tai sitten suoraan vaikka Javasta.

Javaa voisi kääntää JavaScriptiksi GWT:llä, mutta en tiedä, olisiko syntyvän koodin lisenssi silloin myös googlefioitua. Apuna voisi käyttää GWT Exporter-kirjastoa tai sitten j2js-esimerkkikoodia.

ActionScriptin voisi kääntää JavaScriptiksi varmaankin melko triviaalisti, joko omalla parserilla tai Javalle löytyvän Rhino-JavaScript-moottorin Token ja TokenStream -luokkia puukottamalla. Tietysti myös RegExpillä, jos haluaa tehdä sen likaisesti.

Yksi projekti-idea muuttuikin kahdeksi. Kumpaakohan tekisin, vai teenkö kumpaakaan?

Koodin kommentointi versionhallinnalla

24.11.2009 klo 9:26

Olisi mahtavaa, jos Git-tyylisen versionhallinnan saisi näkymään ohjelmointiympäristössä niin, että jokaisen koodipätkän osalta ruudulla näkyisi jatkuvasti, millä kuvauksella (ja kenen tekemänä) se on kommittoitu. Eräänlainen paranneltu “Show annotations”, siis. Tällä tavoin kommittikuvaukset toimisivat samalla koodin dokumentaationa. Onkohan tällaista tehty?

Garalde, oma Skype-tyyli

10.11.2009 klo 10:10

Tein Garalde-Skype-tyylin (zip), kun vakiotyyli alkoi ahdistaa. Pohjana on Skypen perustyyli. Tyyliä on testattu ainoastaan Macissa ja sen pitäisi asentua tuplaklikkaamalla.

Briefly in English: Garalde is a theme for Skype for Mac. It has been tested on Skype 2.8.0.722.

good buys on software pirodr! 666