Näytetään tekstit, joissa on tunniste 90-luku. Näytä kaikki tekstit
Näytetään tekstit, joissa on tunniste 90-luku. Näytä kaikki tekstit

maanantai 28. maaliskuuta 2011

Koira sanoo miai

Kissa vieköön, oli varsinainen koiranilma, kun syysiltana etsin kissojen ja koirien kanssa pudonnutta avainnippuani vaatekaapin villakoirien joukosta. Tarkoitus oli lähteä uusiin koiruuksiin go-kerholle ja koska satoi kissoja ja koiria, piti kaivaa sateenvarjo esiin. Olin kiertänyt kuin kissa kuumaa puuroa peliin tutustumista, mutta tästä ongelmasta pääsin kuin koira veräjästä: Kissa nostettiin pöydälle, kun kaveri oli ensin eksynyt kerholle. Ehkä olimme kuin kissa ja koira ja kivetkin näyttivät amerikanpastilleilta, mutta ei ole koiraa karvoihin katsominen tuumasin ja löin kotioven kiinni takanani.

Ilmoitustaululla luki TTgoK kissan korkuisin kirjaimin. Kyllä koira koiran tuntee piti paikkansa, sillä joku koiranleuka ohjasi minut luokkahuoneeseen. Jutut oli roisit, mutta ei haukku haavaa tee. Niinpä aloitin pelin:

Perhosmuodostelma rakennettiin nurkkaan ja kiviä jäi kurjenpesään. Heikolla ryhmällä hypättiin hevosenpäällä melkein tiikerin suuhun. Kilpikonnankuoreni vahvuus ajoi vastustajan kohti reunaa, jossa olisi odottanut vatsaan taputus pesukarhulle. Lopulta kani-kuutosen syönyt lohikäärme kaatui elefantin hyppyjen piirittäessä sen. Ei tarvittu enää kuin apinanloikka loppupelissä ja vastustajani luovutti. Totisesti, go on eksoottinen peli!

Voitosta kehuttiin aloittelijaa ja kyllähän sitä kissa kiitoksella elää. Ei tarvinnut lähteä kotiin koiranhäntä kainalossa, mistä onnittelin itseäni, sillä kuka kissan hännän nostaa, jollei kissa itse. Vanha koira ei opi uusia temppuja, mutta kyllä tästä aukenee entisiäkin jalostamalla vielä kissanpäivät.


(Paarma tango)

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)

lauantai 29. toukokuuta 2010

Hurja joukko-oppi

93-94 sain kuulla Kullervo Niemisen järjestämästä avoimen yliopiston "Pirkanmaan projektista", jossa alueen matemaattisesti lahjakkaille järjestettiin viikonloppuisin ylimääräistä opetusta silloisen TTKK:n tiloissa. Kaverini oli kunnostanut itselleen kevytmoottoripyörän, jonka kyydillä kohtaloa uhmaten kävimme syksyn sohjossa ja pimeydessä noissa tilaisuuksissa. Kullervon menetelmä oli tuolloin ns. "spiraaliperiaate", mikä tarkoitti, että hän kävi ensimmäisen päivän aikana varmaan puolet Matematiikka 1A:n prujusta läpi ja näin porukka harveni sopivan kokoiseen motivoituneiden joukkoon ilman sen kummempaa karsintaa. Idea kait oli saada ensin nopea yleiskatsaus aiheeseen ja sitten käydä aina tarkemmin läpi iteroiden. Piché ja muutama jatko-opiskelijaa opettivat tuolloin myös ja opetukseen sisältöön kuului peruskurssien asiasta aina Maplen ja Matlabin käyttöön. Tutustuin myös tuolloin muutamaan tamperelaiseen kaveriin, jotka liittyivät "demogroupiimme". Opetin tuolloin myös yhden kaverin pikkuveljen ohjelmoimaan, mistä kiitoksena hän koodasi minulle omistetun Nethack-kloonin, josta muistan, että hahmoilla oli hassuja algoritmisesti generoituja nimiä :) Projekti huipentui vuoden '94 kesällä järjestettyyn matematiikan kesäleiriin Päivölässä, johon Kullervo oli saanut haalittua entisen NASA:n chief scientist Mike Raughin, jonka silloiseen toimenkuvaan kuului HP:llä nanoteknologian tutkiminen, erityisesti kristallografia (onko tämä oikea käännös?) perusongelmanaan kysymys: kuinka tehdä instrumentteja, jotka ovat tarkempia kuin tarkimmat olemassaolevat instrumentit. Piché opetti meille tuolloin myös epsilon-delta-todistuksia (ja ihmetteli, kuinka kukaan voi olla niistä niin kiinnostunut) ja mm. Nim-pelin voittostrategian, joka meidän piti lisätehtävänä todistaa oikeaksi. Mike opetti meitä myös iltaisin heittämään amerikkalaista jalkapalloa ja tietenkin joka päivä käytiin Päivölän legendaarisessa saunassa. Joskus noihin aikoihin Kullervo alkoi myös järjestelemään suurinta projektiaan, Päivölän matematiikkalukiota ja muistankin kuinka hän puhui siitä kerran kun olimme hänen Audillaan matkalla kohti Koskia. "Iso K", kuten myöhemmät päivöliinisukupolvet häntä ilmeisesti kutsuvat, on yksi niitä harvoja ihmisiä, joita olen henkilökohtaisesti tuntenut, ja josta henki eräänlainen suurmiehen aura ..no, ainakin opin, että jos jotain oikeasti meinaa saada aikaiseksi, pitää sääntöjä hieman vetää suoraksi. Käsittääkseni tuo koko hanke perustui erilaisille lupauksille ristiin eri tahoille ja tiedeolympialaisissa menestyneille lähetetyistä kutsuista siten, että ko. hanke pullahtaisi tyhjästä käyntiin, jos kaikki järjestelyt onnistuisivat. Tiedän, että hän joutui taistelemaan visionsa takia eri tahoja vastaan, mutta ei siitä sen enempää. Kullervo myös kertoi, kuinka hän jättää viikossa aina yhden yön nukkumatta, jotta saisi enemmän aikaiseksi - tosin tämä selitti myös sen, miksi hän kerran nukahti hetkeksi, kun jäimme hetkeksi miettimään jotain kompleksianalyysin kalvoa tunnilla :) 

94-95 kuitenkin lähti käyntiin Päivölän matematiikkalinjan ensimmäinen sukupolvi, johon kuului aluksi 9 poikaa eripuolilta Suomea ja yksi liittyi vielä myöhemmin kymmenenneksi (nykyisissä sukupolvissa opiskelee myös tyttöjä ja muutenkin Päivölässä opiskeli tuolloin meidän kanssa n. 130 matkailu- ja kielilinjalaista, joista suurin osa oli tyttöjä). Sisäoppilaitosympäristössä opiskelimme lukion viimeisen vuoden oppimäärän aikuislinjan oppimäärän mukaan ja TTKK:n perusmatikat. Useina viikonloppuina järjestettiin lisäksi matematiikka- ja fysiikkaolympialaisten valmennusta, johon osallistuimme, joten kotona ehti käymään vain suhteellisen harvoin. Kullervo kävi itse iltaisin opettamassa myös Valkeakosken lukion iltalinjalle matematiikka, jolloin meillä oli tauko opetuksessa, mutta palasimme asiaan sitten iltaisin ja tyypillisesti lopetimme joskus puoliltaöin! Opetuksen jälkeen keräännyimme iltapalalle asuntolaamme, jossa yleensä katselimme tv:stä hetken Beavis & Butt-head-sarjaa ennen nukkumaanmenoa tai sitten linnoittauduimme opetusrakennuksen kellariin pelaamaan Descent-turnauksia myöhäiseen yöhön kolmella koneella, jotka saimme hankittua keväällä. Mikäli virtuaaliturnajaiset venyivät pitkään, täytyi aamulla jättää Päivölän silloisen konservatiivisen rehtoripariskunnan järjestämät uskonnollisteemaiset aamunavaukset väliin. Rehtori kai joskus valitti tästä Kullervolle, mihin voin vain kuvitella Kullervon vastanneen äärettömällä buddhamaisella rauhallisuudellaan jotain "poojaat on poiikia".

Meille oli varattu yksi Päivölän uudemmista rakennuksista, joissa asuimme pareittain pienissä huoneissa (nykyisin matikkalinjalla on yksin käytössä Päivölälle ostettu entinen maatalousoppilaitoksen massiivinen valkoinen kivitalo, joka on aivan Päivölän kukkulan korkeimmalla kohdalla). Alla on kuva Valkeakosken Sanomien lehtijutusta, jossa on kuva osasta meistä. Oma kämppikseni, Janne elikä Huopa, oli Itä-Suomesta ja väänsi aluksi sen verran vahvaa savon murretta, että en ensin tahtonut ymmärtää sanaakaan. Meistä kehkeytyi nopeasti parhaat ystävykset ja järjestimme kaikenlaisia tempauksia välillä kuten yrityksemme lukea TTKK:n matikanprujua niin nopeasti, että pyörrymme ;) Rovaniemeltä joukkoomme liittyi Tomi, joka oli jo nuorella iällä täysin uppoutunut teorioiden maailmaan ja kehitti myös ns. murtoluku-kertaiset derivaatat, jotka tosin lopulta paljastuivat jo keksityiksi. Hän oli kiinnostunut myös fraktaaleista ja erilaisista moniulotteisten avaruuksien hahmottamisesta ja piirtelikin liitutaulun välillä täyteen omia persoonallisia kuvioitaan ja kehitti myös ääretöntä musiikkia ilman toistoa Aabelin jonoista (mikä muistaakseni onnistuu, jos käytössä on vähintään neljä eri nuottia). Porukan varmaan älykkäin oli Pohjanmaalta tullut kilpailuhenkinen ja jääräpäinen Uoti, joka murskasi useimmat ongelmat yksinkertaisesti raa'alla voimalla. Kun ratkoimme harjoittelumielessä vanhoja matikan yo-kirjoituksia (Kullervo aina puhui meille kuinka hän joku yö kello 3 herättää meidät yllättäen tekemään matikan yo:ta - tähän opetusmenetelmäänsä hän oli saanut inspiraation joltain jalkapallojoukkueelta, joka harjoitteli painot jalassa ja sitten kun ne lopulta otetaan pois, tuntuu pelaaminen kuin ilmassa tanssimiselta :) ), ratkoi hän kerran kaikki tehtävät reilussa vartissa vain kirjoittamalla vastaukset ylös pienelle lapulle. Itse olin tuolloin vielä varsin näsäviisas lukiolainen, joka piti väittelystä yli kaiken, mutta Uotia vastaan jouduin oppimaan yhden persoonaani muuttaneen oivalluksen: väittelyissä pärjää paremmin, kun sattuu olemaan oikeassa. Myös Descent-matseissa ei ollut mitään jakoa, ellei oppinut liikkumaan aluksella kulmittain, jolloin pelin bugista johtuen pystyi kulkemaan sqrt(3)-kertaista nopeutta aluksella. Tässä onkin yksi "eliittikoulujen" monille odottamaton vaikutus: kun näkee, ettei itse ole mitenkään erityinen, kehittää se nöyryyttä ihmisessä.

Yksi meistä kirjoitettu artikkeli Valkeakosken Sanomissa

Voisin puhua loputtomasti meidän tuonaikaisista keskustelunaiheista ja pohdinnoista, mutta yleisesti ottaen porukan henki oli loistava ja vaikka hieman kilpailimme keskenään, tarkoitus oli nostaa muita ylöspäin. Yksi mieleen painunut anekdootti voisi olla se, kun kävimme tekemässä fysiikan töitä TTKK:n labrassa ja tehtävänämme oli laskea seisovan aaltoliikkeen taajuus jossain systeemissä. Tästä sain sitten illalla saunan jälkeen idean, että meidän pitäisi kokeilla tätä Päivölän uima-altaassa, koska siinä oli korkeat reunat. Nopeasti löysimmekin taajuuden, jolla saimme uima-altaaseen metrin korkuiset aallot ja tämä perinne siirtyi myöhemmin tuleville sukupolville ja kuulemani mukaan tämäkin harrastus jossain vaiheessa kiellettiin väliaikaisesti, kun merkittävä osa altaan vedestä oli onnistuttu saamaan aallolla karkaamaan. Jokaisella Päivölästä valmistuneella sukupolvella on oma nimensä. Meidät ristittiin myöhemmin "vanhoiksi", seuraavat olivat "lapsia" ja sitten tästä aina pienempiin olioihin. Nykyään koulu on kaksivuotinen ja siellä käydään koko lukio ja keskeisten aineiden opetuksesta vastaa Päivölään asumaan muuttanut opettajapariskunta. Toijalassa sijaitseva Nokian tutkimuskeskus tarjoaa myös n. 10 tuntia viikossa työharjoittelua opiskelijoille ja tämän avulla nämä voivat kustantaa opiskelunsa. Meidän kohdalla vanhemmat joutuivat maksamaan muistaakseni suuruusluokkaa 12000 markkaa tuosta lukuvuodesta. Kaiken kaikkiaan vuosi oli elämäni paras ja sitä tunnetta, että pieni samanhenkinen porukka menee elämään keskelle korpea ilman kaupungin ärsykkeitä yhteisen päämäärän kanssa ja ruoat ja muut käytännön asiat tulevat täysihoitona, on jotain sanoinkuvaamatonta, joka vain pitää kokea itse. Joskus katselin Lord of the Rings DVD:n lisämateriaaleilta näyttelijöiden kuvauksia heidän kuvauksistaan Uudessa-Seelannissa ja olin tunnistavani saman innostuksen näiden puheista tuota muistoa kohtaan. Ehkäpä tuollainen tilanne on niin lähellä jotain ihmisen luonnollista laumaa tai sitten satuin vain olemaan vaikutuksille alttiissa iässä, mutta näillä kokemuksilla tulee olemaan aina erityinen paikka mielessäni.


(Steve Zissou - Devo_Gut Feeling (Slap Your Mammy))

sunnuntai 23. toukokuuta 2010

L33t

Yläasteikäisenä onnistuin myymään pari kirjoittamaani tietokoneohjelmaa, joista ensimmäinen oli Valkeakosken Energialaitokselle tehty veloitushintaohjelma ja toinen äidinkielenopettajallemme "Kieli on systeemi"-peli. Kummastakin sain huimat 500 markkaa, mikä tuossa iässä käytännössä tarkoitti, että rahat oli tuhlattu cd:hin lyhyessä ajassa. Joskus noihin aikoihin tietokoneemme "siirtyi" huoneeseeni koska minä sitä kuitenkin aina käytin ja aloin myös saamaan käyttää modeemiamme purkkeihin soittamiseen, mutta tämä oli perheessä tarkkaan kontrolloitu, koska puhelinlaskut olivat noihin aikoihin minuuttitaksalla. Paikallispuhelumaksulla pystyi soittamaan muistaakseni Hämeen läänin alueella, joten soittelin lähinnä Lahtelaisiin purkkeihin, mutta myös Valkeakoskella oli omansa, R.A.Law, jota pyöritti tuntemani kaveri. Tietokoneemme mukana tullut modeemi taisi olla 2400bps nopeudeltaan ja muistan vieläkin, kun sain säästettyä oman 14400bps modeemin, jota pyöräilin innoissani postiin hakemaan.

Yhdeksännellä luokalla '92 osallistuin Datatähti-kisaan ja pääsinkin loppukilpailuihin Helsinkiin, Osuuspankin hulpeaan merenrannalla olevaan kompleksiin. Se oli minulle silmiäavaava kokemus ja olen erittäin kiitollinen, että noita kilpailuita järjestettiin. Paripäiväisen kilpailun aikana tutustuin myös Esaan, joka kilpaili silloin lukion sarjassa ja muutenkin vanhemmat kilpailijat tuntuivat lähinnä joltain mystisiltä guruilta silloisen minäni näkökulmasta. Alla valokuva lapusta, jonka olen säästänyt tuolta reissulta, johon Esa kirjoitti minulle ylös pyöritysmatriisien kaavoja. Esa myös esitteli assyllä koodaamaansa sinus scrolleria ja Future Crew:n Wildfire selitti, kuinka palettirotaatiota käytetään plasman tekemiseen. Tunsin itseni tuolloin täysin aloittelijaksi ja opin noiden parin päivän aikana varmaan saman verran asioita kuin normaalisti kuukausissa - olin kuin pesusieni, joka janosi tietoa tältä Suomen hakkereiden kermalta. Silloin opin myös, että maailmassa hiihtää porukkaa, joilla on mukanaan aina pari "taskumodeemia" varmuuden varalta :) Nämä tulivatkin käyttöön, kun valojen sammuttamisen jälkeen yritimme tehdä kaikkemme, että onnistuisimme soittamaan Osuuspankin laskuun jonnekin ulkomaille, sillä huoneissamme oli puhelinpistokkeet. Ainoa ongelma oli, että käytössämme oli vain ko. laitoksen tietokone, jossa oli ainoastaan MS-DOS:n GW-Basic asennettuna, mutta kollektiivisesti muistimme tarpeeksi modeemin ohjauskomentoja, jotta onnistuimme yön aikana kirjoittamaan terminaaliohjelman sillä. Nukahdin tosin ennen kuin varsinainen yhteys saatiin muodostumaan. Tulin lopulta yläasteen sarjassa neljänneksi ja osallistuin lisäksi IOI-olympiavalmennukseen. Tuolloin pääsin varajäseneksi Suomen joukkueeseen. Kotiin päästyäni aloinkin heti opettelemaan assembly-ohjelmointia ja tilasin kirjan EGA/VGA:n hardware-ohjelmoinnista, sillä monet demoefektit vaativat kaikenlaista kikkailua tuolla tasolla, kun prosessorin aika pyrittiin säästämään muille asioille.

pyöritysmatriisioppia 9-luokalla

Lukion viimeisellä '95 pääsin toisen kerran Datatähti-loppukilpailuun (alla linkki valokuvaan), jossa tulin toiseksi. Tuolloin pääsin myös IOI-joukkueeseen ja onnistuinkin saamaan hopeamitalin Hollannissa järjestetyissä kisoissa. Järjestelyt olivat hienot ja meillä olisi ollut mahdollisuus mennä kuuntelemaan Dijkstran pitämää luentoakin kilpailijoille, mutta olimme aika väsyneitä sinä aamuna ja Samuli totesikin, että on jo nähnyt Tampereen yliopiston Erkki Mäkisen, joten jätimme luennon väliin. Ensimmäinen kilpailupäivä meni kisoissa hieman totuttelun merkeissä, mutta jälkimmäisestä päivästä olen erityisen ylpeä: Sain kolme ohjelmointitehtävää tehtyä tunnin ajoissa valmiiksi ja yli-itsevarmana palautin tehtävät etuajassa (idiootti!) ja olinkin unohtanut keskimmäisestä tehtävästä, että annetussa graafissa saattoi olla silmukoita noodista samaan noodiin. Onneksi tästä meni vain yksi testitapaus ja viimeisestä tehtävästä meni toinen, koska en ollut optimoinut vakiokerrointa parhaaksi mahdolliseksi (ko. tehtävässä algoritmia vastaan laitettiin "pelaamaan" toinen algoritmi, joka antoi sille aina mahdollisimman pahan syötteen), mutta loppujen lopuksi sain maailman kolmanneksi parhaat pisteet jälkimmäiseltä päivältä, mm. paremmat kuin ko. kisan lopulta voittanut venäläinen Victor Bargachev.

Datatähti'95 loppukilpailijat Helsingissä

(Sneakers(Movie) - The Sneakers Theme)

lauantai 3. huhtikuuta 2010

Musiikillinen madonreikä 90-luvulle

Kari, 17-18v, vietti monet kesäpäivät demoryhmämme toisen muusikon ja osa-aika-dj:n vanhempien puisen omakotitalon vintillä koodatessa musarutiinia Gravis-äänikortille. Kyseinen laite oli siitä mielenkiintoinen, että sillä oli oma muisti, josta kortin prosessori miksasi moniraitaisen äänen ilman tarvetta varsinaiselle koneen pääprosessorille. Lopullinen engine oli noin 5000 riviä x86 assyä ja luulen, että se oli ensimmäinen kunnolla 16-bittisiä sampleja tukeva rutiini. GUS:ssa nimittäin oli sellainen rajoitus, että 16-bittisiä sampleja ei pystynyt automaattisesti soittamaan 256 kilon muistipankkirajojen yli, joten suurin osa tuosta koodista oli itse asiassa kirjoitettu vain hyppimään noiden rajojen yli pitkille sampleille kortin tuottaman interuptin avulla ja hallitsemaan kortin muistiavaruutta siten, että uusia sampleja pystyi lataamaan lennosta keskusmuistista musiikin soidessa (mikä aiheutti myös fragmentaatiota kortin muistissa). Koska netistä ei katoa mikään, minkä sinne on kerran laittanut, löytyy kirjoittamani moduuliformaatti näköjään vieläkin jostain. Kopion tekstin alle turvaan, koska olen vähän huonosti säilönyt näitä vanhoja tekeleitä.

Kaverini kirjoitti Pascalilla sävellysohjelman käyttöliittymän tuon kirjoittamani rutiinin päälle ja osallistuimmekin Assembly '94:n musacomboon parilla kappaleella, koska silloin oli mahdollista jättää myös oma ohjelma noiden soittamiseen. Kaverillani oli dj-hommiensa myötä kotonaan usein kilowatin ammattivahvistin ja rakentamansa 15 tuuman refleksikaiutin bassoille ja kuuntelimme taustalla tämäntapaista humppaa nuoruuden huumassa:


(2 Unlimited - No limit)
 


Musiikkirutiinini tiedostoformaatti, josta näkyy myös kätevästi tuetut ominaisuudet:

From: husberg@proffa.cc.tut.fi (Husberg Fredrik)
Newsgroups: alt.binaries.sounds.utilities
Subject: Re: Playemd: newest version & EMD module format specs
Date: 24 Aug 1994 14:14:53 GMT
Organization: Tampere University of Technology, Computing Centre

Dirk / ELASTIK         
husberg@proffa.cc.tut.fi

=====================================================================
    EMD module/song format for (A)dvanced 16-(B)it (T)racker ABT  
=====================================================================
                                                Last update 14.8.1994 


---------------------------------------------------------------------
Note!
        This is NOT the final version of the EMD-module format. There
will be some minor changes in the near future (like new features) but 
they are always placed to those  entries and that is the 
reason why they are not going to affect playing of these old EMDs 
with future versions of ABT. This file has been written in hurry and
because of that there may be some mistakes in this file. If you have
questions concerning EMD or ABT please contact: 
 
                        Dirk/Elastik
                        
                        Internet:
                        husberg@lehtori.cc.tut.fi
                        husberg@proffa.cc.tut.fi
                        
                        Snailmail:
                        Koulutie 10
                        SF-36200 Kangasala
                        Finland
---------------------------------------------------------------------

        What is EMD? It's new sample based sound/music module format.
The letters E,M and D come from the words Extended MOD. EMD-module format 
is much like the normal MOD but with new features and it's designed to be
used with the ABT, Advanced 16Bit Tracker made by Kari Visala and Mikko
Blomqvist. Here is the short description of the current EMD format, which
should help you to use EMDs freely in your own projects.
PLEASE, NO MODIFICATIONS


-------------------
EMD-file structure:
-------------------


OFFSET 0  Header:
=================
size       description
--------------------------------------------------------------------------
4  bytes   'EMOD' , these four bytes are used to identify an EMD-file
1  byte    Version number of the module   4 high order bits = major version
                                          4 low order bits  = minor version
           for example version 1.0  ->  00010000b
8  bytes     (for later use..)



OFFSET 13  Module-info part:
============================
size       description
--------------------------------------------------------------------------
32 bytes   Name of the song (32 chars, no any ending chracters) IBM-ascii
1  byte    Number of the instruments 
2  bytes   Length of the pattern list
1  byte    Number of the patterns-1 (0 = there is only 1 pattern) 
32 bytes   Values of the pan positions of the channels in the beginning of
           the song. (0-full left, 15-full right) byte/channel
2  bytes   Starting tempo, default=125 bpm
           bpm = beats per minute (8 rows in pattern = 1 beat)
1  byte    0 = module 
           1 = song ( no sample wave-data stored to this file)
1  byte    0 = normal patterns 
           1 = packed patterns :-)  
1  byte    Number of channels (1..32)
1  byte    This byte is only for modules:
           
           0 = Samples are stored in normal 16-bit signed format (like WAV)
           1 = Samples are in coded format 
           Coding of the samples:
           This next process has been done to every single byte of sample
           raw data when module is saved: (so, if you want to uncode samples, 
           do the steps backwards)
                   1. step      first and last bit of byte changed
                   2. step      neg
           Here is the code I use to uncode these:
                        mov al,[byte of sample data]
                        mov bl,al
                        and bl,10000000b
                        shr bl,7
                        mov bh,al
                        and bh,00000001b
                        shl bh,7
                        and al,01111110b
                        add al,bl
                        add al,bh  
                        mov [sample data],al  ; uncoded byte saved
           The reason for coding those samples was that we didn't want
           that everyone would be able to rip our 16 bit samples straight
           from our asm'94 compo-modules, but I thought that this file 
           format description should be complete and so I included uncoding
           info. This feature won't have any future use.

9  bytes   




OFFSET 96  Sample info part:
============================
This part of the file contains all settings and info for the samples.
Sample wave-data is not here. One sample takes 250 bytes of space and 
they are saved to the module consecutive. So, the size of this part
is number of instruments * 250 bytes

size       description
--------------------------------------------------------------------------
1  byte    Number of the instrument in pattern data (1-99)
4  bytes   Length of the sample in bytes 
32 bytes   Name of the sample (no any ending characters) IBM-ascii
12 bytes   File name of the sample (used with song files) 
           format: XXXXXXXX.XXX
72 bytes   Breakpoint information:  ( 18*4 bytes )
           18 breakpoints:
                 4 bytes = Offset from the beginning of the sample in words
                           So, if sample is 50000 bytes long, then 25000 in     
                           breakpoints is the end of the sample.
           2 consecutive breakpoints = 1 loop (9 loops)
9 bytes    Directions of the loops
           1 byte/loop :    0 = no loop
                            1 = forward loop
                            2 = bi-directional loop
1  byte    Active loop of the sample in the beginning of the song :
                0    = no loop on (default)
                1..9 = loop #
108 bytes  ADSR values (9 different ADSR for each instrument) (9*12 bytes)
           1 ADSR value:
               4 bytes   offset(place) of the decay point
               4 bytes   offset(place) of the sustain point
               1 byte    Attack value ( always in the start of the sample)
               1 byte    Decay value
               1 byte    Sustain value
               1 byte    Release value ( always in the end of the sample)
           ADSR control for samples isn't used by ABT in any way.
           Only the space is reserved for these values. It is very likely
           that ABT will never use this feature in the future because of
           the limitations of the module-style music and these bytes could
           be replaced by some other data.
1  byte    Active ADSR number 1-9  (0= no ADSR)
2  bytes   overall volume of the sample in the beginning of the song
           value from 0 to 4095.
1  byte    finetune+128  ( Default=128, player converts this value to a
           signed byte, -128..127:   0  =  normal finetune. 
                                    -64 =  halfnote downwards
                                     64 =  halfnote upwards
1  byte    midi on/off,   0  = normal GUS sample
                          1  = midi instrument
1  byte    midi channel+1,  0...16 
                  0 -> none, 
                  1 -> channel 0, ... , 16 -> channel 15
1  byte    midi preset instrument number   
           0 -> no preset instrument choosed from the ABT,
                note is played on synthesizer with choosed instrument
1  byte    Direct load on/off
           1 = instrument is loaded directly to gusdram
           0 = instrument only in EMS in the start of the song
3  bytes   



OFFSET 96+250*inst#  Pattern list:
==================================
Here is the play order of patterns. Length of this part is in the
module info part. One pattern takes 1 byte of memory and because of
that song can only contain 255 different patterns. Numbers of the patterns
are stored here so that the first byte is the number of the first played 
pattern and so on...



OFFSET 96+250*inst#+pattlstsize   Patterns:
===========================================
This part of the file contains all data for the patterns.
Patterns are stored here so that the first pattern here is
the pattern marked with 0 in the patternlist, second is pattern 1 and so on.
Size of a pattern is 13+channel#*pattern_length*5 bytes.

size       description
--------------------------------------------------------------------------
8  bytes   Name of the pattern in IBM-ascii format with no ending character
1  byte    Length of the pattern (how many rows, default=64)
4  bytes   

Here is some kind of pseudo-code presenting the way ABT stores patterns to
EMD file:

for y=1 to pattern_length
  for x=1 to #channels 
    1 byte  Note = 0..255, 0   = no note, 
                           1   = C-1 and so on...
                           If pattern-packing is enabled in the moduleinfo
                           part:
                           255 = because note,sample#,effect and params would
                                 all be zeros, program saves only one byte
                                 here (255) and those other 4 bytes aren't
                                 saved.

    1 byte  Number of the sample, 0=empty instrument, only stops playing sample
    1 byte  Effect command 1-99,  0 = no effect
    1 byte  Parameter 1 for the effect
    1 byte  Parameter 2 for the effect
  next x
next y



OFFSET XXXX   Channel volumes:
==============================
Here are the beginning volumes for each channel.
One volume takes one byte, which is from 0 to 255 (default=255,max) 
and 32 channels are always stored. So, the size of this part is 
always 32 bytes.




OFFSET XXXX   Raw wave data of samples:
=======================================
Only modules have this part of an EMD-file, in songs there is no sample raw
data. All samples are stored here without any marks between them.
Samples are stored so that the first sample here has the smallest number.
All data is signed 16-bit, which is same as 16-bit wav files.
Sample data can also be in coded format (read the module-info part).

End of EMD-file.





========================================================================
Currently supported effect commands of ABT:
========================================================================
There will be more effect commands in the near future, but here are all 
the basic commands for ABT, which are already ready (midi efx-commands
aren't here yet) :

Effect command is a number between 1 and 99. One effect can have maximum
2 parameters, both 0-99, or one parameter from 0 to 9999 (par1*100+par2).


Efx#      Description and parameters
----------------------------------------------------------------------------
    1     Set volume 0-4095 (values is exponential)
   11     Set linear volume 0-511
    3     Set tempo 0-???? (beats per minute, 125=default, 8 rows = beat)
    5     Set pan-value for a channel:  param1=channel#(0-31),
              if param1>31 , then current channel (where the efx-command is) 
              will be used for effect.
              param2=pan-value from 0(left)-15(right)
   17     Break pattern:  This efx-command jumps to the selected row of 
              next pattern in the song. (next row after efx isn't played)
              param1=row# of next pattern
   18     Position jump:  Changes the song position and the row# played next.
              param1=which pattern in pattern list (0=first)
              param2=which row
    2     Volume slide:   param1&2=new volume (0-4095) (slide is exponential)
   82     Set length of a volume slide: param1=how many rows volume slide 
              will take if tempo isn't changed. (0 is also 1 row)
              This variable is independent for each of the channels.
    6     Pitch up: param1=How many halfnotes upward, 
              param2=length of bend in rows with current tempo (0 is same as 1)
    7     Pitch down: Same as pitch up, but downwards
   13     Load&remove sample from gusdram:
              param1=number of the instrument to be loaded throught DMA
              (0=no sample loaded)
              param2=which instrument is unloaded from the gusdram
              (0=no instrument unloaded)
   22     Set frequency: If this efx-command is on the same row with note,
              note isn't played, but only frequency of currently playing 
              sample is changed to the given note.
   15     Effect channel play: Plays unloaded sample from EMS throught DMA.
              ( This efx-command isn't used yet)
   84     Set Vibrato waveform: param1: 0=sine, 1=saw, 2=sqr, 3=ramp down
    4     Vibrato: param1=Depth 0-99 (63=halfnote to both directions)
              param2=speed of the vibrato 0-99: (param2/5)Hz  1/5Hz - 20Hz
   34     Vibrato off
   19     Arpeggio: middle note = basenote+param1*halfnote
                    high note   = basenote+param2*halfnote
              Major :   190407        Minor :   190307
   89     Set speed of the arpeggio param1=how many notes played during 
              one row of pattern. (default=3, the whole chord played on 
              every row of pattern) (0 is same as 3)
    9     Tremolo (always sine) param1=depth/4 -> Volume can varies from 0 to
          400 in both directions. param2=speed of tremolo(same as vibrato)
   38     Tremolo off
   24     Note delay: param1:delay 0-99, "100"=next row

Note: All the effects that control the frequency of the sound can be used
      simultaneously with effects that control the volume.

perjantai 2. huhtikuuta 2010

Ennen kuplaa,

joskus 96-97 soodasimme (Päivölä - Suomi sanakirja) useimmat yöt DMI:n labrassa aina aamu viiteen saakka. Kyseissä huoneessa ei ollut lainkaan ikkunoita sekä rikkinäinen ilmastointi, joka piti huoneen talvella shortsikeleissä, joten periaatteessa siellä oli helppo unohtaa kellon- ja vuodenaika. Tilassa oli Genelecin monitorit, joista kuuntelimme musiikkia vuoroissa hommia tehdessä. Meidän lisäksi siellä työskenteli yksi kaveri, joka jätti vaikutuksen mm. koodaamalla copper barit ms-dos:n debugilla 10 minuutissa.* Alla kolme piisiä, jotka jäivät mieleen hänen cd:ltään, kun loput kuulostivat lähinnä siltä, että kaiuttimet hajosivat.

(RMB - Matisse)


Silloin koodasin C++:lla ray tracerin tilavuusmalleille ja visualisoimme mm. The Visible Human Project:in datasetin. Alla ohjelman tuottama esimerkkikuva. Kaverimme teki sitten vastaavan ohjelman ms-dos:lle assemblyllä (oma versioni oli x-ikkunointia käyttävä), jonka möimme Heurekan tiedekeskuksen kiertävään näyttelyyn. 


* Olen tuntenut vain yhden toisen kaverin, joka oli yhtä ripeä koodaamaan. IOI-valmennuksessa joskus annoin lämmittelytehtävän, jossa ohjelmalle annettiin syötteenä palikkapinon etu- ja sivuprofiilit ja ohjelman piti tulostaa minimi- ja maksimimäärät palikoita, jotka voivat tuottaa kyseisen profiilin. Alle 10 minuutin kuluttua paperien jakamisesta minulle tuotiin valmis toimiva ohjelma.

torstai 10. joulukuuta 2009

Amatöörit tekevät sen rakkaudesta

Future Crew:n Second Reality-demon näkeminen -93 keravalaisen koulun 40-asteisessa liikuntasalissa vaikutti syvästi nuoreen minuun. Kannattaa katsoa myös Demoscene-dokumentti tästä legendaarisesta demogroupista ja alla Youtube-linkki autenttiseen videopätkään demon tekemisestä.

(Future Crew - Second Reality [1/2])

(Future Crew - Second Reality [2/2])


Toisaalta, pitkälle on tultu vuodesta -93, kun katsoo alla olevaa vuoden 2007 Assemblyjen voittajademoa tai vuonna 2008 julkaistua Masagin-demoa. Koneiden tehon kasvettua ja kiihdytettyjen näytönohjainten myötä ohjelmoinnin rooli demoissa on pienentynyt ja grafiikalla sekä musiikilla on suurempi rooli.


(lifeforce [HD] [demoscene])


(Farbrausch & Neuro - Masagin (HD Stereo))