tiistai 8. kesäkuuta 2010

Kuplan lajittelu (koko perheen K-12 versio)

Syksyllä '95 aloitin TTKK:lla opiskelut kotoa käsin kaahaamalla Koski-Hervanta-väliä punaisella Ford Sierralla ja samaan aikaan teimme demogroupimme kanssa freelance-työnä Nokian tutkimuskeskukselle 3d-animaation streamauksen ja moduulipohjaisen karaokejukeboksin mobiiliyhteyden yli. NRC:hen olimme olleet ensi kerran yhteydessä jo '94, kun Pirkanmaan projektin ansiosta olimme kehittäneet kesätöiksi algoritmin reaaliaikaisen videon värien kvantisointiin ja paletin valintaan 256-väriselle näytölle. Nokia oli pienimuotoisempi firma kuin nykyään ja muistan vielä kuinka paljon vähemmän esimerkiksi kaikenlaisia kulisseja oli pystytetty viemään luulot pois vierailijoilta. Lähetimme tarjouksemme tutkimuskeskuksessa työskentelevälle professorille levykkeellä, johon olimme koodanneet hypertekstipohjaisen kirjeen, ja onnistuimmekin saamaan muutaman kuukauden palkan työstämme. Kirjeohjelma on jäänyt mieleeni, koska teimme sen Mikon vanhempien vintillä eräänlaisena kokeena, jossa maikailin sängyllä ja luin lähdekoodin sokkona koneen ääressä istuneelle Markolle. Sanoisin tämän perusteella, että muutaman tuhannen rivin itsekirjoitetun ohjelman pystyy vielä tuoreena muistamaan ulkoa ilman ponnisteluita, mutta sitä suuremmissa tapahtuu jokin laadullinen ero, koska ei enää pysty hahmottamaan kokonaisuutta kerralla. 

Vuoden 96 alusta muutin Hervannan Wäinölään asumaan silloisen tyttöystäväni kanssa ja aloitimme Mikon kanssa tutkimusapulaisen osapäivähommissa DMI:llä (Mikko oli lukenut jostain tilavuusmallinnuksesta ja yksinkertaisesti ehdotimme tällaista aihetta DMI:lle pienen demon kera). Ensimmäisenä lukuvuonna sain suoritettua puolet DI:n tutkinnosta, sillä osasin ammattiaineiden sisällön jo pääpiirteissään etukäteen, mutta siitä eteenpäin edistymisnopeus näytti puolittuvan vuosittain geometrisena sarjana, koska työt olivat yksinkertaisesti liian kiinnostavia. Taisi olla jo '97, kun koulun tietojärjestelmässä oli ollut jokin ongelma, eikä opiskelijoiden ollut mahdollista nähdä kurssien luokkia. Koska tätä ei saatu korjattua noin viikkoon, hermostuimme kaverini kanssa riittävästi ja kävimme yksi yö keräämässä luokkien edustoilta huonevarauslaput ja syötimme ne tietokantaan ja väsäsimme yksinkertaisen CGI-skriptin, jolla kuka tahansa saattoi sitten webissä laatia itselleen lukujärjestyksen luokkien kera syöttämällä valitsemansa kurssit. Ohjelmistotekniikan projektityökurssille toteutimme Invent-järjestelmän, joka toteutti Java-appletin avulla VRML:n monenkäyttäjän toiminnallisuuden, jossa saattoi nähdä muut ko. sivulla olevat käyttäjät samassa virtuaalimaailmassa. Virtuaalimaailmat olivat tuolloin kova sana, mikä näkyi myös monissa senaikaisissa elokuvissa ja web:kin oli vasta tulossa yleisempään käyttöön eikä kiinteää Internet-yhteyttä ollut monissa kodeissa. Reitmaa järjesti muutaman kurssin virtuaalimaailmoista ja pääsin kokeilemaan koululla rakennettua VR-kypärän ja paikannuslaitteiston yhdistelmää ja olipa joku kehittänyt sellaisen sormustimenkin, jonka kautta sai haptisen palautteen virtuaalimaailmasta. DMI:llä tutkimme myös jaettuihin virtuaalimaailmoihin liittyviä alustoja ja jossain vaiheessa kirjoitin myös Finn-medi-tutkimukselle tilavuusmallinnusvisualisointialgoritmin, joka mahdollisti EEG:n, röntgenkuvan ja MRI-datan yhdistämisen yhdeksi 3d-kuvaksi, jota käytettiin mm. epilepsiakohtauksen etenemisen tutkimiseen, aivokasvainten koon arviointiin ja leikkausten suunnitteluun. Itse lääketiedepuolesta vastannut heppu kirjoitti tuosta myös tieteellisen artikkelin. Noihin aikoihin tuli roikuttua yöt-päivät TTKK:n Hermian tiloissa, välillä DMI:n labrassa ja välillä tankkaamassa Modeemi ry:n huoneessa, jossa usein hihaan tarttui Esa, joka esitteli viimeisimpiä Haskell-ohjelmiaan. Silloin tällöin kävimme puoliltaöin pitämässä palaverin 24h huoltoasemalla (Jyväskyläntien varressa?) ja ideoimassa kahvin ääressä.

Syksyllä '97 päätimme Mikon, Markon ja Fredrikin kanssa perustaa spin-off-osakeyhtiön jaettujen virtuaaliympäristöjen ympärille. Otimme myös Huopan mukaan matemaatikoksi ja silloisen DMI:n johtajan eräänlaisena "kummisetänä" mukaan pienemmillä osuuksilla ja omasta osuudestani annoin siivun vanhemmilleni ja Ulla hoiti meidän kirjanpitoa aluksi. Kirjoitin ylös pitkän listan mahdollisia nimiä yritykselle, joista valitsimme ensin "Mediatek", mutta tämä oli liian lähellä olemassaolevaa Mediantech-firmaa, joka ilmeisesti valmisti kompasseja tms., joten vaihdoimme nimen loppumetreillä Mediaclick:si. Vuokrasimme parin hengen huoneen Hermian teknologiakylästä ja tuossa vaiheessa maksoimme alkupääomasta muistaakseni minimipalkkaa Mikolle ja Markolle ja itse jatkoin vielä hetken DMI:llä tehden firman hommia ohessa. Tein tuolloin DMI:llä kiihtyvyysantureihin pohjautuvan fyysisen input-laitteen VRML-maailmoille ja kävin myös ensimmäistä kertaa Siggraph-konferenssissa, joka on eräänlainen massiivisen tieteellisen konferenssin ja "aikuisten demopartyn" yhdistelmä, jossa firmat voivat esitellä viimeisintä tekniikkaansa. Vuoden 98 alusta siirryin itsekin firman kolmen hengen koppiin täyspäiväisesti. Hermiassa oli runsaasti vastaavia pikkufirmoja ja välillä meidänkin ovella kävi eräänlainen paikan "yleismies jantunen", joka yritti kaupata tietokoneita ja tarvikkeita. Koska tapanani on usein kuunnella musiikkia kuulokkeista tehdessäni jotain ja satuin kerran kuuntelemaan Bachin Matteus-passiota, kun tämä hankkija sattui paikalle. Mieleeni on jäänyt hänen kommenttinsa kauniista "Erbarme dich, mein Gott"-aariasta, kuinka tällainen musiikki kasvattaa rintakarvoja. Toinen tapahtuma, joka jäi mieleen oli Martti Ahtisaaren ja Puolan presidentin vierailu Hermiaan, johon meidät kutsuttiin esimerkkifirmana esittelemään virtuaalimaailmoja näille. Joskus tuolloin kävin myös pitämässä C++-kurssin Toijalan Tietotalossa ja Java-kurssin Päivölässä. Lisäksi autoin pari vuotta Suomen IOI-valmennuksessa ja olin mukana '98 Setúbalin kisoissa Portugalissa kääntämässä tehtäviä ja vielä 2000 Pekingissä, jolloin Suomelta oli kisoissa mukana ihmisiä tutustumassa kisajärjestelyihin tulevia Tampereen kisoja silmälläpitäen. '98 kävimme firman työntekijöiden kanssa yhdessä motivointimatkalla Siggraphissa ja Disney Worldissä Floridassa ja yhdistimme sen työmatkaan New Yorkiin, johon menimme tapaamaan amerikkalaista sijoittajaa. Hän oli nähnyt tilavuusmallinnustekeleemme verkossa ja oli kiinnostunut perustamaan uuden keskisuuren toimijan lääketieteellisen tekniikan alalle pienistä Eurooppalaisista firmoista, joka voisi kilpailla jättifirmojen kanssa kalliista sairaaloiden laitetoimituksista, joiden hinnoissa oli paljon ilmaa vähäisen kilpailun takia. Sijoittajan oma saman aihealueen yritys, jossa pidimme tapaamisemme, toimi aivan Manhattanin keskustassa pilvenpiirtäjän kattohuoneistossa, joka sisälsi pari ylintä kerrosta talosta ja paikalle oli kutsuttu myös eräs saksalainen alan pikkuputiikki. Tuosta tapaamisesta muistan lähinnä vain, että t-paitaan pukeutunut miljonäärimme aloitti kokouksen reteästi "Let's assume that I have money..".

Olin tuolloin jo jonkin aikaa pohtinut visiota eräänlaisesta x-ikkunoinnin, 3d:n ja monenkäyttäjän ryhmätyön liittämisestä yhtenäiseksi käyttöliittymäalustaksi Internetille siten, että eri ohjelmistot voisivat luoda käyttöliittymänsä virtuaalimaailmaan, jossa käyttäjät voisivat niitä käyttää avatar-hahmojensa kautta yhdessä. Esimerkiksi verkkolevy olisi näkynyt arkistokaappina virtuaalimaailmassa ja kun dokumentin olisi vienyt kaappiin, olisi se tarkoittanut automaattista tiedoston kopiointia ko. serverille jne. Taustalla oli ajatus vanhoista erillisistä MS-DOS-grafiikkaohjelmista, jotka Windows-käyttöliittymä lopulta jyräsi yhtenäisellä moniajoalustallaan ja ajattelin, että 3d:n kohdalla voisi tapahtua jotain samanlaista. Lisäksi Internet oli yleistymässä räjähdysmäisesti kaistanleveyden ja 3d-tehon kasvaessa eksponentiaalisesti, mitkä olivat luomassa teknisiä edellytyksiä tällaisen vision toteutumiselle. Kehitin Corban ja erään USA:n laivaston massiivisen sotasimulaatiojärjestelmän innoittamana pohjan megalomaaniselle nelitasoiselle Workrooms-arkkitehtuurillemme, jossa ensimmäinen kerros wUII (universal information interface) vastasi data-keskeisen kommunikaatioprimitiivin toteutuksesta Corba-tyylisen oliokutsujen rinnalle skaalautuvalla cachetuksella ja O(n*log(n))-resurssien kulutuksella, toinen kerros wSOM ("simple" object model :) ) oli taas edellisen alustan kietominen rajapinnanmäärityskieleen IDL:n hengessä, kolmas wDOT (distributed object toolkit) oli taas täysiverinen hajautettujen palveluiden kokoelma mikrokernelihengessä ja ylimpänä oli wIEF (interactive experience framework), jonka tarkoituksena oli korvata VRML paljon järeämmällä kehyksellä virtuaalimaailmojen väliselle interaktiolle siten, että se toimisi saumattomasti hajautettujen transaktioiden, ortogonaalisen persistenssin jne. kanssa. Jälkikäteen katsottuna tämä suunnitelma oli tietenkin aivan mielipuolisen kunnianhimoinen kokoisellemme firmalle ja lopulta kasassa oli ehkä noin 2000-sivua dokumentaatiota ja satojatuhansia rivejä koodia firman loppuvaiheissa, mutta kokonaan valmiiksi emme järjestelmää koskaan saaneet. Jälkiviisaana huomasin myös, että olimme kehittäneet skaalautuvan tiedon jakamisen jo kauan ennen BitTorrentin tai DHT:den keksimistä periaatteessa vastaavilla tekniikoilla (järjestelmään liittyvät client:it toimivat cacheina ja muodostivat dynaamisesti multicast-puita p2p), mutta olimme niin sokaistuneita virtuaalimaailmavisiosta, ettemme nähneet näiden arvoa kuin välttämättömänä komponenttina, jotta saisimme järjestelmästämme skaalautuvan. 98 esittelin tätä visiota Nokialle ja HPY:lle, josta oli ainakin teknologiajohtaja Linturi paikalla kuuntelemassa ja onnistuin jotenkin saamaan nämä vakuutettua molemmat laittamaan 300k markkaa firmaamme käytännössä ilman vakuuksia, mikä mahdollisti sitten, että saimme samansuuruisen summan lisäksi TEKES:ltä. Tällöin saimme palkattua lisää väkeä firmaan ja muutimme Hermian nurkan pyöreään tilaan auditorion yläpuolelle. Teimme myös periaatteellisen työnjaon firman perustajien kesken, että puolet meistä keskittyisi substanssin tekemiseen ja puolet hoitaisivat busineksen. Firma alkoi myös paisumaan kuin pullataikina ja lopulta saimme erään sijoitusyhtiön ja pankin sijoittamaan meihin 15 miljoonaa markkaa omistusosuutta vastaan, minkä jälkeen siirryimme keskustaan Koskikeskuksen Ratinanlinnan yläkertaan, jonka firmamme reilut 40 työntekijää lopulta varasivat kokonaan.

Ilmeisesti, koska tavoitteemme oli niin mieletön, onnistuimme houkuttelemaan firmaamme todella lahjakkaita tekijöitä, jotka halusivat kehittyä taidoissaan (tämä on uskoakseni monille huippytyypeille paljon suurempi motivaation lähde kuin raha). Katteluksen (kaikki kutsuivat häntä sukunimellä), joka lopulta koodasi melkein kaiken 3d-koodimme, löysimme jostain autoja korjaamasta. Vaikka hän oli silloin lopettanut koulujen käynnin peruskouluun, sujui DirectX:n ja OpenGL:n puukottaminen sellaisella kätevyydellä, ettei moni maisteri pysyisi perässä. Minulla oli usein vaikeuksia ymmärtää hänen kirjoittamiansa ohjelmia, jota hän ei myöskään itse osannut kovin hyvin pukea sanoiksi, mutta joka tapauksessa koodi toimi hyvin ja nopeasti ja ihmeellistä kyllä, hän onnistui lisäämään viritelmiinsä melkein minkä tahansa uuden ominaisuuden suhteellisen helposti hieman säätämällä sieltä ja täältä :) (olen työskennellyt elämäni aikana parin ohjelmoijan kanssa, jotka lähinnä näyttävät vain poistavan koodia ohjelmistaan ja samalla toiminnallisuus vain lisääntyy enkä vielä tähänkään päivään ole täysin hahmottanut näiden ohjelmointitapaa) Täydellinen vastakohta oli sitten teoreettinen Esa, jonka sain pitkän suostuttelun jälkeen jättämään Nokia Networksin ja tulemaan meille kehittämään arkkitehtuuria. Olen melko varma, ettei 90-luvulla vielä monessa muussa arkkitehtuurissa ollut käytössä dependent tyyppejä :) Toinen loogikkomme, Aatu, nuori kaveri, oli hypännyt lukion yli suoraan yliopistoon opiskelemaan matematiikkaa. Hänellä tuntui olevan lainassa Tampereen kirjastoista puolet matematiikan kirjoista isoissa pinoissa työpisteensä ympärillä ja hän tuntui ahmivan näitä melkoista vauhtia asian vaikeudesta huolimatta. Mikko taas oli löytänyt Rintasen koodaamaan hajautusalustaamme ja Markon suhteilla löysimme graafikoita. Janne yleismatemaatikkona oli taas vastuussa protokollamme oikeaksitodistamisesta ja fysiikkamalleista virtuaalimaailmoille. Tähän liittyen kehitin tuolloin myös itse pienen "pidä perse ylhäällä"-algoritmin, joilla saimme avatarit kävelemään suhteellisen realistisen näköisesti erilaisia maastonmuotoja pitkin.

Hiljalleen firman alkuperäiset omistajat jakautuivat kahteen leiriin, joista minä ja kumppanit olisimme halunneet pitää firman pienimuotoisena ja kehittää massiivisen järjestelmämme valmiiksi tuotteeksi ajan kanssa ja sijoittajien kanssa yhteyttä pitäneet taas halusivat "nopeasti omakotitalot" ja kasvattaa firman kokoa väkisin pienillä projekteilla, jotka lopulta osoittautuivat tappiollisiksi. Peli meni lopulta niin likaiseksi, että meidän pitkän tähtäimen hanke dumpattiin ja strategian muutosta vastustaneet savustettiin ulos firmasta, kunnes firma meni lopullisesti konkurssiin dot-com-kuplassa. Käteen jäi lopulta ainakin Virtuaali-Turun tekeminen, Tunturille kuntopyörään liitetty ajopeli sekä muutama vastaava hanke ja onpa jossain OpenGL-manuaalissa kuvakin meidän WorldStreamer-ohjelmasta. Lisäksi voitimme Pirkanmaan Innosuomi-palkinnon vuonna 2000. Koska olin laittanut useamman vuoden lähes kaiken energiani ja aikani Workrooms-arkkitehtuurin kehittämiseen laiminlyöden muut asiat ja tulin ystävieni pettämäksi, ajoivat nämä kokemukset minut monen vuoden masennukseen ja jokin tavoitteellisuus katosi tuolloin sisältäni.


(Peter Gabriel Big Time)

Ei kommentteja:

Lähetä kommentti