TODO
-listallani on tällä hetkellä yllättävän monta projektia, jotka kaikki koen äärimmäisen mielenkiintoisiksi. Osa on melko pieniä, osa taas suurempia. Olen viime aikoina kohdannut vastaavan ongelman kuin käyttöjärjestelmät, joilla tyypillisesti on muistissaan lista prosesseja, joita pitää ajaa tietyssä järjestyksessä.
Modernien tietokoneiden tapauksissa on nykyään mahdollista, että käyttöjärjestelmät voivat ajaa rinnakkain useita eri ohjelmia. Sekin on mahdollista, että ajetaan yhtä ohjelmainstanssia samaan aikaan eri CPU:illa, mutta se tyypillisesti vaatii sen, että ohjelma on jollakin tavalla säikeistetty ja rinnakkaistettavissa. Unixin perinteinen fork(2)
systeemikutsu ei muuten ole säikeistystä tarkoittamassani mielessäni vaikka toki voidaan ajatella, että sekin ajaa eräässä mielessä samaa ohjelmainstanssia rinnakkaisestikin.
Kuitenkin erona on se, että esimerkiksi Posix Threads API:a käyttävä sovellus luo rinnakkaisia säikeitä yhden prosessin sisällä ja säikeet näkevät saman globaalin muistiavaruuden. Tuo piirre johtaa usein tarpeeseen synkronoida säikeitä esimerkiksi mutex-lukkojen ja semaforien avulla. Säikeillä on myös POSIX Threads mallissa ns. local storagea käytettävissään, eli käytännössä puhutaan säikeelle privaatista osasta RAM-muistia, jota se ei oletuksena jaa muiden säikeiden kanssa.
Perinteisessä fork()
paradigmassahan tilannne on erilainen, sillä lapsiprosesseilla on omat kopionsa myös globaalista muistiavaruudesta eli se ei ole jaettu kuten säikeiden tapauksessa. Siinä meillä onkin ehkä oleellisin ero Unixissa näiden kahden mallin välillä. Toki fork()
systeemikutsunkin kautta luotu lapsiprosessi perii vanhemmaltaan esimerkiksi file descriptorit, mutta esimerkiksi mahdollisia lukkoja se ei voi periä, sillä se johtaisi kaaokseen!
Kuvittelepa jos vanhemmalla olisi hallussaan ekslusiivinen kirjoituslukko johonkin resurssiin ja lapsiprosessi perisi sen fork()
:in jälkeen, niin silloinhan molemmilla prosesseilla olisi muka yksinoikeus kirjoittaa resurssiin! Katastrofin ainekset olisivat siis valmiina ja kaikenlainen datakorruptio mahdollista.
Oli miten oli, eksyin taas varsinaisesti aiheesta, joten palataan niiden projektien priorisointiin. TODO
-listaani suoritan ilman mitään stressiä, paineita tai ulkoisia deadlinejä. Itse asiassa deadlineistä puheenollen, ei minulla ole niitä sisäisestikään, eli en tahdo aikatauluttaa yhtäkään projektiani kalenteriin päivämääriä merkitsemällä. Minulla ei siis ole deadlinejä eikä edes karkeita välitavoitteita.
Pyrkimykseni on suorittaa projekteja tarvittaessa rinnakkainkin, eli en välttämättä ota yhtä projektia ajoon ja paukuta sitä loppuun saakka puuttumatta toisiin projekteihin. Toki se on selvää, etten toisaalta myöskään halua hyppiä projektista toiseen ihan tuuliviirin tavoin ja pienissä aikaikkunoissa. Oli projekti työn alla mikä hyvänsä, pyrin tekemään sitä niin kauan kuin hyvältä tuntuu. TODO
-listani pointtina ei ole orjuuttaa minua, vaan yksinkertaisesti kirjata ylös asiat, jotka haluan saada hoidetuksi ja jotka kiinnostavat minua.
Olen myös kuluneen parin viikon aikana päätynyt selkeään ratkaisuun. En nyt jaksa alkaa kaivamaan blogeistani asiaa esille, mutta joskus keväällä 2018 keskityin jossain määrin ORIC Manic Miner tasohyppelypelin harjoitteluun. Sainkin kaikki huoneet harjoitusmielessä menemään läpi käyttäen apuna ikuisia elämiä ja valinnaista siirtymistä haluttuun huoneeseen. Huoneet 17-32 sain videotallennusten avulla jopa dokumentoituakin jälkipolville ja veljeni Risto laittoi ne YouTubeen perustamalleen kanavalle. Ne linkitettiin myös Jet Set Willy & Manic Miner Societyn sivustolle, jonka kautta retropeleistä kiinnostuneet voivat ne jatkossa löytää.
Minulle on nyt kuitenkin kirkastunut, että tämä harjoituspelien dokumentointi tulee jäämään viimeiseksi kontribuutiokseni ORIC Manic Minerin suhteen. Pidin kai vielä keväällä auki sitä mahdollisuutta, että ns. virallinen kilpapeli ilman helpotuksia (kuten ikuiset elämät) saattaisi olla joskus tulevaisuudessa tehtävissä. Asia ei ole minulla aktiivisesti pyörinyt mielessä kevään jälkeen eikä ajatus ole ahdistanut, mutta olen tullut siihen tulokseen, että en aio yrittää kilpapelejä. Tämä päätös on lopullinen ja se pitää ellei ihan ihmeitä tapahdu.
Aikani ei kertakaikkiaan riitä painaa sitä Manic Mineria tunnista toiseen väsymättä eteenpäin. Siinä on kuitenkin 32 huonettta muistettavana ja aion rehellisesti tunnustaa, että henkiset kykyni eivät siihen riitä. En tiedä olisiko tilanne tuon pelin suhteen voinut olla toinen vaikka 10 vuotta sitten, eli olisinko silloin kyennyt painamaan sitä projektia hullun innolla eteenpäin?
Enpä tiedä eikä tuollainen spekulaatio välttämättä tuotakaan mitään hyötyä tai uusia näkökulmia. Ajattelen siis Manic Minerin suhteen mieluummin tätä päivää, nykyhetkeä. Onko minulla motivaatiota istua koneella pelaamassa ORIC Manic Mineria loputtomiin, aloittaen aina sinnikkäästi alusta kun peli on loppunut? Ei ole. Tuota vastausta minun ei tarvitse harkita tai miettiä pitkään - se tulee luonnostaan ja tuntuu sisäisesti oikealta.
Minun on vain tunnustettava, että ORIC Manic Minerin läpipeluu on jätettävä parempien pelaajien vastuulle. Kiinnostukseni ja prioriteettini ovat tällä hetkellä toisenlaisissa projekteissa, joiden aihepiirit pyörivät pääasiassa ohjelmoinnin, järjestelmäylläpidon, erilaisten artikkelien, blogien, musiikin ja sellaisten aiheiden parissa.
Huomaa, että en silti mitenkään väheksy muiden pelaamista tai sen arvoa heille. Puhun tässä vain itsestäni, eli omalla kohdallani on nyt paras ratkaisu hylätä se ORIC Manic Minerin pelaaminen.
Saattaa olla, että tämä päätös vaikuttaa myös muihin peleihin kuin Manic Mineriin. En nyt keksi yhtäkään peliä, jota haluaisin kovin suurella vakavuudella treenata tai edes huvikseni pelailla. Pitänee todeta yhteenvetona, että ihmiselämässä prioriteetit voivat muuttua vuosien myötä eikä sellainen ole edes mitenkään epätyypillistä. Enkä uskalla väittää sitäkään, että tämä tilanne tulisi säilymään pysyvästi koko pelaamisen suhteen. Voi olla, että jonain päivänä tuleekin jotain vähän pelattua.