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!

Tuesday 11 November 2014

Gamedesign from Pyhtää

I seem to be a proud owner of an iPad2 - device. I had one of these in the spring, and I didn't like it then. However, that device was school's, not mine, so I didn't dare to abuse it in the ways I'm known to abuse my computing devices usually. I'll do some iOS games-market research with this thing, and explore if I'm able to combine it, its physical keyboard and one of my raspberry pis into an ultimate computing experience. The keyboard feels bloody awful, but unlike last time, it's physical.

But, iPad's not what I'm here to talk about today. Last week I spent in the Pyhtää, trying to shape the MERPG into a profitable form. Boy how it formed: the current idea in my head is to ditch the old manuscript from the http://merpg.webs.com completely, maybe recycle a few of the character designs. I'd still keep the story of Rajol, the one of the two discrete stories I've written into the world of Kanariffa I actually like, unpublished to the masses until I decide it's ready, and the fancier Clojure-techdesigns for a more artsy game in the future, and make this game-designed-for-CambridgeVC to have it's own story, own world, and a set of monsters one can team with to uncover the story.

Why? Because I fear if I go to Cambridge to pitch an interactive movie/technical wankery I've designed the game to be, I'll be laughed out of the island.

But this new game, which is called in-team 'Pröng', but due obvious reasons, is from now on called 'The Game' in-blog. Until someone comes up with a better one, of course. It's very limited visual designs still apply: the style of the graphics is still 2D-highly saturated-pixel or vector -art. How do the mechanics of this game work?

Single player

You begin by customizing your character's sprite, name and base-type. I think it's best to win the secondary type through lottery, but I can imagine implementing the secondary types through Dragon Ageish specialization system. You meet some new team member or NPC that knows this specialization, you ask if they can teach it to you too, and presto, you've become a grass-assassin or something as insane.

Anyway, you start your game, with one or two friends following you. You run around the world, finding and doing quests, uncovering the story. The world is open as in Pokemon, and the difference between in-fight and out-fight is not as huge as in Pokemon. In neutral territory, sometimes based on randomness, sometimes because the maker has decided to put a trigger there, you're attacked by Dragon Ageish wave(s) of enemy. The fighting system is also inspired by DA. You ran around freely in pixel-space (instead of 20px*20px tile-space), use moves (that autolock to the nearest target if you don't pick a target with mouse/touch) and can pause the game as conveniently as in DA. I guess if it will seem better, implementing a Pokemon MDish turn- and tile-based system is a possibility, as the reasons I originally ditched that idea for are unbelievably underspecified.

As I said, the world is open like in Pokemon. There are also closed, randomly generated dungeons, from where you try to find your way through with as little casualties as possible. I'll try to come up with a good generation algorithm, but as I haven't done this kind of a thing ever, I'm open to suggestions of material to learn the theory from.

Not only can you fight NPCs, you can discuss with them, answer their questions in different ways (because, you know, RPG, even though I don't have time to write a true multithreaded story in the week before the Kotka's Warming Game jam), bring items to and from them. They can be led through the random-dungeons, you can fetch items from these dungeons for them, save their friends... there are a million possibilities I'm too tired to come up with currently.

I like the idea of generating monsters teammates randomly, but in Pyhtää I was told that evolution of the teammates is a crucial element in this kind of game. I agree, but it makes the random-generation a bit harder. An idea I've played in my head is to have every monster share the generic baby-teenager-grownup - evolution stages, and do some magic to customize the pre-rendered animations according to a die.

Training teammates can be done outside the storymode too. There will be a random quest generator in the game, a sort of like the pelipper post office in Pokemon MD.

You can save the game any time you want in single player mode. If in a fight, just pause the game and save. You will resume from the exactly same circumstances.

Multiplayer

You can trade teammates with your friends, you can fight in a PvP setting against them, there's possibly some sort of chat for those in the game just for the sociality. You can play multiplayer quests co-operatively with your friends too. I don't know wheter these quests form a parallel storyline or are just a series of randomly generated quests.

Differentiation

The game differentiates from the Pokemon games through much better storyline, and at least from the older games, through a better multiplayer. I haven't extensively researched the Wifi-properties of the games >=Diamond. The real time combat is also a differences, but it will probably be disliked by as many pokemon-addicts as liked. One plus for us is that if you haven't yet bought a 3DS and X/Y, and are considering between that and our game, there's a high chance you'd rather buy ours because you don't need another device for it. Statistically speaking, you probably already have one of the following: PC/Mac/iOS/Android/Windows Phone.

How does it differentiate from the Pokemon MD? The combat system isn't turn based, and most of the flaws in the original MDs (friend abandons you after finishing the story, random generated quests are boring, story progresses way too randomly) will be averted. The evolution system is better also, but that doesn't mean it's a good system in our game. It just means evolution is mostly fucked in all MD-games.

How does it diff from the DA games? I dunno, 2D-graphics, happy-happy graphics, a bigger team, more diverse (pokemonish) type/class system... to name a few.

These are the most obvious differences, but why would someone pay for this game? I have no idea! The singleplayer will be free-to-play, because I've been told that's better than selling it for 8€ in app stores. It's possible that I'll publish both ad-crippled, free version, and 8€ ad-free version. I've also toyed with the idea of having a subscription fee to the multiplayer, because running heroku servers isn't exactly free, and it'd be a bit more expensive for those playing the otherwise free game.

Does this sound cool? Am I speaking crazytalk?

Sunday 2 November 2014

Building MERPG and a Startup

So, I've upgraded my Mac to the Yosemite, changed the Emacs from the emacsforosx-build to the brew's build with Cocoa bindings, broken the cider-eldoc - connection, fixed a couple of bugs on the MERPG's map editor, written the map-save-procedure halfway... and lived through the soft landing of the Cambridge Venture Camp. The last one was especially crazy: by the end of the two-day event I got to actually think about where I'm supposed to make the money from with this game, how am I going to differentiate from all the other pokemon-lookalikes (a phrase I've begun to use with this game, which is fitting considering the idea began as a clone of the Pokemon MD: Blue Rescue Team), and then I had to actually communicate pitch these things successfully. In bloody english.

Next week I'll spend in Pyhtää, a small city near Kotka. Unless I seriously misremember, we're mostly honing the pitches and theorizing about the business model.The evenings will be free to hack the MVP, for I think there's not much else to do in that city. MVP will probably need another blogpost as soon as I've got a base understanding of what kind of tech we'll be building it upon. As I'm not the lone engineer, using Clojure will be a PITA as I can't be arsed to spend half a day to teach my fellow teammates the language and relevant APIs and a year to teach (why this is better) than(this, abomination, of, a, syntax);

Startup world is an interesting mini-economy. The major groups are the devs, the designers and the business guys. Of course any of these can be broken into minor groups, such as back-end-, front-end-, FP-, OO-, and such developers; marketeers, sales(wo)men, and all the subsets of X designers. It's a perfect symbiosis. Most of the designers are absolutely brilliant with the visual aspects of the job, but once one has to bake functionality to the beautiful sketches, they are... well, not useless, but somewhat out of their area of expertiese. Especially salesguys seem to understand customers and what they need, but for the sake of not drowning in techical debt, they must not be left alone near a computer with Microsoft Office. Devs are incapable of interacting with an ordinary human being, be it a customer or a coworker, and for the sake of everyone's eyes they must not be left alone near a photoshop.

This Cambridge-thing will either kill me or make me a more sales-y engineer. When I say sales-y, I am applouding salesguys' ability to make themself a friend of the customer, convince them of the value of their product and usually perform the transaction too. I dread opening my mouth, I don't like it if I have to make sounds approaching human speech, and... blahblahblah. Look at me trying to make the venture camp to kill me. There are other people, yes. Other people are scary, very yes. Speaking to them will make or melt a man, and as the team is still in a fragile state where I'm not entirely certain if the others are as fanatically dedicated to this project as I am, I cannot leave the pitching entirely for others to do.

I do my best thinking with my fingers, so let me transcribe my last-friday 1,5 minute pitch I spent about twice that time writing:

Hello! We're making an epic game!

The genre of this game is RPG. It'll be a Pokemon-lookalike with a hooking token economy and a complex story.

The trading of tokens will hoke the players for generations to come.

Euros will come from paid app, and in the free app from the in-app purchases and one-time price to get to the global multiplayer center.

I have understood that in finland game shops cooperate rather than compete, and market size analyzis is a bit unnecessary, because unlike in regular world, the customer isn't lost to us if they buy another pokemon-lookalike [1]. If they buy such a game, they are in fact in our target group, and more prone to buy ours.

We're the most epic team ever, 2 awesome engineers from Kotka and an artist from Kouvola. [2]

We're asking for monetary investment, as one does have to eat every now and then even when developing epic games.

Thank you dear people. Do you have any questions?

That's the essence of the draft I wrote to support me on the stage. In other words, that's what I tried to say. What's good in it? I was told the abuse of adjectives like 'epic', 'hooking' and such made me sound enthustiac. What's bad in it? For example, I failed to articulate my enthustiasm for the game's story, the only part that's received enough love. Back in the first weekend of September, I was visiting some sort of game-startup-gathering in Kouvola. There I saw this game, called Avenging Angel, 3D-fpsrpgwhatever that takes place in a futuristic steampunk world. I can't recall exact details of its pitch, but I remember on being sold on the idea of the Dark Amber making a game based on this universe Mr. Brandt has created over a 20 year period.

That reminds me of the way I've progressed with the MERPG. While trying to find an artist to share this vision of mine with, I've done a few sketches of the game engine (and a few gazillion sketches of the tilemap editor, and now at last the second clojure-based revision seems to fit in the sweet spot of enough flexibility, effectiveness and a niceness to develop) and built the world by writing loads of prose. I've got around 70 000 words now, and most of it should be useable in the game. The only problem is that while the original manuscript, one designed for the game, and the later prose, designed to expand the game's world, use the same characters in the same world, they are not exactly compatible.

Anyway, another negative on this pitch is the paragraph of finnish game industry cooperating rather than competing. I'm repeating the footnotes, but I have no idea if this is actually how it works. I just heard someone say this in an IGDA Kotka meeting back in May. I dislike saying aloud stuff that has a possibility of being false even more than I dislike saying anything aloud. I don't understand how to analyze the market in the software level of the gaming world, and I'll most probably need to minor in economics in school or find someone who has before anything on this insane scheme has a chance to generate revenue.

And the last & the worst problem: I was asked how I'm planning to differentiate from all the other pokemon clones/lookalikes. I almost made a clown of myself by asking what I'm supposed to differentiate from, but saved myself by mumbling about how to differentiate from the real pokemon games ("Story is a lot more complex[3] than in pokemons, the tokens aren't monsters but the same kind of characters as your original team, blahblahblah"). The truth however is that I played Pokemon MD: Blue Rescue Team back in -11 or -10, wondered what the heck for there was no more such wonderful experiences to play with, and ran off to design and implement MERPG on top of this idea INSTEAD of actually researching the market. That's why it took me a year to understand that the MD-series had gotten a new title already back in -09.

As far as I know, there are no pokemon clones (at least like the one I've spent years designing)(aside from the actual sequels I've missed). Am I wrong or am I seriously wrong?

See you again sometime; now I'm off to bed and to Pyhtää in the morning


Footnotes

  1. I'd love if someone could affirm or refute this paragraph. I have no hard data on the subject.
  2. Outside the academic season, we could possibly have Tässi with us also. He's not bad with photoshop/paint.net, he has drawn everything currently on http://merpg.webs.com, and thus has the best idea of the style I'm after in this game. He also does brialliant job interpreting my thoughts to the regular people and vice versa, and isn't as hopelessly horrible in presenting in english as I am.
  3. Words "complex story" bring shivers of pure joy to anyone that's played Witchers or almost any other RPG on PC, but to the audience of last friday's pitch these words brought negative connotations. Interesting.

Tuesday 7 October 2014

MERPG's specification as of October '14

I seem to have a malfunctioning Razer keyboard reading keypresses twice, like thiis. Just to let you know I haven't lost my ability to write mostly OK english

Bloody hell, yesterday I was complaining about not having time to complain of the stagnation of the 2D-MERPG, and know I seem to have a team of few designers determined to hone the sharp edges of the spec away and to implement it in or after the Cambridge Venture Camp. I'm not entirely certain anymore what's happening, but the finishing words of the last text are more true than ever in their small lives: these future weeks will be interesting.

But! If we are going to hone the sharp edges of the spec, I have to write one beforehand. There is a spec-of-a-sort in the game's website, but it's in finnish, it's huge (although it has to be, for it contains most of the game's story. Story is however inessential in a pitchable spec), and it's old. Please let me fix the situation here:

MERPG

The title is a working-title, I'm open to better titles, but nobody has yet come up with one. The game is played in 2D, camera looking down on the world in the same angle as the on in Pokemon games. Like in the hotlinked Pokemon Blue Rescue Team or PC-title Dragon Age, the team consists of multiple of playable characters. In the manuscript this multiple is defined to be 3, but there's no reason for the team's count of characcters to be an even number like 4, with the last slot being filled with visiting characters. The game could contain some kind of waystation system, where the game could replenish their HP & PP, buy & sell items and wiggle the members of the party.

Anyway, the main idea of the game is to be an interactive movie get the player to explore the epic storyline. Seriously, I've never been fond of John Carmack's quote [1] about stories in games. Gameplay can be shit, which I could almost say it is in Witcher 1, but the writing can redeem the game. Other way around it doesn't work, in every other finnish mobile game (for example Angry Birds & Clash of clans) the gameplay works rather nice, but I lost interest in them in a day. Why? Because I can't be attached to only pawing the touch screen without a story. I either need a complex system to paw, like Age of Empires on the PC, or a bloody story that makes me feel like reading something in between a comic and a book.

Battle and stuff

But back to the game. Player can control any character of the party. Swapping the controlled one is done like in Dragon Age: just click their face on the HUD-area. Battling is done in real time too, like in DA and unlike in Pokemon Blue Rescue Team. Characters have moves, but I'm not sure whether to allow using them infinite times per battle, implement a stamina pool that's drawn by all the moves, or to give every move a discrete set of PP. Moves have either a target, and if one can draw a straight line from the caster to that target (and that line can be limited to be infinitely small in case of non-ranged attacks) without overlapping anything else the move hasn't missed, or they have a target coordinates on the map and area-of-effect, and everyone within this area is cast some damage.

Battling can be paused, and while done so, it's possible to give commands to AI-controlled characters. When unpaused, they fulfil their commands and continue thinking for themselves afterwards. So, to summarise: the battling system is Dragon Ageish, but in 2D, with stamina pool possibly replaced by Pokemon's PP-system or a big void. The moves and the type-system will draw inspiration from Pokemon rather than DA, but it seems only fair for this project began as a Blue Rescue Team inspired clone. Moves have to be detailed soon, but the type-system should probably be a straight clone from the Pokemon games, with the same type-weakness matrix.

One can use the mouse to choose targets, just as in DA. If one doesn't want to, the game autolocks on the nearest interactable NPC.

However, why is the fighting done in real time? Unless I'm seriously misrecalling, the moving- and fighting system of the Pokemon Mystery Dungeons was turn-based. Why not do it that way? Because moving in this game is continuous (to a pixel level at least). MD did have these N squarepixels sized tiles that could be inhabited by only one character at a time, which made turn-basedness sane by providing a clear limit on how much one could do in a turn, but with the continuous movement there's no such limit anymore. That's why.

Maps

Maps are built of square tiles, and are thoroughly specsed in the blog and the github. If a lower-than-here level question of them arises, I will gladly answer. The largest maps are supposed to fill a 1920x1080 screen on the editor (=> decrease a little of both dimensions for the sidebar and the tileset-view), and maps make up a graph. In current implementation one can define functions to be called when the player moves out of the map in any cardinal direction, but I have to change it to be possible to set triggers to any tile, or otherwise we can't implement enterable houses. And if I haven't said it clearly, these functions called in triggers are free to reset character coordinates and change the current map.

I think routes are static maps inhabited by enemies. I don't know if they should form waves like in DA or just pop out of thin air alone, in pairs, triplets or quartets. If it serves the storyline, I could possibly implement a dungeon generator, but that'd need some time on pure experimentation and learning the theory. Cities are inhabited by friendly NPC:s, selling & buying stuff, managing your quests. It is possible to meet friendly NPC:s outside cities, but vice versa (unfriendly NPCs inside cities) is not.

Dialogue and sounds

Discussions are done in a dialog box in a way shown in the Pokemon MDs. That means player's own character speaks too, unlike in other Nintendo games I've played (the not-spinoff pokemons of NDS & Gameboy and Zelda Twilight Princess). There's no voice acting, because this is a low-budget game, and even if someone invests on us with a large bag of pure gold, there still won't be, as this game is supposed to feel like a garage production. An epic soundtrack, (think of something like 8-bit Nightwish), would be a must at some point but not until we have a playable prototype

Token economy

Reading this is recommended, although even I haven't yet read it to the end, as I haven't played the Borderlands. Mr. Yegge speaks of an important thing in it: people love collecting stuff. This, I think, is what made the Pokemon games as popular and timeless as they are. The newer revisions of them are still the same game: people (me included) are buying them just for the sake of new things to collect, and honed collect experience. This is so powerful force that it invalidates most of my rant against the Carmack's quote. Story may be shit, gameplay might also be (which it isn't in the pokemon), but if people get addicted to collecting (where collecting includes the improving-through-training in Pokemon), the game is saved!

So, it would be foolish to overlook the token economy on a game pokemon clone such as this one. Unfortunately I have done so for years spent developing and not-developing this. I have however a theory, that we could improve on the MD's concept of collecting playable characters. Making them both more diverse and differentiated than pokemons in the aforementioned. We could let the player customise their outlook, and of course we could make all the characters have DAish experience system. Instead of XP granting levels, which grant predefined amounts of stats, we could grant the player predefined amount of stat-points to distribute among the stats the way they see fit.

Of course a good token economy requires a way to show off the collection. A character trading system as in original Pokemon, a send-character-to-help system as in MD, and of course the voluntary public profiles in the internet. The profileservice could also used to distribute mods and backup saves.

The rest

I dream of multiple platforms, and a striving modding community, but they aren't essential in a pitch and for the prototype.

Have I forgotten anything essential (for the pitch, I mean)


Footnotes

[1] Story in a game is like a story in a porn movie. It's expected to be there, but it's not that important. (http://en.wikiquote.org/wiki/John_D._Carmack)

I get that this is supposed to apply to FPS-games like stuff by Id, not wnb-RPGs, but it's still a wonderful inspiration on a rant of the current game scene.

Monday 6 October 2014

Startup Workshop Kotka

Disclaimer: most of this text is highly dramatized, and in case you wish to skip my social angst, proceed here

Another general update for your delight, as I've not had time to experiment with anything technical enough to warrant a post in long time. I have lately noticed that not saying no is a terrific way to get time wasted on stuff that's not programming. I've always been a little wary of leaving home, possibly because back in Espoo reaching anything worth leaving the home took always few hours. Here in Kotka everything is in 10km radius of everything, so it's half an hour at worst with the bicycle to go anywhere. In the beginning I still didn't care to attend to events, though. Why? Because old habits die hard, because I don't like people whose name I barely remember, because I'm a socially awkward nerd.

At some point after the last spring I killed those old habits violently. At the end of the summer, when the first invites to student events (such as the freshman cruise, although I'm no freshman anymore) started popping up, I remember thinking that eugh, there would be, like, people, who I was supposed to socialize with. And as if I had time, for I had like a zillion projects underway. From there I realized that if I'm to succeed on this quest of mine to find the most awesome people and to do something terrific with them, I should at some point learn this little thing called social skills. Where could I learn of them? Was there a book that documented the essentials of interacting with people?

Oh no, these things have to be learned through the most efficient and painful way of trial and error. I clicked the Join button on the Facebook, and after returning from the dark castle of Helsinki, bought the ticket. Before that cruise there were a few other events I'd have a year ago responded to with "Have fun, guys; I'll be at home enjoying a good project". Not anymore, I followed Swizec's example of not saying no, and actually attending to as many social events as possible. I'm tired of having to listen to only my stupid thoughts, so I have a terrific reason to figure out this social stuff as well as I possibly am able to. Also, if we assume the social interactions can be modelled as a system, we accept that it can be hacked, and that I like. Humans scratch the same itch in me the Lisp does. They are similar, dirty and ugly in a way, but also beautiful.

And the result is similar to Swizec's: I have barely time to lament how stagnated the 2D-MERPG has become once again. According to Github there's been almost a month from the last public commit. If the memory servers, the map editor is in a stage where it either idles at 80% cpu, or updates the screen whenever it sees fit (not when the user sees fit). Aside from that bug, it's waiting for me to recruit Tässi or someone from Kouvola to create a bit infrastructure-tiles, so that I could at the fucking last try the bloody prototype of a map editor in a real world use. After trying how painful it's to create a small world (think of a clone of the Pallet Town, Viridian City and stuff in-between them from the original Pokemon games) and having a thoughtful discussion probably alone of whether to serialize the whole world into a single image blob or allow loading discrete assets when it makes sense, I can implement the serialization and start building the bloody game. Of course I need someone to animate the characters alongside, but if I get someone to do the tiles, proceeding to animations shouldn't be a problem.

But, as I was saying, I have absolutely no time for recreational projects such as this. Alongside all the social activities I have to develop the 3-5 school projects (I'm still not sure if the last two will become real projects) I've found myself in (the idea of not saying no applies to school-stuff too - I want to be an almighty overachiever, and will probably be the lad who fails to deliver on time), and then I have to attend to the regular courses too. The math exam on monday (today \o/ this texr was supposed to be published 2 days ago) overlaps with a meeting with the customer and on the next weekend I'll most possibly be attending to an event I'll be speaking of soon enough, and the week after that I have a physics exam, for which I probably don't have time to prepare. After that week I'll have the season break from the school, but no rest for the wicked: the number of these projects should be decremented a little, it's awesome time for socializing, I have some meetings then, and I wouldn't mind being able to visit my family (and the terrific pair of saunas they have) in Espoo.

Can this situation be untangled sanely? Of course not! Let me introduce you to:

Startup Workshop (Kotka)

Okay, let me begin with a meta-note: had I written my thoughts up to a medium better than the Twitter, writing this text would be hundred times easier.

I began the friday by going to school at 8am. I spent two hours on not-modelling a topper hat for Rajol I decided I was to do. At ten I relocated myself to an auditorium, where this weird workshop was announced to be held. I had no idea what to expect of it, but as a fan of Paul Graham's writings and having previously written about the possibility of starting a startup, I could not miss it. It mostly consisted of talks meant to both inspire and teach, after which we formed groups around our best businessideas and implemented these ideas. First of all, the talks were bloody amazing! Finnish talkers (or at least those I've seen, mostly teachers and other school-staff) tend to overlook the fact that their talks are supposed to inspire, not only present the facts. Secondly, I'm amazed at how lame the ideas were. The idea of the group I joined wasn't so bad, it was practical and after a little optimization (some of which might appear in this blog) it could even generate revenue. Engineerically they were almost boring though. Simple CRUDding, a few that were mostly implemented by getting the API keys to the google maps, and a one I evaded just because I dislike ideas ridiculed by xkcd.

It occurred to me there that a startup is just a special case of software (or vice versa, I haven't thought this through yet). The design phases of the best startups and software are almost the same, the KISS-principle applies to both, and the user experience is an area one always has to keep in mind with both. Startup might aquire users and customers more easily than plain free software, but in my context, startups get professional people to handle the marketing, whereas I usually just push the binaries into the cloud, and if I'm very diligent, I put up some sort of notice on the blog too.

I yet again valitated that my skills of presentation are horrible. If I'm the lone presenter, and I've had some time to actually think of what I'm going to say, I think I can make a presentation that won't make the audience seek delight by gauging their eyes out, but when there's more than me on the stage, I'd rather hide in the corner of a round room and hope nobody realizes I do exist than open my mouth. I don't know (well enough to write of it here) why that is. I seem to be able to weave a long conversation with everybody who speaks finnish or english, I think writing these texts in english has somewhat helped in that department, but once there's enough people on the discussion (and when the discussion is called a presentation, we're way beyond that point), the kernel of the part of my brain that controls my mouth just panicks.

The worst problem in the startupcontext is that my knowledge of domains normal people are ready to pay for solutions in sucks. Yesterday I could follow the team's design process because I have been burned by the problem we're solving (or at least a variation of it) and because the website I'll probably develop at some point is a rather simple CRUD-app, but had I ended up in a team with a fancier idea, I could've lost the tracks fast. That's also why I've been incapable of developing single-handedly an interesting startup: I'm only solving my own problems, because I seem to be not even bothering to explore domains of other people.

But I had fun this weekend, thank you everybody who participated. The startup-path seems thrice nicer than going to hack decade old .NET and Java-systems in enterprise setting after graduation, so how will I continue in this path? Well... next weekend I think, don't care enough to open the browser to check, there will be an event called Startup Weekend in Vantaa, and I'll try to get this weekend's team to travel there too. This event will probably decrease my physics grade by two at least for the next weekend is sorta, kinda last moment to prepare for the exam week after that, but the talkers advertised it so well I'd be stupid not to go. And then there is the Cambridge Venture Camp. I'm sure one can expect certain awesomeness from there too. I don't know wheter to pull Tässi with me there, or if I go with the yesterday's team, but this will sort itself out one way or another.

Because I've been sitting on this text for 2 days know, this has sorted itself so that Tässi isn't coming, because he has actual schoolwork to work through. I'll find another artist before or in the event. Before that I'll write some new specs of the game here, and maybe tell of the 3D-version of the game I'll probably do on Unity once I've done enough models. These coming weeks will be interesting...

Sunday 31 August 2014

An August update

To achieve my monthly quota of blogging I'll write a summary of the summer. I had a longer text of developing on Windows coming, but as I currently try to avoid PTSD, I have no intention on continuing that text today. I spent the summer (which began in the April!) in the capital region of finland, and from the June to last friday I did mostly Windows (C#) development. Alongside I redid the MERPG-engine in Clojure, wrote a few tens of thousand words of prose and read like the devil. I read the Dark Towers, Gaiman's Smoke & Mirrors, Cornwell's 1356, Wizard of Oz, and bought so many books I can't really buy more in at least two years.

Reading is essential for healthy life, at least if you're a writer. From the last October to the June my prose-project was, as they say, stuck. I wrote some exploratory prose to see if I still had the touch, but the result was some five thousand words without a spirit. How did I proceed? Further exploring reduced the quality from 'not bad' to 'horribly bad'. Then I found new inspiration, or in other words, fell on the Dark Towers. I had completely new world to base my fictional world upon! Awesome, but did I actually build this world of mine? No, I just explored it, throwing text on the wall and seeing what stuck. And this process seems to be sort-of working finally, at least with the new examples I've learned from the aforementioned books. I can't yet say for sure; ask me again six weeks after I've finished with the current prose.

Musically this has been an interesting summer. I didn't participate in too many live festivals, but since my ears are starting to fail sixty years before their time, I don't hold a grief of this. The only festivals I attended to were the Kivenlahti Rock (where my interest lied in Indica, Sonata Arctica and Within Temptation) and Pioneeri Rock (Kotiteollisuus, Viikate, Sonata Arctica... and something, I'm sure). This summer I've also spent more money on albums than I think is healthy for a incomely-challenged student. Cut me some slack, though, for this has been a hell of a year for the metalheads like me, with Delain, WT, Epica, Sonata Arctica, Alestorm and Tuomas Holopainen (epic metal this guy's album is \o/) releasing their new albums.

What for did I redo the MERPG-engine? See for yourself why I had a breakdown with the old code. After spending half a year pondering on the costs of beginning to study driving of trains, I pulled my fat arse together and began to think like a developer again. After three weekends of hacking I had a thrice better base to code on, with all the features of the GCode's code (which took half a year to develop) redone. After finishing with the map-editor, I hacked a grayscale animation system and -creator, and now I'm doing a browser for managing the engine's assets. At least I think I am, for for the last few weekends I've had no time to spend on the game. I've heard it's healthy to spend time along good friends without being a workaholic, and can't disagree with that. The game is nowhere ready for anything useful, but if you'd like a peek, get it from the Github

So now I'm almost back to Kotka (currently in Pyhtää in fact), and what do I look forward to? Physics, mathematics, and stuff of course. There'll be also the OS-courses, where on the Windows course I'll probably curse the insane-seeming Powershell and on the Linux course I'll be cursing the definitely insane bash (or zsh, in case there's no compability problems between the course material and the zsh). I'll possibly try to hack a 3D-demo with Unity in the MERPG-universe too, and as we'll be asssigned our own laptops with the relevant software (3DS Max and Unity) HOPEFULLY preinstalled, I can apply the standard set of patches on the Windows (HOPEFULLY) 7 and try to work with it instead of working in spite of it, as one would have to do with the school's sudo-disabled desktop workstations.

I'll possibly hack something out of my Raspberry Pi too. I've got an old, broken Gameboy Color which I could possibly recycle the buttons from, and try to hook them up to the Pi's pins and read their state somehow. I have actually no idea what I'm doing in this context, but as always, a little bit of exploring spirit should get me a long way forward. When I'll tire of the HW-hacking, I'll set up SSH on it, run the Emacs server there and inside the Emacs, I'll finally try to get hooked to IRC. I'll also set up a network backup solution in it.

Future seems an interesting place. Let's have fun exploring it!

Friday 4 July 2014

C#-Emacs-hakkerointispeksi

Here is a spec for an emacs-hack I'm inclined to make. It's designed to ease the pain of developing C# on windows.I guess it will be mostly useful on cli- and library projects, but it might provide something useful for the winforms projects too. It however won't provide anything for the WPF-development, because I have no projects on it currently, and it's been ages since I've last used it. The text is in finnish, because it is more like a mind dump for myself to quickly restore the ideas to my head when I'll begin hacking than a real spec, and I can't be arsed to translate it. If I'll get any results however I'll write the code & docs in english.

Jos mulla ideaali csharp-ympäristö oisi, miltä se näyttäisi? Noh, Emacsilta tietysti.

Siinä olisi REPL

Eval()in on monta kertaa näytetty olevan toteutettavissa ihan C#;llä suoraan, tarvitsematta kirjoittaa mitään parseria, IL-generaattoria tai muuta pumhuukia. Tämä mahdollistaa alkeellisen C#-REPLin toteuttamisen Emacsiin. Roslynistä tai VS:n Immediate Windowsta voisi myös hakea hakkerointikelpoista pohjaa tai inspiraatiota.

Jos oikein dynaamisia haluttaisiin olla (, käytettäisiin ClojureCLRää tai muuta Lispiä :P), kerrottaisiin Emacsille csc.exen sijainti, ja tälle syötettäisiin kaikki metodimäärittelyt ja isommat, mitä repliin saadaan. Metodeista tulisi jotain Callable-semanttisia luokkia, ja luokista tulisi... noh, luokkia. Csc:llä näistä tehtäisiin .dll-asmeja, jotka ladataan repl-imageen Assembly.LoadAssemblyllä (tai jollain, msdn ei sattuneesta syystä ole bussissa matkaavalla cli-arch-pikkupäpällä käytettävissä). Systeemistä ei tulisi kaunis, replillä generoitujen luokkien käyttö saattaisi vaatia melkoista kikkailua sekä Emacsin että replserverin päässä, replissä määriteltyjen metodien ja luokkien scopelle olisi melkoisia rajoitteita, esimerkiksi luokkien perintä lie mahdotonta toteuttaa, koska perittäviä luokkia ei voi AFAIK käyttäjä ladata, ja rajapinnoista tulisi täysin turhia.

Toisaalta - jos metodiluokkien toteutukset piilottaa hashmappiin, ne olisivat ainakin REPL-expressionien tasolla olemassa. REPL-luokkamäärityksiin niitä tuskin saisi esiin ilman kikkailua. Perinnän voisi huijata niin, että Emacsissa parsii perintämäärittelyt, ja toteuttaa perittävästä luokasta olion uuden luokan kentäksi sekä toteuttaa method-missing - metodin (mikä on toteutettavissa C#:ssä, kuten muutaman viikon takainen googlailuni osoitti), joka delegoi kaikki perityt metodit tälle kentälle. Override-määreiset metodit eivät myöskään olisi paha toteuttaa - korvaa vain base-määreen _inheritedObj - määreellä. Suurin hassu on konstruktori, joka kutsuu base()a, mutta siitäkin selvinnee pienellä string-magialla ( :base(& params) muutetaan konstruktorin ensimmäisellä rivillä _inheritedObj = new _inheritedClass(& params);iksi.

Voisiko VS:n debuggerin kanssa keskustella? Tai ainakin pitää silmällä missäpäin projektia seikkaillaan, ja breakpointin tapahtuessa herättää Visual Studion UI:ssa oikea koodinpätkä esiin? Teoriassa breakpointit voisivat olla toteutettavissa Emacsin sessioon, josta ne lähetetään VS:lle/debuggerille, mutta käytännössä helpompi vain delegoida System.Diagnostics.Debugger.Break(); - kutsut jonnekin.

Toisaalta, jos debuggerin kanssa voi keskustella, repl-hässäkkään pitäisi saada näkyville breakpointin lexical scope. Tämä mahdollistaisi repl-hässäkän soveltamisen samoissa usecaseissa kuin VS:n Immediate Window. Lisäksi lambdat käsiteltäisiin oikein :)

Debuggerissa pitäisi komentaa myös C-d C-e - nappien mukaan, jos ei muuten niin ainakin BREAK ON ALL_CLR_EXCEPTIONs - booleanasetus

Mitäs muuta? Kaikki debuggerin ja debugattavan prosessin outputstreamit pitäisi saada kaapattua Emacsiin. Console on helppo, evaluoidaan Console.SetOut(outputsocket.GetStream), mutta Tracesta ja muista debuggivirroista en tiedä.

Tietysti moden pitäisi osata myös clean, build ja start koko sln:lle (vaikka start lie parempi toteuttaa restarttina, joka nollaa replin tilan). Jonkinlainen integraatio sourcesafeen ei olisi huono, winformsille pitäisi kehittää jonkinlainen ajatus, ja taikanappi, joka avaa auki olevan tiedoston Visual Studioon ennalta-arvaamattomien käyttötapausten varalta.

Miltä tällainen csharp-moodi kuulostaisi? En ole saanut hakkeroitua olemassaolevia moodeja toimimaan Emacsin kanssa, mutta tämä speksi kuulostaisi aika täydelliseltä ainakin cli-c#-projektihin, ja tuosta repl-serveristä voisi hakkeroida muitakin juttuja Windowsille ja Monolle. Tuskin hakkeroin tosin; Unixilla leiningenin käyttö sattuu paljon vähemmän aivoon, ja tämän moodin ajatus on vähentää tuskiani windowskehityksessä... Ehkä tätä voisi soveltaa Unityn kanssa?

Disclaimerina sanottakoon, että voin puhua aivan höpöjä tässä tekstissä: en tiedä juuri mitään parsereista ja muista kääntäjätekniikoista, ja minulla on vain pieni aavistus .NETin ja Emacsin toimintaperiaatteista, joten yllätyksiä on varmasti luvassa.

Tuesday 24 June 2014

Home is where the book is

I love to travel, that I do. One might not believe it, for after a few hours of anything with less personal space than a train-car, I tend to get an urgent need to rise up with my cracking joints, but I do love it all the same. Especially on the summer, for what would be better way to spend summer than to take an overnight-train to the ass-end of north and spend a day/weekend up there being creative? Well, travelling the 6km it takes to get to Tässi's place near the Siikajärvi lake and being creative there, of course.

I am fascinated by new places, which I think is one of the reasons I love reading and writing fiction so much. I am disgusted by the everyday life so badly I'm practically a living cliché. I loathe the repetitiveness of waking up at 6am and spending a few hours commuting for five days a week. Once summer is gone, which also requires its own sulking, I loathe waking up to the sound of the alarm (although I don't complain of the more humane time it's usually set in the winter, 8am UTC+2, instead of 6am UTC+3 it is currently set) , pedalling through the hail, sleet, tears and blood to the school, wasting a day there and pedalling back to the empty fridge and full project-directory.

So, I like escaping the (not horrible but) dull everyday life to the worlds of Roland & Rajol. And what would be better environment to practice this art of escapism than aeroplane/train-car/the front seat of a car? I have found none. Unfortunately however one has to eat, and no one will pay that one dude to travel writing and reading fiction. Not unless you've built yourself an image of being the next Stephen King, but at least I wouldn't want such. I wish to develop my own style, albeit it tends to look like whatever I'm currently reading.

However, if everyday life is dull and escapism doesn't pay, what is a man to do?

I've spoken of setting up a one-to-three man shop (for various definitions of manhood), developing a story-based game and trying to earn some money of it, but since the only one I have yet achieved to have any interest in the story is the Tässi, and neither of us has any idea of how to monetize things, it has become a sort of eternity-project. Another way of achieving undullness in life I've thought of is commuting with bus for this summer carrying the mac of mine with me, writing 100 to 1000 words of prose a day, and self-publishing the story after a few editing iterations in the leanpub.com. Is anyone of my finnish readers (all one of you :P) up for proof-reading a story derived from Assassin's Creed? And this question is directed at everyone but Tässi and my godmother, for you two will receive a copy wanted you or not :)

Retreating back to the problem of dullness, can I find a solution to it by thinking of the reasons I find the everyday life such?

Well, I obviously don't like being woken up nor having to go to sleep once the creative juices are flowing. I dislike the finnish weather, unless it's as it was in the summer of '13. I dislike cities, and I'd dislike having a 1,5h commute (of which barely 45 min is suitable for writing with the laptop) were I not an obsessive fiction writer capable of taking advantage of these day's most productive minutes. I dislike using software that tries to be smarter than me (in other words, most of the .net devtools, windows in general and all the wysiwyg office BS) and usually fails. I dislike people, who introduce themselves as experts in areas I'm interested in and immediately proceed to invalidating their claim of experthood.

A year ago I held a hope of moving to Kotka would solve the problem of ever-increasing feeling of boredom inside me. No such luck. After spending the then-previous year getting kicked by the Winforms designer to different parts of my body, the very last thing I'll need is a professor telling me how the Visual Studio's forms designer is the best thing since the sliced bread, and I should "learn to program object-orientedly". A common disagreement among the younger of us wannabe-FPeers, I guess. After that I found a few more profs I had disagreements with, and my attitude problems reached their local peak in the spring, when I began asking myself: "what else could I do if not programming?".

That was bad; so bad I had to wonder in the meta-level how things could've gone so bad. In this digital world of ours programming is one of the best professions to be in, for instead of being sent to unemployment, programmers are usually the ones sending people there. When you are programming, you don't have to deal with people 8am-4pm, but instead get to play with... well, calling them toys would undermine my point, because you usually don't do serious work with toys, but then doing serious work with Clojure is so painless it's almost as if playing mere games. And you get to play this game whenever you feel like doing it: in an ideal environment you could run you REPL wherever you want and conncet to it from another side of the globe.

I guess I didn't get in to the Aalto university I applied to in the peak of this all, and I dare not open the results website (for the results will arrive in post in a few weeks) and check them, so I am quite sure I'm returning to the beautiful city of Kotka this fall. I guess this is for the best, because going to Aalto would have meant moving nearer to Helsinki, which would surely have driven me insane. I'll keep going to the school, because the society doesn't view dropouts without 8am-4pm job in a good light (and the engineer's degree isn't bad at all to have), and try to finish the prose of mine and actually learn to program the unity engine. I might need to make real acquaintances in the Kouvola to get real graphics to this story-driven-über-RPG of mine, but the static models made by myself would be enough when presenting the prototype to the potential designers.

Oh yes, haven't I mention? Currently I'm planning on utilizing the MERPG-manuscript in a 3-dimensional unity-project. Scripting it will probably be an experiment in pain, but at one could try to write its scripts on JS. And aside the foolish script-environments and complex (although probably necessarily such) GUI, that engine isn't actually so bad ("seriously? :O")

The 2D-Clojure-engine hasn't seen the light of the day since the christmas, and likely won't at least until the next. I've thought about it at lot, and will return to it at some moment, because the lispy core makes its development, to quote myself, as if playing mere games. That core will also make the engine/game a lot more flexible and longer-living, assuming I'll actually finish with it anytime soon, than most of the 2D-games done with unity.

To summarize: the future holds prose, interesting game projects, a lot of mental effort to keep the school from killing this interest, and lot of wondering and wandering for me. Anyone interested of tagging along? Everything (maybe excluding the writing-process of the prose, as the writing is THE loneliest profession) I enumerated would be more pleasent had I not to face them alone </lolangst>. I will probably push the unity-thingy to the github once I've began developing it, and I am ready to distribute the manuscript quite freely (and probably am currently distributing at http://merpg.webs.com, I can't be arsed to open it in the safari and check).

Friday 9 May 2014

What is a truth?

He was the Artist. He called himself that, for he had never been good with names. He felt it was hard to come up with good names, and no names but the best were good enough for his characters (and himself, of course). He just hadn't found a good name, so that was what he called himself, and how he introduced when someone asked his name in the professional context. His parents had given him a name in birth, of course, but it was an irrelevant name, for everyone writing classic prose used a pseudonym. His was the Artist, until he either found a better one or wrote a masterpiece with that pseudonym.

The clock went through its darkest hours. It really wasn't dark, for he lived already June, and the clock was eleven in the evening. He was cycling. Was he cycling in the city or in the countryside? Irrelevant, he knew, for they complemented each other. In the city he could keep an eye on other people who had wondered into the night to search a better tomorrow. In the countryside he could keep an eye on himself, for for every better tomorrow found around him he grew more and more conscious of how bad he was at searching them. He enjoyed the utter solitude he found cycling in the middle of a pine forest, and loved the loneliness hiding inside the unending stream of company in the city.

He was a writer, yes. One thing he had learned by heart: a man reading know books along his life lived only once, a man reading a thousand books lived a thousand times, and a man writing a thousand books was a goddamn god. He found writerhood being comparable to insanity, as described by the late David Eddings: if he found doors boring one day, he could just write them to be little transparent, s-shaped things without boring, plain and simple colouring but instead coloured by Van Gogh. If he found his thoughts boring, he could write the walls to sing him a lullaby or to have an interesting conversation of the big questions of life. If he was bored, he could just open his notepad and write a play of light and shadows.

The artist loved summer evenings and nights. He was a nightowl, yes, but he loathed the winternights that began at 3PM. In summer he could take a bicycle for a ride in the midnight, and he needed neither artificial lights nor warm clothes for the sun provided both the light and the warmth. If he couldn't sleep, which was more frequent than he felt safe to admit, he could set up a work environment (an absurd chair and a writing tool somewhere between a notepad and a laptop) in the yard. If he had an awesome project under development, he could relocate himself to a near beach sauna, enjoy the warm sauna til the small hours of the morning to kick the creative juices flowing inside his mind, and then move to the pier to write intensively. The last way to write was among the best he knew, but it was also among the easiest to break. If he forgot to take a bath in insect repellent, he couldn't write a thing in the pier. Hours around 2am were also unbelievably cold outside the warmest nights of the July, and he couldn't just write the temperature to be higher.

Two things he hated with passion: noon and winter. Noon meant everyone else would be not sleeping but harassing him with foul trivialities such as the real life: when are you going to do your school/job projects? When are you going to eat? When are you going to waste your time with another irrelevant act that just belongs to adulthood?

And winter. He couldn't take his writing equipment outside, for either he froze his ass off or the equipment did, and even the cycling was stupid in the winter (for he had asthma). Winters were dark times, the sun setting few hours after the noon made him creative, yes, but his playful, childish creativity turned into sombre and gloom for months once the calender turned September. He hated artificial light, and there wasn't enough natural, so he had to pour the feeling of walls crashing upon him into somewhere, and as a loner, the paper was the only thing ready to listen him.

He was an artist, a writer. He loved watching people dance, but hated the dance himself. Let's hope nobody told him he can't avoid the dance. He loved the solitude, and hated the fact he couldn't live in it. He loved to be around people, and hated that fact. He loved people, he hated people. He loved writing, he hated writing. He was a man of conflicting views. He loved summer, he hated summer. He loved winter, he hated winter. He was a man of fiery passions. He knew what anxiety looked like in a handful of dust. He was the writer.

And that was the truth. Choo choo!

Thursday 8 May 2014

I'm in love!

And this doesn't happen often, for I'm one tough customer when it comes to culture such as books. Luckily it however happens so often that I can claim my brain isn't calcified beoynd redemption. Last time I fell in love for a book (or in most cases, a series of books) was four years ago, when I met the Bernard Cornwell's Saxon Tales - books, in which we followed a saxon in the ninth-century britain. The books are as historically accurate as possible without giving up the poetic license, and contain moderate amounts of violence (where moderate amount means twenty saxons killing hundreds of vikings in a shield-wall without casualties :)). So, basic stuff you'd expect an Age of Empires II fan to love.

And what have I fallen for now? The Stephen King's Dark Tower, that's what. I've been told now and then for the last five years how I should read something from the King, because why should I not read them? I didn't care to read that stuff for such lame arguments (and in fact, reading anything that needs arguments to justify the reading is dumb), and I always categorized King as something people my father's age read, mainly because his bedside table always contains at least two King novels. By doing that I forgot that most of my father's books, or at least the Hitchhiker's guide and Stainless Steel Rat, are in fact among the best I've read.

Anyway, I spent a weekend in Estonia. There, I found myself in a local bookstore's area of english books, for I find my skills of Estonian language lacking. They had a shelf dedicated to the King's Dark Tower novels. I had seriously thought of reading a book or two, so a quick call to my father revealed that he has parts 2, 3 and 4 at home, so I have to buy only the first. Then, I spent a week reading the book, sometimes wondering what kind of funnytea he had drunk while writing, sometimes laughing to the genious twist in the plot. After that week I began the second book, and after a week I'm now reading the third, with great difficulties in putting it down and beginning to read stuff I'm supposed to read currently (if you need to know, electricity physics and such).

The first book was a bit dull, but undull enough to get me to pick up the second book. The second book had weird initial situation, most of the first few hundred pages happened inside a mind of a heroin courier. This sounds like a generic american movie, but in fact that worked nicely. A heroin addict, recovering or not, is also a good character to wonder the weirdness of the world, as I think the Holmes NYC tv-series has demonstrated. After the initial shock of the feeling of an american movie, the book had some cogitation on the evil of the world, both natural occurring and man-made, and nice, abstract symmetry. And doors in a bloody beach! I had great doubts on them, but their absurdity actually works!

The first part of the third book was a bit boring, maybe too much pondering on irrelevant things, or something, but now that we're following Jake once again, I'm trading hours of sleep for the pure enjoyment of reading the book.

As a writer myself, I'm mainly reading these to get my muse to sing for me again. The first 'Lomaproosa' owns its existence to Assassin's Creeds, Cornwell's books, and a bit on Witchers (both the books and the games). Albeit I probably wont borrow the huge amounts of absurdity from the Roland's universe, its effect will be visible in the second instalment of Rajol Al-Ramal's adventures. I love how the Roland's world feels to have seen all the great things in the past, and now the only thing it will see is its own demise. That kind of a setup provides multiple possibilities on asking big questions of life, but tales consisting mostly of these questions are horribly hard to write to be interesting.

And what is the conclusion, what am I trying to say with this short text? Damn if I know. Maybe it is that everyone should read the Dark Tower - series, because why should they not?

Friday 25 April 2014

Email rant

Good day to you. I think communicating with people isn't as good as it could be these days. For example, the SMS represents the least horrible way of communications. If you do call someone, you have to try to do sort-of face-to-face communications without being able to communicate nonverbally. I don't know about other people, but at least I rely much more on the nonverbality when discussing face-to-face, and thus making a phone call feels like driving a car without wheels. With SMS you don't have the social pressure of forming the response in milliseconds, and thus you are able to actually think before saying things, and you have also time to play little verbal games. However, SMS is not the final solution to the problem of communications. They are really used only in the phones, they originally had the stupid 160 char limit, and again, I don't know of other people, but I hate doing SMS with a touch screen.

How do we, for example, communicate with computers? Well, with emails. Emails are another thing I hate with firey passion, alongside the phone calls. You always check the mail folder too often or too seldom. Done too often, your real jobs suffer, and done too seldom, people will complain. You could setup the Outlook on your pc to ping you every time it receives mail, which'll lead to the former problem, or you can use the web clients, which'll lead to the latter. I think the only thing worse than receiving email is sending it, for you have to prepared for the recipient to read it either immediately or sometime within the following decade. With email the misunderstandings are the easiest and the worst, and with the previous problems, they'll probably be noticed too late. And then there's the problem of spam. Luckily the problem of completely irrelevant spam has been solved, but the problem of almost relevant spam is still strong. The usual cause for the almost relevant spam are the people that don't know how to use the email. They'll send mail to whole school groups, when the mail is relevant to maybe three out of the fifty students, because they don't know who it is relevant to. Subject lines with the pattern [Re:|Fwd:]* (hoping I got the regexp correct :P) are sign of collective stupidity of both users and email clients alike. If the discussion has more than two participiants, making a flattened representation of the discussion tree up to the present moment is unbelievably hard, if not impossible, and the signatures with a length of a Yegge's rant make following the discussion even larger pain in the ass. And guessing how formal to be in the mail? Hard.

So, emails might have been a good idea a few decades ago. What else do we have? Well, one can always build a persistent communication tool around the discussion board - concept, but, unlike emails and calls, has never been not-stupid idea. You either setup some PHP-based abomination who first saw daylight fifteen years ago (and thus working inside it is nothing like working with a tolerable PHP-codebase), or you experiment with something like Discourse, on which I wouldn't base my life on. Or, in my case, with little work I could hack the Pröng to be a tolerable PHP-communications-board to achieve anything, for the code isn't actually bad (despite the database interactions being a slight WTF), but that's not an option for general people because I can't be arsed to release the source code.

And the last, but not in any way, the least: the instant messages. If your friend is not online, they work sort-of like email, and if the friend is, the friend is forced to react to it somehow. This has the same productivity problems as setting up the Outlook to ping upon every new email, but for some reasons it feels not as awful to me. If the friend doesn't react with at least response like "ok" within a few minutes, he probably is never gonna react, and if there's miscommunication, people can immediately (or if the other participiant is offline, once he logs in) ask for clarification. The IM-discussions also scale to multiple participiants much more nicely than emails. The formality usually is a no-problem, for the tone of discussion is usually the same as would be in a gang of friends hanging out.

Unfortunately, most of the IMs of the day have an awful user experience. And in case they have a good UX like the five-year-old Windows Live Messenger -09 had, they have minor fuckups one can't fix themselves, and the customization- and expansion possibilities are fairly limited. These I try to fix with the IM-project of mine, which currently lacks a good name. I'll maybe tell more about this thing's current state, but now I'll move to the sauna. Til the next time!

Tuesday 11 March 2014

Writing is hard

I like to think myself as a writer. Writers are nice people, who have interesting thoughts, read people and books alike, and write awesome stuff, so who wouldn't like to title himself thus? Luckily I haven't had the chance to be questioned about my writerness yet, for my latest project spawned a story whose word count would earn it a place in the NaNoWriMo - competition if writing it took 1/18th of time it really did. If someone actually dared to ask on what grounds my title lies, that text would be my answer. From simpler minds I do not fear the question, for the word-count would be baffling: "Oh wow. He has managed to embed so much words to a story. He must be good". I am afraid for a day I meet someone like myself, who knows that quantity tells nothing, quality tells everything, and also is able to ask how long ago I last began writing a good story. I have objectively verified that the technical quality of that old text is not terrific, it would love to be fed through a grammar checker at the very moment I find one that doesn't suck, and on a subjective scales of myself and Tässi's, the story isn't too well thought out. And the worst fact: I began writing the text in January of the 2012, finished it in the June of 2013, and decided I won't begin a new text until my eternity-project MERPG is ready, which by the definition, will take an eternity.

Okay, I admit, I did some experimentation in the October on the Lomaproosa2, but it was half-assed attempt at continuing the story. Really I was just experimenting with the org-mode. I have also written a blogpost now and then even after the summer, and these blogposts are what I really want to be talking about today. Let this be time for metablogging!

In case you haven't noticed, at some distant moment in the last summer of '13 I began speaking english here. I did it for a good reason, for I had some idea concerning programming, and if I had began writing about it in finnish, I would have had to use so many untranslateable englishms that it was easier to write in english to begin with. That text was easy because I didn't need to think about it: I just had an abstract idea, that needed meat around it in form of words, and after an hour of banging the keyboard, it was ready to be published. Texts after that though, some of them were ugly, some had an idea hidden so deep behind a wall of grammatical and conceptual WTFs that I had to unpublish them before someone important read them and decided I am a 11-year-old american teen who's never had to learn either his language nor his profession. How has it come to this?

Let's have a look on my history. I graduated high school (I hope that's what Lukio is in english. I've never understood how to translate our school-system to english) in 2012, when my english was graded as M. I'll not even try to translate these yo-grades to english, let's just say my english was upper average. After that, I began working in the industry, so no more weekly english lessons for me. For 1,5 years my weekly doses of english came from programming blogs and books, writing code with english keywords and comments (for the Visual Studio and Netbeans being too shitty to not fuck up the scandic characters), tv, games, music, and sometimes I even read prose in english. That's why I am not afraid of the Georger R.R. Martin's heavy writing style in the Game of Thrones - book I'm currently reading. My reading comprehension is excellent, but how did I rehearse my writing and discussion skills? Well, a year of writing mainly comments in english makes anyone a terrific comment-writer, but as expected, my longer texts are rubbish. And discussion? My social skills suck, I am not able to discuss even in finnish with anyone not sharing at least a decade's worth of context with myself. Good luck trying to interact with people not belonging in my family or not being named 'Tässi'. If I can't discuss with laymen in finnish, what hope do I have in interacting in english?

None :)

Back in the end of January, in the Finnish Game Jam I promised a text from but never wrote one, my team had a majority of non-finnish people. I genuinely tried communicating in english as much as possible, but after a few hours I realized I had some troubles following even the finnish guys, and soon after that my vocal communications decreased to a point where I communicated only with the guy who's best skills lie in communicating with people. Not a smart move, I know, but it just happened without me really noticing.

What I'm trying to say here is that I read english absolutely well (well, Tässi might argue with that assertion, but as a wise man once said, benchmarking yourself against people who could solve anything you throw at them if they wanted to is stupid), but my textual output isn't as classy, and although I'd probably survive in the GB ar US as long as I cared to, my vocal output is as horrible as any finn's. What the hell am I writing these in this language, then? Two facts I've had trouble understanding and accepting in the past are that everybody sucks nobody, including me, is perfect and it doesn't matter. Let me repeat: I suck, and it's okay. The definition of suckage is also one I got screwed up ages ago. In my world — this might sound like a quote from BBC's Sherlock or House — only thing worse than complete failure is being average and dull. In school you either did all the exercises or you did none - since picking the easy raisins from the bun would've been just stupid.

How does this relate to the blogging, which I was supposed to blog about? I'm not entirely sure anymore. This rambling is what you'll get when you run to write a last, polished version without sketching first. Children, please, plan and sketch your texts first, even though these emacses of the present day do make it seem reduntant.

So, I'm a writer, who has some experience of english, this lingua franca of our trade of programming. More in the consuming side, some in the producing side, and most of it writing comments explaining or questioning WTFs in a code. I however practise my trade of writing real texts seldom and with very long texts (like this has some potential of becoming, 1121 words and counting). Most of the stuff I produce falls into the crap-category, at least in my eyes, which have this black and white view of this world where you either are the best or you're nothing, and Tässi's, who's mind I think is so exceptional I rarely give his negative criticism any value unless I'm honing the edges and polishing the surfaces, for none but him seem to pay attention to details in such extremes.

Any ideas what I'm doing wrong?

That's not a rhetorical question.

First, the timing just sucks. One can't hold on to skills one doesn't hone periodically. Within the last year, upon returning to the school, I've seen myself screwing royally up many math-, linguistic-, and people-problems I would have found unbelievably easy in the best moments of the high school, and with most of them I had an idea that I'd seen such puzzles in the past, but I hadn't solved them for so long I couldn't remember how it is done . As I've cried for the last two or three years, I'm supposed to write much more than I currently do, and although the 750words - experiment brought a few more texts last month than I would've expected in the first days of the February, that well may have dried at the end of my trial-period. I stopped the experiment two weeks ago, for in the holidays I had absolutely no time to bleed into the internet, and the last week was so weird and stressful that I couldn't resume it. In the future however, I'll try to publish at least a text a week, and probably fail :) But then again, I suck and it doesn't matter.

In shorter words, I should write more to keep my english- and writer's skills from decaying.

Second, I yearn for quality that isn't achievable. If I concentrated more on producing text, less on worrying how people react to the rubbish I write, I might actually get something real written. A nice side-effect could be that the rubbishness-level decreases also, but I wouldn't hold my hopes high.

Third, however much I try and want, I'm incapable of writing language rants. They are hellishly hard to write even if not caring enough to get the facts straight, and because I can't write like Yegge, my "rants" are dull to read.

And the last but not the least of my blogging- related problems: I don't live enough. The problem can be rewritten in a form that I can't build up a facade of living enough. For example Swizec seems to pop between the US and different european countries every now and then, and he seems to have a routine of spending some time doing anything but programming or writing. Me? I just go to school, program & write, and spend summer-evenings in the Siikajärvi. Could I routinely make up interesting texts of this life? Oh yes! Do I? Of course not, for I don't consider it living a life interestingly enough. I seem to be missing many interesting people too, because I never caught on to any professional community in Helsinki, there seems to be none ready in Kotka (but I'm keeping my eye on one or two building up), and people who can't program are either dull or scary.

Of these four, only the last half of the last problem is probably unsolvable if I try to solve it alone. I should be meeting much more interesting people, and spending time with them, but since there are no real excuses to go out and meet them (because meeting people for only the joy of meeting them is scary), I'm not.

Oh, I could come up with one more problem: my typing speed is horrible (due to having usually only a lack of plan to base the text around), so writing texts with one to two thousand words seem to take whole weekend. I should apply the usual tricks to increasing my words per minute - value: planning the text, writing many texts, and finishing the IM-project and getting a buddy to IM with while coding furiously. The IM-trick is better than it sounds. I can write without looking at the keyboard (ie. touch type?) not because I've consciously exercised this ability but because when Tässi did IM enthusiastically, I had code or story flowing nicely, and had to respond to him too without breaking the infamous glass palace, I didn't have time to admire the keyboard. Another scenario where my WPM has been high was the Age of Empires 3, where I've always discussed with other players (well, the other player, for none but Tässi has kept interest in that game after the 2007) by text, but had to also play the game. Still, for mere writing and coding I've never had to develop high WPM.

But, to wrap this up, let's once more repeat: I suck, it doesn't matter, I don't write enough (to hold interest and to keep my english-skills from decaying), I worry too much while writing, I haven't found the niche to blog in/about, I don't meet enough people, when I write, I'm unable to stop, and my WPM is horrible. What is the solution? Same as in the sports: EXERCISE!

Friday 21 February 2014

Babbling of the Lomaproosa

I don't think anyone but Tässi will understand anything of this mind dump for I've still not managed to publish the old Lomaproosa anywhere. However, let this be published here, in a place where it is easily fetched.

I should continue the Lomaproosa - project. I have been doing thinking, and I am sure the stealing of Rajol's children would be... well, it would be a cliche, but a cliche that kickstarts the story. I'll edit it into something else if and when I see fit. The children, who Rajol doesn't know are his, are stolen to the lands of the south. Who are these thieves? And what the hell exists in the south?

Some time ago we decided with Tässi that although in the regular maps the north is in the up and west is in the left side of the map, in the maps of MERPG (available in the merpg.webs.com) the north is to the left and the west is thus to the down. This provides some sort of help for the cartographers (in other words, me, until Tässi is again available), but I fail to recall the exact nature of this help. Still, what is there in the south?

There should not be grand wizards, for they are supposed to be dead now that the Tuula was got rid of in the end of the previous text, and bringing them back would be as ridiculous as the Daleks, who are killed into extinction in the every other series of the Doctor Who. Pirates, which I think I spoke something of in the previous text, are also a ridiculous cliche, albeit a popular one. I should play the Assassin's Creed 4 through though until I write anything real of the pirates.

But what do I put into the south!? Who would be stupid enough to steal the children of the greatest hero the universe has ever seen. And how should the said hero understand the kids are his? And how should I get back to the guild he thinks views him a failure? And, of course, WHAT DOES EXIST IN THE SOUTH?

Let's try associations. In the lion king, there are the lions, who can be associated to the guild in my texts. Then there are the animals that aren't lions, but aren't the hyenas either. These can be associated to the common folks. Then, the hyenas, the awful guys. Who can they be associated to?

Some sort of nomadic tribe, I'd say. They don't know anything of the magic, which I'd say didn't work too well in the old text, but with their swords, horses and siege weapons they are extremely fatal to both villages such as the Vo Wacune (a tribute to the author who introduced me to the genre of fantasy, may he rest in peace) where the Rajol resides, and castles such as the guild's, resided by the assassins and their leader, Rajol's beloved Amrah. If these guys raze the Wacune (again with the tributes...), harass the guild into its knees and destroy half of the world that survived the mass destruction of the first story, I'd have a base to build the story on.

But what does motivate this tribe to attack the northern world? I could follow the Conn Iggulden's idea of the civilized world discriminating the nomads, but what for would the Amrah, the undoubted leader of the post-war world and one trying to unite the world, do bad things against them? No. Are they lacking in food, and also attracted by shiny metals the cities of the north are filled with? Yes, that could work. Food and gold, another cliche, but I'm not afraid of them, as you could see had I published the old text anywhere.

Thursday 20 February 2014

Documents and stuff

Again a good text from the 750words experimentation. Remember that these are more like brain dumps than actually researched and thought texts:

Well, this day was almost gone until I remembered that hey, I still have the daily 750 words undone!

The school today was awesome for once. It seems I'm doing the IM-project I've babbled about everywhere for the project-classes, which means I have to really put my hours to a book. I resist the "use excel for bookkeeping of hours" - clause of our instructions though. .xsl(x) is a stupid format in Windows, and completely useless in the real world. Currently I do the bookkeeping as a series of Clojure maps, with keys like when, count of hours, and what did I do. I think the git could provide the when and what is done - values, but it is useless in keeping track of the hours used. I think there exist real apps for tracking the used time per project, but since the school is too lazy to propose anything better than Excel, I'm also too lazy to experiment with stuff that is not guaranteed to be better than Clojure.

If I am allowed rant more about the office formats, I want to express my utter dismay about the state of the document-producing software of ours. First: MS Word is... well, if the document is expected to follow formal standard, then it is a nice tool, although producing software with strict, formal standard is dumb. For producing somewhat informal text that doesn't look like it is done by agitated baboon it is horrible. For that I use Emacs. Today I translated and edited the first IM-blogpost into a "starting report of the project" by writing finnish into an org file in my blogging folder, and then let the Emacs export it into something that doesn't yield "WTF is this format?" - responses. I hoped the odt would be enough, since at least in the Emacs of my mac the creation of pdfs is somewhat challenged, and producing docx:s from anything usable is not a walk in a park. Of course the response was "can't you... export it to pdf or something from that linux of yours?"!

Yeah, hold on a second, I'll just brick this macbook with a fresh install of fedora or something...

I spent ten minutes trying to get the latex->pdf - exportation working, and after failing that, opened the exported odt in the Libreoffice Writer, the only thing worse in producing text documents than Word, and exported the document into pdf.

I think the project document was accepted, and now I'm rewarded with credits for working on this thing! I have yet to check the official site where these projects are hosted, but at least I received no complaints as a reply to my email where I attached the report. I was also told the school could give me a hypothetical server in case the Heroku fails, but I am not really looking forward to that, since as far as I understand, they do not have too many public IP-addresses, and I am not absolutely certain I'm able to keep the security holes out of my code.

After giving my report I resumed hacking the server of this IM (which by the way needs a real name. I think the old MEsE is a stupid one, but this faceless "the IM-project" is also such.), and found out that the server doesn't correctly update the moment of the last call any time the client calls. This means that after five minutes from the logging in the client is officially timeouted with no way to reset the timeout. Let me tell you, the state will be the end of this world.

I should do designs of the client at some point. I've spoken of this project only as a better Skype without the VoIP, but that doesn't seem to be enough to convince some people about how awesome this project is, and neither does the fact that only thing I've got to show of it are some four blog posts and a screen full of Clojure. I have seen a few people that wanted to take part in this project if I switched the implementation language to something "sane", like the Java or C# we're being taught in the school, and in a general case I could do this (although assuring them the project will probably be doomed after it), but with this project I've actually tried them. The Java was lousy in the server side, and although the C# was somewhat verbose in the client side (compare XAML to s-exprs... :P), I could see me doing an alternative implementation of the client in C# sometime.