Wednesday 31 December 2014

Poet without a rhyme - Vuosikertomus -14

Apologies for anyone not capable of reading Finnish. This is the annual text that just has to be done in my native language because reasons. I'll resume with the english material in January. Or February. Or at some distant point in future.

Taas on planeetta kiertänyt täydet 2π radiaania auringon ympäri. Numeraalisesti lahjakkaat tietävät mitä tämä tarkoittaa: historiikkia ja ennakointia. Vuosikertomus (2013)ssa selitän kuinka minulla on ihanjustkohta jotain valmista näytettävää MERPGistä. Yllätys! Ei ole! Vieläkään! Eikä tule ennenkuin saan jonkun muunkin inspiroitumaan tästä! Enkä usko että tällaista ihmettä tulee ihan hetkeen tapahtumaan, koska itsekään en ole millään lailla inspiroitunut ennen kuin ymmärrän miten Kanariffan maailma toimii. Tämä taas vaatii uskomattomia määriä proosaa, sen editointia, ja mahdollisesti englanniksikääntöä. Minulla on täydellinen pelimottori karttaviritys, sekä kilo suunnitelmia siitä miten rakentaisin täydellisen, modattavan kaksiulotteisen tarina-/roolihörhöilyn Clojurella. Minulla ei kuitenkaan ole ketään, joka piirtäisi näitä, ja vaikka vanha viisaus sanoo insinööripohjaisten tikku-ukkojenkin olevan parempia kuin ei-minkään... niin ei. Ne eivät toimisi.

Siltä varalta että joku tuttu lukee tätä: puhun CVC-designeista myöhemmin, jos muistan. MERPGillä tarkoitetaan vielä sitä, mitä MERPGillä tarkoitettiin vuosi sitten. Lisäksi, minulla olisi Tässi, mutta hänelläkin on parempaa tekemistä. Tai jotain. En itse asiassa ole täysin varma miksi emme upota Öitä tähän projektiin! Ehkä siksi, kun niitä on nykyään niin vähän, niin on sitä kuuluisaa parempaakin tekemistä. Vanhaksi kasvaminen on tyhmää, koska tulee oikea elämä, jota pitäisi elää.

Mitä olen vuoden -14 aikana saanut aikaiseksi? 2 pientä ja sööttiä peliä: The Geometrician, yksinkertainen match-3 peli Candy Crush Sagan tyyliin. Se on tehty Clojurella, joten se toimii missä vaan mihin saa Javan asennettua, eli käytännössä kaikissa pc-käyttiksissä paitsi Windowsissa. Toinen peli on luovasti nimetty Tetris, joka on tehty C++:lla, ja täten toimii tuskin missään. Se kuitenkin kääntyy kaikilla unixeilla joihin SDL2 ja SDL2_ttf ovat saatavilla, sekä Windowsilla, jos on niin pähkähullu että jaksaa selittää Visual C++lle missä yllämainitut kirjastot sijaitsevat. Visual C++ totuttuun tapaan ei täysin ymmärrä C++11ä, joten kannattaa kääntää windows-branchiä, ei masteria.

Näiden lisäksi rakensin pikaviestimen Clojurella Herokun päälle. Sekä serverin että clientin sorsat ovat githubissa. Systeemin turvallisuus ei välttämättä ole kovin hyvä, muistan lyöneeni päätä seinään kun en löytänyt Clojurelle yhtään fiksua sessionhallintakirjastoa, enkä myös halunnut keksiä omaa. Silti, projektin loppupelissä tappoi Worse is Better-periaate. Tässin kanssa sosialisoidessa skype on riittävän hyvä sen neljä kertaa kvartaalissa kun hän on tietokoneella sosialisointitarkoituksissa, satunnaistuttujen kanssa sosialisoidessa jopa facebookin ällöchat on riittävän hyvä, ja irkkaus ERC:llä on itse asiassa paljon parempi tapa kommunikoida kuin pikaviestittely clojureclientillä. Silti, toiminnallisuudeltaan Windows Live Messenger -09:ää vastaava Clojuretoteutus, joka pitää NREPL-serveriä kustomointia varten auki olisi minulle melko märkä uni, jos viitsisin ratkaista sosiaaliset ongelmat tämän tieltä.

Githubin projektilistalta silmiin sattunee projekti nimeltä melisp. Kesällä murehdin Clojuren JVM-riippuvuuksia, JVM:n alustakohtaisia ongelmia (en mitään nimiä halua mainita, mutta windows) ja Oraclen huonoa käytöstä, ja pohdin että jos joskus aikoisin tehdä jotain oikeasti hienoa lisp-softaa, opiskelisin joko Common Lispin työkalut (jolloin olisin riippuvainen SBCL:n kehittäjäjoukkiosta, mikä sopii minulle) tai tekisin oman Lispin, jonka jännyydet ja ominaisuudet olisivat minulle ilmiselvät. Koska minulla on historiaa virtuaalikoneiden kanssa urpoilusta, oman lispin toteutus tuntui ideoista parhaimmalta. Kesällä jaksoin toteuttaa projektia niin paljon että sain tulostettua shelliin "Hello world!" C:stä. Siihen se sitten jäi, minulla oli työmatkoilla parempaakin tekemistä kuin yrittää saada selkoa stdlibin dokumentaatiosta 1024x600 - kokoiselta näytöltä, koneelta jonka keskusmuistiin mahtuu juuri ja juuri kerneli, X ja Firefox.

Tutustuttani marraskuussa tetriksen myötä Linuxin C-kehitystyökaluihin tarkemmin jaksoin jatkaa tätä projektia. Parseri muistaakseni erottaa listat, atomit ja stringit toisistaan. Se ei kuitenkaan osaa avata listoja syystä, jota en ymmärrä lainkaan.Minun pitäisi repiä C++-luokat pois projektista, jotta pääsen varmuuteen siitä että taistelen loogisen härön kanssa enkä pelkästään typerän oliomallin, ja joko kikkailla C:llä tai korvata koko systeemi joko Common Lispiin tai Clojureen pohjautuvalla virityksellä. Kun saan listatkin auki, opiskelen stackkoneiden toimintaa, rakennan jonkinlaisen prototyypin, säädän kääntäjän tuottamaan puumallitulosteen sijaan oikeaa tavukoodia ja viritän prototyyppistackkoneen ymmärtämään tätä tavukoodia.

Mitä tästä projektista tulee isona? En tiedä, ei välttämättä muuta kuin tietojenkäsittelytieteellinen kokeilu, jonka myötä voin lopultakin väittää olevani aito koodari. Mahdollisesti integroin opengl_thingie - projektissa oppimiani juttuja tähän projektiin, ja aikaansaan jonkinlaisen 3D-työkalun? Jos näkisin tulevaisuuden, ei minun tarvitsisi kirjoittaa näitä vuosittain.

Minkälaisia projekteja ensi vuonna olisi odotettavissa? Minulla on mielessä eräs projekti, joka vaatii sekä Herokua että Android-clienttiä, mutta ennen kuin saan vihreää valoa kirjoittamalleni speksille, en siitä täällä hölötä. Lisäksi minulla on eräs kouluprojekti, joka voisi vaatia tetrispelin porttausta clojurescriptille ja oikeita grafiikoita, mutta hän on yhä odottamassa että viitsisin esitellä häntä projektin päättäville tahoille.

Viime vuonna ennakoin että startuppijuttuihin voisi olla kiva sekaantua. Noh, minähän sekaannuin. Toukokuussa (vai Kesäkuussa? En muista) olisi ollut ensimmäinen Cambridge Venture Camp, jolla KyAMK oli mukana. Mieleni olisi tehnyt sekaantua siihen, mutta kun olin jo Helsingissä palkkatyössä, en ehtinyt. Lokakuussa Kouvostoliittolaiset alkoivat puhua uudesta Venture Campistä, jolle mentäisiin hiomaan liikeideaa ja harjoittelemaan sen esittelyä. Sinnehän minä hain, mutta koska hakemukseni oli järkyttävän myöhässä, oli lähellä ettei tiimimme päässyt sinne. Sinne kuitenkin pääsimme, ja loppujen lopuksi minulla oli taiteellisen MERPGin rinnalla tuottelias MERPG. Lisäksi minulla on muusikko ja ohjelmoijavoimaa jolla toteuttaa tämä tuottava suunnitelma, mutta tiimistä puuttuu visuaalisen tuotannon lahjakkuutta jonkin verran. Tällä hetkellä tiimistä puuttuu myös inspiraatiota, mutta sen löytyminen on riippuvainen lähinnä ajasta.

Siinä taisi olla tiivistelmä kaikesta, jota olen tänä vuonna ohjelmistomaailmassa työstänyt. Seuraavaksi kuukausiyhteenveto:

Tammikuussa suutuin silloiselle karttaeditorille, ja sen myötä välimme olivat poikki puoli vuotta. Koulu jatkui, pääsin opiskelemaan oikeaa matikkaa ja fysiikkaa, kun lukionkertailu jäi taa. Helmikuussa oli hiihtoloma, jonka vietin helsingissä palkkatyössä. Windowshommia, aloin oikeasti miettiä onko Visual Studio ja mitä Windows-devit käyttävätkään paras, tai edes hyväksyttävä työkalu ohjelmointiin. En vieläkään ole aivan varma tämän ongelman ratkaisusta, mutta tiedän olleeni paljon onnellisempi päästyäni kotiprojekteissa eroon VS:stä ja Windowsista.

Maaliskuussa oli... jotain. Sonata Arctica julkaisi Pariah's Child-kiekon. Myös Delain julkaisi kiekkonsa alkuvuodesta. Within Temptation julkaisi Hydran, mutta sitä on tullut yllättävän vähän kuunneltua. En ole varma onko se vaikea vai tylsä levy. Voi olla että se avautuu vielä minullekin, mutta en lupaa mitään.

Huhtikuussa Tässi pyörähti Japanissa, ja toi sieltä paikallisen tulkinnan Pariah's Childista ja Tokion metrokartan tuliaisiksi. Huhtikuussa oli myös ensimmäiset Insinööriopiskelijapäivät, joille osallistuneet saivat nauttia hehkeästä seurastani. IOP järjestettiin Rovaniemellä, ja voin vannoa sen olleen ensimmäinen ja viimeinen kerta kun kuljen Rovaniemelle jollain muulla kuin yöjunalla. IOP:n rastikierros oli hauska, illallakin saattoi olla jotain ohjelmaa, ja seuraavanakin päivänä tapahtui... jotain. Minulla oli hauskaa, ja kuten kuvasta kuuluu, saattoi alkomahooli virrata. Huhtikuun loppupuolella kävin Virossa, josta löysin jotain kaunista. Kingin Musta Torni on kaunein kirja, jonka olen tähän mennessä lukenut. Ainoa Mustaa Tornia parempi lukukokemus on vain Mustan Tornin luku uudestaan. Ainoa Mustaa Tornia parempi lukukokemus on vain Mustan Tornin luku uudestaan...

Toukokuussa koulu oli loppu. Kuukausi näytti lähinnä tältä. Luin, pyöräilin, luin, ja pyöräilin vähän lisää. Viime kesänä en jaksanut pitää yhtä tarkkaa lukua poljetuista kilometreistä kuin edellisenä, mutta pelkästään toukokuussa tuli tehtyä useampi 40km lenkki.

Toukokuun puolivälissä, muistaakseni 16.5, herätyskelloni oli viritetty soimaan poikkeuksellisen aikaisin. Helsingin päärautatieasemalta lähti Allegro-juna, jonka numeroa en muista enää, klo 6:06 kohti Pietaria. Se oli hieno reissu, kolmen päivän aikana emme muistaakseni paljoa muuhun ehtineet tutustua kuin hermitaasiineremitaasiin, mutta kotiin palasin taas kokemusta rikkaampana. Pidän venäjän kielestä, alkeistasolta katsoen se vaikuttaa paljon loogisemmalta kuin germaaniset kielet... tai ainakin substantiivista näkee välitt&oml;mästi mihin sukuun se kuuluu. Ergo venäjä on loogisempaa kuin ruotsi.

Kesäkuussa oli palkkatöiden vuoro.

Heinäkuussa palkkatyöt jatkuivat, ja innostuin vääntämään karttaeditoria. Lopputulos on Githubissa odottamassa paljon puhuttua inspiraatiota. Heinäkuussa pyörähdin myös AssCreed2:n maisemissa Firenzessä. Tukikohtamme oli viiden päivän ajan Milanossa, ja useimpina päivinä tutkimme ympäristöä, ja eräänä päätimme lähteä junalla vähän kauemmas. Kevyesti arvioiden 18h myöhemmin olimme palanneet Milanoon todella väsyneinä. Se oli hauska reissu, josta olisi kuvia jos jaksaisin kaivaa niitä.

Elokuussa palkkatyöt loppuivat. Kesän suurin menestys oli tulkinnasta riippuen joko ne muutamankymmentä opintopistettä jotka tienasin työskentelemällä, muutama tuhatta euroa jotka tienasin työskentelemällä, tai ne kolmisenkymmentä tuhatta sanaa, jotka aikaansain kantamalla netbookkia aamubussissa mukanani töihin.

Elokuussa, kun kutsu fuksiristeilylle kolahti pärstäkirjaani, mietin että yök, pitäisikö minun viettää laivalla ilta ihmisten kanssa sosialisoiden. Ajateltuani asiaa tarkemmin, tavoitteeni elämässä on löytää parhaat ihmiset, ja tehdä heidän kanssaan jotain aivan parasta. Miten sitten ajattelin löytää nämä parhaat ihmiset, kotona murjottamalla? Niinpä niin, risteilylle tieni kävi, eikä näin jälkikäteen harmita yhtään. Turku on hieno paikka, ja maanteitä sinne kulkeminen Kotkasta on lähes yhtä parasta kuin rautateitä.

Syyskuu oli... jotain. Koulu jatkui, pelasin AssCreed4:n läpi, harrastin matematiikkaa, fysiikkaa, leikin raspilla. Tein kaikenlaista. Leikin ekstroverttia. Lokakuussa Startup-hörhöilin. Startup Workshop Kotka, Startupweekend Vantaa, CVC... monia mahdollisuuksia verkostoitua ja leikkiä ekstroverttia. Huomasin verkostoitumisen olevan jollain perverssillä tavalla oikeastaan aika mukavaa.

Marraskuussa olin enemmän verkostoitumassa kuin koulussa. Silloin kun olin koulussa, keskityin enemmän Tetrikseen kuin siihen mitä tunnilla tehtiin. Se sitten näkyi Joulukuun tenttiarvosanoissa.

Marraskuussa osallistuin Kotkan Insinööriopiskelijat KoiO Ry:n kokoukseen ilmaisen pullan toivossa, ja päädyin seuraavan vuoden hallitukseen. Miksi? Verkostoitumisen toivossa, tietysti! Se on uusi lempisanani. Toinen on ekstrovertti. Jos hoen niitä tarpeeksi, saatan ymmärtääkin niistä jotain ennen ensi vuoden loppua.

Mitä odottaa ensi vuodelta? Tuttuun tapaan ensireaktioni tähän kysymykseen on "emmietiiä", mutta toisin kuin vuosi sitten, tällä kertaa minulla on pieni, haalea aavistus. Verkostoitumista, ihmisiä, ekstrovertismia (jos se on sana). Ehkä saan jopa jotain oikeaa valmiiksi. Tulevaisuus on jännä. Tule tutkimaan sitä kanssani?

La oscuridad va romperme
No puedes salvarme
Será mi perdición
Siento un dolor abrazarme
La vida me destruye
No tengo salvación

Tuesday 23 December 2014

I made a tetris!

I made a tetris. You can download it from the Github, if you can make sense of the Releases - list. I might have to hack a real release-distribution channel at some point, but for a leisure project such as this, github has to suffice. It's still better than distributing links to my Dropbox's Public-folder.

There are binaries for Windows and Mac. Because practically nobody at school is going to grade this as .rpm, .dpkg, or whatever-the-arch-pacman-uses, I don't care to learn to wrap such packages for Linux. I made a Mac package, because I was somewhat interested in how .dmgs are made, had my laptop with me, and a free slot of time to kill. Windows package I made because if someone is going to try my game, for example in school, it is most likely tried on a Windows machine.

If on linux, what you have to do would be the following on my arch-box:

git clone https://github.com/feuery/tetris.git
pacman -S scons SDL2 SDL2_ttf
cd tetris
scons
cd ./bin
*Copy a font of your choosing to this dir, with name 'DejaVuSans-bold.ttf'*
./tetris

On you basic Fedora- or Ubuntu-boxen the dev-sdl-packages and regular sdl-packages are different packages.

Merry christmas!