2 1 8 .1 Tietokonekulttuurin erikoislehti 2018.1 S K R O L L I . F I Näin lapsia opetetaan koodaamaan Tampio ohjelmoi suomeksi debuggaa itsesi Ohjelmoija, Commodore 64 Rakenna uusi Pokitto Python Suomi-konsolissa SKROLLI 5 V. QBASIC NERO 2000 FRACTALUS
25 Kolumni: Jarno Niklas Alanko Bitcoinin kurssinousua kelpaa kirota katsomosta käsin. 12 Writemonkey Askeettisen näköinen editori antaa kirjoittajan keskittyä oleelliseen. 69 Ohjelmoi suomeksi Tampio-kielessä suomen sijapäätteillä on keskeinen rooli. Aikaisemman Skrolli Partyn ohelle on kehitteillä Skrolli-miitti eli Limiitti ja muuta. Seuraa siis Skrollin someja (skrolli.fi/yhteystiedot). Mikä nimeksi. 34. olikin yllättäen aikansa paras lisenssipeli. Kiinnostaako yhteisötekeminen tai onko ideoita. 20 Lapset ohjelmoijan opissa Epätoivoa ja onnistumisen iloa ohjelmointikerhossa. 15 Python luikertelee Pokittoon Korkean tason kieli helpottaa lasten koodikokeiluita. 34 Fractalus Proseduraalinen maisemanluonti peli-ideana. 46 Nero 2000 Digiarkeologit sukelsivat legendaarisen tietovisan saloihin. 60 Olin teini-ikäinen QBasic-ohjelmoija BASIC ei sulattanutkaan aivoja. 14 Vim Tekstieditoreista ei voi kirjoittaa ilman, että myös Vi(m) mainitaan. 68 Neliöjuuritehtävän jälkipyykki Pähkinänurkassa tutustutaan klassikko-ongelman tuoreisiin ratkaisuihin. Huomio! Skrolli-yhteisö jalkautuu tosielämään: Mika Hyvönen alias Mikron/ Byterapers on Skrollin uusi yhteisömestari yli 20 vuoden tapahtumaorganisoinnin kokemuksella. 10 Todellisuus lisääntyy Tärkeimmät lisätyn todellisuuden alustat. 32 Sarjakuva Turrikaanien yössä: Brittien olematon sarjakuvaperinne pelitaiteena. 52 JOKstoriaa IV Se ensimmäinen oma kotimikro. 3 2 3 Pääkirjoitus 4 Debuggaa itsesi Koodatessa voi oppia myös paremmaksi ihmiseksi. 42 Ei näin! Toimittajan matka e-urheilun maailmaan sai omituisia käänteitä. 2 1 8 . 1 2 2 1 7 . 64 The Machine in the Ghost Robin Boastin kirja digitaalisuuden historiasta ja luonteesta. Napauta postia: mika@skrolli.fi. Fractalus, s. 56 Game Jam -viikonloppu Ideatehdas sykkii pelin 48 tunnissa. 33 Memotech MTX500 Alumiinisten tietokoneiden pioneerin nimi alkoi kirjaimilla Mem, ei Mac. 9 Kolumni: Janne Sirén Atari 2600:n E.T. 26 Uusnelonen Tiesitkö, että Commodore 64:ää valmistetaan taas. 73 Skrolli 5 vuotta Lehti tekijöiltä tekijöille. 65 Disobey Selviytymisopas vuoden hakkeritapahtumaan. 40 Battletech Mech-pelihistorian lyhyt oppimäärä
Olemme sikäli onnellisessa asemassa, että toimitukselle tarjotaan jatkuvasti erilaisia jutunaiheita ja tarinan raakileita. 3 Mikko Heinonen vastaava päätoimittaja Skrolli Tietokonekulttuurin erikoislehti Yhteydenotot toimitus@skrolli.fi Ircnet: #skrolli skrolli.fi Vastaava päätoimittaja Mikko Heinonen Päätoimittaja Tapio Berschewsky Toimituspäällikkö Valhe Kouneli Taiteellinen johtaja, taitto Nasu Viljanmaa Digipäälliköt Toni Kuokkanen Janne Sirén Taitto Manu Pärssinen Kuvatoimittaja Laura Pesola Mediamyynti Jari Jaanto Talous Yhteisömestari Anssi Kolehmainen Mika Hyvönen Muu toimitus Jarno Niklas Alanko, Ville-Matias Heikkilä, Jukka O. Minut oli pikavauhtia profiloitu ihmiseksi, joka haluaa katsella vain älykelloja ja nahkajäljitelmästä valmistettuja minihameita. Fraasi on alusta asti ollut kumarrus toisen harrastelehden, Mobilistin suuntaan. Tiedä, vaikka sitä innostuisi jostakin uudesta. Niistä rakennamme teille nyt jo kuudetta vuosikertaa tätä aikoinaan nettivitsistä syntynyttä lukupakettia. Mutta vaikka kaninkolossa on mukavaa ja lämmintä, kelpo ristiturvan kannattaa välillä työntää nenäänsä myös naapurin puolelle. Etukannen kuva: Mikael Heikkanen Sisäkannen kuva: Janne Sirén, Fractalus-pelit HÄMEEN KIRJAPAINO OY 4041 0209 Painotuote. Samalla kuitenkin vähän kerrallaan eriydymme toisistamme omaan somaan algoritmikuoppaamme. Tämän jälkeen sain nähtäväkseni sivukaupalla samankaltaisia tuotteita. Vaikka moni muu sovellus toimii hienovaraisemmin kuin itämaan kelpo kauppiaat, sama ilmiö on valloillaan ympäri internetiä. Sen päätoimittaja Jan Enqvist totesi minulle kerran, että lehden eräs tehtävä on kertoa ihmisille, mitä he haluavat lukea. Sisältöä ei voi päättää huutoäänestyksellä, sillä tällöin päädytään keskinkertaisuuteen ja kaikkien miellyttämiseen. Varastin ajatuksen välittömästi ja aloin toteuttaa sitä kuin omaani – myös Skrollia tehtäessä. Kauppinen, Ronja Koistinen, Sakari Lönn, Suvi Sivulainen Tämän numeron avustajat Heidi Akselin, Maxine Azzara, Ilkka Hauhio, Mikael Heikkanen, AdaMaaria Hyvärinen, Otso Kassinen, Toni Kortelahti, Kari Lavikka, Sakari Leppä, Peter Levine, Tiina Malin, Aleksandr Manzos, Mitol Meerna, Tuukka Norri, Jarkko Nääs, Oona Räisänen, Jari Sihvola, Aki Sivula, Ismo Utriainen, Hannu Viitala Julkaisija Skrolli ry Painopaikka Hämeen Kirjapaino oy, Tampere, ISSN 2323-8992 (painettu) ISSN 2323-900X (verkkojulkaisu) Pois kaninkolosta S elailin iltana muutamana kiinalaisen verkkokaupan Android-sovellusta, jossa eteeni vyöryi toinen toistaan erikoisempia joskin täysin tarpeettomia tavaroita. Meidän tärkein tehtävämme onkin valikoida jokaiseen numeroon tarpeeksi erilaista asiaa, jotta mahdollisimman moni lukijoistamme kohtaisi sivuilla jotakin yllättävää. Skrolli ilmoittaa alaotsikossaan olevansa tietokonekulttuurin erikoislehti. Kun napautin muutaman niistä auki lukeakseni lisätietoja, huomasin nopeasti etusivun luettelon alkavan muuttua. Kaikki merkittävät sosiaaliset mediat harrastavat samanlaista profilointia ja näyttävät asioita, joita ajattelevat ihmisten haluavan lukea tai katsoa. Omassa digitaalisessa kaninkolossa on turvallista ja tyytyväinen käyttäjä viipyy sivustolla pitempään sekä vierailee useammin. Tietotekniikan kentällä on liikaa kiinnostavaa asiaa, jotta suostuisimme lokeroimaan itsemme pelkäksi retrolehdeksi, pelilehdeksi, koodauslehdeksi, hakkerilehdeksi tai skenelehdeksi – vaikka samalla olemme aina vähän näitä kaikkia, jotta kaikki tuntevat olonsa myös kotoisaksi. Asia alkoi hyvin pian harmittaa ja virtuaalinen shoppailumatka päättyi ilman kauppatapahtumaa
Sain vastaani kuitenkin normaalia toimistotyötä. Halusin tietää asiasta enemmän, joten hakeuduin collegessa ohjelmointikurssille. Olin lapsena lukenut taikatemppukirjoja, ja vaikka arvostin illuusioiden luomiseen vaadittavaa nokkeluutta ja temppuja, tieto myös lisäsi tuskaa. Jos tein yhdenkin virheen, koko prosessi piti aloittaa alusta. Mikroprosessorin voima taas piili sen käskysetissä, sanaston muodostavassa matalan tason ohjelmointikielessä. Radiolähetysten tekniikasta kiinnostuneena olin käynyt elektroniikan peruskurssin, joka tavallaan valmisti minut seuraavaan vaiheeseen. Luin 8080 Programmers Reference Manualin ja tunsin olevani velhon oppipoika. En osannut visualisoida tai selittää sitä, mutta tämä muodoton ”jokin” osasi simuloida ping-pongia, käyttää taskulaskinta tai vaikkapa muuttaa Casio-rannekelloni räiskintäpeliksi. Eläessäni käytännössä kädestä suuhun ja tehdessäni töitä vapaaehtoisena radiojuontajana tein sen johtopäätöksen, että ”pehmeiden” taitojeni sijaan tarvitsen jotakin ”kovempaa”, kuten radioinsinöörin osaamista. En odottanut, että kirjoittaisin käskyjä reikäkorteille ja odottaisin sitten kaksi päivää tuloksia. Ohjelmiston näkymättömyys oli tehnyt siitä silmissäni maagista, ja odotin, että kurssilla minut vihittäisiin muinaisiin salaisuuksiin. Luin manuaalin kannesta kanteen, en niinkään oppiakseni sitä ulkoa kuin tutustuakseni dokumentaation rakenteeseen, jotta tietäisin, mistä vastaukset löytyvät. Opintojen loppuvaiheessa tutustuin Intel 8080 -mikroprosessoriin, joka oli ehditty tällä välin keksiä. Olin varma, että voisin oppia sen. Laitteisto oli helpompi käsittää, mutta mistä ohjelmoinnissa oikeastaan oli kyse. 2 1 8 . Jäin hetkessä koukkuun. 1 4 T ietotekniikassa oli kaksi keskeistä termiä: software, pehmo, joka tässä esitettiin feminiinisenä, ja sen vastine hardware eli kovo. Ilmoittauduin ammattikouluun ja opin vahvistimista, modulaatiosta ja lähetystavoista. Yhdistettynä väsymättömään haluuni etsiä tietoa tämä osoittautui hyväksi strategiaksi. En koskaan voisi rakentaa laitetta, jolla saisin veljeni levitoimaan, enkä ollut tarpeeksi näppärä silmänkääntötemppuihin. Tämä saisi riittää minulle, ajattelin – tai niin luulin. Collegen jälkeen muutin Kaliforniaan täynnä unelmia ja suuria odotuksia, mutta olin jo hukannut aikaa kaikenlaiseen, ja se oli jättänyt jälkensä. Tiesin täsmälleen, mihin kaksimielisyyksiä harrastanut lehti sillä pyrki, mutta silti se onnistui lisäämään kiinnostustani tähän kiehtovaan, suorastaan mystiseen käsitteeseen. Tein toki edelleen virheitä, mutta mikroprosessorin nopeuden ansiosta sain palautetta lähes välittömästi. Teksti: Pete Levine Käännös: Mikko Heinonen Kuvat: Wikimedia Commons (Konstantin Lanzet, Carlos Pérez Ruiz, Digon3, J.Stiegler, Liftarn, Keagiles), Manu Pärssinen – erään ohjelmoijan tarina Hörhö debuggaa i tsesi DebuggaA itsesi. Tämä nopeInterview-lehden kannessa luki punaisella huulipunalla ”software”
Kent oli juuri sellainen mentori, jonka tarvitsin. Päällikkö poimi kansion pöydältä ja palautti sen minulle kuin lainaamansa kynän. Voisin ryhtyä kenttäasentajaksi ja vaihdella laitteiden piirilevyjä, tai jos en haluaisi matkustaa, voisin mennä kokoonpanolinjalle ja tuijottaa suurennuslasin läpi päivästä toiseen. Oliko hän edes lukenut sitä. En kertonut kenellekään mitä tein, en edes Kentille, mutta otin tehtäväkseni analysoida, luokitella ja dokumentoida San Franciscon TOC:n laitteet ja piirit. Opinko siis tästä kokemuksesta mitään – sen tärkeän muistutuksen lisäksi, että TOC:n päällikkö oli ääliö?. Tarjolla olevat vaihtoehdot tuntuivat lohduttomilta, kunnes sain päähäni ottaa itse yhteyttä kansainvälisen puhelinyhtiön USA:n länsirannikon käyttökeskukseen. Kehikoiden määritykset tallennettiin kansistaan pullisteleviin irtolehtimappeihin. Kyselin ohjelmoijalta kunnioittavasti hänen projektiinsa liittyviä kysymyksiä, mutta kohteliaan ulkokuoreni alla sykki itseoppineen ohjelmoijan ylimielinen sydän, sillä olin hiljattain hankkinut Sinclair ZX-81:n ja opetellut BASICia. Kent Wilder oli vanhaa koulukuntaa. Ilmoittauduin anonyymisti vapaaehtoiseksi tehtävään. Sitä paitsi tosiasiassa en koskaan halunnut tekniseksi kirjoittajaksi, ja mitä hienoa ilmaiseksi työskentelyssä on. En siis yllättynyt kuullessani, että taloon oli palkattu ohjelmoija: jos missään koskaan tarvittaisiin tallennusjärjestelmän uudistusta niin täällä. Ei sanaakaan ideoistani tai ehdottamistani ratkaisuista. Hän rakensi tarvitsemansa työkalut, koska niitä ei vielä ollut olemassa ja koska juuri tämä oli hänen nähdäkseen insinöörin tehtävä. Ohjelmistosta ei näkynyt jälkeäkään, ja TOC:ssä (tekninen käyttökeskus) sijainneet kotitekoiset konsolit oli rakennettu ilman integroituja piirejä – vastusten, kondensaattorien ja induktorien pyhällä kolmiyhteydellä. Yksikään työ, johon pääsin haastatteluun, ei sisältänyt ohjelmointia. TOC oli jaettu kolmeen alueeseen: konsolihuoneeseen, josta kytkentöjä valvottiin, tasaimia ja multipleksereitä täynnä olleeseen laitehuoneeseen sekä johdotushuoneeseen, joka yhdisti eri osat. Sidoin raportin harmaisiin kiiltopahvikansiin ja esittelin sen TOC:n päällikölle. Käytössä ei ollut tekstinkäsittelylaitetta, joten kirjoitusvirheiden sattuessa kirjoitin koko sivun uusiksi. Tästä oli tullut kohtaloni. Jos osaat työn, saat sen. En välittänyt siitä, koska halusin tehdä sen ilmaiseksi ja käyttää niin paljon aikaa kuin oli tarpeen. Kun sain ehdotukseni valmiiksi, siinä oli yli 100 sivua. Otin pyhäksi tehtäväkseni pelastaa yhtiön kaaokselta. Ne olivat olemassa ainoastaan Kentin piirustuksissa. Vaikka johdotushuoneen jakokehikot pyrittiin pitämään siistinä, ne olivat kolme metriä korkeita ja tiheänään punavalkoista kierrettyä parijohtoa. Vaikka olinkin tullut täydellisesti torjutuksi, olin kehittänyt elegantin ratkaisun, hionut teknisen kirjoittajan taitojani ja saanut tyydytyksen suuren projektin loppuun saattamisesta. Yllätyksekseni sain sieltä työtä johtavan insinöörin assistenttina. En odottanut saavani vastausta heti, mutta kun oli kulunut jo useita päiviä eikä mitään kuulunut, kokosin rohkeuteni ja kävin koputtamassa toimiston ovelle. Työstin raporttia kotonani joka ilta useiden viikkojen ajan. Kokonaisessa piirissä tällaisia kytkentöjä piti tehdä vähintään tusinan verran. Kun sain tietää, että projekti oli vain sähköinen muistilehtiö eikä kattava ratkaisu infrastruktuurimme luettelointiin, suuruudenhulluuteni pääsi valloilleen. Teoriassa välipisteitä ristiin vertaamalla oli mahdollista selvittää tietyn piirin reitti keskuksen sisällä, mutta sen alkupistettä, kohdetta tai keskuksen seurantapisteitä ei voinut tunnistaa mitenkään. Uuden piirin lisääminen tarkoitti, että johto piti juottaa tiettyyn kiinnitysnapaan, vetää tiukalle ja pujottaa sitten haluttuun kohteeseen. 5 ampi vasteaika antoi oppimiselleni potkua. Jos hän ei aikonut – tai osannut – tehdä sitä, niin minä tekisin, koska minä osasin. Olisin kuitenkin toivonut myös hieman tunnustusta. ”Kivat kannet”, hän totesi, ”mistä ostit ne?” Ja siinä se. Menneisyydessä, ennen julkista internetiä, palkkaamiskäytännöt olivat huomattavasti jäykempiä, ja ammattikoulusta valmistuneelle vaihtoehtoja oli vähän. Nykyisin vaikkapa Googlelle voi päästä töihin ilman tietojenkäsittelytieteen tutkintoa. Lähdin toimistosta loukkaantuneena. Hän oli kärsivällinen ja pitkämielinen ongelmanratkaisija, joka lähestyi haasteitaan tyynesti, olivatpa kyseessä sitten kytkentävirheet Malesiassa tai New Yorkin insinöörien lähettämät pisteliäät kommentit. Tämä tarkoitti tietyllä tavalla paluuta menneisyyteen, perusasioiden äärelle, mutta en välittänyt siitä. En osannut arvioida, kauanko toteuttaminen kestäisi tai paljonko se maksaisi. Olin sanaton
Hän oli kiusaaja, joka panttasi tietojaan ja pilkkasi kaikkia, jotka eivät tienneet yhtä paljon. Työstin tätä kuukausikaupalla kärsivällisesti, miltei mielipuolisesti, ja tallensin ohjelman jokaisen version kasetille, kunnes lopulta tunnustin rakkaan pikku koneeni rajoitukset ja hyväksyin sen, ettei tämä projekti onnistu. Haittapuolena oli yli kahden tunnin työmatka ruuhkassa. Tähän ei ole olemassa koulutusta, pitää vain tutkia koodia ja lukea kriittisellä asenteella dokumentaatiota ja kommentteja. Ohjelmiston läheisyyden, työsuhdeuima-altaan ja gourmetkanttiinin houkuttelemana lähdin Piilaaksoon töihin yhtiöön, joka suunnitteli ja valmisti tietokonepohjaisia puhelinkeskuksia. Koska olin itse tehnyt töitä kentällä, ymmärsin työkalujen. Niin, ja sitten piti estää ZX-81:n ylikuumeneminen ja lisäkortin irtoaminen sekä näytön (kanavalle 3 viritetty matka-tv) sekoaminen. Opinko siis tästä kokemuksesta mitään, sen lisäksi, että tajusin miten typerää on käyttää näin paljon aikaa ja vaivaa johonkin, mitä kukaan ei edes pyytänyt. Tällainen patchaaminen oli riskaabelia, sillä minun piti kirjoittaa konekieltä käynnissä olevaan järjestelmään epäluotettavan modeemiyhteyden kautta. 1 6 Kyllä opin. Teen näin, jotta saisin elämälleni tilapäisen tarkoituksen ja välttyisin tajuamasta sitä, että eristäytymällä tällä tavoin omaehtoisesti vain pahennan jo ennestään yksinäistä elämää, jonka perusta ei ole kestävä. Valitsemalla mahdottomia tehtäviä vahvistin riittämättömyyden tunnettani samalla kun kannoin kaunaa siitä, että panostuksiani ei tunnustettu. (Opetus 1 Uloshengitys) Opin tämän, mutta en heti, sillä olin mieltynyt ZX-81:n ohjelmointiin ja näin mahdollisuuden käyttää sitä toiseen töissä kohtaamaani ongelmaan. (Opetus 2 Uloshengitys) Opin tämän, mutta en heti, sillä oli aika siirtyä eteenpäin. Aloitin työt käyttöinsinöörinä, joka vastasi kenttäasentajien puheluihin ja jalkautui ajoittain heidän luokseen paikan päälle. Jotkut minulle määrätyistä bugeista olin välittänyt eteenpäin kentältä, mutta muutamat olin myös itse löytänyt diagnostiikkaa tehdessäni. Asioiden kysyminen häneltä oli alentavaa, mutta siedin sen. Koodin kirjoittanut ohjelmoija ei ole enää töissä yhtiössä tai hän on liian kiireinen – tai sitten hän on unohtanut, mitä teki. (Opetus 1 Sisäänhengitys) Opin, että hyväksyntä on psyykelleni niin tärkeää, että valjastan perfektionismini epätoivoisiin projekteihin, joista en saa juuri lainkaan hyötyä itselleni. Siinä kaikki. Minun piti vain suunnitella ZX-81:lle lisäkortti, asentaa komponentit kortille, tehdä johdotukset ja kirjoittaa ohjelma, joka lukisi, taulukoisi ja muotoilisi tiedot ja tulostaisi raportin. Kyllä opin. Hänen suosikkiheittonsa oli lievästi homofobinen ”käypä polvillesi”. Pääsin sisään puhelinyhtiökokemukseni ansiosta. 2 1 8 . Olet omillasi, ja aika pian sinusta itsestäsi tulee auktoriteetti asiassa. Ryhmämme kokenein patchaaja oli Mark, joka tunnettiin loukkaavasta käytöksestään. (Opetus 2 Sisäänhengitys) Opin, että huono itsetunto synnyttää defensiivisyyttä – olisin tehnyt mitä tahansa ansaitakseni Kentin kunnioituksen – ja kilpailuhenkisyyttä, sillä halusin ehkä myös syrjäyttää hänet tuomalla TOC:hen digitaalitekniikkaa. Jos ongelma vastasi tunnettujen bugien listassa olevaa kuvausta, asensin uudempaa versiota odotellessa tilapäisen ”patchin”, joka ohitti virheellisen kohdan. Uusi työni oli ylläpidossa, jossa korjasin vanhemman mutta vielä käytössä olevan ohjelmiston bugeja. Lopulta opin itsekin kirjoittamaan patcheja ja heti sen jälkeen pyysin siirtoa pois ryhmästä. Lyöntivirheet saattoivat aiheuttaa katastrofin
Salaisuuksia ei ollut. Niin ei käynyt. Ilman älykästä frontendiä järjestelmän käyttäminen olisi vaatinut useiden kryptisten komentojen ja parametrien kirjoittamista, minkä lisäksi olisi pitänyt tuntea noin puolen tusinan muuttujan väliset suhteet. Jos et ollut valmistautunut huolellisesti, kehotus ”RTFM” tuli tutuksi. Teknisestä näkökulmasta tämä osoittautui huomattavan työlääksi. Koska sovelluksemme oli tarkoitus esittää ”tyhmillä” päätteillä, joissa ei ollut hiirtä, tämä oli aika väkinäinen tavoite. Vaihtamalla junaan sain aikaa kirjoittaa ohjelmia, joita sitten kokeilin töiden jälkeen toimistossa tai koulun mikroluokassa, koska minulla ei vielä ollut PC:tä kotona. Olin nyt virallisesti ohjelmoija, mutta halusin luoda ohjelmia enkä vain korjata niitä. Aikataulu oli rankka ja vaivannäkö täysin tarpeetonta, koska kukaan ei vaatinut minulta maisterin tutkintoa. En ollut enää pelkkä ohjelmoija: sain siirron kehityspuolelle, ja minusta tuli ohjelmistoinsinööri, suunnittelija, luoja. Meiltä odotettiin täydellisyyttä, joten kohteliaisuuksia ei juuri jaeltu. Opinko tästä kokemuksesta mitään, lukuun ottamatta sitä että viiden tunnin yöunet eivät riitä, ja että minun olisi pitänyt kuunnella vaimoani ja olla ottamatta vastaan työtä, jossa työmatkat ovat näin pitkiä. Projekti jatkui kuukausia, ja tein säännöllisesti 10–12 tunnin päiviä. En enää ajanut töihin autolla. Osastolla oli pakkomielle kokouksista ja metodologiasta. Se oli jotain aivan muuta kuin Markin tietojen panttaus tai Microsoftin läpinäkymättömyys. UI-konseptityöpajan suorittamisen jälkeen olin vakuuttunut, että PC-sovellusten pitäisi noudattaa Windowsin ilmettä. Samaan aikaan olin eristäytynyt muista niin, että poliittisesti taitavammat ja perinteisemmin kunnianhimoiset kollegani olivat päässeet etenemään urallaan. 7 tärkeyden ja koin henkilökohtaista vastuuta niiden korjaamisesta. Syytin itseäni myös virheistä, joita en ollu tehnyt. Erään poikkeuksellisen turhauttavan istunnon aikana tuntui, kuin itse logiikka olisi kääntynyt minua vastaan. Kävin koodia läpi rivi kerrallaan ja yritin ymmärtää, miksi muuttuja ei välillä päivittynyt oikein. Olin vakuuttanut itselleni, että tarvitsin maisterin tutkinnon tietojenkäsittelytieteestä, joten aloin opiskella kursseja. Useammin kuin kerran myöhästyin viimeisestä junasta ja nukuin toimistolla. Minun piti rakentaa näille erillisille elementeille yhtenäinen viitekehys ja piilottaa ne käyttöliittymän taakse. Suunnitteluasiakirjoja arvioitiin muodollisissa tilaisuuksissa paitsi logiikkavirheiden, myös kieliopin ja muotoilun kannalta. Opimme kuitenkin ottamaan vastaan kovaakin kritiikkiä loukkaantumatta siitä, ja matkan varrella myös ryhmähenki kehittyi. Tätä yhteistyön henkeä vahvisti UNIX-kehitysympäristö, joka rohkaisi jakamiseen ja avoimuuteen korostamalla yksinkertaisuutta ja modulaarisuutta. Turhautuneena käynnistin tietokoneeni uudelleen, ja ongelma katosi. Avioliittoni kärsi, mutta olin jo pakkomielteinen asian suhteen ja vakuuttunut, että kun hanke valmistuu, saan haluamani ja ansaitsemani ylennyksen. Ajattelin kuitenkin, että se tekee lopputuotteesta visuaalisesti uskottavan ja sementoi myös minun asemani UI-osaajana. Halusin siirtyä ylläpidosta kehitykseen, ja sitä varten piti opetella C-kieli. (Opetus 3 Sisäänhengitys) Opin, että liioittelullani ei ole mitään luontaista ylärajaa, ja että kuvittelemalla itseni oletetun loppukäyttäjän asemaan – ja ihan vain olemalla ylimielinen – olin kadottanut käsityksen työkuormituksestani ja aliarvioinut projektin vaatiman ajan ja resurssit. Taustalla koodiliima sitten muuttaisi sen oikeiksi ”backendin” komennoiksi. Miksi juuttua antiikkisen teknologian pariin firmassa, jossa minua ei arvostettu, kun internet kasvoi vauhdilla ja ketterät uudet yri. Kyllä opin. Viehätykseni Pongiin oli muuttunut mielenkiinnoksi käyttöliittymiä kohtaan, ja otin tehtäväkseni ”frontendin” kehittämisen monimutkaiselle puhelinkeskussovellukselle. (Opetus 3 Uloshengitys) Opin tämän, mutta en heti, sillä oli jälleen aika edetä. Markkinointi ei ollut ottanut tätä puolta asiasta lainkaan huomioon, mutta itse näin sen ydintehtävänäni, koska ajattelin asiaa käyttäjän enkä ohjelmoijan näkökulmasta. Vikojen etsiminen oli nyt elämäntapa, saimme palkkaa siitä, ja kriittiselle luonteelleni tämä sopi erinomaisesti. Tuloksena olikin projektinjälkeinen masennus, joka muuttui pian oikeaksi masennukseksi. Suurempi haaste oli kuitenkin konseptitasolla: siinä, miten sovellus esitellään vähemmän tekniselle ihmiselle. Lopulta päätin, että voisin edetä ilman sitäkin, ja tein niin. Työpäivät venyivät, kun huomasin kerta toisensa jälkeen maalanneeni itseni nurkkaan ja jouduin pelastautumaan sieltä yhä monimutkaisempien keinojen avulla. Hyvinä päivinä koin olevani hyväntahtoinen diktaattori, jonka pienet alamaiset reagoivat virheettömästi näppäimistöltä kirjoittamiini käskyihin. Mutta sekään ei riittänyt. Syynä oli ollut tilapäinen sähköinen häiriö, ei vika koodissani. UNIXin man-sivujen kattava dokumentaatio oli kaikkien katsottavana. Huonoina päivinä, jolloin en onnistunut korjaamaan itse tekemääni virhettä ja istuin yhä toimistossa kymmeneltä illalla – tietäen, että töissä piti olla jälleen seitsemältä aamulla – kyseenalaistin kaiken mitä tein
Jätin Piilaakson ja pitkät työmatkat. Tällä kertaa oppi meni perille välittömästi, kun muistin isäni sanat: Jos jokin vaikuttaa liian hyvältä ollakseen totta, se todennäköisesti on sitä. Työ, jossa piti varmistaa, että vakuutettujen nimet ja taustatiedot oli lähetetty tietokantaan oikein, oli lopulta melko kuivakkaa. 1 8 tykset keräsivät rahat. 2 1 8 . Analyysiksi kutsuttu työ olikin vain tietojen vertailua. Elämä ei kuitenkaan ole ongelma, jota pitää hallita tai korjata, eikä tällaisella asenteella voi saada ystäviä tai vaikuttaa muiden mielipiteisiin. Opinko nyt mitään. En ole enää työnarkomaani, mutta kuitenkin taipuvainen pakkomielteisiin. (Opetus 4 Sisäänhengitys) Pikku lammikoissa uivat isot kalat eivät arvosta kalatieteilijää. Paraskin ohjelmisto nimittäin oikuttelee välillä.. Käytössä ei ollut erillistä testiympäristöä, ja valitettavasti kokeilin erästä ohjelmaani yöllä tuotantoympäristössä. Näppini polttaneena halusin enemmänkin turvallisen työpaikan, joten hakeuduin Fortune 10 -yhtiöön. Minulla taas ei ollut lainkaan Kentin tyyneyttä, vaan olin ylimielinen ja varomaton. Haastattelussa tehtävä oli kuitenkin vaikuttanut teknisemmältä kuin se olikaan. Tuotantojärjestelmällä ei testata. Siispä ryhdyin tuotteliaaksi ja aloin kirjoittaa ohjelmia, jotka tekisivät työn puolestani. Työyhteisö oli paikalleen juuttunut ja pikkumainen, eivätkä he pitäneet uudesta tulokkaasta. Voi kyllä. (Opetus 4 Uloshengitys) En ollut ainoa työtön, sillä dotcomkupla tyhjeni edelleen. Vaihdoin siis oman toimiston karsinaan startup-yrityksen avokonttorissa kotini lähellä ja sain sen mukana optioita, oluenhuuruisia juhlia ja nopeaa kehitystä. Mutta kun työmarkkinat lopulta avautuivat, olin valmiina. Hakemuksiin ei vastattu, ja haastatteluihin oli vaikea päästä. Lisää tyydytystä sain siitä, että järjestelmä ei enää seonnut, jos saman perheen jäsenten nimien alussa oli kolme samaa kirjainta. En enää vaadi täydellisyyttä, vaikka toki pidän sitä ohjenuorana. Käytin omaa aikaani novellien kirjoittamiseen ja tein myös lisää ohjelmia, joita arvostettiin ja joista sain bonuksia. Syvä hengitys riittää, jos olen oikeassa mielentilassa – muuten tarvitsen hellän läpsäytyksen. Olet kuin Aladdin ja ohjaat lampun henkeä, joka haluaa täyttää jokaisen toiveesi, tai kuin pikku Napoleon armeijoineen. Yritän suunnata energiani avioliittooni ja kotiimme. Olin kuin olinkin oppinut jotain. Olin nimittäin tajunnut, että itse projektit eivät olleet vahingollisia, vaan minä itse vedin aina ikiliikkujan kammesta käyntiin. Minulle kävisi, että palkka ei olisi yhtä hyvä kuin aiemmin. Kyllästyin melko pian. Pyrin pysymään oikealla tiellä, mutta ajoittain joudun eksyksiin ja minut pitää bootata. Kaiken kyseenalaistaminen ei ole keino saada ystäviä. Tein analyysejä ja kirjoitin muutaman aikaa säästävän ohjelman, mutta myös sähläsin sekä ihmissuhteiden että teknologian tasolla. Ohjelmiston virtuaalisessa maailmassa hallinta on keskeinen käsite. En pidä kyllästymisestä, ja ikävystyttävä työ alkoi veltostuttaa muutenkin. Minut palkkasi UNIX-konsultiksi tietotekniikkaa osaamaton päällikkö, jonka kunnianhimoisten selkäänpuukottajien tiimille ajatuskin muutoksesta oli kauhistus. En tietenkään voinut vaikuttaa siihen, jos heiltä myöhemmin evättiin korvaukset, mutta ainakaan se ei johtunut kirjausvirheestä. Ohjelmat puolittivat työkuormani. Löysin haluamani sanfranciscolaisesta sairausvakuutusyhtiöstä. Aivan satunnainen asia, jota en ollut ottanut huomioon, kaatoi koko yhdyskäytävän, ja sain potkut. Jätin 12 tunnin päivät ja projektit, jotka valtasivat ajatukseni ja elämäni. Halusin stressittömän työn läheltä kotoa ja kahdeksan tunnin työpäivät. Vaikka oletkin ylimielinen, koska olet erinomainen työssäsi, olet silti ylimielinen. Halusin niiden olevan helppokäyttöisiä ja vaativan mahdollisimman vähän käyttäjän toimia. Annoin niille näppärät nimilyhenteet, jotta päällikköni voisi kertoa niistä omalle päällikölleen, ja esittelin ne sitten omalle tiimilleni. Arvioitaessa ohjelmistoa olet saivartelija, jonka odotetaan puuttuvan pienimpäänkin yksityiskohtaan. Tästä eteenpäin minun ja tiimini päätehtävä oli – Facebookin selailun lisäksi – varmistaa, ettei päällikkö saa tietää, kuinka paljon vapaata aikaa meille itse asiassa jäi. Olen nyt eläkkeellä, mutta pyrin yhä torjumaan oppimiani huonoja tapoja. Kaikki meni hyvin puolitoista vuotta, kunnes yritys menetti suurimman asiakkaansa, optioista tuli arvottomia ja yritys irtisanoi puolet henkilöstöstään – minut mukaan lukien. Siksi minun piti myös vetää jarruvipua
the ExtraTerrestrial Atari 2600 -pelikonsolille (1982). E.T. Myös tarinaa E.T.-pelimoduuleista erämaassa on dramatisoitu. Atari oli yltiöoptimistinen ja valmisti peliä arviolta neljä miljoonaa kappaletta. Kaikkihan sen tietävät: E.T. ”I’ll be right here”, sanoi E.T.-pelimoduuli, kunnes kaivausryhmä kaivoi sen esiin vuonna 2014. E.T.:stä ei tehty jatko-osia, eikä etko-osia, mutta ehkä juuri siksi se on kestänyt aikaa – eikä se ole unohtunut. osuu ja putoaa kaivoon, vaikka vain sen pää olisi kaivon yläpuolella. oli kunnianhimoisempi. phone home”. Peliä toki valmistettiin ihan liikaa, mutta lopulta E.T.:n suurin synti oli syntyä väärään aikaan. sanoi ”E.T. Vertailun vuoksi pelimoduulien valmistus kesti kymmenen viikkoa. Gertie – Drew Barrymore – sanoi ”E.T. Soitto kotiin Päinvastoin kuin väitetään, Atari 2600:n E.T. Kiistatonta on, että E.T.-peli sai alkunsa kiireessä. Entä se peli: mikä on myyttiä ja mikä totta. New Mexicon hiekkaan päätyi pian paljon muutakin. Spielbergin PacMan olisi ollut lähempänä odotuksia. Faniversiossa tämä on korjattu. 80-luku muistetaan löyhästi elokuviin perustuvista tusinapeleistä, jotka kutistivat tarinat irrallisiksi toimintapelikohtauksiksi. Lisenssineuvottelut olivat venyneet, ja peli piti saada joulumarkkinoille. Se pyrki pelillistämään saumattoman lisenssitarinan alusta loppuun, mikä oli uraauurtavaa. Kyseessä oli kaatopaikka Alamogordon kaupungissa. Kotimikrovallankumous oli alkanut. Yksi tällainen on pelin kirjaimellinen törmäysrutiini, jonka vuoksi E.T. the ExtraTerrestrial -elokuvan (1982) nimihahmo, kosketti vastanäyttelijän otsaa hehkuvalla sormellaan ja syöpyi sukupolvien muistiin. E.T. ehti kauppoihin jouluksi 1982. Kiirehtiminen oli myös jättänyt E.T.:hen useita pieniä ongelmia. Näitä eräs pelin fani listasi ja myös korjasi ansiokkaasti Neocomputer.org-sivustolla vuonna 2013. oli 1980-luvun suosituin elokuva, suositumpi kuin Tähtien sodat. Lopussa kiitos seisoo – nykypäivän elokuvapelit ovat tässä lähempänä E.T.:tä kuin monia muita kasaripelejä. home phone”. Epätodennäköinen esikuva Muistan hämärästi ensikokemukseni E.T.:stä 80-luvulta. Useimmat pelaajat tuntevat surullisen tarinan: Rekkalasteittain myymättä jääneitä E.T.-pelejä haudattiin New Mexicon erämaahan jo 1983. toisteli myöhemmin Gertien sanoja). huonosti pärjännyt aikanaankaan: 1,5 miljoonaa myytyä kappaletta oli lähellä Atari 2600:n parhaimmistoa ja puoli miljoonaa enemmän kuin Empire Strikes Backilla. phone home” (E.T. Skrolli 2013.3), oli malliesimerkki: kokoillan elokuvasta peliin selvisi vain päättymätön lumikiituriammuskelu. Eikä E.T. Linkit E.T.peliin Internet Archivessa sekä muunnelmaprojekteihin: skrolli.fi/ numerot. Ohjeiden tulkkaaminen auttoi, mutta tämä jäi monilta tekemättä. Pelin toteutus alkoi pikasuunnittelulla. oli aikansa paras lisenssipeli. saapuu Maahan, etsii osat puhelimeensa, soittaa kotiin ja alus noutaa hänet. Myytinmurtajaiset Myytillä tarkoitetaan yleistä, mutta harhaista uskomusta. Esimerkiksi E.T.-elokuvasta muistetaan E.T.:n keksineen sanat ”E.T. E.T.:n alustatoveri, samana vuonna ilmestynyt Star Wars The Empire Strikes Back (ks. Ihmishahmoja olisi pelissä elokuvaa mukailevissa sivurooleissa. Reaktioni oli sama kuin monilla ajan lapsilla: hämmennys. E.T. Se ilmestyi Commodore 64:n julkaisuvuoden lopulla. Ohjaaja Steven Spielberg ei suunnitelmasta innostunut, vaan kannatti E.T.-henkistä Pac-Mania. Unohtunut ei ole myöskään elokuvasta tehty lisenssipeli, E.T. ei ollutkaan suoraviivainen toimintapeli, siinä ei itse asiassa ole väkivaltaa lainkaan. oli maailman huonoin videopeli ja tappoi varhaiset pelikonsolit. 9 Kolumni Janne Sirén ”I’ll be right here”, sanoi E.T. Kotiin soittava E.T. Epälineaarinen pelimaailmakin oli uutta. Warshaw kuitenkin uskoi oman konseptinsa olevan lähempänä elokuvaelämystä ja sai tahtonsa läpi. Oikeasti E.T. Warshaw hahmotteli vapaasti kuljettavan pelimaailman esteineen sekä tehtävän: E.T. Pelin Atarille toteuttanut Howard Scott Warshaw sai vain viitisen viikkoa aikaa sen toteuttamiseen, vaikka tyypillinen toteutusprojekti kesti tuolloin puoli vuotta
Pino Skrolleja ja eilisen tiskit. Microsoftin sekatodellisuus on kuitenkin toistaiseksi vain lupaus tuleDarth Vader kävi meillä Todellisuus lisääntyy Maailman ensimmäinen virtuaalikypärä oli samalla lisätyn todellisuuden silmikko. Damokleen miekkaa pidetään ensimmäisenä tietoteknisenä keinotodellisuussilmikkona. Puristan kovempaa, ja muoviputkilosta nousee sinertävä valopatsas. Keinotodellisuudessa näyttää esiintyvän kypäriä ja miekkoja. 1 10 Tekniikka P uristan kaksin käsin metallisen väristä muoviputkiloa. Nyt lisätystä todellisuudesta puhutaan taas. Skrolli listasi tärkeimmät AR-alustat. Microsoftin sekatodellisuus Virtuaalija lisätty todellisuus saivat alkunsa samanaikaisesti. 2 1 8 . Silmikko toimi myös läpinäkyvänä, jolloin vektorigrafiikka näyttäytyi tosimaailman keskellä. Hienostuneita aseita sivistyneemmälle ajalle, vaiko edelleen pelkkä kangastus. Virtuaalitodellisuudella (virtual reality, VR) tarkoitetaan tosimaailman peittävää lumetodellisuutta. Sohva ja pöytä. Tähän saakka kuluttajatuotteiden kehitys on kuitenkin ollut erillistä: lisättyä todellisuutta on nähty lähinnä kannettavien pelija älylaitteiden kamerasovelluksissa, virtuaalitodellisuutta pelisilmikoissa. Sohvan vieressä seisoo Darth Vader. Tätä kutsutaan lisätyksi todellisuudeksi. Yhteistä on liikkeenseuranta: tekotodellisuus näyttää aidolta vain, kun se liikkuu uskottavasti katseen ja tilan mukana. Windows 10:n versio 1709 (Fall Creators Update, 2017) sisältää Windows Mixed Realityn eli ”Windowsin yhdistetyn todellisuuden”, joka kattaa molemmat keinotodellisuuden muodot. Darth Vader nostaa oman, punaisen valomiekkansa… Kun kerroimme virtuaalitodellisuuden 150-vuotisesta historiasta Skrollissa 2016.2, kerroimme myös The Sword of Damocles -nimisestä virtuaalikypärästä vuodelta 1968. Ensimmäisenä näitä erillistodellisuuksia kiirehti yhdistämään Microsoft. Teksti: Janne Sirén Kuvat: Janne Sirén, Microsoft, IKEA, HoloKit, Lenovo, Vuzix HoloLens (3 349 euroa).. Microsoftin kumppanit julkaisivat samalla joukon Mixed Reality -silmikoita, joiden liikkeenseuranta perustuu kameroihin eikä vaadi ulkoisia majakoita aiempien PC-lasien tapaan. Kerroimme esimerkiksi Googlen erillisistä Daydream (VR)ja Project Tango (AR) -hankkeista Skrollissa 2017.1. Katson ympärilleni: Oma koti. Lisätty todellisuus (augmented reality, AR) taas on keinotodellisuuselementtien näyttäytymistä todellisuudessa
11 vasta. Niiltä on turha odottaa yhteensopivuutta artikkelin AR-alustojen kanssa. Darth Vaderia ja kumppaneita saa piestä liikunnaksi asti, robottien sädepistooliammuksia pääsee torjumaan ja tuotantoarvot ovat kohdallaan. Lenovon kangastus Windows Mixed Realityn keskittyessä virtuaalisilmikoihin ja mobiilijättien lisätessä todellisuutta vasta älylaitteen ruudulle, musta hevonen tulee Lenovolta. Toisin kuin Tango, ARKit ei vaadi erityiskameroita, vaan älylaitteen perussensorit riittävät AR-sovellusten toteuttamiseen. Peli on pakattu silmikon ja liikkeenseurantamajakan mukaan. Googlen vastaus tuli elokuussa: ARCore-alusta tavallisille Androidälypuhelimille, joka korvaa Tangon. Tangoa varten kehitetty kamerakonsepti ei silti ole häviämässä – se on osa Googlen tulevan Daydream Standalone -VR-alustan WorldSenseliikkeenseurantaa. Tosissaan lisätyn todellisuuden kilpa kuitenkin käynnistyi, kun Apple paljasti ensimmäiset keinotodellisuuskorttinsa julkaisemalla ARKit-kehitysalustan iOS-laitteille kesäkuussa 2017. Ja kun sanomme ensisovellus, tarkoitamme ainoa sovellus. Darth Vader seisoo siististi sohvan vieressä vain tuurilla, suuren osan ajasta viholliset leijuvat jossain seinillä ja kalusteiden sisällä. Jedi Challenges ja Mirage AR uhkaakin jäädä yksinäiseksi kuriositeetiksi, jonka perusviesti on sama kuin koko tällä artikkelilla: ei vielä. Mixed Reality -silmikot taas ovat vasta ”pelkkiä” virtuaalilaseja. Eräs kehittäjä kuvaili ARCorea sanoin ”uudelleennimetty Tango, josta on kommentoitu pois erikoiskameravaatimus”. Esimakua lisätystä Windows-todellisuudesta tarjoaa sentään Microsoftin Mixed Reality Viewer -sovellus, joka piirtää 3D-kuvia tietokoneen kamerakuvan keskelle. Jos joku kävelee lasien ja AR-esineen väliin, esine jää piiloon. Pari yhteensopivaa laitettakin julkaistiin. Myös Kylo Ren esiintyy Jedi Challengesissa.. ARKit ja ARCore/Tango toimivat uudehkojen älylaitteiden ruudulla, kamerakuvan päällä. Uudemmat iPhonet ja muutamat iPadit kelpaavat laitteiksi. Valoisassa kuva on myös aika haalea, joskin pelattava. Linkit lisätyn todellisuuden kehitysympäristöihin ja lisätietoihin, sekä mainitut Skrollit 2016.2 ja 2017.1 pdfmuodossa, löydät verkkojatkoiltamme: skrolli.fi/numerot ARKit ja IKEA Place. Nämä ovat lähinnä infonäyttöjä, eivät saumattomia AR-silmikoita. Applen ja Googlen tanssi Google puolestaan on esitellyt Tangoprojektiaan vuosien ajan. HoloKit (35 dollaria) on AR-pahvisilmikko iOS:lle ja Androidille. Pahvinen HoloKitsilmikko tosin tarjoaa ensiapua. Veikkaan, että Jedi Challenges toimisi paremmin Lenovon tulevalla Mirage Solo -VR-silmikolla, mutta sen taustalla oleva uusi Daydream Standalone -alusta taas ei tue näin edistyneitä liikeohjaimia. Peli sisältää valomiekkataistelun, strategiapelimäisen maataistelun ja holoshakin. Jedi Challenges toimii jotenkuten. Erityiseksi Mirage AR:n tekee sen ensisovellus: Star Wars – Jedi Challenges -peli valosapeleineen. Kuten HoloKitissä, puhelin kiinnitetään heijastusnäytöksi silmikon sisään. Lenovon Mirage AR (aloituskuvassa) on lisätyn todellisuuden silmikko älypuhelimille. Projekti tutki älylaitteen sijainnin havainnointia tilassa ja tuotti vaikuttavia AR-demoja. Tangon kyvyt perustuivat älylaitteeseen integroituun kamerapatteristoon, joka näkee tarkalleen, missä ja missä asennossa laite on, ilman ulkoisia majakoita. Lisää todellisuutta Myös Google Glassin kaltaiset älylasit yrittävät paluuta: Intel Vaunt -projektiolasit, Amazon Alexa -ääniohjattu Vuzix Blade (1 080 euroa, kuvassa alla), Rokid Glass, jossa Rokidin oma ääniohjaus, sekä tusina muuta. Virallisia AR-laseja ei niillekään saa. Peli paljastaa kuitenkin lisätyn todellisuuden suurimman ongelman: todella toimiakseen sen pitäisi ymmärtää tilaa, ellei tilaksi löydy tyhjää urheilukenttää. Mirage AR seuraa valomiekkaa varsin uskollisesti, joskin sen stereokamerat arvioivat miekan asennon ja lattian korkeuden ajoittain väärin. Lume-IKEA, jossa huonekaluja ei tarvitse koota itse. Mirage AR (199 euroa). Kiinnostavampi uutuus ovat Magic Leap -valokenttälasit PC:lle, jotka lupaavat aitoa syvyysvaikutelmaa. Valitettavasti Magic Leap'kin loikkii erillään valtavirran AR-alustoista. Silmikoista ainoastaan kallis ja ikääntyvä ammattilaistuote HoloLens tukee läpinäkyvää lisättyä todellisuutta. Mirage AR ei ole yhteensopiva minkään AR-alustan kanssa. Siinä on myös pelkkä klikkeriohjain, eikä tukea monipuolisille liikeohjaimille
// Siksi siitä voi oppia sen, mikä on olennaisinta. Aidattu alue Ohjelmistopuolen kehitys on mukava juttu, joka laajentaa mahdollisuuksien kenttää. Kuten eräs käyttäjä kehuu Writemonkeyn sivulla: ”Olen yhdistänyt äänen tuottavuuteen ja naputan nopeammin.” Koska softa ei oletuksena käytä oikolukua, naputteluflow ei pysähdy edes pikkuvirheiden nysväilyyn. Se mitä Writemonkeylla tehdään oli mahdollista ensimmäisillä kotitietokoneilla, eikä työn perimmäinen luonne ole siitä muuttunut. Onpa mukana myös jännempiä ominaisuuksia, kuten kaiken muun paitsi halutun kappaleen piilottava Segment Focus. 1800-luvun lopulla käyttöön hiipi mekaaninen kirjoituskone, joka vuosisadan palveltuaan korvautui tietokoneella. Yllättävän kivana lisänä softan voi laittaa näppäimistön matkimaan kirjoituskoneen ääntä. Tätä taustaa vasten on kiehtovaa, miten paljon eri tekstieditoreja on julkaistu kotitietokoneiden lyhyen olemassaolon aikana. Apinakin osaisi käyttää Joskus vuoden 2010 tienoilla tekstieditori nimeltä Writemonkey nousi esiin usealla softasivustolla. Nappia painamalla esiin saa tärkeät tilastot merkkien, sanojen ja muun määrästä. Selkeimpänä erona teksti tulee Wordin tapaan näkyviin liuskana (mikä helpottaa lukemista), ei pitkinä vaakasuuntaisina jonoina. Kuten softan oma kuvailu kertoo, se ”jättää yksin omien ajatusten ja sanojen kanssa”. Jos näppäimistöä ja editointimahdollisuutta ei lasketa, ei ole kovin monta apuvälinettä, jolla tätä työtä voi helpottaa. Tämä ei ole puute, vaan ominaisuus. On vain teksti ja sen tekijä. Ongelma on, että ajatustyö on väsyttävää puuhaa, josta mieli yrittää lipsua tuon tuosta. 1 12 2 1 8 . Aivot lähettävät jatkuvasti impulsseja huilata! Vaikka pieni tauko. Milloin vähemmän on enemmän. Ohjelma tuottaa puhdasta txt-dataa ilman muotoiluja. Kokeilu vähän venähti: Writemonkey on ollut jatkuvassa käytössä tähän päivään asti, ja sillä on tullut kirjoitettua noin 300 artikkelin ohella kokonainen kirja. Päästä kaivellaan ajatuksia ja asetellaan niitä nätisti sanoiksi, jotta joku saa niistä hyötyä ja hupia. Voiko softa olla zen. Ainoa asia, mitä Writemonkey tyrkyttää, on tyhjä sivu. 2 1 8 . 1 12 Softa // Writemonkey ja softasuunnittelun zen // Writemonkey on ohjelma, jossa ei ole mitään turhaa. Writemonkey ei vaadi asennusta eikä syö resursseja. Kirjoitusvälineiden historia ei ole aivan näin yksinkertainen, mutta suuria innovaatiota siinä on niukasti. Ne saattoivat olla vähän erilaisia maasta ja aikakaudesta riippuen, mutta toimintaperiaate oli sama. Pelkästään tätä kappaletta kirjoittaessa olen joutunut vastustamaan houkutusta tarkistaa netin kuulumiset, keittää kahvit, lopettaa tältä päivältä. Näin sitä voi kantaa mukanaan koneesta toiseen vaikka muistitikulla ja aloittaa työskentelyn missä vain, koska vain. Välittömän palautteen motivaatiovoimaa ei sovi väheksyä. Keskeisenä psykologisena kikkana Writemonkey peittää ruudun kokonaan, eikä jätä näkyviin edes omia valikkojaan. Funktionaalisesti Writemonkey ei eroa suuremmin vaikka Notepadista. Käsittelyn arvoisten ajatusten loihtiminen on yhtä vaikeaa nyt kuin ennen ajanlaskun alkua. Näitä voi kuitenkin käyttää juurin niin paljon tai vähän kuin haluaa. Ainoana kauneusvirheenä se on saatavilla vain Windowsille, joskin betatestissä oleva uusi versio on myös omppuja pingviiniystävällinen. Valikoita kaivamalla paljastuu säätöjä, jolla editorin saa mieleisekseen fontteja ja taustavärejä myöten. Kyse oli kuulemma ohjelmasta, joka edisti häiriötöntä kirjoittamista, joten laitoin Wordin hetkeksi syrjään ja otin uuden haastajan kokeiluun. Muotoiluista, oikoluvusta ja muusta on toki valtavasti hyötyä, mutta onko niistä apua töistä raskaimmassa eli ajattelussa. Tekstinkäsittelyohjelmat on luotu kirjaimellisesti tekstin käsittelyyn. Kirjoittaminen on aivotyötä, jossa jäsennetään ajatuksia kätevästi kommunikoitavaan muotoon. Slovenialaisen Iztok Stržinarin tekstieditori ei ole ainut laatuaan, vaan sillä on sellaisia sisaruksia kuin Dark Room tai yli 40-vuotias Vi. Mutta kuten todettua, on myös syvempää työtä, jossa suurin este ei ole työkalu vaan ihmismieli. *Teksti: Aleksandr Manzos* Olipa kerran kynä ja paperi. Oli tikku, joka jätti jälkiä ja ohut materiaali, jolle niitä sai jättää
Zenbuddhalaisuuden ytimessä onkin meditaatioharjoitus zazen, jossa pohjimmiltaan istutaan paikallaan ja annetaan mielen asettautua aloilleen. 13 tuntuu ajallisesti mitättömältä, flow-tilan kannalta se voi olla tuhoisa. Kaupallisuus ei kuulu zeniin, anteliaisuus ja jakaminen taas kyllä. Olen käyttänyt samaa tekstieditoria noin seitsemän vuotta, näistä viimeiset kolme samaa versiota (2.7.0.3). Taas: Ihan tällaista armottomuutta ei voi soveltaa koko softasuunnittelun kenttään. Jossain vaiheessa varmaan siirryn siihen ihan jo tuulettaakseni aivojani, mutta pikakokeilulla en ihastunut. Esimerkiksi useamman tekstitiedoston pitäminen auki on teoriassa käyttökelpoinen lisä, mutta ei palvele sitä orjallista yhteen asiaan keskittymistä, joka synnyttää parhaan tekstin. Satori, zenin termi valaistumiselle, tarkoittaakin ei-luokittelevaa mieltä. Kun mieli alkaa harhailla, sillä on vähemmän houkutuksia, joihin tarttua. Tämä ei estä käyttäjää sulkemasta tai minimoimasta softaa, mutta ainakin työn ja boredpanda.comin välillä on jokin psykologinen este. Esimerkkinä tästä on varhainen pelimusiikki. Softien esteettistä ilmettä on hyvä päivittää toisinaan, mutta muuten en keksi, mitä muuttaisin Writemonkeyn varsinaisessa toiminnassa. Sen jälkeen asiat menevät enemmän omalla painollaan. Kaikkia työkaluja ei voi riisua tekstieditorin lailla, mutta häiriöttömyyden periaatetta voi soveltaa aina edes jossain määrin. Writemonkeyn kaltainen ohjelma kutsuu samoin kohtaamaan oman työtilanteen ilman tekosyitä tai häiriöitä. Muusikko voi löytää sisältään salaisia säveliä, kun käytössä on vain pari alkeellista instrumenttia. Hauskaa kyllä, kirjoitusapinaksi nimetty softa auttaa sisäisen loikkijan taltuttamisessa. Mutta kenties meidän kannattaa myös kollektiivisesti luopua luulosta, että kehitys vie aina vain ja ainoastaan eteenpäin. Se on sitä mitä se on Writemonkey herättää vielä yhden kysymyksen: onko kaikkea mahdollista parantaa. Rajat luovat voimaa, joka helpottaa vaikeimman työvaiheen ylittämistä. Esimerkiksi kirjoittamisessa editointi on niin paljon luontia kevyempää, että sen voi tehdä millä vain ohjelmalla. Vähän kuin juomaa kaataessa sakka laskeutuu itsestään kupin pohjalle, kun sille antaa aikaa. Zenissä asioihin takertuminen nähdään suurena kärsimyksen lähteenä. Buddhalaisuudessa sinne tänne pomppivaa mieltä kutsutaan apinamieleksi. Ja mitä enemmän pysyy softan asettaman aitauksen sisällä, sitä enemmän treenaa keskittymistään. Zazenin tavoin se opettaa tuomaan ajatukset takaisin tähän hetkeen. Zazen tähtää todellisuuden kohtaamiseen sellaisena kuin se on, vailla jatkuvaa ajatusten hälinää ja arvottamista. Paperi on paperi ja häiriötön tekstikenttä on häiriötön tekstikenttä. Jos tekee jotain joka päivä vuosien ajan, se jättää väkisinkin jäljen. Writemonkey minimoi tietokoneella piilevät houkutukset poistamalla kaiken ylimääräisen näkyvistä ja rajaamalla mahdollisuudet tekstin tuottamiseen. Aina voi kuitenkin miettiä, milloin liikaa on flow’n kannalta liikaa ja milloin on saavutettu jotain, mistä kannattaa pitää kiinni. Onko se sanahelinää, vai voiko softaa käyttää tietyn filosofian ilmaisuun. Tarkoituksena on istua ruudun ääreen ja keskittyä käsillä olevaan tehtävään. Sakka kupin pohjalla Writemonkeyn tekijä kuvailee luomustaan zenwareksi. Ihmiset ohjelmoivat softia, mutta softat ohjelmoivat myös ihmisiä. Zen on yliviljelty termi, joka sujautetaan yleensä mukaan, kun kaivataan tujaus henkisyyttä tai ei haluta puhua minimalismista. Siksi onkin sopivaa, että Writemonkey on jaossa ilmaiseksi, mutta Stržinarille voi lahjoittaa rahaa oman varallisuuden mukaan. Vaikka zenwaressa onkin kyse tarttuvasta tägistä, niin ei se Writemonkeyn kohdalla kovin harhaankaan osu. ?. Digitaiteilijan luonnostelu voi parantua ohjelmalla, joka ei anna leikkiä sadoilla sudeilla, kerroksilla, filttereillä. Transsi, jonka aikana teemme valtaosan merkityksellisestä työstä, on herkkä kuin pieni lintu: vaikea vangita, helppo rikkoa. Writemonkeyn täysin uudistettu kolmosversio on tehnyt pitkään tuloaan ja on tällä hetkellä avoimessa betassa. Kenties minun kannattaa jossain vaiheessa päästää irti työvälineestä, johon olen niin kiintynyt. Mystisen kuuloinen ”zen” palautuu sanskritin meditaatiota tarkoittavaan sanaan. Artikkelin, kirjan tai rakkaudentunnustuksen sepustus on kiinni vain siitä, että välttää editorin sulkemisen ja nakuttaa merkkejä sisään
. Halutessaan käyttöliittymää voi koristella laajennoksilla, jotka näyttävät vaikkapa sisällysluettelon, versionhallinnan aktiivisen haaran tai muita hienostuneita mutta valinnaisia ominaisuuksia. w liikkuu sanan eteenpäin, dw leikkaa sanan eteenpäin, d3t leikkaa kursorista oikealle kolmanteen pilkkuun, ja niin edelleen. Toimintalogiikka tärkeimpänä erona muihin Vimin suurin ja tärkein ero muihin editoreihin on nimenomaan sen toimintalogiikka tekstiä editoitaessa – siis se kaikkein epäintuitiivisin mutta tehokkain osuus. Vimin omat ”nuolinäppäimet”, eli h j k l , ovat suoraan kymmensormijärjestelmää käyttävän kirjoittajan sormien alla, eikä kättä tarvitse siirtää mihinkään. Yrittäessäni kirjoittaa tekstiä käyttäytyi tämä editori aivan holtittomasti. Sen sijaan olen ottanut Vim-tilan käyttöön kaikissa ohjelmissa, joihin se suinkin on saatavilla. 2 1 8 . Eihän ohjelmassa ollut edes valikkoa, ja ainoa keksimäni tapa ohjelman sulkemiseen oli tappaa se toisesta terminaalista käsin. Tehokäyttäjä ei niitä kuitenkaan juuri kaipaa, sillä kaikki on tehtävissä myös näppäimistöltä. Vasen käsi kylläkin joutuu painelemaan Esc-näppäintä tiuhaan, aina kun lisäystilasta haluaa takaisin normaalitilaan, jossa navigointi tapahtuu. Opettelua ei kannata jättää aivan perusteiden tasolle, sillä tällöin jokin yksinkertaisempi editori, vaikkapa nano, on varmasti tuottavampi valinta. Vimin tehokkuus syntyy mahdollisuudesta yhdistellä normaalitilassa annettavia komentoja. Jokseenkin jokainen näppäimistön kirjain tai erikoismerkki tekee jonkin toiminnon Vimissä. Tämän jälkeen on vain yritettävä soittaa, soittaa lisää, soittaa tarkemmin, opiskella lisää teoriaa vähän kerrallaan, ja soittaa taas lisää. Tärkeää on aina välillä muistaa kokeilla uusia toimintoja. Lähinnä graafisuus tarjoaa paremmat edellytykset esimerkiksi tekstin värjäämiseen, kursivointiin ja alleviivaukseen. Vimiä on myös käsitelty perusteellisemmin Skrollin numerossa 2015.3. Teksti: Kari Lavikka Ensikosketukseni Vimiin lienee samanlainen kuin monilla muilla – jouduin siihen vahingossa. Tarkoituksena oli ehkä muokata crontabia tai commitoida muutokset versionhallintaan. Mikä Vimissä sitten on niin hienoa. Vimiä ei onneksi tarvitse opetella lukemalla ensin käyttöohjekirjaa. 1 14 Softa VIM EPÄINTUITIIVISEN TEHOKAS EDITORI Vim on monille ohjelmoijille ja Unix-käyttäjille varsin tuttu tekstieditori, jonka askeettisuudesta voi olla montaa eri mieltä. Puhtaimmillaan Vimin olemus on kuitenkin vain tekstiruutu odottamassa käyttäjän näppäinkomentoja. Uudelleen sijoitetut nuolinäppäimet eivät toki ole vielä kovin kova juttu. Itselleni nuo tosin ovat melko toissijaisia etuja, sillä en kovin usein edes käytä Vimiä. Myös Vimin opetteluun on käytettävä aikaa, mutta se maksaa varmasti itsensä takaisin. Onneksi Vim on vain työkalu, ja tunnit sen parissa tulevat täyteen yllättävänkin nopeasti. Vim-kokemuksen ei kuitenkaan ole pakko olla äärimmäisen karu. Vimin opettelu on kuin opettelisi soittamaan kitaraa. Aluksi on opiskeltava joitain perusteita, joiden löytäminen vain kokeilemalla on hankalaa: mitä ovat sointu ja skaala, ja miten ne löydetään vaikkapa G-duurisävellajista. Tekstiä katosi, kursori hyppi mihin sattuu, ja paniikkihan siitä tuli. Tekstissä liikkumiseen voi käyttää tuttuja nuolinäppäimiä, mutta ne kannattaa unohtaa heti aluksi, sillä matka kirjaimilta nuolinäppäimille on pitkä, hiirestä nyt puhumattakaan. Normaalija lisäystilassa annettavia loitsuja voi myös tallentaa makroiksi, jolloin saman muokkauksen voi toistaa myöhemmin haluamassaan paikassa. Vimin mukana tuleva vimtutor on kelvollinen opastus Vimin käyttöön, mutta internetistä löytyy paljon hauskempiakin opiskelutapoja, esimerkiksi Vim Adventures (vim-adventures.com). Tavataan sanoa, että kymmenentuhannen tunnin harjoittelulla lajissa kuin lajissa voi tulla mestariksi. On olemassa myös graafisella käyttöliittymällä varustettuja versioita, joissa on valikkoja työkalupalkit sekä tuki hiirelle. Joillekin se on ehkä laajennettavuus, tai että Vim tai sen innoittaja, alkuperäinen vi-editori, on asennettuna valmiiksi melkein koneessa kuin koneessa. Vielä lähes parinkymmenen vuoden käytön jälkeen opin yhä uusia toimintoja, joita pikkuhiljaa yritän omaksua ja ottaa käyttöön liikkuessani pitkin tekstiä tai koodia. Näitä ovat esimerkiksi Visual Studio Code ja jopa Google Chrome . 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
Pokitto on laite ohjelmoinnin ja elektroniikan opettamiseen lapsille. Pokitton ”isä” Jonne Valola on taustaltaan elektroniikkaa taitava teollinen muotoilija, mikä onkin varsin mielenkiintoinen yhdistelmä. Lisäksi sen ominaisuuksia voi kasvattaa lähes loputtomasti laajennusportin kautta. 15 Koodi P okitto näyttää retropelikonsolilta, mutta sen äly on nykyaikaisista IoT-laitteista ja sulautetuista järjestelmistä tuttua teknologiaa. • MCU = CPU (Central Processing Unit) + muistia + ohjelmoitavia I/O-laitteita (kuten I/O-portti, kello tai sarjaliikennepiiri) • MCU:ta käytetään yleisesti upotettuna muihin laitteisiin, kuten jääkaappi, mikroaaltouuni tai pesukone. MCU:n sisältävästä laitteesta käytetään suomeksi nimitystä sulautettu järjestelmä. Sen käyttö tehostuu entisestään, kun laitteeseen saadaan korkean tason ohjelmointikieli. • MCU-mikropiiri on yleensä fyysisiltä mitoiltaan hyvin pieni ja maksaa vain muutaman euron. Mikä Pokitto on. Muutama vuosi sitten Jonnen lapset osoittivat kiinnostusta elektroniikkaan. Siinä missä PC voi käyttää 50 watin edestä tehoa, MCU vie vain 50 milliwattia. Teksti: Hannu Viitala Kuvat: Jonne Valola / Pokitto Oy, Hannu Viitala, Maxine Azzara Pelikorttipakan kokoinen Pokitto on koottava avoimen lähdekoodin pelikonsoli, elektroniikan ja ohjelmoinnin opetuslaite sekä IoT-tekniikkaa sisältävä sulautettujen järjestelmien ja elektroniikan ohjausyksikkö.. • MCU vie hyvin vähän virtaa. Pokitto on IoT-teknologiaan pohjautuva kannettava, itse koottava pelija hyötylaite. Kaikki tämä vaatii tietenkin ohjelmointia. Ohjelmointi helpottuu ja nopeutuu huomattavasti, kun laitteeseen saadaan MicroPythonohjelmointikieli, joka on suunniteltu sulautettuihin järjestelmiin. Vilkkuvat LED-valot eivät kuitenkaan aluksi sävähdyttäneet tabletteihin ja pelikonsoleihin tottuLisäpotkua ohjelmoinnin opetteluun Python luikertelee Pokittoon MCU • MCU (Micro Controller Unit, mikrokontrolleri) on pieni tietokone, joka sijaitsee yhdellä mikropiirillä
Yksi innostunut ja taitava pelikoodari voi halutessaan kontrolloida koko laitetta, lähtien grafiikasta ja äänistä ja päätyen ohjelmakoodiin, joka tekee kaiken laitteen käynnistämisestä lähtien ja hyödyntää laitteen resurssit sataprosenttisesti! Pokitton yläreunassa on laajennusportti, jonka kautta siihen voi lisätä mitä tahansa ”hattuja” eli rautalaajennuksia kuten lämpöanturin, IR-kameran, tärinäakun, lisäohjaimen ym. Flashaus on yhtä helppoa kuin ohjelman lataaminen muistikortilta tavallisessa kännykässä. Luit aivan oikein, siis puhutaan kilotavuista, eli muistitila on samaa luokkaa 80-luvun tietokoneiden ja pelilaitteiden kanssa! Näiden rajoitusten voisi ajatella olevan puute, koska jo peruskännyköistäkin löytyy moninkertaisesti parempia näyttöjä, suurempia muisteja ja tehokkaampia prosessoreita, mutta asiaa kannattaa miettiä toisenkin kerran. Pokitton näytössä on 220 × 176 pikseliä ja 65 536 väriä. Pokitto-simulaattori on avointa lähdekoodia ja toimii Code::Blocksin alaisuudessa niin Windowsissa kuin Linuxissakin. MCU:n kellotaajuus on 48 MHz ja muistia siinä on 256 kt flash ROMia, 36 kt RAMia sekä 4 kt EEPROMa. Pokitto rahoitettiin pitkän tuotekehitysvaiheen jälkeen Kickstarter-joukkorahoituksella, jonka Jonne toteutti yhdessä Daniel DeBeerin kanssa. Pokittosta tekevät mukavan ja sympaattisen näköisen pienet kuoreen muotoillut ”kädet ja jalat”, joiden tarkoitus on toimia tarvittaessa myös kiinnityskorvakkeina. Koska laitteeseen ei todellakaan mahdu massiivisia ohjelmistorajapintoja tai monimutkaista moniajokäyttöjärjestelmää, ohjelmointi pysyy yksinkertaisena ja ohjelmoijalla on koko ajan selvä käsitys siitä, mitä laitteessa tapahtuu. Koodin kehitys Pokittoon Pokitton järjestelmäohjelmisto on täysin avointa lähdekoodia. 1 16 Pokitton osat: etukansi, takakansi, näyttömoduli, kiinnitystapit, ruuvit, näytönpidike, virtakytkin, ristiohjain, napit ja piirilevy akkuineen. Tästä oivalluksesta syntyi Pokitto. Kuin hatunnostona kultaiselle 80-luvulle GPIO-portin pinnit on liitetty suoraan muistiavaruuteen, joten lisälaitteen saa hallintaan ennen kuin ehtii edes sanoa ”poke & peek”. Daniel vastaa projektissa laitteen elektroniikan viimeistelystä ja valmistuksesta. Pelija muu ohjelmistokehitys Pokittolle voidaan tehdä joko simulaattorilla tai itse laitteella, joka on yhdistetty USB-kaapelilla tietokoneeseen. Ei varmasti ole pelkkä sattuma, että Pokitton kiinnityskorvakkeet ovat juuri sopivia Legoakselien kiinnitykseen ja että Pokitton mitoitus muutenkin sopii hyvin Legopalikoiden mittoihin. Kickstarter tuotti noin 30 000 euroa sekä erittäin aktiivisen yhteisön laitteen ympärille. Näytti siltä, että elektroniikan yhdistäminen pelien ohjelmointiin oli hauska ja motivoiva tapa oppia. Se käyttää vain yhtä prosessia ja säiettä, kuten kaikki muukin koodi Pokittossa. • Grafiiikka: 2.0” TFT, 220 × 176 pikselin tarkkuus, 65 536 väriä. • Akku: 600 mAh litium-polymeeriakku • Liitännät: laajennusliitin (GPIO ym.), mikro-USB, microSD. Nettikaupan myyntihinta on vielä vahvistamatta. Pokitton systeemiohjelmisto huolehtii muun muassa laitteen alustuksesta käynnistyksen aikana, grafiikasta, äänistä ja näppäintapahtumista. Ohjelmoijalla on vapaat kädet muokata sitä tai korvata se vaikka kokonaan uudella. Sen sijaan ensimmäinen yhdessä rakennettu pelikonsoli oli yleisömenestys. Pokitton käyttämä MCU vastaa muun muassa Googlen IoT-määrityksistä, joten syvällisesti Pokitton toimintaa ymmärtävä käyttäjä saa ikään kuin varaslähdön esineverkkojen täyttämään tulevaisuuteen. Laitteesta on aistittavissa huolellista ja pitkälle tulevaisuuteen ulottuvaa suunnittelua. Pokitton rajoituksilla on paljon positiivisia vaikutuksia, kuten halpa hinta, pitkä akunkesto, salamannopea käynnistys, yksinkertainen ja itse koottava rakenne, helppo ohjelmoitavuus. sekä se, että laite on täysin ohjelmoijan hallittavissa. Audiosta vastaa kaksi itsenäistä 8-bittistä äänipiiriä (PWM ja DAC) joita voi käyttää yhtäaikaisesti, esimerkiksi yhtä musiikin soittamiseen SD-kortilta ja toista ääniefektien luomiseen. neita nuoria kokeilijoita. Työkaluina ovat käytössä Code::Blocks, EmBitz ja pilvessä sijaitseva Arm MBed -kehitysympäristö. • Värivaihtoehdot: takakuoren, etukuoren ja nappien väri on valittavissa niin, että tarjolla on yhteensä 336 eri väriyhdistelmää. 2 1 8 . Ihmettelen, ellei se ole jonkinmoinen ennätys alallaan! • Kickstarter-kampanjassa halvimman ”early bird” -rakennussarjan hinta oli 39 euroa postikuluineen. Code::Blocks on ilmaiPOKITTO • Prosessori: NXP ARM Cortex-M0+, 48 MHz. • Äänet: 8-bittinen DAC ja 8-bittinen PWM, vahvistin, kaiutin, stereokuulokeliitin. • Muisti: 256 kt ROM, 36 kt RAM, 4 kt EEPROM. Kasattuna laite on suunnilleen pelikorttipakan kokoinen eli hyvin taskuun mahtuva. Itse asiassa aina, kun Pokittoon ladataan uusi peli muistikortilta, laitteen flash-muisti ohjelmoidaan uudelleen eli koko ohjelmisto korvataan uudella. Pokitto on mikrokontrolleriin (Micro Controller Unit, MCU) perustuva laite, joka sisältää itse MCU-piirilevyn lisäksi LCD-näytön, akun, muistikorttipaikan, USBja laajennusportit, kuoret, ristiohjaimen sekä kolme painonappia
Python on riittävän helppo kieli oppia, ja sen avulla saataisiin helposti herätettyä lasten ja nuorten mielenkiinto ohjelmointiin. Ensin mainittu on monipuolinen ja tehokas kehitysympäristö, joka asennetaan tietokoneelle. Seuraavaksi Pokitto kytketään USB-johdolla tietokoneeseen, jossa interaktiivisen Python-komentotulkin kautta voi kokeilla Pokitton ja hatun ominaisuuksia, kuten lämpötilan lukemista ja kuvan ottamista. Peruskouluissa on meneillään paljon puhuttu digiloikka, jonka raameihin Pokitto soveltuu loistavasti. Pokittolla tämä on jo nyt täysin toteutettavissa. Jokainen ryhmä valitsee osien värit, kerää komponentit ja kokoaa Pokitton alusta loppuun. Kuvitellaanpa seuraavanlainen oppitunti peruskoulussa: Luokassa on pöydällä laatikoita, joissa on erilaisia Pokitton osia, kuten näyttöjä, piirilevyjä, erivärisiä kuoria, näppäimiä ja ristiohjaimia. Joko EmBitztai Mbed-kehitysympäristöjä voi käyttää ohjelmien tekemiseen Pokitto-laitetta varten. Todisteena simulaattorin käyttökelpoisuudesta ja myös yhteisön aktiivisuudesta on se, että Pokittolle oli yhteisön toimesta valmiina tai valmisteilla toistakymmentä peliä ja muuta ohjelmaa jo ennen kuin ensimmäistäkään laitetta oli toimitettu Kickstarter-tilaajille! Nykyään erilaisia pelejä ja demoja on ladattavissa jo kolmisenkymmentä, ja niiden lukumäärä kasvaa Pokitton kotisivulla jatkuvasti, kun yhä uudet koodarit saavat laitteen käsiinsä. Oppitunnin lopuksi opettaja kertoo uusia ja mielenkiintoisia asioita elektroniikasta ja ohjelmoinnista. Niitä on paljon erilaisia: lämpöanturi, kamera, kompassi, kiihtyvyysanturi, jne. Sen kautta voidaan helposti hallita muun muassa Pokitton grafiikkaa, ääntä ja näppäimiä. Se tukee muun muassa laitetason debuggausta, joka tosin vaatii lisälaitteen Pokittoon. Kysymyksiä ja uusia ideoita siitä, mitä kaikkea Pokittolla voisi tehdä, suorastaan satelee ilmassa. Kaikki onnistuu vain muutamalla yksinkertaisella Pythonkomennolla! Näin jokainen ryhmä on valmis tekemään pienen Python-ohjelman, joka hyödyntää hatun ominaisuuksia. Jokainen ryhmä esittelee luomuksensa muille oppilaille ja opettajalle. PyGamen käyttäminen helpottaa myös Python-pelien ja muiden sovellusten siirtämistä eri käyttöjärjestelmistä Pokittolle. Sen jälkeen oppilaat saavat valita ”hatun” eli lisämoduulin Pokittoonsa. Nopeimmat oppilaat rakentavat Legoista vielä aiheeseen sopivan telineen tai alustan Pokittolle ja kiinnittävät laitteen siihen. Olisitko sinä viihtynyt tällaisella oppitunnilla. Simulaattorilla voi kehittää ohjelmia ilman varsinaista Pokittolaitetta, käyttäen C-, C++-, assemblertai nyt myös Python-kieltä. tysympäristö, joka ei vaadi minkäänlaista asennusta vaan on käytettävissä mistä tahansa nettiselaimesta. Seuraavalla oppitunnilla jokainen ryhmä voi joko kehittää ohjelmaansa eteenpäin tai koota uuden Pokitton ja valita siihen jonkin toisen hatun. Koska olen itse harrastanut paljon pelikoodausta ja se on mielestäni mainio tapa tutustuttaa lapsia ohjelmointiin, päätin siirtää Pokittolle myös osia Pythonin PyGame-pelikirjastosta. Isompaa tai pienempää säätöä voivat vaatia esimerkiksi sovittaminen laitteen pienemmälle suorituskyvylle, erilainen ruudunpäivitysnopeus sekä direct screen -ominaisuuksien ja laajennusportin käyttö, joista jälkimmäistä ei voi vielä simuloida ollenkaan. Ohjelmointia ja elektroniikkaa lapsille Kun itse lähdin miettimään Pokitton mahdollisuuksia lasten tutustuttamisessa tietotekniikkaan, alkoi nopeasti kirkastua ajatus, että puuttuva lenkki muuten kattavassa systeemissä oli helposti lähestyttävä ohjelmointikieli. Itse olen saanut aikanaan ensikosketuksen ohjelmointiin Basic-kielellä, josta siirryin sujuvasti konekieleen. # Ladataan kirjastot import upygame as upg import urandom as random # Alustetaan näyttö upg.display.init() screen = upg.display.set_mode() # Luodaan bittikartta, jossa on kaikki oletuspaletin värit (16 kpl) pokittoPixels = [ 0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef ] surf = upg.surface.Surface( 16, 1, bytearray( pokittoPixels ) ) # Piirtosilmukka while True: # Piirretään näyttöpuskuri täyteen bittikarttoja for x in range( 7 ): for y in range( 88 ): screen.blit( surf, x*16, y ) # Piirretään näyttöpuskuri ruudulle upg.display.flip(). MBed sen sijaan on hieman rajoitetumpi online-kehiYksinkertainen MicroPython-ohjelma. Valmis Python-koodi siirretään USBkaapelin tai muistikortin kautta Pokittoon. Siitä huolimatta peleihin pitää lähes aina tehdä jotain muutoksia, jotta Pythonohjelma toimisi PC:tä rajoitetummassa MCU-laitteessa. Yleensä simulaattorissa testattu ohjelma toimii melko hyvin jo sellaisenaan, kun sen kääntää laitteelle ja flashaa Pokittoon. 17 nen, nykyaikainen kehitysympäristö ja sisältää muun muassa visuaalisen debuggerin
Laitteessa on RAM-muistia vain 36 kilotavua, ja siitä haukkaa oman osansa näyttöpuskuri sekä Pokitton systeemiohjelmiston käyttämä kekoja pinomuisti (heap ja stack). Kyseessä on siis helposti opittava, tulkattava olio-pohjainen ohjelmointikieli. BBC-yhtiö on lahjoittanut näitä laitteita Ison-Britannian seitsemäsluokkalaisille noin miljoona kappaletta ohjelmoinnin ja elektroniikan harjoitteluun. MicroPythonin siirto Pokittolle Aloitin MicroPythonin siirtämisen Pokittolle ”minimal”-projektista, joka on pienin mahdollinen MicroPythonkonfiguraatio. m1.on() Esimerkki GPIO-nastaan kirjoittamisesta esim. Päädyin varaamaan Pythonin käyttöön noin 20 kt kekomuistia, josta siis varataan tilaa dynaamisesti luoduille Python-objekteille ja esimerkiksi interaktiivisen komentotulkkitilan aikana ladatuille Python-ohjelmille. Kampanjan yhteydessä valmistettiin MCU-pohjainen PyBoard-piirilevy, jota on nyt myyty jo yli 10 000 kappaletta. Tämä on luonnollista, koska MicroPython on suunniteltu käytettäväksi sulautetuissa järjestelmissä, joissa on vain vähän muistia ja prosessoritehoa. Myös RAM-muistiin (muistikortilta tai USB# Ladataan Pin-luokan sisältävä kirjasto. 2 1 8 . Sen kielioppi ja komennot ovat hyvin pitkälle samat kuin Pythonissa, mutta systeemikirjastot on toteutettu vain osittain. Tästä syntyi avointa lähdekoodia oleva MicroPython-ohjelmointikieli, jota varten hän keräsi noin 100 000 puntaa Kickstarter-kampanjalla. MicroPythonissa on myös käytössä oma mpy-tiedostomuoto, joka on valmiiksi tavukoodiksi käännettyä Python-koodia. from umachine import * # Luodaan Pin-objekti pinniin 14 kirjoittamista varten. BBC micro:bit on pieni näytötön piirilevy, jossa on valmiina MCU:n lisäksi ledejä, sensoreita, painonappeja, laajennusliitäntöjä, Bluetooth ja USB. Näin koodi vie vähemmän tilaa ROM-imagella. Koska RAM-muistia on näin vähän, mahdollisimman suuri osa Python-koodista kannattaa laittaa ROM-imagelle. Damien halusi selvittää, voisiko niiden sijaan käyttää jotain Pythonin tapaista tulkattavaa korkeamman tason kieltä. Erillinen projekti oli PyGame-siirros, uPyGame, jossa kopioin osia PyGamen Python-skripteistä sekä toteutin Python-luokkia C-kielellä MicroPythonia varten. 1 18 Python ja MicroPython Python-ohjelmointikieli on varmasti vähintäänkin nimenä tuttu suurimmalle osalle lukijoista, sillä se on kehitetty jo 90-luvun alussa. Python ei suoraan soveltunut, koska sen muistinkäytön ja prosessoritehon vaatimukset olivat aivan liian suuria. Jos koodi on vielä käännetty tavukoodiksi, se voidaan suorittaa suoraan ROMmuistista, jolloin RAM-muistia ei kulu itse ohjelmakoodin talletukseen. Pythonissa on käytössä roskienkeruumuistinhallinta (garbage collection, GC), joka hallitsee kekomuistin käyttöä ja poistaa sieltä tarpeettomia objekteja. Käytännössä porttaus koostui pääosin Pythonin käynnistämisen integroinnista Pokitton startup-koodiin, sopivan MicroPythonkonfiguraation luomisesta Pokittoa varten sekä sidontafunktioiden tekemisestä Pythonin ja Pokitton systeemiohjelmiston välillä. Tavoitteena oli riittävän hyvän pelintekokirjaston toteutus. Pokitton 256 kilotavun ROM-muistiin eivät Pokitto-systeemiohjelmiston lisäksi millään mahtuisi edes kaikki Pythonin systeemikirjastot, puhumattakaan lisäkirjastoista, joita löytyy runsaasti eri tarkoituksiin. George. Sulautetuissa ympäristöissä on perinteisesti käytetty ohjelmointikielenä C-, C++ja assembler-kieliä. MicroPython on saatavilla monille muillekin MCUpohjaisille piirilevyille sekä muun muassa Raspberry Pi’lle, Windowsille ja Linuxille. Yksi merkittävä merkkipaalu saavutettiin, kun BBC:n micro:bit-laite otti MicroPythonin yhdeksi ohjelmointikielekseen. Niinpä Damien teki Pythonin kokonaan uusiksi niin, että sekä ajonaikaista (RAM) että pysyväismuistia (ROM) käytetään niin vähän kuin mahdollista ja että systeemi toimii ilman varsinaista käyttöjärjestelmää. m1 = Pin( Pin.EXT14, Pin.OUT ) # Asetetaan nastan tilaksi ”high”. MicroPython on suunniteltu juuri tätä silmällä pitäen ja Pythonin ominaisuuksia ja valittuja kirjastoja onkin helppo muokata konfiguraatiotiedoston avulla. Koska MicroPython on avointa koodia, on onneksi helppoa tehdä omiin tarpeisiiin räätälöity ROM-image ja flashata se Pokittoon. ulkoisen DC-moottorin ohjausta varten.. MicroPython on osajoukko Pythonista. MicroPythonin on kehittänyt englantilainen teoreettista fysiikkaa, robotiikkaa ja tietokonetekniikkaa opiskellut Damien P. Siinä on mukana vain kaikkein välttämättömimmät Pythonkirjastot ja -moduulit
Siinä samalla on tarkoitus opettaa lapsilleni elektroniikkaa ja Python-ohjelmointia. Tein Python-demon, jossa piirretään ruudulle 100 kertaa 16×16 pikselin kokoinen bittikartta. Minimissään se voi jopa tarkoittaa vain yhtä pientä muutosta MicroPythonin konfiguraatiotiedostoon. Käännettyäni pelin Pokittolle näyttö päivittyi vain noin kerran sekunnissa! Tämän vuoksi muutin toteutusta niin, että taustakuva piirretään vain kerran ohjelman alussa, mutta aluksen liikkuessa sen taakse piirretään ensin riittävän kokoinen pala taustakuvaa (dirty rectangle -algoritmi). 19 portin kautta) ajon aikana ladattu koodi on mahdollista esikääntää tavukoodiksi, jolloin muistia ei vaadita väliaikaisesti siihen, että MicroPythonin täytyisi kääntää koodi ennen sen ajamista. Homma pysähtyi kuitenkin jo ennen puoltaväliä muistin loppumiseen. Ei pelkästään koodaamista MCU-pohjaiset laitteet ovat otollista maaperää kaikenlaisille rakenteluprojekteille. Hetken tutkittuani selvisi, että yksi instanssi vie muistia noin 250 tavua jäsenmuuttujien varaaman muistin takia, joten pelkästään spritejä varten olisi pitänyt olla käytettävissä 25 kt kekomuistia! Toinen esimerkki on peli, jota kehitin aluksi Windowsin Pokitto-simulaattorissa. Alkuperäiset tekijät ja yhteisö kehittävät varsinaista MicroPythonprojektia edelleen aktiivisesti, ja siihen lisätään yhä uusia ominaisuuksia. Se toimi mainiolla 16 kuvan sekuntinopeudella. Tämän projektin aikana tein MicroPythoniin tuen GPIO-pinnien lukemiseen ja kirjoittamiseen. Myöskään kaikki GPIO-pinneihin liitettävät ulkoiset komponentit eivät välttämättä toimi Pokittosta saatavalla 3,3 voltin jännitteellä vaan niitä varten tarvitaan esimerkiksi erillinen virtalähde. MyösLego-auton runkoon rakennettu vielä keskeneräinen Pokitto-robottiauto. Itse olen muuntamassa alun perin Raspberry Pi’lle suunniteltua itseohjautuvaa robottiautoa Pokittolle. Koska koodi on avointa, kuka tahansa voi jatkaa työtä ja ottaa käyttöön uusia hienoja ominaisuuksia. Kun näitä projekteja soveltaa Pokittolle, pitääkin olla tarkkana, ettei pinneistä sisääntuleva jännite ylitä 3,3 volttia. Simulaattorissa kaikki näytti hyvältä ja sujuvalta. Koodikannassa on valmiina lukuisia ominaisuuksia, joita en ole vielä ehtinyt kokeilemaan tai ottamaan käyttöön, kuten Python-pakettien tukeminen, kuvien ja muiden oheistiedostojen talletus ROMiin ja upotettu assembler-koodi. Pokittolle ohjelmien koodaaminen ei ehkä tuota miljoonia euroja, mutta sen kanssa ohjelmointi ei tunnu työltä, vaan se on taas yksinkertaista, helppoa ja hauskaa!. Suhteellisen pienelläkin elektroniikan tietämyksellä voi muuntaa vaikkapa Raspberry Pi’lle tai Micro Bitille tehtyjä projekteja Pokittolle. Tästä innostuneena ajattelin kokeilla 100 bittikartan animointia samaan aikaan ruudulla. Projektini ensimmäinen osa suomenkielisine kurssimateriaaleineen löytyy Pokitton kotisivuilta Wiki-osiosta. Pokitton piirilevyllä käytetään uudempaa 3,3 voltin teknologiaa, joka säästää virtaa. Valoisa tulevaisuus Jonne Valolan mukaan Pokitto laitteena ei suinkaan ole valmis, vaan se tulee kehittymään tulevaisuudessa. www.pokitto.com www.pokitto.com/learn/ (Pokitto-wiki) www.micropython.org www.pygame.com kään Pokitton MicroPython-projekti ei missään tapauksessa ole valmis, vaikka se on nyt osa Pokitton virallista kehitysympäristöä. Pokittolla se on helppoa, sillä PEX-liitännässä on 26 nastaa, joiden välityksellä lisälaitteet voivat kommunikoida MCU:n kanssa. Monissa MCU-rakenteluprojekteissa käytetään kuitenkin vielä 5 voltin jännitettä. Helppoa ja hauskaa ohjelmointia Olen vuosia taistellut Unityn ja muiden jättimäisten ohjelmistorajapintojen ja sovelluskehittimien kanssa ja yrittänyt kovalla työllä taivuttaa niitä tekemään, mitä haluan. Siinä piirrettiin joka ruudunpäivityksellä taustakuva ja sen päälle alus. Pokitto tuo raikkaan tuulahduksen jännittävältä 80-luvulta, höystettynä nykypäivän IoT-yhteensopivalla raudalla ja tulevaisuuden laajennusmahdollisuuksilla. Tein periyttämällä PyGamesta oman animoidun sprite-luokan ja aloin luoda instansseja siitä. Rajoitettua koodausta, rajoittamatonta ongelmanratkaisua Koodaus rajoitetussa ympäristössä tuottaa yllättäviä haasteita. Kekomuistin pirstaloituminen on sekin todellinen ongelma näin pienillä muistimäärillä ja se pitää ottaa huomioon koodia kirjoitettaessa
Ohjaajaa harmittaa, koska lapsen peli vaikuttaa olevan keskeneräinen ja rikki. Tasoerot lasten välillä ovat suuret, ja se vaikuttaa kerhoon, vaikka Scratchia voi oppia kuka tahansa lukutaitoinen. Koska ohjelmointi on käsityötä, koetetaan lapsia kerhossa kannustaa tekemään mahdollisimman paljon itse. Tämän jutun kokemukset pohjautuvat ohjelmointikerhoihin, joita järjestää Skrollin kuumin Scratch-kontakti, Helsingin yliopiston Linkki-resurssikeskus. Oma toteutus voi kuitenkin tuntua niin henkilökohtaiselta, ettei se kestä ulkopuolisen korjausvinkkejä. Tapoja kiinnostua ohjelmoinnista on yhtä paljon kuin ohjelmoijiakin. Jos apua ei halua koskaan kysyä, voi edistyminen ja harrastus tyssätä siihen, kun vastaan tulee ongelma, johon ei keksi ratkaisua. Kerholaisten taitojen kasvaessa siirrytään mallikoodista kirjallisiin ohjeisiin, joita seuraamalla pelin pitäisi syntyä. Tää EI TOIMI. Ohjaajan haaste on yrittää tehdä kerhosta sellainen, että suurin osa lapsista saisi opetuksesta jotakin irti. 1 20 V aara uhkaa! Ohjelmoinnista tulee kansallistaito, kun kaikille opetetaan sitä jo peruskoulussa. Skrollin numerossa 2017.3 esittetiin Scratch-leluohjelmointikieltä. Lapset ohjelmoijan opissa Tarinoita Scratchin ammattilaiselta Helsingin yliopiston Linkki-resurssikeskus kertoo opettajan perspektiivistä mitä tapahtuu, kun 2000-luvun lapset kohtaavat ohjelmoinnin ensimmäistä kertaa. 2 1 8 . Nyt on aika tarkastella, millaisia nämä Scratchilla aloittavat tulevaisuuden superhakkerit ovat. Miksei kukaan auta HEI OPE.” Toisessa ääripäässä ovat hiljaiset, jotka eivät tahdo näyttää koodiaan ohjaajalle edes pyydettäessä. Lapset saavat kysyä apua milloin tahansa, mutta jos kaikki ohjaajat ovat juuri auttamassa jotakuta muuta kerholaista, joutuu omaa vuoroaan odottamaan. Tutkailtavana ovat keskimääräisten alakoululaisten sijaan valitut lapset, jotka ovat tulleet kerhoihin enemmän tai vähemmän omasta aloitteestaan. Toiset lapset myös omaksuvat ohjelmointia paljon toisia nopeammin. Ensin diginatiivit vievät työpaikat, ja seuraavaksi lasten näppäimistöiltä manattu supertekoäly nielaisee meidät kaikki. Aloittelijoiden kanssa koodia näytetään luokan edessä malliksi, sillä jo Scratch-palikoiden löytäminen ja asetteleminen oikeisiin kohtiin vaatii opettelua. Liian helppoa vai liian vaikeaa. Teksti: Ada-Maaria Hyvärinen Kuvat: Kuvat: Ada-Maaria Hyvärinen, Mitol Meerna, Arto Wikla Koodi. Jotkut kerholaiset ilmaisevat avuntarpeensa avoimesti, esimerkiksi: ”Ope hei OPE MÄ TARVIIN APUA. Lopulta lapsi osaa toivottavasti koodata tarpeeksi, jotta voi tehdä projekteja omien ideoidensa pohjalta. Nämä ohjelmoinnista kiinnostuneet ja siinä mahdollisesti keskimääräistä paremmin pärjäävät lapset eivät kuitenkaan ole mikään homogeeninen ryhmä. Toisaalta ohjelmoijan kannattaa kokeilla ensin itse miettiä pulmiaan ja vasta sitten pyytää apua, koska muuten ei saa tehtyä mitään, jos tukihenkilö ei ole saatavilla