30.12.2012

Kookle auki, mummoja liikenteessä


Perinteiset pankkipalvelut ovat nykyään lähinnä muisto menneisyydestä, sillä käytännössä jokaisen täytyy omistaa tietokone ja maksaa - joskus huonostikin toimivasta - nettiyhteydestä hoitaakseen laskut ilman kohtuutonta rahastusta. Myös eräs pankkivirkailijana toiminut, nykyisin eläkkeellä oleva lähisukalaiseni on joutunut sopeutumaan tilanteeseen.

Monelle ikäihmiselle tietokoneet ovat monimutkaisia ja aluksi ehkä pelottaviakin värkkejä. Useimpien tietokoneen käyttötaito on tyttären tai naapurin pojalta opittua mekaanista toimintaa; sukulaisellani on tapana kirjata muistivihkoonsa yksityiskohtaisesti jokainen hiiren napsautusta vaativa vaihe symbolikuvien kera ja seurata näitä ohjeita orjallisesti alusta loppuun. Tyypillisen seniorikäyttäjän tiedot ja taidot eivät riitä virhetilanteiden ja ongelmien ratkaisemiseen, ja myös koneiden tietoturva lienee usein retuperällä.

Yhteiskunta muuttuu ja kehittyy jatkuvasti, ja monesta tuutista toitotetaan tietoteknisten taitojen olevan jo osa kansalaistaitoja. Toki kansalaisopistot tarjoavat ikääntyville suunnattuja tietokonekursseja, mutta jos ja kun suunnilleen ainoa syy tietokoneen käyttämiseen on laskujen maksaminen, ei oppimismotivaatio välttämättä ole aivan huipussaan. Tai vaikka oppimismotivaatiota olisikin, ei kaikilla vanhuksilla ole enää riittävästi kykyä omaksua monimutkaista uutta teknologiaa.

Usein jätetään kuitenkin huomioimatta, että myös tietotekniikka voisi tulla omalta osaltaan vastaan tässä asiassa. Koneen tehtävä on palvella ihmistä, ei päinvastoin. Oman kokemukseni mukaan jo pienillä muutoksilla, vaikkapa minimoimalla nettiin pääsemiseksi tarvittavien toimenpiteiden määrä, voidaan madaltaa huomattavasti tietokoneen käyttökynnystä. Sukulaiseni kohdalla pelkästään se, että nettiin pääsee varmasti ja suht' nopeasti ilman muistivihkon apua, on muuttanut hänen suhtautumistaan tietokoneisiin.

"SenioriOS"

Hankin taannoin sukulaiselleni työnantajalta käytöstä poistetun, kolme vuotta vanhan pöytäkoneen laskujen maksamista ja nettisurffailua varten. Hän hankki koneeseen DNA:n mobiililiittymän, joka päätti päivästä riippuen joko a) jättää kokonaan yhdistämättä tai b) siirtää dataa GPRS:llä. Kun hyvänä päivänä nettiyhteys, ehkä pienen taistelun jälkeen muodostui, koneen käyttöjäjestelmänä ollut Windows 7 päätti ensimmäisen puoli tuntia latailla päivityksiään. Ja silloin tällöin kävi tietysti niin, että nettiyhteys katkesi kesken päivitysihanuuden. Lisäksi Windowsin käyttöliittymä sisältää niin monia vipstaakkeleita, että ei ole lainkaan ihme että harvoin konetta käyttävät henkilöt joutuvat turvautumaan jatkuvasti ohjeisiin, varsinkin jos osaaminen on mekaanista. Sukulaiseni tilannetta ei aivan optimaaliseksi voinut kutsua, kun käyttötukena oli vain muistivihkollinen lyijykynämerkintöjä ja ongelmat enemmän sääntö kuin poikkeus.

Tuskastuttuaan tilanteeseen hän toi koneen ja nettitikkunsa lopulta huollettavaksi. Kyselin käyttäjälähtöisen suunnittelun periaatteiden mukaisesti, että mitäs rouva haluaa oikeasti koneellaan tehdä. "Kunhan saa laskut maksettua. Ja kooklen auki". Konetta ei saa maksamaan laskuja itsenäisesti, mutta mikäli järjestelmä tekisi automaattisesti kaikki valmistelut nettiyhdeyden muostamisesta selaimen avaamiseen, olisi käyttäjän muistikuormaa kevennetty jo jossain määriin. "Ja ne vaihtuvat maisemat (taustakuvat) olivat kivoja". OK, täytyyhän silmäkarkkia aina vähän olla. Selvät speksit, eikun hommiin.

Koska Windowsille käyttämiselle ei ollut mitään perusteltua järkisyytä, päätin asentaa sen rinnalle CrunchBang Linuxin. CrunchBang on Debianiin perustuva jakelu, joka ei varsinaisesti ole optimoitu vanhoille koneille, mutta toimii hyvin niukoillakin resursseilla. Se on erittäin stabiili, eikä tarjoa koko ajan rekkakuormallista paketteja päivitettäväksi. CrunchBangin käyttämä OpenBox-ikkunamanageri on pelkistetty ja - mikä parasta - se antaa mahdollisuuden konfiguroida itsensä vieläkin pelkistetymmäksi. Eli juuri tähän tarkoitukseen soveltuva systeemi.

CrunchBangilla kone boottasi pienen säätämisen jälkeen noin 30 sekunnissa, mikä on kaikin puolin siedettävä aika. Ensimmäinen  varsinainen ongelma olikin nettitikku, sillä DNA:n toimittama Nokia CS-17 oli toimintavarmuudeltaan ... hmmpf.... kuinka sen nyt nätisti sanoisi... noh, kuraa. Onneksi itselläni oli aiemmasta Saunalahden liittymästä ylimääräiseksi jäänyt vanha Huawei E160 -nettitikku, jonka operaattorikohtainen lukitus oli helppo poistaa. Minicomia käyttämällä tikulle sai lisäksi annettua muutaman tarpeellisen AT-komennon sen toiminnan nopeuttamiseksi ja parantamiseksi.

Nettitikun toimiessa tolkullisesti oli seuraavana mietintäkohteena nettiyhteyden automatisointi. CrunchBang sisältää oletuksena NetworkManagerin, mutta sen ja nettitikun yhteiselossa on joskus ollut ongelmia - etenkin jos kone käynnistetään täysin virrattomasta tilasta (sukulaiseni haluaa, että sähkölaitteet eivät ole käyttämättöminä stand-by-tilassa, minkä vuoksi ne sijoitetaan kytkimellä varustetun jatkojohdon päähän). Päädyin tämän vuoksi muodostamaan yhteyden vwdialialla, jonka konfiguroimiseksi Gentoo-wikistä löytyi selvät sävelet. Nyt kone hönki jo automaattisesti nettiin, mutta surffailuun tarvitaan luonnollisesti selainta. Tyypillisten "missä kookle?"- ja "eikö tää toimikaan?" -kysymysten välttämiseksi kirjoitin skriptin, joka avaa Chrome-selaimen automaattisesti heti nettiyhteyden muodostuttua.

Koneen sammuttaminen CrunchBangin omalla toiminnallisuudella vaatii hiiren oikean painikkeen napsauttamista työpöydällä, exit-toiminnon valitsemista avautuneesta popup-valikosta ja vielä shutdown-painikkeen napsauttamista. Koska sammuttamisessa on liian paljon muistamista, päätin yksinkertaistaa toimenpiteen lisäämällä yläpaneeliin kuvakkeen, jonka napsauttaminen sammuttaa koneen hallitusti mitään kyselemättä. Näiden temppujen jälkeen uuden systeemin käyttäjäkoulutus on lyhyt: "Paina tietokoneen virtakatkaisinta, odota rauhassa kunnes selainohjelma avautuu, maksa laskut tai surffaile ja lopuksi sammuta kone napsauttamalla vasemassa ylälaidassa olevaa jalkapohja-kuvaketta". So simple and nice.

Systeemi on toiminut hyvin, ja koneelle on löytynyt jo muitakin käyttökohteita, sillä nyt myös digikameran valokuvat ovat löytäneet tiensä kiintolevylle. Positiivinen onnistuminen ruokkii halua oppia uutta. Kun työpyödällä ei ole tehtävän kannalta ylimääräisiä nippeleita, eikä toimintoja ole piilotettu valikoiden tai sovellusikkunoiden taakse, on käyttäjän helpompi muistaa kunkin nippelin merkitys. Täten myös kokonaisuus on helpompi ymmärtää. Alla olevasta kuvasta näkyy työpyödän minimalistisuus. Työpöydällä on auki Chrome-selain, vasemmassa yläkulmassa olevan jalkapohja-ikonin (Gnome-logon uudelleenkierrätystä :)) napsauttaminen sammuttaa koneen ja sen vieressä oleva kuvake (lisätty myöhemmin) avaa valokuvien hallinnointiin tarkoitetun Shotwellin. Ylhäällä oikealla olevan ilmaisinsalueen (system tray) olisi voinut poistaa kokonaan, mutta jätin sen yhteysongelmien varalta: mikäli wvdial ei jostain syystä onnistu muodostamaan nettiyhteyttä, voi sitä yrittää manuaalisesti NetworkManagerin kautta (skripti ohjaa kyseiseen toimenpiteeseen, mikäli yhteys ei ole muodostunut minuutin kuluessa). Tähän tosin ei ole ollut tarvetta kertaakaan.  Oikealla näkyvä info-laatikko on conky, jossa on listattu hieman statistiikkaa koneesta ja nettiyhteydestä.


Entäs ne vaihtuvat taustakuvat? Pieni skripti, joka ajastetaan cronilla lukemaan images-hakemiston jpg- ja png-tiedostot ja valitsemaan satunnaisesti jokin kuva taustakuvasta huolehtivalle nitrogen-ohjelmalle. Koska nämä surffaussessiot eivät kestä tunteja, päätin lopulta ajastamisen sijaan kutsua taustakuva-skriptiä OpenBoxin autostart-skriptistä, joten taustakuva vaihtuu käynnistyksestä toiseen, mutta ei kesken surffailusession. 

Mikä tämän jutun pointti sitten oli? Teknologia on vierasta monelle ihmiselle, ei pelkästään ikääntyneille. Jo pienillä toimenpiteillä voidaan parantaa käyttökokemusta - se on vain halusta ja välineistä kiinni. Käyttöjärjestelmän sovittaminen seniorikäyttäjän ominaisuuksien ja hänen tarpeiden mukaiseksi palvelee sekä käyttäjää itseään mutta myös sinua hänen mikrotukihenkilönään ;)



2.12.2012

Harmaiden aivosolujen jumppausta


Vanhoja tiedostoarkistoja kaivellessa silmiini sattui bfuck-niminen hakemisto, jonka alta ei kuitenkaan paljastunut aikuisviihdettä, vaan muutamia Brainfuck-ohjelmointikielellä kirjoitettuja ohjelmapätkiä. Brainfuck (BF) on Urban Müllerin 1993 kehittämä minimalistinen ohjelmointikieli, jossa on vain kahdeksan komentoa. Kieli ei sovellu käytännön ohjelmointitehtäviin, vaan "tarjoaa älyllistä haasteta ja hupia" kuten edellä linkatussa Wikipedian artikkelissa asia ilmaistiin. Joskus on ilmeisesti ollut tekemisen puutetta meikäläiselläkin :)

Jos torstain linnanjuhlien 384 kättely alkaa lamauttamaan aivotoimintaasi, niin tarkastelepas alla olevaa BF-koodia ja selvitä mitä se tekee. Tämä on luultavasti sopivaa jumppaa myös joulukinkun rasvojen hidastamille harmaille aivosoluille. Sitä ennen kuitenkin opiskellaan BF:n kahdeksalla erilaisella merkillä esitettävät komennot. Koko ohjelmointikieli näyttää yksinkertaisuudessaan seuraavalta:

> kasvattaa osoitinta yhdellä (siis siirtyy osoittamaan seuraavaa tavua) ja < vähentää osoitinta yhdellä

+ kasvattaa osoittimen osoittaman tavun arvoa yhdellä ja - vastaavasti vähentää tavun arvoa yhdellä

. (piste) tulostaa osoittimen osoittaman tavun arvoa vastaavan ASCII-merkin

, (pilkku) lukee syötteestä tavun ja tallentaa sen osoittimen osoittamaan paikkaan

[ aloittaa esiehtoisen silmukan (while), josta poistutaan osoittimen osoittaman tavun ollessa nolla

] lopettaa silmukan, jolloin hypätään takaisin vastaavaan [-kohtaan, mikäli osoittimen osoittama tavu ei ole nolla

Näillä siis mennään. BF-tulkit saattavat sisältää myös debuggaamiseen liityviä lisäkomentoja, mutta ne eivät ole osa varsinaista Brainfuckia. Kuten varmaan arvasitkin, BF-ohjelmien koodi näyttää melkoisen mystiseltä. Lämmitellään aluksi ensimmäisessä artikkelissani viittaamani Hello World! -tekstin tulostavan ohjelman koodilla:

++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.


Sillä viissiin. Nyt sitten harmaisiin aivosoluihin liikettä - mitä siis seuraava ohjelma tekee?

>++++++++++[->++++++++++>+++++++++++>+++>++++++<<<<]
>+.>.++++++.<.>--. >++.<+++++.--------.+++.<-.>>>--.<.
<<<----------[>,----------]<[++++++++++.<]++++++++++.

Pelkän BF-koodin tulkinta on melkoista extreme-hommaa, ja koska jokaisessa kunnon ohjelmassa on kommentteja mukana, niin seuraavaksi yllä olevan koodin kommentoitu versio. Brainfuckissa ei tarvita erillistä kommenttimerkkiä, sillä ainoastaan kielen omat kahdeksan komentoa tulkitaan.

>++++++++++               tavu(1)=10
[-                        silmukan alku / tavu(1)=9
>++++++++++  kasvata tavu(2) 10
>+++++++++++  kasvata tavu(3) 11
>+++  kasvata tavu(4) 3
>++++++  kasvata tavu(5) 6
<<<<  siirry takaisin ykköseen
]  silmukan loppu 

  arvot tässä tavu(0)=0 tavu(1)=0 
  tavu(2)=100 tavu(2)=110 tavu(4)=30 tavu(5)=60

>+.>.++++++.<.>--.        tulosta sana enter / tavu(2)=101 & tavu(3)=114 
>++.                    tulosta välilyönti / tavu(4)=32
<+++++.--------.+++.<-.   tulosta sana word / tavu(2)=100 & tavu(3)=114

>>>--.<.                 tulosta kaksoispiste ja välilyönti / 
                          tavu(4)=32 & tavu(5)=58

<<<---------             Siirry tavuun 1 / tavu(1)=-10
[  lukusilmukka alkaa
>,  lue syöte
----------              vähennä 10
]                       lukusilmukka loppuu jos painettu enteriä

<                       siirry edelliseen
[                       tulostussilmukka alkaa
++++++++++.              lisää 10 ja tulosta merkki
<                       siirry edelliseen
]
++++++++++.

Toki voit myös fuskata ja asentaa Brainfuck-tulkin koneellesi. Näitä löytynee suunnilleen jokaiselle Linux-jakelulle (Arch Linuxin AUR:sta löytyvä brainfuck-parser ainakin hoitaa hommansa hyvin) ja myös Windowsille on melko varmasti omat ohjelmansa.

Happy Brainfucking!