Alkuperäinen 23.04.2009, täydennys 27.6.2022
FT Vesa Lappalainen
Jyväskylän Yliopisto
Tietotekniikan laitos
PL 35
40014 AGORA
puh: 014-2602722
vesal@jyu.fi
Tuotantoni ja toimintani sulautettujen järjestelmien ja ohjelmistotekniikan parissa
Olen aina pitänyt itseäni tutkijana, keksijänä sekä innovoijana, joka vie ajatukset myös valmiiseen toteutukseen saakka.
Tarkastelen seuraavassa toimintaani ja tuotantoani sulautettujen järjestelmien ja ohjelmistotekniikan piirissä aluksi aikaperspektiiviä käyttäen ja myöhemmin summaten asioita tehtäväaloittain. Hieman tarkastelen samalla myös sitä, miten olen opetuksessani ottanut aina nopeasti käyttöön uudet tekniikat jopa ennen kuin muualla on vastaavaa tehty.
Kuvailisin toimiani läpileikkauksena koko tuotannostani seuraavasti:
- eturintamassa otettu käyttöön tekniikoita, jotka ovat myöhemmin yleistyneet muuallakin
- testaa ajoissa
- ole asiantuntija siinä mistä sovellusta teet
- asiakas mukana
- ideasta tuotteeksi
- pitää päästä siihen, että asiat tehdään vain yhden kerran yhdessä paikassa
- ohjelmien ja järjestelmien välinen kommunikointi
Tässä kirjoitelmassa käyn ohjelmistokehitykseni historiaa läpi aikajärjestyksessä. Tämän ohella on toinen kirjoitus, jossa käyn samaa lyhennettynä läpi aihepohjaisesti.
1. Kouluaika ja testaaminen
1.1 Laskutikku
Yksi oleellinen asia, miksi pärjäsin koulun matematiikassa muita paremmin, oli että kehitin menetelmiä käyttää laskutikkua tehokkaasti selvittääkseni onko jonkun mahdollisesti ei-numeerisenkin tehtävän ratkaisu oikein vai väärin.
1.2 Laskukone
Luonnollisesti heti kun ensimmäiset kohtuullisen hintaiset laskimet tulivat markkinoille 70-luvun puolivälin jälkeen, käytin samoja menetelmiä, mitä olin laskutikun kanssa oppinut käyttämään, myös laskimen kanssa. Abstraktista ongelmasta muodostin erilaisia konkreetteja esimerkkejä, joilla kokeilin, että onko yleisen version mahdollistakaan toimia. Nykytietämyksen perusteella nimittäisin tätä testaamiseksi ja tämä ajatusmalli on ollut pohjana lopulta kaikessa ohjelmisto- ja laitetuotannossani. Se mitä tehdään, pitää kokeilla toimivaksi mahdollisimman aikaisessa vaiheessa.
2. 10-laskureiden aika
Alkutuotantoni ja innostukseni kohdistui CMOS-logiikkapiireihin ja erityisesti erilaisilla laskuripiireillä tehtäviin toteutuksiin, joissa piirien ominaisuuksia sovellettiin innovatiivisella tavalla.
2.1 Kave 1 – -80
Lukioaikana ja ennen opiskeluiden aloittamista harrastin autosuunnistusta. Yksi oleellinen asia on aikataulussa pysyminen. Oli saatavilla kyllä kaupallisia "laskimia", jotka pystyivät tarvittavaan laskentaan, mutta lukiolaisen budjetille nämä olivat aivan liian kalliita. Elektroniikan yleismiehen, enoni Olli Hiltusen, avulla tutustuin elektroniikkaan ja logiikkapiireihin. Aluksi kokeilimme pystyisikö tarvittavat toiminnot toteuttamaan käyttämällä siihen aikaan olemassa olleita taskulaskimia käyttäen. Laskimet kuitenkin osoittautuivat liian hitaiksi reaaliaikaisen signaalin käsittelyyn.
Tutustuin enemmän CMOS-logiikkapiireihin ja sitten näiden avulla toteutimme hajautetun laskimen, jossa oli keskusyksikkö ja useita apunäyttöjä mm. kuljettajalla ja kartanlukijalle. Yksikkö kykeni kertomaan erittäin tarkasti kuljettua matkaa ja tavoiteaikaan vaadittavaa ajonopeutta. Innovaationa tässä järjestelmässä oli erityisesti logiikka, joka kompensoi renkaiden koosta ja ilmanpaineesta tulevaa pyörimisnopeuseroa. Oleellisena erona muihin laitteisiin oli käytön nopeus ja näyttöjen hajauttaminen ja informatiivisuus. Haittana oli se, että painopiste siirtyi pois itse kohdeharrastuksesta.
2.2 Kave 2 -80-luvun alku
Opiskeluiden alkuaikoina harrastin "tähtitiedettä". Erityisesti jäi harmittamaan kaukoputken suuntaaminen ja etsittävien kohteiden löytämisen vaikeus. Enoni ja veljeni Timo Lappalaisen kanssa lähdimme toteuttamaan järjestelmää, jonka tavoitteena oli se, että kaukoputki löytää taivaankohteet pelkästään antamalla kohteen tähtitieteelliset koordinaatit. Rihlaperässä oli sinänsä toimiva 2 metrin teleskooppi. Tehtävä osoittautui odotettua vaikeammaksi, niin mekaniikan, kuin elektroniikan, että käytettävissä olevien suuntausmoottoreiden osalta. Lopulta kuitenkin saimme valmiiksi logiikkapiireihin perustuvan laitteiston. Näin meillä oli ensimmäinen Suomessa valmistunut harrastajarakenteinen kaukoputken ohjausjärjestelmä. Järjestelmässä oli nerokkaasti käytetty CMOS-logiikkapiirien ominaisuuksia. Jälleen erityisesti kalibrointiin käytetyt piirikokonaisuudet olivat mielestäni innovatiivisia. Myöhemmin järjestelmän laskentaosa korvattiin VIC-tietokonepohjaisella järjestelmällä muiden harrastajien toimesta.
Tätä ja edellistä laitteistoa tehtäessä tuli usein vastaan tilanteita, joissa erilaisten signaalien ajoitusta tuli selvittää. Koska olimme liikkeellä olemattomalla budjetilla, ei meillä ollut testauslaitteita. Siksi piti itse kehittää mm. mittauskynä, johon voitiin tuoda kaksi eri signaalia, joista kynä pystyi kertomaan, että kummassa tapahtui muutos ensin. Kynä osoittautui niin tehokkaaksi työvälineeksi, että oskilloskoopin hankinta voitiin lykätä myöhemmälle ajalle. Tämä "keksintö" loi pohjaa myöhemmälle ajatusmallilleni siitä, että ennen työhän ryhtymistä, pitää tehdä työkalut, jolla työtä voidaan tehdä ja testata.
2.3 Kave 3, -80-luvun alku
Opiskeluiden rahoittamiseksi oli tehtävä jotakin ja sain kuulla ongelmista, jotka liittyivät kattopeltien profilointikoneiden paikoittamiseen. Olemassa olevat ohjausjärjestelmät olivat sikäli alkeelliset, että järjestelmät perustuivat vain laskuripiiriin, joka oikean mitan löydettyään käski radan pysähtyä. Mekaniikan toistumattomuuden takia tällä tavalla ei saatu haluttua tarkkuutta. Soveltaen tähtitornin ohjausjärjestelmästä saatua kokemusta toteutin yhdessä enoni kanssa laitteiston, joka poisti tuotannon ongelmat. Laitteisto perustui edelleen CMOS-logiikkapiireihin, jossa toiminnot oli jaettu tehtävien mukaan 3:lle eri piirilevylle. Laitteita toteutettiin myyntiprototyypin lisäksi 10 tuotantoversiota. Vaikka laitteistossa oli äärimmäisen ovelasti toteutettu jo alkeellista oppimista paikoituksesta, niin toki näin jälkeenpäin voi sanoa, että mikroprosessoripohjaisella järjestelmällä olisi voinut päästä parempaan tulokseen. Opiskelijan rahat eivät kuitenkaan tuolloin riittäneet tarvittavien kehitysympäristöjen hankintaan.
2.4 Testaaminen
Profilointilinja, jonka ohjaamiseksi Kave 3 oli suunniteltu, on kooltaan mahdollisesti 15-30 metriä pitkä. Jokainen leikattu pelti maksoi siihen aikaan n. 20-30 mk/m. Prototyyppilaitetta ei siis voinut kuvitella testattavan kovin merkittävässä määrin varsinaisessa tuotantokoneessa. Siksi kehitimme enoni kanssa simulaattorin, jonne voitiin viedä samat signaalit, kuin oikeaan profilointilinjaan. Tämä n. A4 kokoisella alustalla oleva simulaattori mittasi ja leikkasi laskukonenauhaa. Aikanaan laitteistoa esiteltäessä ja myytäessä sama simulaattori osoittautui äärettömän hyväksi havaintovälineeksi siitä, miten laitteisto voi auttaa tuotannossa. Oleellista kuitenkin oli se, että simulaattorin avulla mittalaitteen lastentaudit voitiin poistaa jo ennen oikeassa ympäristössä kokeilua.
2.5 Sisältöosaaminen
Merkittävä osa Kave 3 laitteiston toimintojen onnistumista oli se, että menin itse prototyypin kanssa tehtaaseen ja työskentelin siellä useita viikkoja seuraten, miten koneet toimivat ja mitä ja milloin työntekijät tekevät.
2.6 Kave Oy
Kave 3-mittalaitteen tuotantoa ja myyntiä varten perustimme 1981 perheyrityksen Kave Oy, jonka toimitusjohtajana olen toiminut perustamisesta saakka. Kave Oy on mm. saanut Dun & Bradstreet Finlandilta AAA sertifikaatin talousasioiden hoitamisesta. Kiitokset tästä toki kuuluvat äideilleni Aune Lappalaiselle. Tunnustus kuitenkin osoittaa, että Kave Oy ei ole koskaan ottanut tarpeettomia riskejä, on pystynyt aina toimittamaan mitä on luvannut ja kyennyt myös saamaan maksut tekemistään laitteista ja töistä.
3. Mikrotietokoneiden alkuaika
Vähitellen aika alkoi jättää pelkistä logiikkapiiripohjaisista sovelluksista ja piti tutustua enemmän mikroprosessoreiden ja mikrotietokoneiden tarjoamiin mahdollisuuksiin.
3.1 HP-taskulaskin
Opiskeluiden alkuaikana hankin ohjelmoitavan HP-41 taskulaskimen. Fysiikan töitä olin odottanut innolla, mutta ne osoittautuivat minulle pettymykseksi sen suhteen, että niissä ei päässyt innovoimaan mittaustapoja. Siksi mielenkiintoni kohdistuikin sitten enemmän siihen, että ennen mittaustyötä ohjelmoin laskimeen tarvittavat laskut ja pyrin siihen, että pystyin palauttamaan valmiin tutkitun työn välittömästi mittausten jälkeen. Siihen aikaan laskut muuten tehtiin hankalasti hitaalla modeemilla soittaen ATK-keskuksen keskustietokoneeseen.
"Hakkerointiin" kuului tietysti laskimen tehon nostaminen piiriä kellottamalla. Ylikellotuksen takia mm. kortinlukija lakkasi toimimasta ja tämän takia piti vielä erikseen piilottaa ylikellotuksen poistava kytkin kortinluvun ajaksi.
3.2 Canon kämmenkone
Puuhailuni tietokoneiden ja elektroniikan kanssa huomattiin matemaattisluonnontieteellisessä tiedekunnassa ja minua pyydettiin tuntiopettajaksi erityisesti mikrotietokoneisiin liittyen. Matematiikan laitokselle oli hankittu upouusi HP-87 tietokone. Opetuksen kannalta yksi kone oli aika vähän. Canonilta sain lahjoituksen käyttöön kaksi mikrotietokonetta, joissa oli värinäyttö. Tällä teimme muutamia demoja, jotka olivat käytössä valmistajan messuosastoillakin. Samoin Canonilla oli Basic-pohjainen kämmentietokone. Sain näitä lahjoituksena Canonilta 10 kappaletta kurssin käyttöä varten. Näin pystyimme pitämään kurssin, jossa osanottajat saivat kotiin vietäväksi ja kokeiltavaksi periaatteessa täysiverisen tietokoneen. Tuossa koneessa oli siihen aikaan innovatiivinen infrapunaan perustuva langaton tiedonsiirto, jota käyttäen pystyimme luennolla siirtämään malliohjelmia koneesta toiseen.
3.3 Ensimmäinen Kurki –1982
Kurssien byrokratian hoitaminen paperilappuja pyörittämällä alkoi tuntua turhauttavalta. Siksi jo hyvin aikaisessa vaiheessa rupesimme matematiikan laitoksella tekemään järjestelmää, jonka avulla voitaisiin hoitaa kaikki opettajan byrokratia kurssista siihen saakka, että kurssin tulokset voitaisiin siirtää seuraavaan järjestelmään. Koodasin itse tuosta järjestelmästä merkittävän osan ja kehittelin menetelmiä, miten kielessä (HP-87 Basic), jossa ei ole kunnon aliohjelmia, voitaisiin kuitenkin tehdä järkevää rakenteista ohjelmointia. Järjestelmä oli käytössä matematiikan laitoksella aina siihen asti, kunnes itse laitteisto hajosi joskus vuoden 1987 tienoilla. Järjestelmään pystyttiin syöttämään kurssin kaikki osasuoritukset, ottamaan tarvittavat raportit ja tuottamaan lopputulokset kansliaa varten. Laitteiston hajoamisen jälkeen meni vuosia, ennen kuin vastaan tasoista järjestelmää pystyttiin tarjoamaan. Useista yrityksistä huolimatta vastaavan tekeminen oppilastyönä ei onnistunut uudemmalle laitealustalle.
3.4 "PowerPoint"
Luentokalvojen käsin kirjoittaminen oli hieman hankalaa, erityisesti niiden ylläpito. Siksi teinkin HP-87 mikrotietokoneelle ohjelman, jolla voitiin luentokalvoja tulostaa tussipiirturin avulla.
3.5 Grafiikan demonstrointia
HP-87 mikrotietokoneelle tein grafiikan demonstroimiseksi useita ohjelmia. Mm. esimerkin siitä miten planeetat kiertävät aurinkoa. Kuitenkin kaikkein merkittävin oli ehkä Möbius-kuvauksia havainnollistava ohjelma. Ari Lehtonen kirjoitti samaan aikaan tavallisten funktioiden piirtämistä helpottavan ohjelmiston.
4. Mikrotietokoneiden hankinta
4.1 PC ja PC AT
Kun matematiikan laitos muutti Mattilanniemeen, oli aika hankkia laitokselle uusia mikrotietokoneita. Vastuu laitteistojen tutkimisesta ja hankinnasta siirtyi minulle. Tein useita testiohjelmia, joilla sen aikaisia keskenään yhteen sopimattomia koneita voitiin testata. Samaan aikaan saimme IBM:ltä lahjoituksena 3 PC-tietokonetta, jotka jaettiin tietojenkäsittelytieteiden laitoksen ja matematiikan laitoksen kesken. Nämä otimme käyttöön opetuksessa. Kun IBM julkaisi PC AT tietokoneensa, hankimme sellaisen laitoksella aikanaan erittäin tehokkaalla grafiikkakortilla varustettuna. Tällä koneella teimme Ari Lehtosen kanssa merkittävän määrän graafisia demonstraatioita. Ari Lehtosen Mandelbrotin joukkojen kuvia julkaistiinkin vaikka missä.
4.2 Mikrotietokoneluokka, TurboPascal ja 3D grafiikka
Yliopiston ensimmäinen mikrotietokoneluokka perustettiin Mattilanniemeen heti tilojen valmistuttua. Luokkiin ostettuihin Mikro Mikko 2 tietokoneisiin löytyi TurboPascal niminen ohjelmisto. Oivalsin heti tämän hyödyn ja se muuttikin merkittävästi ohjelmoinnin opetusta ja opiskelua. Entisestä "kirjoita ja käännä 10 min ja korjaa" tekniikasta päästiin välittömään palautteeseen virheistä ja pystyttiin ne heti korjaamaan. Vähintään Jyväskylässä olin ensimmäinen, joka otti mikrotietokoneet käyttöön ohjelmoinnin opetuksessa. Toki lievästi samaa oli ollut jo aikaisemmin niiden Canonin pikkukoneiden kanssa. Nyt vaan Basicin sijaan saatiin "tiedemaailmankin" hyväksymä ohjelmointikieli käyttöön.
MikroMikoissa oli erinomaiset grafiikkaominaisuudet ja TurboPascalissa alkeelliset viivanpiirtorutiinit. Näiden päälle Pirjo Prosi rakensi ohjaamanani oppilastyönä GPGS-F kirjastoa simuloivan kirjaston, jolla pääsimme opettamaan sitten 3D-grafiikkaa mikrotietokoneympäristössä.
Samoihin aikoihin tuli markkinoille ensimmäiset siirtoheittimet ja sain hankittua kovan väännön jälkeen yhden sellaisin Mattilanniemen luentosaliin. Tämän jälkeen ohjelmoinnin opetukseni muuttuikin taululla kirjoittamisesta siihen, että havainnollistetaan asioita suoraan tietokoneella. Tämänkin tekniikan käyttämisessä olin ensimmäinen Jyväskylän Yliopistossa.
5. Tutkimusta koneen avulla ja tekstinkäsittelyä
5.1 Kirjoituskoneen korvaaja
Olin jo aikaisemmin kirjoittanut LuK tutkielmani Univac 1100 koneeseen ATK-keskuksen Opustin-ohjelmalla. Gradututkielmani kirjoitin HP-87 koneen CP/M käyttöjärjestelmässä toimivalla WordStar ohjelmalla. Tämä oli kuitenkin vielä alkeellinen ratkaisu, missä matemaattisia merkkejä varten jätettiin tyhjä tila ja ne lisättiin myöhemmin käsin. Tämä ei ollut kovin kätevää korjailujen kannalta, jos otti uuden vedoksen.
Kun keväällä 1995 tuli aika kirjoittaa väitöskirjani puhtaaksi, muutin WordStar-ohjelman toimintaa ratkaisevasti niin, että sillä pystyi tekemään aikaisempaan verrattuna sujuvasti alaindeksit ja muut matemaattiset merkit. Ongelmaksi tuli tulostaminen. ATK-keskukseen oli juuri hankittu uusi Laser tulostin ja siellä oli myös graafinen työasema. Oppilastyönä (Raino Mäkinen) teetin ohjelman, jolla pystyi näytöllä suunnittelemaan tulostettavia merkkejä ja siirtämään ne sitten QMS-laserkirjoittimen muistiin. Näin saimme kokonaisuuden, jolla pystyi kirjoittamaan ja tulostamaan matemaattista tekstiä. Vaikka nykyiseen tekstinkäsittelyyn verrattuna alkeellista olikin se, että joutui itse rivittämään ja sivuttamaan tekstin, oli työn korjailu kuitenkin merkittävästi helpompaa kuin pallokirjoituskoneella. Tiettävästi matematiikan väitöskirjani oli ensimmäinen Suomessa julkaistu matematiikan väitöskirja, joka oli tuotettu kokonaan mikrotietokoneella. Toki TeX tuli kohta (oli jo ollut, mutta meillä ei ollut laitteistoa sen käyttöön) ja muutti matematiikan kirjoittamisen pysyvästi. Tätä ennen kuitenkin tai vielä MikroMikko 2 tietokoneelle ohjelman, jonka avulla voitiin esikatsella muutetun WordStarin formaatissa olevia kirjoituksia. Muistaakseni ainakin yksi matemaattinen artikkeli kirjoitettiin tällä järjestelmällä.
5.2 Grafiikka matematiikan tutkimuksen apuna
Väitöskirjani tutkimusongelmana oli selvittää erilaisten alueluokkien suhdetta toisiinsa. Ongelmana oli joko todistaa alueluokat samaksi tai sitten ei-samaksi. Mahdollista ei-samuutta varten piti keksiä vastaesimerkki. Työ sinänsä kesti muutamia vuosia, mutta vastaesimerkkiä etsiessä tietokone ja erityisesti grafiikka oli minulle suurena apuna. Tekemieni ohjelmien avulla kykenin havainnollistamaan itselleni eri vaihtoehtojen mahdollisuutta tai mahdottomuutta ja näin sulkemaan ajoissa pois väärät tutkintalinjat. Tämä oli oikeastaan pitkälle samaa ajatusmallia, jota olin käyttänyt aikanaan yksinkertaisemmassa matematiikassa laskutikun kanssa.
5.3 TeX ja Preview
Lopulta mikrotietokoneiden muistimäärät tulivat riittäviksi TeX -taitto-ohjelman ajamiseen. Ongelmana oli kuitenkin se, että esikatselu oli silloisilla laitteistojen tehoilla äärimäisen hidasta. Onneksi sain Helsingin yliopistosta pohjan ohjelmasta, joka kykeni tietyllä laitetyypillä hitaasti näyttämään TeX esikatselua. Otin koodin koko grafiikkaosan uudelleenkäsittelyyn ja kirjoitin sen kriittiset kohdat kokonaan uudelleen konekielellä sekä muutin rajapintaa TurboPascaliin päin. Näin sain tehtyä ohjelman, joka kykeni lähes nykyisten tekstinkäsittelyohjelmien nopeudella näyttämään matemaattista tekstiä usealla sen ajan grafiikkanäytöllä. Esikatseluohjelma oli käytössä useissa Suomen yliopistoissa.
6. Mikroprosessoreihin
6.1 Kave 8 ja debuggaus ja asiakkaan mukanaolo
Kave Oy teki enoni kanssa yhteistyössä vielä yhden logiikkalaskuripohjaisen sovelluksen telekonttoreiden asiakaskopeista soitettujen puheluiden hinnan näyttämiseen. Vastaavia kunnollisia kilpailevia laitteistoja ei ollut ja siksi Kave Oy:tä pyydettiin suunnittelemaan täydellisempi laitteisto, joka myös välittäisi tiedon kassakoneille. Eli laitteiston piti hoitaa koko prosessi siitä, kun asiakas astui koppiin soittamaan puhelua, siihen että koppi lukittiin pois käytöstä asiakkaan astuessa kopista ulos aina siihen asti, että hän maksoi puhelunsa.
Selkeästi logiikkalaskuripohjainen järjestelmä oli tullut tiensä päähän ja siksi valitsimme jo opiskeluikään tulleen veljeni Timo Lappalaisen kanssa järjestelmän ytimeksi Intelin 186 mikroprosessorin. Veljeni piirsi ja toteutti piirikortin ja minä toteutin käyttöjärjestelmän ja ohjelmiston keskusyksikköön. Lisäksi tarvitsimme vielä asiakasnäyttölaiteet. Niiden pohjaksi valitsimme Intelin 8051-prosessorin. Veljeni toteutti asiakaspäätteen ohjelman ja ohjelmointilaitteiston piirille.
Järjestelmän keskusyksikön tehtävä oli kommunikoida korkeintaan 20 asiakaspäätteen kanssa RS485 väylän välityksellä. Tähän kommunikointiin kehitimme oman protokollan. Yksi projektin hankalimpia vaiheita oli, että teletoimistot olivat kaikki valinneet käyttöönsä samanlaisen, vanhanaikaisen kassakoneen, jossa ei ollut mitään kommunikointikanavaa. Kassakoneiden vaihtaminen olisi tullut liian kalliiksi. Siksi rakensimme 8051-pohjaisen piirilevyn, joka juotettiin kassakoneen näppäimistön alapuolelle. Keskusyksikön ohjaamana piirilevy "painoi" kassakoneen näppäimiä ja näin informaatio saatiin siirrettyä keskusyksiköltä kassakoneelle. Toki ratkaisusta puuttui takaisinkytkentä siitä, että olivatko näppäimen painallukset menneet oikein. Sopivalla ajoituksella ja sillä, että varsinainen kuittausnäppäin jätettiin painamatta ja sen painaminen jätettiin kassavirkailijan huoleksi, ongelma pystyttiin kuitenkin pitämään kurissa.
Laitteistoja toimitettiin yli 10:n kaupungin telekonttoreihin ja ne olivat käytössä ihmeellisen hyvin toimien aina siihen saakka, kunnes matkapuhelinten yleistyminen teki telekonttorit tarpeettomiksi.
Yksi oleellinen innovaatio järjestelmä kehitettäessä oli oman testaustyökalun tekeminen. Borlandin Turbo Assemblerin mukana tuli debuggeri, joka oli nimenomaan 8086 pohjainen. Ongelmana vaan oli käyttöjärjestelmä, koska tuo toimi vain MS-DOS koneissa. Debuggerista oli myös etäkäyttöversio toiseen MS-DOS-koneeseen. Näiden välinen protokolla ei ollut julkinen eikä protokollaa saanut mistään käyttöön. Siksi "man in the midle" –tekniikalla selvitimme protokollasta riittävän osan. Sitten toteutimme aluksi oman etäasiakkaan MS-DOS koneeseen ja kun se toimi riittävästi, niin toteutimme saman asiakkaan oman 80186 prosessoriin tekemämme käyttöjärjestelmän päälle. Näin olimme saaneet kalliin kehityslaitteiston sijaan lähes ilmaisen järjestelmän debuggaamista varten. Näin ohjelman kehitys omalle kortillemme nopeutui huomattavasti, koska debuggerin avulla pystyimme siirtämään koodia piirikortille ilman hidasta EPROM polttoa. Lisäksi oleellisin etu oli, että koodia pystyi kehittämään pala kerrallaan ja testaamaan, ilman että koko kokonaisuus oli valmis. Tekniikka muistutti jo kovasti nykyisin muodissa olevaa Test First -tekniikkaa. Jota toki olin soveltanut ja kauan aikaa matemaattisten ongelmien ratkaisemiseen.
Ohjelmistotuotantotekninen innovaatio oli se, että tuote myytiin asiakkaalle käyttöohjeen perusteella. Ennen kuin ensimäistäkään riviä oli kirjoitettu, toimitettiin asiakkaalle siisti ja monipuolinen kuvaruutunäyttöihin (80 rivin näyttö) perustuva käyttöohje, josta asiakas pystyi tarkistamaan, että kaikki hänen haluamansa toiminnot ovat järjestelmässä mukana. Myös kassavirkailijat osallistuivat tämän vaiheen katselmointiin. Nykyisin tämä tekniikka on oleellinen osa Agile-menetelmiä, joissa asiakas, ja erityisesti tuotetta tarvitseva asiakas, pidetään mukana prosessissa alusta saakka.
6.2 Kave 9, ylläpito ja monikielisyys
Profilointilinjojen vaatimuksetkin kasvoivat ja sielläkin logiikkapohjaiset järjestelmät kävivät vanhanaikaisiksi. Kave 8 prosessorikorttia sovellettiin sellaisenaan pohjaksi uuteen Kave 9-mittalaitteeseen. Lisäksi tehtiin kortti, joka hoiti pulssilaskennan ja muun kommunikoinnin ulkomaailmaan. Tämä ei sinällään ollut mitään merkittävän uuttaa siihen aikaan. Oleellista oli ohjelman käyttö, parametrisointi ja lopulta monikielisyys. Näin pystyimme yhden ainoan ohjelman ylläpidolla hoitamaan monia eri asiakkaita. Myöhemmin yleistyivät tiilikuviota tekevät profilointilinjat. Tällöin linjan tarkkuus- ja nopeusvaatimukset nousivat huomattavasti. Kave 9 muutettiin Kave 9B mittalaitteeksi, joka pystyi ohjaamaan myös tiililinjoja. Mittalaitteen ansiosta Sintech Oy sai linjojensa nopeudet nostettua kilpailijoita suuremmaksi ja useita kauppoja profilointilinjoista syntyi nimenomaan asiakkaan vaatiessa Kaven mittalaitetta profilointilinjaansa. Laitteistoja toimitettiin n. 70 kappaletta useisiin eri maihin.
Konekielinen ohjelmisto oli jaettu useisiin osiin, jossa yksi osa oli parametrien hallinta. Merkittävää parametrien hallinnassa oli se, että jos tarvittiin uusi parametri, niin se pystyttiin lisäämään ohjelmaan lisäämällä yksi koodirivi parametrin hallintaan ja tietysti muuttamalla sitä riviä, jossa ennen oli numeerinen vakio. Myöhemmin asiakkaille tuli erilaisia lisälaitteita, joita ei millään voitu ottaa huomioon varsinaisessa pääohjelmassa. Siksi lisättiin vielä yksi moduuli, johon pystyi kirjoittamaan asiakkaan luona CMOS-muistiin pienellä logiikkakielellä tehtyä logiikkaohjelmaa. Näin edelleen säilyi vaatimus siitä, että on vain yksi ylläpidettävä pääohjelma.
Toinen innovaatio oli tapa kirjoittaa ohjelman tekstit niin, että ohjelmasta oli helppo toimittaa vain yhtä ainoata tekstimoduulia vaihtamalla kullekin asiakkaalle versio asiakkaan omalla kielellä. Toki laitteiston näppäintekstien tarrat piti aina käsin liimata asiakkaan kielen mukaan.
Päivitys 28.5.2020: Joskus 2015 tienoilla sain yhden vanhan sarjan laitteen korjattavaksi, kun se ei "toiminut". Siitä oli n. 30 vuoden jälkeen loppunut paristo, jonka piti pitää RAM-piirejä elossa. Paristolle oli luvattu 10 vuotta toiminta-aikaa. Tämä antaa vähän perspektiiviä siitä, minkälaisia käyttöaikoja pitäisi voida odottaa laitteilta ja ohjelmistoilta. Nykyisen "viimevuoden malli on vanhanaikaisen näköinen" sijaan.
7. Tiedonsiirtoa sarjaväylää pitkin
7.1 Versa näkövammaisille
Minulla oli opiskelijana ohjelmointikurssilla sokea tyttö. Materiaalin saaminen hänelle oli varsin vaikeaa. Sitten sain kuulla, että hänen lukulaitteessaan on RS232 liitäntä ja jopa protokolla tekstin viemiseksi näyttöön oli julkinen. ATK-keskuksessa työskentelevän Timo Matsisen avustuksella sain protokollakuvauksen ja itse lukulaitteenkin lainaksi. Ongelmana oli että miten ohjelmassa olevia tietoa muutettaisiin Versa-lukulaitteen ymmärtämään muotoon. Sitten tuli merkittävä keksintö: Luetaan kuvaruutua sellaisenaan ja toimitetaan tieto sen sisällöstä lukulaitteelle. Koska Kave-laitteita toteutettaessa oli tullut melkoinen kokemus PC-ympäristöstäkin, tein Versa nimisen ohjelman. Ohjelma asettui käyttöjärjestelmän taustalle, haki näytöstä lukijan valitseman rivin valitut sarakkeet ja toimitti ne protokollan mukaisesti lukulaitteelle lisäten samalla tiedon rivistä ja sarakkeesta. Näin sen aikaisesta 24 merkin pistekirjoitusnäytöstä saatiin 20 merkkiä esittämään varsinaista sisältöä. Näytön 80 merkin rivi pystyttiin lukemaan neljällä sivusiirtymisellä. Luettavaa kohtaa ohjattiin lukulaitteen näppäimistöltä.
Ohjelman käyttämiseksi piti vain kytkeä lukulaite PC-tietokoneeseen, käynnistää ohjelma (joka voittiin asentaa käynnistymään automaattisesti käyttöjärjestelmän käynnistyessä) ja aloittaa tietokoneen käyttö Versa-lukulaitteelta. Vastaavat kaupalliset ratkaisut olivat kalliita eivätkä toimineet yhtä riippumattomasti sovellusohjelmasta.
Graafisten käyttöliittymien tuleminen pilasi idean, koska informaatio ruudulla ei ollutkaan enää yksinkertaista tekstiä, joka voitiin kääntää suoraan pistekirjoitusmerkeille.
7.2 VT200 – pääteohjelma
Kave 8 –laiteen yhteydessä saatu tietoliikennekokemus muuttui VT200 ohjelman myötä koko yliopiston hyödyksi. Siihen aikaan oli monenkirjavia pääte-emulaattoreita keskuskoneeseen kommunikointia varten. Ohjelmat olivat selvästi tehty harrastajille ja ne olivat oleellisesti monimutkaisempia käyttää kuin tavallinen peruspääte. Käyttäjät kuitenkin halusivat jo käyttää muita mikrotietokoneen ominaisuuksia. Minä muiden mukana tai oikeastaan etunenässä. Tästä jalostui hiljalleen ajatus omasta pääteohjelmasta. Ensimmäisen version tavoite oli nopeus. Monet sen ajan pääteohjelmat eivät kyenneet ottamaan vastaan ja erityisesti näyttämään täydellä vauhdilla siirtonopeuden rajoissa. Muutin tietoliikennettä varten kirjoittamani moduulin Pascalin aliohjelmaksi, joka taustatoimintona toimitti linjalta tulevia merkkejä suoraan Pascalin merkkijonoon. Näin kommunikointi nopeutui huomattavasti ja pystyttiin esittämään täydellä vauhdilla saapuvia merkkejä.
Ensimmäinen versio toteutti VT100 rajapinnan. Myöhemmin oppilastyönä lisättiin VT220 rajapinta. Samoin lisäsin Tektronix-grafiikkapäätteen rajapinnan. Näin VT200 oli jo merkittävä kilpailija kaupallisille sovelluksille. Yliopistolla oli tuohon aikaan käytössä VAX-keskuskoneita. Käyttäjien eräs yleinen toive oli siirtää tiedostoja keskuskoneen ja mikrotietokoneen välillä. Yleensä VAXeissa oli asennettuna Kermit-palvelin ohjelmisto. Mutta Kermit-asiakasohjelma oli tavalliselle käyttäjille aivan liian vaikea käyttää. Itsekin tuskastuin tiedonsiirrossa olevien vaiheiden lukumäärään. Siksi itse kirjoitin VT200 ohjelmaan Kermit-protokollan mahdollisimman tehokkaasti toteutettuna. Oppilastyönä teetätin käyttöliittymän, jossa kuvaruudusta valittiin siirrettävä tiedosto ja sen jälkeen siirto käynnistyi automaattisesti käynnistäen taustalla tarvittavat toimenpiteet ja antamalla VAXille komennon siirtyä Kermit palvelimeksi ja lopulta siirron päätyttyä sammutti palvelimen. Näin tiedoston siirto molempiin suuntiin kävi todella helposti. ATK-keskus pitkään vastusti ohjelmaa, mutta kun käyttäjät vaativat sitä, niin VT200 tuli ATK-keskuksen tukemien ohjelmien piiriin.
Useat kaupungitkin olisivat halunneet ostaa VT200-ohjelman, mutta yliopisto ei silloin keksinyt miten ohjelmaa olisi myyty. Annoin sitten sitä muutamille innokkaimmille ilmaiseksi käyttöön.
7.3 PrnToCom – tulostusta etänä, Pager
Tuohon aikaan mikrotietokoneissa joko oli suoraan kytketty kirjoitin tai ei kirjoitinta lainkaan. Tämä asetti henkilöstön varsin eriarvoiseen asemaan. Sarjakytkimen takana oli kyllä kirjoittimia keskuskonetta varten ja tulostus oli mahdollista niin, että siirsi tiedoston keskuskoneeseen VT200 ohjelmalla ja tulosti sen sitä kautta. Oli kuitenkin joukko ohjelmia, joista tulostusta ei saanut tiedostoon. Siksi kehitin taustalla toimivan ohjelman, joka kaappasi haltuunsa kirjoitinportin, kytkeytyi jakajaporttiin sarjaportin välityksellä ja välitti jokaisen kirjoitinporttiin menevän tavun valitulle kirjoittimelle.
Näin oli käytössä ohjelma, jonka ansiosta tulostaminen muuttui vähintään yhtä helpoksi kuin se on tänä päivänä (jos tulostus ikinä voi olla helppoa). Oleellista oli, että kaikki tehtiin ohjelmallisesti ja tämä tulostimien jakaminen ei aiheuttanut minkäänlaisia kustannuksia laitoksille.
PrnToCom ohjelmaan toki piti tehdä monta innovaatiota. Yksi oli oma "tulostuskieli", jolla kunkin mikrotietokoneen sijainti ja se miten se kommunikoi kytkimelle, pystyttiin muuttamaan muuttamatta itse pääohjelmaa. Näin PrnToCom saatiin sellaisenaan sovitetuksi muutamaan suomalaiseen suuryritykseenkin.
PrnToCom kielen ansiosta ohjelmaa pystyi soveltamaan moneen muuhunkin vastaavankaltaiseen asiaan ja tässä esimerkiksi täydennyskoulutuskeskus kunnostautui.
PrnToCom ohjelman avuksi kehitettiin vielä Jari Junikan kanssa Pager-niminen ohjelma, joka muutti tekstiä PostScriptiksi ja jakoi tulostuksen halun monella palstalle. Ohjelma oli laiteriippumaton ja sitä käytettiin pitkään myös keskuskoneissa muotoilemaan teksti siististi tulostettavaan muotoon.
7.4 KeyDef – toimintojen automatisointia
Yksi merkittäviä tuon aikakauden tuotteitani oli oppilastyönä aloitettu KeyDef-ohjelma. Ideana oli, että voidaan helposti nauhoittaa käyttäjän toimenpiteitä ja sitten suorittaa ne uudelleen. Näin voitiin automatisoida monia pitkiä näppäinketjuja yhden ainoa näppäimen taakse. Tekniikalla pystyi myös lähettämään tietoa sellaisille ohjelmille, jotka eivät muuten "halunneet" kommunikoida.
7.5 Matka – pohja monikielisyydelle ja paikkatiedolle
Eräs sovellus tiedonsiirto-osaamiselleni oli Matka-niminen ohjelma riippuliitokilpailujen pistelaskennan hoitamiseen. Mikrotietokoneiden alkuajoista asti olin hoitanut pistelaskun taulukkolaskennan avulla. Tähän liittyi ongelmia mm. tiedon syöttämisestä. Tyypillinen tilanne kilpailussa oli se, että kilpailija laskeutui johonkin, palasi takaisin kentälle ja tökkäsi itseään kuvaavan nuppineulan kartalle. Tästä joku mittasi ryppyisen kartan pinnalta lennetyn matkan. Tuloslaskentaan meni tyypillisesti tunteja ja harvoin tuloksia saatiin saman illan aikana.
Satuin saamaan halvalla digitointipöydän. Matematiikan laitoksen kollegojen avustuksella kehitin ohjelman, joka luki digitointipöydälle pistetyltä kartalta koordinaatin ja käytti tätä laskennassa hyväksi. Käyttöliittymässä päästiin siihen, että lentäjä naputti digitointipöydältä numeronsa, näytti hiusristikolla laskupaikkansa ja sai välittömästi tietoonsa lentomatkan, joka tallentui samalla tietokantaan. Näin tulokset olivat valmiit heti kun viimeinen lentäjä oli näyttänyt laskupaikkansa.
Koska Suomen tehtävä oli järjestää Pohjoismaiden mestaruuskilpailut, niin ohjelman tuli olla monikielinen. Tätä varten jatkaen Kave 9:n pohjalta olevien ideoita, kehitin järjestelmän, jolla monikielisyyden ylläpito oli helppoa. Julkaisin nämä ideat luentomonisteessani "Windows-ohjelmointi C-kielellä". Myöhemmin ilmestyi kaupallisia komponenttisovelluksia, joissa ideoitani oli viety vielä hieman pidemmälle. Aikanaan Kave 2000-järjestelmää varten päädyin itsekin hankkimaan tällaisen komponentin.
Sama tekniikka on otettu käyttöön myös Korppi-järjestelmässä ja näin on saatu aikaan perusratkaisu, jossa ohjelmoijan tarvitsee mahdollisimman vähän ajatella muita käytettäviä kieliä ohjelmaa kirjoittaessaan.
7.6 Riippuliito – kartta ja GPS yhteen
Nykyinen versio liitolajien kilpailuista on se, että lennot todistetaan GPS-lokien perusteella. Matka-ohjelmasta opittu karttatiedon käsittely on siirretty näytölle. Ohjelma osaa purkaa GPS-login, verrata sitä annettuun tehtävään ja laskee tämän perusteella lentäjän tuloksen. Ohjelman myötä on syntynyt paljon komponentteja, jotka ovat opetuksessani julkisessa käytössä. Ohjelma on käytössä monessa muussakin paikassa, missä tarvitsee käsitellä karttatietoa ja mahdollisesti GPS informaatiota. Pitkään ohjelma oli myös hakutoiminnan apuna, mutta nykyisin navigaattorit tarjoavat kompaktimmassa koossa hyvät hakuominaisuudet.
Ohjelma kykenee tuottamaan materiaalia esim. GoogleEarth-ohjelman käyttöön ja näin lentoja voi lentää uudelleen 3-ulotteisena.
8. Visualisointia, uusia mikroluokkia ja koneita
8.1 Videotykki
Valitettavasti piirtoheittimien tehot olivat huonoja ja erityisesti kun päälle pistettiin siirtoheitin, niin kuva jäi varsin himmeäksi. Järjestinkin aikanaan muutaman ison tilaisuuden, jossa eri laitevalmistajat esittelivät yhdessä ratkaisujaan. Tilaisuuteen oli kutsuttu myös muiden oppilaitosten edustajia lähiympäristöstä. Tilaisuudesta tein varsin kattavan vertailun laitteista. Vertailu pohjautui teknisiin tietoihin ja paikalla olleiden "äänestyksiin" laitteiden kuvan laadusta. Aikanaan osaksi näiden vertailujen pohjalta saimme ensimmäiset videotykit Mattilanniemeen. Toki pitkään piti pärjätä siirtoheittimillä. Koska siirtoheittimetkin olivat kalliita, rakennutin kärryjä, joissa oli piirtoheitin, mikro ja siirtoheitin valmiina. Näitä kärryjä luennoitsijat pystyivät varaamaan.
8.2 Uusi mikroluokka
Olin matematiikan laitoksella assistenttina, mutta tehtäviini kuului myös mikrotietokonelaitteistojen hankita, ylläpito, ohjelmisto ja koulutus. Käytännössä olin siis laboratorioinsinöörinä jonkin aikaa. Pikkuhiljaa koneiden tehot nousivat ja niihin sai jo järkevän kokoisia kovalevyjä. Matematiikan laitoksellekin tuli aika hankkia oma mikroluokka. Vastasin täysin mm. tästä hankinnasta.
9. Ohjelmakehitystä koko yliopistolle
9.1 Sali
80-luvun lopussa yliopiston salien määrä ja niihin kohdistuvat varauspaineet kasvoivat niin suureksi, että pelkkä vihkoon ja yhden henkilön paikallaoloon perustuva kirjanpito rupesi käymään ylivoimaiseksi. Tässä minua pyydettiin apuun ja kartoitin mahdollisuuksia. Joensuun yliopistossa oli kehitetty Fortran-pohjainen nerokas tekstitiedostoihin perustuva järjestelmä, jolla pienin muutoksin olisi voitu hoitaa myös Jyväskylän tarpeet. Into tietokantoihin oli kuitenkin niin kova, että lopulta päädyttiin Ingress-pohjaisen järjestelmän kehittämiseen. Joissakin kohti valinta antoi lisämahdollisuuksia, mutta myös jäykisti järjestelmää monelta osin. Valvoin järjestelmän kehitystä alkuvaiheessa ja toteutimme siihen Jari Junikan kanssa todella siistien lukujärjestysten tulostamisen. Kehitystä tehtiin aluksi kahden, sitten yhden palkatun henkilön toimesta. Prototyyppivaiheen jälkeen järjestelmän ylläpito siirtyi ATK-keskukselle ja järjestelmä oli käytössä yli 15 vuotta, kunnes Korpin salivarausosio teki siitä tarpeettoman. Vanhanakin Sali-järjestelmä päihitti kaupalliset kilpailijansa.
9.2 KurKi – Kurssien Kirjanpito
Alkuperäisen Kurjen alustan, HP-87 tietokoneen tuntien tultua täyteen, matematiikan laitos oli pitkään ilman vastaavaa yhtenäistä järjestelmää. Koska kirjapitotarvetta kuitenkin oli, jokainen hoiti sitä omalla tavallaan. Jotkut kortistopohjaisilla ratkaisuilla ja jotkut taulukkolaskentapohjaisilla ratkaisuilla. Itse käytin taulukkolaskentaa pohjana. Muuten järjestelmä oli kirjanpitoon kohtuullinen, mutta ongelman oli se, että tuntiassistentit eivät voineet päästä tietoja syöttämään. Tämän ongelman ratkaisin niin, että Ohjelmointikurssin malliohjelman muutettavuuden ansiosta tein siitä version, jolla tietoja pystyttiin syöttämään Unix-koneessa. Näin pääsin tilanteeseen, jossa se, joka oli opetuksen pitänyt, pystyi syöttämään heti itse pisteet järjestelmään. Sieltä ne siirrettiin taulukkolaskentaan, josta raportoitiin erityisesti, miten opiskelijat olivat kurssilla mukana ja keitä uhkasi "putoaminen". Tällaisilla nopeilla seuranatatoimilla sain pidettyä kurssien läpäisyprosentit korkeina, koska tekemättömien töiden määrät eivät päässeet opiskelijoilla kasvamaan kohtuuttomasti.
Järjestelmää vaivasi toki vielä se, että kursseilla liikkui ilmoittautumisia ja tehtävien tilittämisiä varten lappusia ja lippusia, joista opettajien piti käsin siirtää tietoa järjestelmään. Lisäksi opiskelijat eivät päässeet järjestelmään itse.
Jukka-Pekka Santasen työprojektissa aloitettiin toteuttamaan WWW-pohjaista järjestelmää, jossa voitaisiin vanhan Kurjen ja taulukkolaskentapohjaisen järjestelmän sekä WWW:n edut yhdistää. Näin syntyi vuonna 1998 uusi KurKi. Projektin tekijöistä Pauli Kujala palkattiin muuttamaan ohjauksessani projektin aikana syntynyt prototyyppi toimivaksi järjestelmäksi.
Käyttöliittymässä oli toki aluksi paljonkin toivomisen varaa, mutta KurKi hoiti hienosti tehtävänsä. Sillä opiskelijat pystyivät ilmoittautumaan kursseille, opettajat laatimaan raportteja sekä pitämään kirjaa kurssin osasuorituksista.
KurKi oli käytössä matematiikan laitoksella, tietotekniikan laitoksella ja osittain tietojärjestelmätieteen laitoksella. Vuoden 2001 jälkeen Korppi alkoi syrjäyttämään Kurkea.
9.3 WinAapinen
WinAapinen syntyi sivutuotteena kun halusin reilulle 1-vuotiaalle pojalleni jotakin pelkkää näppäimistön hakkaamista järkevämpää tekemistä ja halusin tutustua uuteen Borlandin Delphi -työkaluun. Ohjelman tavoitteena on opettaa lapsille lukemisen alkeita.
10. Luentomateriaalit ja monimuotojulkaiseminen
10.1 Kalvot ja moniste samasta lähteestä
Aiemmin kerroinkin jo julkaisemisen alkuajoista. Wordstarin jälkeen otin käyttöön Borlandin Sprint-ohjelman erityisesti sen avoimuuden takia. Ohjelmaa pystyi muokkaamaan mielensä mukaan. Alkuaikojen luentomonisteet kirjoitin tällä järjestelmällä. Mutta en ihan kuten kuka vaan, vaan sillä tavalla, että tavoitteena oli saada yksi ainut lähdemateriaali, josta tulostetaan samalla sekä luentokalvot, että paperimoniste.
Tavoitteeseen pääsin sillä, että jaoin (jo kauan ennen kuin puhuttiin rakenteisista dokumenteista) tyylit kolmeen eri kategoriaan. 1) Molemmissa näkyviin, 2) vain paperilla näkyviin ja 3) vain kalvoissa näkyviin. Näin sain kirjoittaa sekä kalvot että monisteen samaan lähdetiedostoon. Tällöin oleellista on, että vältetään päivittämisen ongelmat. Kun tehdään muutos johonkin esimerkkiin, niin muutos on samalla tehty molempiin julkaisumuotoihin.
Luonnollisesti luentomonisteiden tekeminen oli minulle alusta asti normaalia virkatyöhön kuuluvaa toimintaa.
Myöhemmin Windows tuli mukaan kuvioihin ja aikanaan myös MS-Word-tekstinkäsittelyohjelma. Hieman kikkailemalla pystyin soveltamaan samaa merkkausta myös Word tiedostoihin ja näin jatkamaan monimuoto-julkaisemista.
10.2 WWW-julkaiseminen
Heti kun WWW-oli levinnyt opiskelijoiden käyttöön, pyrin sijoittamaan kaiken materiaalin myös WWW-sivuille. Nykyisin luentomateriaalini tulee melkein yhdellä toimenpiteellä xhtml-versioksi, PDF-versioksi ja tulostettavaksi versioksi. Tähän pääseminen on edellyttänyt jonkin verran järjestelmien sovittamista.
Yhtenä sovelluksena monimuotojulkaisemiselle on IT-tiedekunnan XooZoo-projekti (XML opinto.opas) jossa tavoitteena on, että opinto-opas muodostuu hyvin merkatuista luvun osista, joista voidaan koostamalla muodostaa erilaisia oppaan versioita ylläpitämällä vain yhtä lähdekoodia. Lisäksi oppaan ne tiedot, jotka löytyvät muista järjestelmistä, haetaan automaattisesti. Mm. Korpista kurssikuvaukset ja henkilökuntatiedot, jatkossa ehkä myös opetusohjelmat. Toivottavasti koko yliopisto osaisi ottaa tällaisen julkaisujärjestelmän käyttöönsä.
11. Huippuunsa vietyä osaamista
11.1 Kave2000
Kun vaatimukset Kave 9B-mittalaitetta kohti rupesivat tulemaan liian suuriksi, oli aika ottaa askel eteenpäin. Piti kehittää uusi järjestelmä, jossa olisi kaikki Kave 9B:n kiitetyt ominaisuudet sekä joukko uusia ominaisuuksia.
Ohjelmointiympäristö ei näiden vaatimusten edessä enää voinut olla konekielipohjainen. Kuitenkin tiettyjä reaaliaikavaatimuksia piti pystyä toteuttamaan. Aikansa ylivoimaisesti paras ohjelmointiympäristö oli Borlandin Delphi. Sen avulla tuotettiin aitoa konekieltä, mutta samalla käyttöliittymäohjelmointi oli helppoa. Visual Basic ei tuottanut kunnon konekieltä ja MFC taas oli kaukana helposta. Näin valinta kohdistui Delphiin. Samalla kuitenkin uhrattiin joitakin reaaliaikavaatimuksia koska silloin järjestelmän pitää olla Windows-pohjainen sulautettu järjestelmä. Reaaliaika-Windowsit toisaalta olivat kalliita. Käyttöjärjestelmävalinta kohdistui lopulta Windows NT4:een.
Muuten ratkaisuksi valittiin kompromissi, missä päätettiin toteuttaa oma PC-lisäkortti, joka huolehtii kaikesta IO:sta ja pystyy tarvittaessa puskuroimaan tietoa niin että jos prosessori ei ehdi kaikkea lukea, niin mitään tietoa ei kuitenkaan menetetä. Omalla korttisuunnittelulla taattiin, että esimerkiksi pulssianturien lukemisessa tarvittavat nopeusvaatimukset voidaan toteuttaa kohtuullisin kustannuksin. Tämä osoittautui hyväksi valinnaksi.
Varsinainen ohjelma on toteutettu Delphillä. Eräs ohjelman innovaatioista on äärimmilleen viety parametrisoitavuus, jossa uuden parametrin lisääminen on vain parametrikomponentin lisääminen ja siihen viittaaminen. Toinen merkittävä innovaatio on monikielisyyden ylläpito. Toki monikielisyyden ylläpito on toteutettu Multilizer-yhtiön valmiilla komponenteilla, mutta nämä toteuttavat täysin 90-luvun alussa visoimani tavan hoitaa monikielisyyttä. Projektin aikana myös tuo komponentti on saanut paljon uusia ideoita.
Kolmas Kave2000-ohjelman innovaatioista on oliototeutettu logiikkaohjelmointikieli, jonka avulla järjestelmä voidaan sovittaa moninaisiin vaatimuksiin. Esimerkiksi kun varsinainen pääohjelma riisuttiin pois, toteutti veljeni moduulien avulla jättimäisten teleskooppipeilien hiontaa ohjaavan järjestelmän. Logiikkakieleen on varsin helppo lisätä uusia ominaisuuksia ja kieli on erittäin rinnakkainen.
Kave2000 "myyntitapahtuma" oli sellainen, missä oikean näköinen prototyyppi oli asiakkaan käytössä. Asiakas pääsi heti kokeilemaan ominaisuuksia ja kun ominaisuudet olivat kunnossa, alkoi vasta lopullinen koodaustyö. Tässäkin on aluksi toteutettu matkalaukun kokoinen simulointiympäristö, joka kykenee antaman merkittävän osan todellisen profilointilinjan IO-tiedoista. Lisäksi Kave2000-järjestelmässä on sisäinen simulaattori tila, jota voidaan käyttää harjoittelussa ja suuressa osassa testaamistakin.
Myöhemmässä vaiheessa Kave2000-järjestelmään on lisätty protokolla tilausten siirtämiseksi eri järjestelmien välillä. Näin Kave2000 on muodostunut joillakin tilaajilla täydelliseksi osaksi tuotannonohjausjärjestelmää.
Erittäin tärkeä osa Kave2000-järjestelmää on monitasoinen logitus. Näin voidaan tarvittaessa selvittää hyvin tarkkaan jälkeenpäin, että mitä on tapahtunut ja miksi. Järjestelmiä on asennettuna noin 100 kappaletta ympäri Eurooppaa (Suomi, Puola, Ruotsi, Tanska, Ukraina, Slovenia, Belgia, Hollanti, Turkki) ja Venäjää. Järjestelmiä voi luonnollisesti etäkäyttää joko modeemien tai internetin kautta.
Komponenttien ja johtojen testaamiseksi kehitin oman järjestelmän, joka automaattisesti käy läpi IO-kortin kaikki toiminnot ja ulkoisten moninapaisten johtojen kytkennät niin, että testiajo paljastaa mahdolliset katkokset tai oikosulut.
12. Interaktio luennolla
12.1 InSitu - http://www.mit.jyu.fi/vesal/insitu/,
Suomalaisen huono puoli on siinä, että hän haluaisi osallistua, mutta pelko ympäristöstä aiheuttaa sen, että aktiivisuutta ei uskalleta näyttää.
Tähän ongelmaan on ratkaisuksi yritetty InSitu-järjestelmää. Ideana on, että opiskelijoilla on omat pienet päätelaitteet, joilla he voivat vastata opettajan esittämiin kysymyksiin. Idean toi Johannes Hopiavuori USA:n vierailultaan, missä hän oli nähnyt vastaavaa ideaa käytettävän "pahvilappupohjaisesti".
Ensimmäinen prototyyppi toteutettiin muuttamalla Jukka-Pekka Santasen työprojektissa 1997 muutama telekonttoreista jääneistä asiakaspäätteistä oppilaspäätteiksi. Projektiryhmä kehitti opettajan ohjelman prototyypin ja kolmen päätteen langallisen kokeiluversion. Projektin jälkeen Rami Lehtiniemi jatkoi palkattuna henkilönä prototyypin kehittämistä ohjauksessani. Tietoliikenteen Ari Viinikainen auttoi radiopiirin valinnassa ja virittämisessä niin, että järjestelmästä saatiin langaton.
Prototyypin tekemistä varten saatiin rahoitusta Jyvaskyla Science Parkilta. Kave Oy toteutti 35 kappaletta oppilaspäätteitä. Prototyyppiä kokeiltiin useilla ohjelmointikurssien luennoilla ja palaute oli pääsosin hyvää. Ongelmia on aiheuttanut prototyypin koteloinnista johtunut näppäimien vähyys, sekä jotkut opettajan laatimat kysymykset.
Erityinen ongelma oli kuitenkin se, että päätelaitteet maksavat, vievät tilaa ja langattomina niitä pitää ladata. 200 päätelaitteen säilyttäminen, kuljettamien luentosaliin sekä latauksessa pitäminen on ylivoimainen tehtävä. Koska konsepti kuitenkin vaikutti toimivalta, niin ajatusta päätettiin jatkaa. Vastaavia järjestelmiä saisi myös kaupallisina, mutta niissä olisi aivan samat ongelmat. Lisäksi kaupallisten järjestelmien toteutuksissa tietoliikenne ei aina ole esimerkiksi koetilanteeseen riittävän luotettavaa.
Ratkaisuna kokeillaankin nyt uudessa johtamassani InSitu-projektissa kännykkäpohjaista järjestelmää, jolloin kaikki päätelaitteisiin liittyvät ongelmat saadaan poistettua. Näin saataisiin oppilaitoksille lähes ilmainen interaktiivinen järjestelmä.
Lisäys 27.6.2020: Kaikki InSitun ideat on nyt upotettu TIMiin ja näin em. haave on toteutettu.
12.2 Marker
Luennoilla joutuu monesti havainnollistamaan kuvaruudulta jotakin tapahtumia tai asioiden välisiä kytkentöjä. Tätä varten tein nopeasti prototyypin, jonka avulla voin piirtää minkä tahansa ohjelman päälle haluttuja kuvioita. Prototyyppi osoittautui käteväksi apuvälineeksi ja kehitin ohjelmaa hieman lisää ja nyt se on saatavilla verkkosivuiltani Marker-nimisenä.
Päivitys 28.6.2020: Nykyisin Marker on korvaantunut uudempien Windowsien kanssa paremmin yhteensopivalla DrawAnywhere-ohjelmalla (Jari Pennanen, 2009). Tämä tehtiin kurssin harjoitustyönä.
13. Korppi
2000-luvun tuotantoni on määrällisesti ollut vähäisempää, koska yksi suuri projekti on vienyt lähes kaikki kehityspanokseni: Korppi.
KurKi-järjestelmässä käytetyltä kehitystyökalulta loppui valmistajan tuki. Lisäksi KurKi-järjestelmässä oli keskitytty enemmän toimintoihin kuin käytettävyyteen. Yhä useammat tahot kuitenkin alkoivat kiinnostua sähköisestä "opetusbyrokratian" hoitamisesta. Tuli siis aika pohtia jatkoa. Kehitystyökaluksi valittiin Tomcat-pohjainen servlet- ja JSP (Jave Server Pages) ympäristö. Tällöin palvelin voidaan valita vapaasti eri käyttöjärjestelmistä. Nykyistä järjestelmää ajetaan Linux-palvelimella ja näin vältetään kalliit lisenssimaksut. Erityisesti kun tietokantana käytetään vapaan lähdekoodin PostgreSQL-kantaa.
Korpin kehitys alkoi Jukka-Pekka Santasen sovellusprojektissa Kotka-nimisenä. Kotka projektissa otettiin lähtötavoitteeksi KurKi-järjestelmän ominaisuudet sekä lisäksi monipuolisempi henkilöhallinta. Kotka-projekti määritteli tulevan tietokannan rakenteen sekä toteutti prototyypin henkilöhallinasta.
Seuraavassa Korppi-projektissa keskityttiin KurKi ominaisuuksien toteuttamiseen. Alkeellinen prototyyppi saatiinkin aikaiseksi. Projektin jälkeen kaksi henkilöä jatkoi prototyypin hiomista kesän 2001 aikana. Syksyn 2001 aikana jatkoi yksi henkilö palkattuna työntekijänä. Korppi saatiinkin siihen kuntoon, että uskalsin jättää KurKi-järjestelmän pois käytöstä ja käyttää Korppia syksyn kurssin kirjanpitotarpeisiin.
Samalla huomasimme että opetustapahtumien merkitseminen tuottaa oikeastaan aika- ja paikkatietoa ja seuraavan projektin (Kolibri) tehtävä olikin muuttaa tämä tieto kalenterimaiseksi. Nykyisin Korpin kalenteri yhdessä salivarauksen kanssa muodostaakin kansallisesti monipuolisimman ajanhallintavälineen (toki yliopiston väkeä on vaikea saada tätä uskomaan).
Opiskelun yksi merkittävä osa on opinnäytteet. Korppiin lisättiin Koppelo-projektin toimesta opinnäytteiden hallinta. Esimerkiksi gradujen ja kanditöiden ohjauksessa ja kirjanpidossa tämä osio on korvaamaton.
Yliopistolle hankittiin uusi salinvarausjärjestelmä (Timmi). Kiuru-projektissa määriteltiin ja toteutettiin rajapinta Korpin ja Timmin tietojen synkronoinnille. Timmi-järjestelmä ei kuitenkaan täyttänyt käyttäjien toiveita, joten nopeasti palattiin takaisin Sali-järjestelmään.
Kiuru-projektilaisten toimesta varaustiedoista saatu kokemus muutettiin Korpin sisäiseksi salinvarausjärjestelmäksi ja näin 15 vuotta palvellut Sali voitiin siirtää eläkkeelle.
Seuraavissa vaiheissa Korppiin palauteosio (Kottarainen, Koskikara) ja lisättiin eHOPS-osio (Käki, Kuikka).
Tulevaisuutta ennakoiden Kyyhky projektissa toteutettiin kalenteritiedon synkronointi synkronointirajapintaa tukeviin laitteisiin (kännykät, pöytäkoneiden kalenterit). Myöhemmin koko Korpin käyttö tehtiin mahdolliseksi mobiililaitteille (Kuovi).
Uusimpina moduuleina on lisätty karttatieto (Kiiruna) ja Plone-rajapinta oppimateriaalien oikeuksien hallintaan (Kakapo).
Projektien ulkopuolella palkattujen työntekijöiden toimesta on toteutettu mm. rajapinta kurssitiedon toimittamiseksi muihin järjestelmiin, salien laskutus, rajapinta yliopiston tapahtumakalenteriin (Info), tiedon siirtäminen Jore-järjestelmän sekä Avoimen yliopiston Acta-järjestelmän välillä sekä lukematon määrä muita parannuksia.
Kakkine ominaisuuksineen Korppi (yhdessä Joren kanssa) onkin valtakunnan ehdottomasti monipuolisin opintotiedon hallintajärjestelmä. Esimerkiksi kilpaileva valtakunnallinen Oodi-järjestelmä kykenee vain osaan Korpin toiminnoista. Lisäksi verrattuna Oodin käyttöön, on Korppi säästänyt Jyväskylän Yliopistolta yli 700 000 euroa. Lisäksi Korppi on tuottanut aiheen useisiin opiskelijaprojekteihin, puoleen tusinaan graduja sekä yhteen lisenssiaattityöhön.
Oma osuuteni Korpissa on ollut "tilaajana", eli opettajana minulla on ollut alkuperäisen Kurjen pohjalta koko ajan selkeä visio siitä, mitä opettajana tarvitsen. Nykyisin olen päässyt tilanteeseen, jossa kurssien takia ei kukaan täytä yhtään paperilappua eikä kirjoita nimeään yhteenkään ilmoittautumis-/osasuorituslomakkeeseen. Myös kurssipalautehan kerätään Korpilla. Ainoa paperi kurssilta on kurssin jälkeen tulostettava hyväksyttyjen lista, johon laitetaan nimi alle. Toki Korpilla voi tuottaa monipuolisesti raportointia kurssin aikana. Tätä raportointia käytän mm. sen seuraamiseen, että tuleeko kurssilla kohtia, joissa opiskelijat "putoavat kärryiltä".
Tilaajan roolin lisäksi olen osallistunut aktiivisesti koodaamiseen. Erityisesti silloin kun varsinaiset työntekijät ovat kohdanneet ongelmia. Erityisen merkittävä osa Korppia on logitusjärjestelmä, joka tuottaa informaatiota hyvin monipuolisesti kaikista tapahtumista joita järjestelmässä suoritetaan. Ruuhkaisimpina päivinä logia saattaa tulla 8 gigatavua. Pelkkä logi ei yksin riitä, vaan sen päälle on täytynyt tehdä joukko työkaluja, joiden avulla tietomassasta voidaan "louhia" ongelmatilanteita paljastavia asioita.
Ensimmäisistä Korpin työtekijöistä alkaen olen anonut laitokselta, tiedekunnalta tai keskushallinnolta resursseja työtekijöitä varten. Tähän saakka Korpissa on ollut yli 20 henkilöä palkattuna yhteensä n. 370 henkilötyökuukauden edestä. Lisäksi projektien kautta 61 henkilöä on antanut noin 250 htkk:n työpanoksen. Näiden lisäksi vielä yli parikymmentä henkilöä on toiminut kiinteässä yhteistyössä Korppi-projektin kanssa. Palkatuille henkilöille olen ollut tavallaan esimies, koska olen ohjannut aina niitä tehtäviä, joita he ovat tehneet. Mahdollisimman paljon olen toki pyrkinyt työntekijöiden itseohjaontuvuuteen ja vastuunottamiseen. Jos UPJ ei olisi romuttanut tätä, katson että olen onnistunut tuossa tehtävässä varsin hyvin. Korppi-tiimi on aktiivisesti ottanut käyttöönsä työkaluja, jotka auttavat tehtävänmukaisessa toiminnassa: versiohallinta (CVS, Subversion), tehtävälistojen hallinta (Bugzilla), dokumentointi (Trac-Wiki) ja työjonojen hallinta (Tracker) (näihin perehdyttämisestä erityiskiitos Jonne Itkoselle).
Jos eniten jotakin Korpista pitäisi kritisoida, on se käytettävyys. Käytettävyys sotketaan yleensä helppokäyttöisyyteen. Korpin ongelmana on että saman järjestelmän täytyy toimia niillekin, jotka käyttävät sitä erittäin harvoin, että niille, jotka käyttävät sitä päivittäin. Näiden vaatimukset sotivat toisiaan vastaan. Seuraava Korpin osaprojekti tuleekin liittymään käytettävyyden kehittämiseen.
Korppi on esimerkki uuden ajan tavasta tehdä ohjelmia (vrt. Agile-menetelmät). Oleellista on, että kehittäjät ovat lähellä asiakasta ja kykenevät heti tunnistamaan asiakkaiden tarpeet. Näin kehitystyöstä saadaan motivoivampaa ja edullisempaa kuin perinteisiä projektimenetelmiä käyttäen. Kalenteri on erinomainen esimerkki moduulista, jota ei alunperin osattu edes ajatella liitettäväksi järjestelmään. Erityisesti se, että Korpin kehittäjät ovat olleet samalla asiakaspalvelijoita, on kehittänyt järjestelmää valtavasti. Korpin asiakastuki onkin saanut erinomaista kiitosta.
Päivitys 28.6.2020: Yliopisto on ajamassa Korppia alas ja on korvannut sen toimintoja useilla maksullisilla ohjelmilla ja opettajien työmäärät ovat kasvaneet, laitoksille on pitänyt palkata lisää väkeä hoitamaan kurssibyrokratiaa yms. Tämä on hyvä esimerkki mitä käy, kun ohjelmistokehityksessä ja hankinnoissa ei olla aktiivisesti yhteydessä todellisiin käyttäjiin.
14. Viimeaikainen kehitystyö (vuonna 2009)
14.1 ComTest
ComTest on tällä hetkellä Java-pohjainen järjestelmä yksikkötestaamisen helpottamiseksi. Ideana on, että samalla kirjoittamiselle tulee yksiköiden käyttöesimerkit, testit ja dokumentaatio. ComTest sopii hyvin myös ohjelmayksikön toiminnan määrittelyyn.
Päivitys 28.6.2020: Nykyisin ComTestista on versiot myös C#- ja C++ -kielille. ComTest on myös täysin integroitu TIMiin. ComTestiin liittyen on yksi vertaisarvioitu artikkeli.
14.2 MiPoFUI
Millimetrin tarkkaan paikannukseen perustuva kelluva käyttöliittymä kännyköihin. Ideana oli toteuttaa kännykän paikkaan perustuva käyttöliittymä. Innovaatio oli, että kännykkä toimii "suurennuslasina" isompaan maailmaan jossa liikutaan kännykkää siirtämällä. Esimerkiksi jos käytetään karttaa ja ruudussa näkyy Jyväskylä, niin siirtämällä kännykkää oikealle, tulee näkyviin Vaajakoski. Eli toiminta olisi kuten suurennuslasin siirtäminen paperikartan päällä. ja Nokia osallistui projektiin 30 000 eurolla. Projektissa lähdettiin tavoittelemaan liian suuria ja yritettiin tehdä kirjoittamista korvaava apuväline, missä näppäimistöä "katsotaan suurennuslasilla" Ongelmaksi tuli se, ettei käytetyillä kiihtyvyysantureiden erotuskyvyllä päästy haluttuun tarkkuuteen. Ratkaisua kokeiltiin myös WiiMoten avulla infrapunatekniikkaan perustuen. Tämä ratkaisu osoittautui jopa toimivaksi, mutta ei riittävän nopeaksi verrattuna olemassa oleviin käyttöliittymiin. Projektissa työskenteli palkattuna kaksi henkilöä Panu Ojala ja Tuomas Räsänen. Panulta jo valmistui aiheeseen liittyvä opinnäytetyö ja Tuomaksella työ on hyvässä vauhdissa.
14.3 Graphics
Ohjelmointi 1 kurssin motivaation nostamiseksi tehtiin helppokäyttöinen mutta riittävän suorituskykyinen graafinen kirjasto.
15. Jatko
Lopuksi listaan niitä mielenkiinnon kohteita, joihin tuleva toimintani tulenee kohdistumaan:
15.1 Mobiilijärjestelmät
Yksi tavoitteistani on päästä mahdollisimman pitkälle siihen, että voin hoitaa kaikki toimintani kännykän kautta. Yksi osa tätä on mm. Korpin ja kännykän kalenterin välinen synkronointi, samoin kuin muutenkin Korpin käyttö kännykän kautta. Sitten toki on tavoitteena kehittää uusia innovatiivisia ohjelmia kännyköihin. Ohjelmakehitystä rajoittaa tällä hetkellä huonot kehitysympäristöt ja kielet.
15.2 Testaaminen
Yksi selkeä ongelma ohjelmistoteollisuudessa on testaaminen. Kaikessa toiminnassani testaaminen on alusta saakka ollut merkittävässä, tosin epäformaalissa, roolissa. Nykyisin kuitenkin testaaminen on liian monimutkaista ja sen takia mm. automaattiset yksikkötestit jätetään helposti kirjoittamatta. Aluksi tähän pitää ideoida uusia helpottavia ratkaisuja.
16. Vuoden 2009 jälkeen
Tämä luku on tiivistetty lisäys alkuperäiseen vuoteen 2009 ulottuvan kirjoituksen jälkeisestä ohjelmistokehityksestä.
Tätä aikaa leimaa mm. se, että Korpin kehitys luovutettiin nykyisin Digipalvelut-nimeä kantavalle organisaatiolle. Tämä johti kehityksen irtautumiseen käyttäjistä ja lopulta siihen, että päätettiin hankkia korvaavia järjestelmiä, kun kehityksen priorisoinnit eivät vastanneet "käyttäjien tarpeita". Päätöstä luovuttaa Korpin kehitys pois, pidän jälkeenpäin yhtenä urani huonoimmista päätöksistä.
16.1 JyPeli (2009-)
Vuosikymmenen lopussa tuntui, ettei saada nuoria kiinnostumaan alasta. Siksi Tietotekniikan laitoksella päätettiin alkaa pitämään kesäisin Nuorten peliohjelmointi kurssi -nimistä viikon kesäkurssia. Kurssin ideana oli tarjota nuorille positiivinen kokemus ohjelmoinnin maailmaan käyttäen heidän omia kiinnostuksen kohteitaan. Ei tarvinnut kauan miettiä, minkä kanssa nuoret eniten viettivät aikaa: pelaamisen. Siksi tavoitteeksi asetettiin, että viikon kurssin aikana kohdenuoret, eli yläkoululaiset, jotka tekevät oppiainevalintoja lukiota varten, pystyisivät tekemään toimivan pelin. Lisäksi tavoitteeksi asetettiin, että koulussa vastaantulevat fysiikan ja matematiikan käsitteet tehtäisiin tätä kautta tutuiksi ja tarpeellisiksi.
Ongelmaksi tuli se, että olemassa oleville pelikirjastoilla pelin tekeminen oli kohtuuton tehtävä käytettävissä olevalla ajalla ja oppilaiden tietoteknisillä taidoille. Siksi päätettiin tehdä oma pelikirjasto, joka jättää jäljelle tärkeitä ohjelmoinnin käsitteitä, mutta piilottaa riittävästi pelimekaniikan hankalia asioita. Tästä alkoi JyPeli-kirjaston kehitys. Ensimmäisenä kesänä tähän oli palkattuna kolme kesätyöntekijää, joista osa jatkoi myöhemmin työtä opiskelun yhteydessä. Työ aloitettiin huhtikuussa ja saatiin alustavaan käyttökuntoon kesäkuun ensimmäistä kurssiesiintymää varten. Kurssista muodostui valtava menestys ja sen pitämistä on jatkettu 2020-luvulle saakka. Itse kirjasto on kehittynyt myös historian saatossa niin, että nuorten haluamia ominaisuuksia on sinne lisätty.
Yliopiston varsinaisilla ohjelmointikursseilla todettiin motivointiongelmia, koska enää pelkkä tekstipohjainen ohjelma ei jaksanut opiskelijoita kiinnostaa. Koska JyPeli huomattiin toimivaksi ja hyvin valmentavan myös nykyaikaisten graafisten käyttöliittymien ajatusmaailmaan, otettiin se käyttöön myös Ohjelmointi 1 -kurssilla. Tämä nosti kurssin läpäisyä yli 10 prosenttiyksikkö muiden toimenpiteiden päälle.
Nykyisin JyPelin kehityksestä vastaa aina joku Ohjelmointikurssin tuntiopettajista. Viime aikoina JyPeli on päivitetty tukemaan paremmin muita käyttöjärjestelmiä kuten Linuxia, MacOS:ää ja Androidia. Valitettavasti Windows Phone kuoli pois, sillä sille oli todella helppo tuottaa pelejä JyPylillä. Kymmenet opiskelijat saivatkin ilmaisia puhelimia tekemällä pelejä kauppapaikkaan.
JyPelin ja Nuorten peliohjelmointikurssin tiimoilta in tullut yksi väitöskirja (Antti-Jussi Lakanen) ja useita vertaisarvioituja julkaisuja (Isomöttönen, Lakanen, Lappalainen).
16.2 CycloLite (2011-2014)
Windows Phonen tulemisen myötä kännykkäsovellusten teko helpottui merkittävästi (eikä ole vieläkään muiden järjestelmien osalta samalla tasolla). Ohjelmointi 1-kurssille liitettiin lisäosa, jossa ohjelmia tehtiin kännyköille. Tätä opetellessa tein itselleni sellaisen urheiluohjelman, jollaisen halusin sen olevan. Vanhenevalla henkilölle riittävän suuret tekstit, monipuoliset karttapohjat ja tilastoinnit. Ohjelma oli saatavilla Windows Phonen kauppapaikasta ilmaiseksi ja se saavutti kohtalaisen suosion. Windows Phonen poistuminen markkinoilta toki tappoi tuotteen.
Itse käytän tätä silti vanhalla kännykällä auton nopeusmittarina.
16.3 YourMap
Kun käyttöön tuli Windows-pohjaisia tabletteja, niiden ongelma usein oli, että vaikka niissä oli hyvä ja kätevä näyttö, niin halvemmista versioita puuttui GPS ja siten niitä ei voinut käyttää karttaohjelmina. Tähän ratkaisuksi kehitin YourMap sovelluksen, joka käyttää CycloLiten kanssa kommunikoimalla puhelimen GPS:ää ja näin karttapohja saadaan suuremalle näytölle.
16.4 Kartta
Koska Windows tabletit eivät lopulta nousseet kovin suureen suosioon, siirsin suuren osan YourMap-ohjelman toiminnoista, erityisesti laajan karttapohja-aineiston, HTML-pohjaiseen Kartta-nimiseen sovellukseen:
Kartta-sovelluksella voi monipuolisesti tehdä niitä asioita, joita tarvitsen kartan kanssa tehdä aina riippuliidon reitinsuunnittelusta ajo-opastukseen.
16.5 Tenttiosallistujien viivakoodi -luku (2013-)
Salitenttien lopuksi on pitänyt kirjata käsin paperille tentissä olleet ja mitä tehtäviä ovat palauttaneet. Tämä on hidastanut merkittävästi tentin purkamisen viemää aikaa. Tähän ratkaisuksi muokattiin Ohjelmointi 2 -kurssin malliharjoitustyötä niin, että nyt tentistä poistuva opiskelija voidaan "hoitaa" noin 10 sekunnissa. Ideana on, että opiskelija näyttää ajokortin tms. viivakoodillisen henkilötodistukse,n jossa hetu on viivakoodissa. Tämä skannataan viivakoodinlukijalla. Sitten kutakin eri tenttiä varten on oma pino, jonka edessä on viivakoodilla tentin tunnus. Opiskelija laittaa vastauspaperinsa asianomaiseen pinoon ja valvoja pyyhkäisee pinon edessä olevaa viivakoodia yhtä monta kertaa, kun pinoon laitetaan papereita.
17. TIM (The Interactive Material, 2014-)
Teen TIM-järjestelmästä oman luvun, koska se on nykyisin Korppiakin suurempi projekti ja jäänee viimeiseksi isoksi projektikseni yliopistossa.
17.1 Taustaa
Ennen vuotta 2014 teimme ja ylläpidimme mm. Ohjelmointi 1-kurssin materiaalia OpenOffice-sovelluksella. Ideana oli, että samasta materiaalista saadaan yhdellä ylläpidolla sekä painettu versio että laadukas WWW-julkaisu. Koska lähes kaikkien toimistotyökalujen HTML-export on kelvottoman ja surkean välimaastossa, piti exportin tulosta parannella lukuisilla skripteillä. Kuitenkin sekin tekniikka oli parempi kuin monien käsin käyttämät menetelmät.
Lopullinen kuolinisku tekniikalle oli kun jouduin monisteessa korjaamaan yhden sanan ja minulla meni tunteja löytää mitkä kaikki skriptit piti julkaisua varten ajaa. Tämä oli yksi suuri motivaatio TIMin aloittamiselle. Nyt lopputulos on, että voin sekunneissa tehdä muutoksia, vaikka kesken luennon.
Toinen syy muunnostarpeelle oli se, että ohjelmointityylisissä luentomonisteissa on paljon muualta lainattua ohjelmakoodia. Ja silloin myös pitäisi päästä mahdollisimman pienellä ylläpidolla, eli ohjelma pidetään versionhallinassa ja se haetaan aina sieltä automaattisesti oikealle kohdalleen, kun luentomoniste avataan. Näin monisteen ylläpitäjän ei tarvitse tehdä muita toimenpiteitä, kun esimerkit muuttuvat.
Seuraava tarve oli saada erilaisia interaktioita suoraan monisteeseen. Ohjelmointikurssien tapauksessa ne ovat esimerkiksi suoritettavia ohjelmia.
Edellä oli TIMin alkuperäiset tavoitteet. Ne on saavutettu enemmän kuin hyvin ja TIMistä on kasvanut järjestelmä, jossa on suurin piirtein kaikki se tietämys ja tarpeet, joita minulle on opettajana tullut liki 40 vuoden urani aikana. Korpin alasajon myötä TIM on pitänyt paikata myös sen toimintoja.
17.2 Kehitys
TIMin kehitys alkoi keväällä 2014 muutaman palkatun kesätyöläisen toimesta ja nyt sitä kehittää ja ylläpitää alusta asti mukana ollut Mika Lehtinen. Oma koodauskontribuutioni on kohdistunut lähinnä tietotekniikassa tarvittavien liitännäisten (plugin) kehittämiseen. Toki ideoinnissa ja testaamisessa oma kontribuutioni on ollut todella iso.
Iso panos on myös Ville Tirrosen dokumenttimuuntimilla.
TIMiä on kehitetty Jyväskylässä palkattujen henkilöiden toimesta myös lisäksi Aalto-yliopistossa, Jyväskylässä 7 sovellusprojektien toimesta sekä Tampereen yliopistossa kahden projektin toimesta. Yhteensä kehitykseen osallistuneita henkilöitä on yli 80.
17.3 Käyttö
TIMiä käytetään laajasti erityisesti entisen tietotekniikan laitoksen puolella. Matematiikan laitoksella on lähes kaikkien kurssien kurssikirjanpito (vrt entinen Korppi) hoidettu TIMillä. Lisäksi useiden matematiikan ja tilastotieteen kurssien kurssimateriaalit ovat TIMissä. Fysiikan laitokselle on paljon TIM-pohjaista kurssimateriaalia. Myös Aalto-yliopistossa Elektroniikan osaston matriaalia on TIMissä. Meneillä on myös kokeilu, jossa TIM korvaisi Aalto-yliopiston osasuoritusrekisterin.
TIMillä on pidetty jo vuosia pääsykokeita ja koronakevään 2020 sillä pidettiin Tietojenkäsittelytieteen valintakoeyhteistyön paperikokeiksi suunnitellut valintakokeet. Verrattuna muihin järjestelmiin, pystyttiin alkuperäisten suunnitelmien mukaiset kokeet järjestämään lähes sellaisenaan tekniikan avustamana niin, että suurin osa korjaustyöstä hoitui automaattisesti. Kokeeseen osallistui 2200 opiskelijaa. Myös haastatteluryhmiin jaot yms. voitiin hoitaa TIMillä, kiitos Antti Valmarin parturi-ongelmasta muokatun apusovelluksen.
Samoin kolme muuta IT-tiedekunnan valintakoetta pidettiin TIMillä ja kokeet saivat kiitosta siitä, että olivat sellaisia, joissa lunttaamisesta ei ollut apua. Toki oli haasteitakin, jotka johtuivat aikapulasta ja testaamiskapasiteetin puutteesta.
Keväällä 2022 Aalto-yliopiston Informaatioverkostojen valintakokeessa kokeiltiin TIMin käyttöä.
TIMillä hoidetaan myös IT-tiedekuntaneuvoston esityslistat ja pöytäkirjat. Tämä helpottaa erityisesti tiedekuntaneuvosten jäsenten materiaalin lukemista, kun liitteet löytyvät selkeästi ja nopeasti esityslistan sisältä. Esityslistan tekijöitä helpottaa mm liitteiden automaattinen leimaaminen.
TIM voitti eEemeli-kilpailun oppilaitossarjan keväällä 2019.
TIMin ominaisuuslista on niin pitkä, että sitä ei kannata tässä enää toistaa, osan siitä löytää TIMin esitteestä:
TIMistä ja sen käytöstä opetuksessa on vertaisarvioituja julkaisuja. Lisäksi siihen liittyen on tehty useampia graduja.
Voisi laskea TIMin ansioksi, että iso osa IT-tiedekunnan opetuksesta ja tentteistä siirtyi helposti Korona-aikaan. Kursseilla TIM on kasvanut merkittävimmäksi kommunikointikanavaksi opettajan ja opiskelijoiden välillä.
17.4 Erityisominaisuuksia
Yksi TIMin merkittävä ominaisuus muihin järjestelmiin verrattuna on sen rakenne. Kaikki koostuu dokumentista ja dokumentti koostuu lohkoista. Lohkoja voi lainata toisiin dokumentteihin, jolloin lainattu muuttuu, kun alkuperäistä muutetaan. Tämä mahdollistaa useiden erilaisten ilmentymien tekemisen samasta materiaalista yhdellä ylläpidolla.
Toinen erityisominaisuus on kääntäminen. Dokumentista voi pyytää käännetyn version (joka aluksi on samankielinen kopio), jonka päälle kirjoitetaan käännös. Jos alkuperäinen dokumentti muuttuu, niin käännettyyn tulee tästä merkintä ja käännöstä ylläpitävän on helppo huomata mitä pitää muuttaa. Tästä hyvä esimerkki oli TKT valintakokeet, kun kysymykset piti olla sekä suomeksi että ruotsiksi. Välillä ruotsi-version ylläpitäjä oli tehnyt käännöskorjauksen ennen kuin suomi-version muuttaja oli lopettanut korjaukset.
Uutena keväällä 2022 TimTra-projektin toimesta lisättiin automaattinen käännös käyttäen tekoälykääntäjää (DeepL). Näin saadaan dokumentin käännöspohja luotua automattisesti lähdekielisestä dokumentista. Toimintoa hyödynnettiin mm. kevään 2022 valintakokeissa.
Sitten TIM näyttää muutokset siihen nähden, mitä kunkin henkilön viimeisimmän lukemisen jälkeen on tapahtunut. Moni järjestelmä näyttää eroja, mutta ne eivät kerro mikä on ero siihen, kun MINÄ olen viimeksi lukenut. Tämä on erittäin hyvä ominaisuus esimerkiksi graduja ohjatessa, kun näkee heti mitä muutoksi on tullut.
Toinen opinnäytteiden ohjausta helpottava ominaisuus on VELPit (Virtuaaliset Esipainetut Liukkaat PostIt -laput). Eli erilaisia tehtäviä korjatessa tulee hyvin äkkiä joukko toistuvia hyviä tai huonoja ratkaisuja ja näitä varten voi tehdä valmiita "lappuja", joita vedellään esimerkiksi opiskelijan kirjoitukseen. Laput voi myös pisteyttää, jolloin ei-automaattisesti korjattavien tehtävien tarkastus nopeutuu.
Tivoli-sovellusprojektin ansiosta Velpppejä voidaan käyttää vertaisarviointiin. Näin esimerkiksi matematiikan laitoksella voidaan palauttaa käsin kirjoitettuja vastauksia, joihin vertaisarvioijat voivat "piirtää" palautetta.
TIMissä on myös makrot, joilla voi helpottaa tiettyjä dokumentin osien ylläpitoa. Samoin preamble-dokumentit, joiden avulla mm. saadaan samanlainen ulkoasu kaikille dokumenteille yms., jota ei vastaavana löydy muista järjestelmistä.
Lisäksi TIMissä voi erilaisilla näkyvyysrajoitteilla tehdä eri kohderyhmille eri tavalla näkyvää materiaalia. Valintakokeessa esimerkiksi oli erilaisia tekstejä lisäajan saaneille tai saavutettavuutta pyytäneille.
Uusimpana TIMiin on integroitu yksi parhaista WWW-pohjaisista piirto-ohjelmista - DrawIO, jolloin tehtävävalikoima laajenee nyt merkittävästi. Matematiikassa TIM on jo ennestäänkin omassa luokassaan.
Kevään 2022 Katti-sovellusprojektissa TIMiin lisättiin kalenteri, josta opiskelijat voivat ilmoittautua ohjauksiin ja ohjaajien henkilökohtaisiin tapaamisiin.
17.5 Mitä sanovat opiskelijat?
- TIM-luentomoniste on erinomainen.
- TIM on kivasti kirjoitettu. Asiat on TIM:ssä selkeästi esitettyinä. Se on paras "kurssimoniste" koskaan.
- TIM-verkkomoniste erinomainen
- TIM oli loistava
- Uudistunut luentomoniste (TIM) on mahtava!
- Tim on hyvä. En osaa parannusehdotuksia antaa.
- TIM-moniste on minun mielestäni todella oivallinen työkalu kurssille.
- TIM käyttää aidosti ja monella tavalla hyväkseen sitä, että se on sähköinen oppimateriaali/ moniste. Useinhan sähköiset oppimateriaalit ovat toiminnaltaan ja käytöltään lähes paperiversiota vastaavia, vastauksia vaan ehkä klikkaillaan kynällä kirjoittamisen sijasta, tai väärästä vastauksesta saa välittömän palautteen, tai ei tarvitse kääntää sivua... Mutta harva tähän mennessä näkemäni materiaali todella hyödyntää verkkoon liittyviä mahdollisuuksia tai esim. reaaliaikaisuutta. TIMin tyyppistä aidosti interaktiivista oppimateriaalia pitäisi saada jokaiselle koulutusasteelle (ongelmahan siinä monelle olisi, että opettajan pitäisi sitä itse päivittää). Liikeideaa jollekin firmalle... Ehkä opiskelijat eivät tiedosta (kuten en itsekään), kuinka pedagogisesti nerokas materiaali heillä on käytössään, mutta oppimista ja asioiden ymmärtämistä se varmasti jouduttaa.
- TIM-järjestelmä on huikea, se saattaa olla suurin syy miksi koen ohjelmoinnin opiskelun helpoksi.
- TIM-järjestelmä on tosi hieno.
- TIM toimi loistavasti, verkkomateriaali mahdollisti vapaan aikatauluttamisen.
- Olen käyttänyt kursseilla TIMmiä Win-kannettavalla, ipadilla, Androidin tabletilla ja kännykällä ja iphonella hyvällä menestyksellä. TIM on yksi interaktiivisimmista opiskeluympäristöistä, mitä olen käyttänyt ja sen monipuolisuus on hatunnoston arvoinen huomio.
17.6 Mitä opettajat sanovat
- TIM on ensimmäinen kohtaamani verkkoalusta, jonka voi aidosti laittaa palvelemaan pedagogiikkaa. Esimerkiksi Moodlea käytettäessä täytyy usein aloittaa kysymyksestä “mihin Moodle kykenee”, kun taas TIMin kanssa voi aina aloittaa kysymyksestä “mitä haluan saada tehtyä"
- Opettajan näkökulmasta TIM-järjestelmä tuottaa välineet kaikkiin opetuksen perustarpeisiin. Opettaja saa TIM:llä kirjoitettua opetuksessa tarvittavat tekstit linkitettynä verkkoon, laadittua harjoitustehtävät sekä saa tehtyä opetustilanteisiin tarkistus- ja palautekysymykset, joiden avulla opiskelijat voivat kommunikoida anonyymisti opettajalle näkemyksiään. TIM-järjestelmässä saa myös tarkastettua ja pisteytettyä harjoitustehtävät, ja siinä voi seurata opiskelijoiden etenemistä kursseilla. Opiskelijan näkökulmasta TIM-järjestelmästä löytyy kaikki kursseihin liittyvät sisällölliset asiat ja toteutukseen liittyvät informaatio kohdennetusti yhdestä paikasta. TIM-järjestelmä on erityisen kätevät tietotekniikan ja matemaattisten aineiden opettamiseen. Se tarjoaa aineiston rajaamiseen ja esittämiseen työkaluja, joiden avulla opiskelijoiden huomion saa kohdennettua olennaisiin ydinkohtiin. Muissa nk. oppimisalustoissa ei ole vastaavia tyäkaluja tarjolla. Myös muiden yliopistojen kolleegat ovat oma-aloitteisesti todenneet yksityisissä keskusteluissa Jyväskylän yliopistossa kehitetyn TIM-järjestelmän olevan varsin ainutlaatuinen.
- TIM-järjestelmän paras ominaisuus opettajalle on vapaus luoda ihan minkälaisia tehtäviä vaan sekä tehtäville tarkistimia, jotka automaattisesti pisteyttävät tehtävät ja antavat esimerkiksi palautetta opiskelijalle. Opiskelija näkee onnistumisensa heti ja palautteen perusteella voi vaikka parantaa vastaustaan. Opettaja voi mm. vapaasti rajoittaa vastauskertojen määrää, määritellä pisteytyssäännöt ja sen minkälaista palautetta vastauksista annetaan.
- Juteltiin vielä Xxx:n kanssa siitä, miksi TIM on meille ihana värkki. Itse olen kutsunut sitä (mm. JY:n tiedotuslehdessä) Harry Potter -luentoprujuksi, jossa kuvat elävät (videot, simuloinnit, miksei nettilinkit ja ekstrajutut asiasta kiinnostuneille). Samoin opiskelijoiden mahdollisuus tsekata osaamistaan on hieno ominaisuus (mun kursseille täytyy lisätä näitä vielä). Näistä ominaisuuksista olemme myös saaneet kiittävää palautetta.
17.7 Tulevaisuus
Näillä näkymillä upotan kaikki uudet innovaationi TIMiin, jolloin järjestelmäkirjo pysyy pienempänä opiskelijan ja opettajan perspektiivistä. Harmillista on, että yliopisto ei näe tälle arvoa vaan haluaa pitäytyä vanhenevissa kankeissa järjestelmissä.
These are the current permissions for this document; please modify if needed. You can always modify these permissions from the manage page.