torstai 6. joulukuuta 2012

BlindSquare voittoon myös Apps4Finland -kisassa


Tämän vuoden Apps4Finland -kisaan osallistui 120 työtä, joista arvovaltainen 12 henkinen tuomaristo valitsi parhaat.

BlindSquare voitti pääsarjan:
"Sovellus mullistaa potentiaalisesti miljoonien näkövammaisten elämän ja onkin erinomainen esimerkki innovatiivisesta ja hyödyllisestä avoimen datan käytöstä. BlindSquaren mahdollisuudet menestyä kaupallisesti globaalilla tasolla vaikuttavat lupaavilta. Palvelu on käytössä jo yli 50 maassa."
Suomen paras ja Euroopan paras. Mistä tällaiset ideat syntyvät ja miten ne viedään maaliin asti, oikeaksi palveluksi?

Olen tehnyt softaa lähes 30 vuotta. Nelisen vuotta sitten päätin opiskella mobiilisovellusten tekemisen. Näin jo silloin, että sovellukset, jotka tuovat avoimen datan palveluita käyttäjän näköisinä hyötysovelluksina, on tulevaisuus.
Sen jälkeen mobiilisovelluskehitysurani on kulkenut kisasta kisaan. Ura alkoi HSL Mobiilikisalla, jossa Kyyti-sovellus voitti yleisösarjan. Palvelulla on nyt jo yli 40 000 käyttäjää.
Samana vuonna 2010 osallistuin sillon toista kertaa järjestettävään Apps4Finland-kisaan, jossa LiveInfoBoard voitti ideasarjassa.

Vuoden 2011 kisaan osallistuin 4 sovelluksella, joista Kierrätys tuli pääsarjan kakkoseksi ja YLE-hirsipuu voitti YLEn datan käytön erikoispalkinnon.

Vuonna 2012 BlindSquare voitti EU-tasoisen OpenCities App Challenge-kisan ja Apps4Finlandin pääsarjan.

Minulta kysyttiin palkintogaalassa vinkkejä, miten tämä on mahdollista. Peruslähtökohtana on keksijän luonne: Nähdä ympärillään ongelmia tai epätäydellisyyksiä, joihin on mahdollista löytää parannuksia. Näin syntyy ideoita, mutta ei innovaatioita.

Idean realisoiminen palveluksi vaatii kovaa työtä. Arvioin, että olen kirjoittanut elämäni aikana yli miljoona koodiriviä (näistä vain 25 000,  eli 2,5% BlindSquareen). Tekemällä oppii.

Mutta edes idea ja koodaustaidot eivät riitä. BlindSquaressa yhdistyy useita ideoita, jotka yhdessä luovat maagisen kokonaisuuden:
  1. Puhesynteesi puhelimessa tuotettuna 26 kielellä mahdollistaa globaalin palvelun
  2. Sosiaalisen median ja joukkoistamisen dynamiikan ymmärtämäinen ja soveltaminen "oikealla tavalla"
  3. Käyttäjälähtöinen suunnittelu ja palvelukonseptointi
  4. Lähes neljän vuoden kokemus iOS:sta, App Storesta ja Applen ekosysteemistä.
  5. Perheen tuki - ymmärryksenä joskus vähäiseen vapaa-aikaan, sekä perheyrittäjähenkisyytenä, jossa kaikki ovat mukana esim. videotuotannossa, promovalokuvauksessa tai oheistuotteiden ompelussa
  6. Vahvat yhteisöt, joista löytyy apua, kun pitää pystyttää webbisaitti, löytää koekäyttäjiä tai ratkaista eteen tullut haaste
  7. Aito osallistuminen loppukäyttäjäyhteisöihin. Kuuntele ja huomioi, kiitä, ansaitse luottamus. 
  8. Tekemällä välillä järjetön määrä työtä myös ilman liiketoimintasuunnitelmaa, vain huvin vuoksi ja ilman täsmällistä päämäärää. 
  9. GO BIG -ajattelu kaikessa. Unohdetaan tarvittaessa paikalliset tietolähteet ja käytetään palveluita, jotka mahdollistavat globaalin toiminnan
  10. Vuosien kokemus avoimen datan pöhinästä ja kuinka avointa dataa käytetään mobiilisovelluksissa
Apps4Finland gaalan moderaattorina toiminut Forum Viriumin Jarmo Eskelinen tiesi kertoa, että olemme näissä asioissa 3 vuotta muuta eurooppaa edellä. Koen asian juuri näin oltuani mukana viimeiset kolme vuotta. Kisan tunnettuus, sponsorien määrä, vaikuttavuus ja kilpailutöiden laatu on noussut vuosi vuodelta.

Seuraavat askelmerkit on siis syytä kohdistaa ensimmäistä kertaa järjestettävään Apps4Europe-kisaa kohden.

Hyvä Suomi!


torstai 13. syyskuuta 2012

Kuinka julkaista excel-datasetti koneluettavassa muodossa?

Jos sinulla on avointa dataa excelissä, sen julkaiseminen koneluettavassa muodossa on usein hankalaa, jos sinulla ei ole sopivaa webbipalvelua/tietokantaa olemassa. Tiedoston tallentaminen csv-muodossa tekee siitä helpommin koneluettavaa, mutta edelleen tiedosto pitää tallentaa webbipalvelimelle polkuun, joka pysyy takuuvarmasti aina samana.

Keksin jännän tavan tehdä taulukkomuotoisesta datasta koneluettavaa käyttämällä hyväksi Google Docs -palvelua.

Jos lähteenä on Excel-tiedosto, tee näin:
1) Siirry sivulle http://drive.google.com
2) Paina vasemmalla ylhäällä olevaa "Upload"-nappia
3) Valitse "Files" ja valitse levyltäsi haluttu excel-tiedosto
4) Paina "Start upload"
5) Avaa dokumentti ja valitse "File" / "Export to Google Spreadsheet"

Google Spreadsheetin julkaisu (esimerkki)
1) Tarkista dokumentin maa-asetukset, jotta desimaaliluvut ja päivämäärät tulevat oikein: "File" / "Spreadsheet settings"
2) Valitse "File" / "Publish to the web"
3) Paina "Start publishing"
4) Maalaa muodostettu webbilinkki ja ota leikepöydälle
5) Avaa uusi selainikkuna ja liitä webbilinkki
6) Muuta linkin lopussa oleva teksti "&output=html" muotoon "&output=csv" ja paina enter (esimerkki)

Nyt selaimesi lataa aineiston suoraan Googlen palvelimilta csv-muodossa! Ko. url viittaa tästälähin suoraan aineistoon. Voit halutessasi generoida linkille urlilyhennöksen esim. tinyurl tai bit.ly -palveluissa.

Jos esim. tekisit hirsipuupelin, voisi kysyttävistä sanoista tehdä Google Spreadsheetin, jota useampi ihminen voi editoida. Itse peli voisi hakea sanat näin julkaistusta csv-tiedostosta.

Yritin löytää Googlen käyttöehdoista pykäliä, onko näin tehdyille julkaisuille jotain rajoituksia esim. latausmäärien suhteen, mutta en löytänyt. Löydätkö sinä?







sunnuntai 10. kesäkuuta 2012

BlindSquare ja maailmanvalloitus

Pohdiskelin edellisen postauksen lopussa, mikä mahtaa olla kymmenes julkaistava sovellukseni, kun neljä oli työn alla. Tiesin kyllä jo silloin, mikä niistä on tärkein ja oli mukava saada BlindSquare valmiiksi.

Edellisessä Apps4Finland-kisassa hyvin pärjänneille Forum Virium järjesti Mobile AR devcampin, jossa sparrattiin lisätyn todellisuuden sovellusten ideoimiseen. En ehtinyt osallistua devcamppiin, mutta aloin kuitenkin ideoimaan, miten minä tekisin AR-softan (augmented reality = lisätty tai laajennetu todellisuus). Lähes kaikki AR-softat käyttävät videota, lähes kyllästykseen saakka. Koska olen tätä jo kokeillut, päätin aloittaa pohdinnan, kuinka audiota voisi käyttää lisäämään tietoa ympäristöstä.

Pieni sivupolku: Nykyään on muodikasta tehdä webbisivuja ns. Responsive Web Design -periaattein. Eräs tärkeä teema siinä on suunnitella webbisivu niin, että sen esitystapa skaalautuu automaattisesti eri kokoisille päätelaitteille. Tämä ajattelu helpottuu, kun alkaa miettimään sisältöjä "Mobile First"-ajattelulla: Mikä on kaikkein oleellisin sisältö, joka näytetään silloin, kun näyttötilaa on rajoitetusti käytössä. Myös Google on tehnyt palvelunsa jo pitkään näin.

Samaa teemaa mukaillen: Jos teen lähes pelkästään ääneen perustuvan sovelluksen, kuinka saan tiivistettyä viestiin vain oleellisen? Päästäkseni sisään tähän ajatukseen,  päätin valita kohderyhmäksi sokeat. En tuntenut entuudestaan yhtään näkövammaista,  joten aloin mielikuvittelemaan, miltä tuntuisi olla sokea. Aloin myös tutkimaan ympäristöäni seuraavalla ajatuksella: Mitä avointa dataa olisi saatavilla, minkä kertomisesta olisi hyötyä,  jos et näe.

Opiskelin aihetta lukemalla näkövammaisten kirjoittamia blogeja ja kuuntelemalla podcasteja. Etenkin tästä Ronjan blogista opin paljon. Kuinka vaikeaa onkaan tulla uudelle paikkakunnalle, löytää ratikkapysäkki, hypätä oikean ratikan kyytiin ja tietää, missä pitäisi jäädä pois. Nopeasti keksin, että yhdistämällä GPS-tieto, muutama avoimen datan lähde ja puhesynteesi, olisi mahdollista tehdä jotain mitä kukaan ei ole vielä keksinyt tai ainakaan toteuttanut.

Puhesynteesiin lisensioin teknologiaa Ruotsista: Acapelalla on 26 kieltä tukeva puhesynteesi,  joka tuottaa puheen suoraan iOS-laitteessa.  Jos haluat kuunnella, kuinka kaunista puhetta se tuottaa, voit kokeilla sitä täällä: http://www.acapela-group.com/text-to-speech-interactive-demo.html

Varsinaiseksi datalähteeksi valitsin kaksi avoimen rajapinnan tarjoavaa palvelua: FourSquare ja OpenStreetMap (OSM).  FourSquaresta haen lähistön paikat, niiden kategoriat sekä tiedot paikan suosiosta. Näillä tiedoilla saan kerrottua mm. mikä on halutulla säteellä suosituin kahvila. Sovellus myös kertoo etäisyyden ja suuntiman paikkoihin. Haluttaessa paikka voidaan ottaa seurantaan, jolloin BlindSquare opastaa perille.

Koodattuani sovellusta pari kuukautta "sokkona" vain blogeista opittuun perustuen, lähdin etsimään koekäyttäjiä. Ensimmäisenä aloittikin Ronja (kts. aiempi blogilinkki). Kun näin hänen hymynsä  hänen kuullessaan ensi kertaa BlindSquaren tarinointia, tiesin, että tästä tulee hyvä :-)

Esittelin sovelluksen alfa-versiota myös Näkövammaisten keskusliitossa, josta sain myös positiivisen vastaanoton ja lisää testikäyttäjiä.

Löysin myös maailmalta testikäyttäjiä niin, että lopulta n. 10 henkilöä Suomesta, USA:sta ja Australiasta käytti sovellusta päivittäin, kertoen haasteista ja onnistumisista.

Tein myös käyttäjätutkimusta Ronjan kanssa: Olin kaupungilla sokeaoppaana, Ronjan käyttäessä BlindSquarea ja suorittaen erilaisia tehtäviä. Ronjalla oli iPad repussa, bone conduction kuulokkeet päässä, bluetooth-ohjain repun toisessa hihnassa ja GoPro-videokamera toisessa (harmi, ettei tästä ole valokuvaa :-).  Kun ajoimme ratikalla kohden Kruunuhakaa, saimme ihmetteleviä katseita, kun sokea kertoi minulle mitä ympärillä "näkyy". Ronja näki myös asioita, joita me muut emme nähneet,  koska säde oli säädetty vähän laajemmalle kuin mitä lähistön talot meiltä muilta peitti.

Käyttäjätestien ja saatujen palautteiden pohjalta BlindSquare oppi uusia asioita: Jotta voi muodostaa kartan ympäristöstään, pitää tietää tiet ja risteykset. Tätä tarkoitusta varten otin käyttöön OpenStreetMapin. Jos käyttäjä kulkee jalan, luetaan silloin tällöin lähimpiä risteyksiä tyyliin "Lähin risteys Aleksanterinkatu ja Keskuskatu, 30 metriä suunnassa kello 2". Hypättäessä bussiin sovellus vaihtaa risteysautomatiikan moodiin, jossa haetaan lähistön risteyksiä, mutta luetaan se vasta kun bussi kääntyy. Tämä on ensimmäinen apu aiemmin maintsemaani ongelmaan, mistä voi tietää, milloin pitäisi jäädä kyydistä pois.

Sovellus julkaistiin toukokuun lopulla ja sen suosio yllätti minut. About Foursquare -palvelu kirjoitti pienen jutun, minkä jälkeen Twitter alkoi lämpenemään. Sain sen jälkeen seuraavan twiitin: "@ilkkapirttimaa Hello. Are you a BlindSquare dev? @Mashable would love to chat with you about the app. Email joann ät mashable.com Thanks!!"

Tämän saatuani tuli kiire. Onneksi Ronja lupautui kaiken muun lisäksi myös malliksi. Kävimme ottamassa muutaman valokuvan käyttötilanteesta ja sovin Mashablen kanssa  Skype-haastattelusta.

Pari päivää tästä Mashable julkaisi tämän artikkelin: http://mashable.com/2012/06/01/blindsquare-app/

Artikkelin julkaisun jälkeen Twitter lämpeni toden teolla. Minun mittausvälineet lakkasivat toimimasta 100k twiitin jälkeen. Olen löytänyt artikkelin pohjalta tehtyjä käännöksiä mm. seuraavilla kielillä: Venäjä, saksa, italia, thai, japani, hollanti ranska, indonesia, portugali...

Keskittyminen tiukasti valittuun kohderyhmään oli hyvä ratkaisu. Vain muutama viikko App Storessa ja sovellus on löytänyt tyytyväisiä käyttäjiä jo maailman jokaiselta mantereelta!

Pitkä postaus, mutta mukaan mahtuu vielä muutama erikoiskiitos: Kiitos Mirva, Ronja, Heikki, Iiro, Stefan, Johanna, Jaana,  David, Austin, Mike, Elena, Giovanni, Viljami, Sari, Erkka, Toni ja Jyrki!

Kuvassa: Vasemmalla minä, oikealla Ronja. Kummallakin on päässään Bone Conduction -kuulokkeet, Ronjalla on kepissä bluetooth-ohjain, jolla ohjataan taskussa olevaa iPhonea tai repussa olevaa iPadia. Kuvan otti Viljami Pirttimaa.

Sovellus löytyy AppStoresta ja kyllä sitä saa näkevätkin käyttää!

lauantai 21. huhtikuuta 2012

3 vuotta iOS-devaajana

Noin kolme vuotta sitten päätin opiskella, kuinka kehitetään sovelluksia iPhonelle. En tuntenut ketään muuta iOS-kehittäjää, joten paras apu opiskelussa oli Google, muutama kirja ja “iTunes U”:sta löytyvä Standfordin yliopiston iOS-kurssivideo “iPhone Application Programming”. Kirjoista parhaaksi on osoittautunut Erica Sadunin teos nimeltä The iPhone Developer’s Cookbook. Kirjan vanhan painoksen esimerkkikoodit löytyvät GitHubista.

Alussa vaikeinta oli ymmärtää Objective-C:n ideologia. Kirjoittelin muistiota alkuvaikeuksista tänne. Toisaalta aloittaessani Applella oli vielä kehitystyökalut varsin levällään: Silloin XCode ei sisältänyt sisäänrakennettua käyttöliittymäeditoria (Interface Builder), versiohallintaa saatikka palikkaa, jolla sovellukset lähetetään App Storeen. Nyt kehitysympäristössä on kaikki tarvittava integroituna nättiin pakettiin. Jopa yksikkötestaus ja sovellusten instrumentointi tarkempia analysointeja varten löytyy yhdestä työkalusta.

Matkan varrella olemme saaneet myös useita uusia laitteita: iPadit ja muutama sukupolvi iPhoneja. Myös iOS on kehittynyt hurjasti. On mukavaa, kuinka helpoksi koodarille on tehty kaikkien laitemallien tukeminen. Käytännössä mikään sovellukseni ei ole mennyt rikki, kun on tullut uusia laitteita tai uusia iOS-versioita. Kiitos Apple, että arvostat koodareita ja pidät homman läjässä.

Kuten linkkaamastani päiväkirjasta voi päätellä, alku oli hankalaa. Ensimmäisen sovelluksen (Trendy Hangman) valmistuminen App Storeen kesti 8 kuukautta. Sen jälkeen sovelluksia on syntynyt nopeammin, App Storessa niitä on jo 9.

TrendyHangman oli ensimmäinen sovellukseni. Päätin tehdä hirsipuun, johon sanat haetaan netin erilaisista trendipalvelimista. Arvattava sana on sellainen, joka trendaa juuri twitterissä tai on suosittu hakusana Googlessa. Arvailun jälkeen pääset lukemaan netistä, miksi sanan on suosittu juuri nyt. Tähän sovellukseen tyttäreni (silloin 11-V) piirsi kuvituksen, poikani (14-V) mallinsi nappulat ja tuttava sävelsi musiikit.

Toinen sovellukseni Kyyti valmistui jo alle kahden kuukauden iltapuhteina. Osallistuin sillä HSL:n mobiilikisaan, jossa se voitti yleisöäänestyksen. Sillä on nyt jo yli 30000 käyttäjää. Uusi versio on tekeillä, jossa on mukana mm. livejunat ja mahdollisesti lisätyn todellisuuden kameranäyttö.

Apps4Finland 2011 -kisaan osallistuin neljällä sovelluksella. Niistä Kierrätys tuli sovellussarjan kakkoseksi ja YLE Hirsipuu voitti YLE:n erikoispalkinnon.  Näistä jälkimmäinen käyttää TrendyHangmaniin tehtyä pelimoottoria. YLE:stä sanojen haun toteutin livenä verkossa, kirjoitin tästä code casting-konseptista aiemmin.

Ehkäpä hienoimmat sovellukseni tein omista tarpeista lähtien. Koska en käytä itse viikkonumeroita, koin hankalana, kun joku kertoi asian tapahtuvan sillä ja sillä viikolla. Viikko-sovellus päivittää viikkonumeroa iPhonen ja iPadin kotisivulla ja näyttää lisäksi pyhät ja liputuspäivät.  Huomasin, että monikaan iPhonen käyttäjä ei osaa järjestellä sovellusikoneita, joten sisällytin sovellukseen myös opetusvideon.

Viimeisin sovellus Parkkikiekko hälyttää, kun parkkiaika on loppumassa ja opastaa takaisin autolle. Tämä oli myös ensimmäinen sovellus, jossa opettelin lokalisoinnin. Samainen sovellus tunnistaa puhelimen kielen ja toimii suomeksi, englanniksi, ruotsiksi tai saksaksi. Ruotsin App Storesta sen löytää nimellä P-skiva.

Huh! Paljon on tullut siis opittua 3 vuodessa. Nyt työn alla on 4 sovellusta, mikähän niistä valmistuu seuraavaksi :-)