druk druk
HELSINKI - Zaterdagmiddag.
Donderdag hadden we een feestje wegens het behalen van een of andere milestone. Een bijeenkomst in een soort casino - roulette met mijn Russische collega's... hmmm... Naderhand gingen we naar Kalle - een disco bekend om z'n donderdagavonden. Het magische wachtwoord om binnen te komen is "jonna", de naam van onze lieftallige secretaresse. Ik kreeg weinig kans mijn danstalent te demonstreren - maar werd besprongen door enkele van mijn Finse collega's. Terwijl ik over de grond rolde bedacht ik dat dat toch niet de bedoeling kon zijn. Ooit moet de tijd van volwassenheid toch aanbreken? Tegen drieën verbaasde ik me erover dat het nog steeds vol was met dansende mensen. Donderdagavond! Waren die allemaal werkloos ofzo?! Toen herinnerde ik me dat ik vrijdagochtend om 09:00 uur een belangrijke meeting heb -- whhoeps!
Ik ben ook uitverkoren om naar GUADEC te gaan, in Vilanova, eind juni. Ik heb d'r zin an! Vorig jaar was het erg geslaagd. Goed om de gezichten te zien achter de software die ik dagelijks gebruik. Ik ben natuurlijk met name ook geïnteresseerd om te zien hoe we al die software ook kunnen gebruiken voor het Maemo-platform. Het gaat er niet alleen om, te proberen zuinig te zijn met geheugen (zoals tinymail -- "combining evolution and intelligent design" :-) , maar ook om slimme dingen te doen met de UI (zoals Dates - zoom-in/zoom-out in m'n kalender!)
Dit weekend wordt ook erg druk. Vanavond een Margarita-feest bij Alex, en morgen een diner in verband met het Finse Vappu-feest. Dit Vappu is eigenlijk het feest van de Walpurgisnacht, zoals ik vorig jaar al beschreef. In de praktijk is het echter een drankorgie die op zondag begint, en zich tot diep in de maandag (1 mei, vrije dag) uitstrekt met een dronken picknick in het park.
En dan is Gary uit Birmingham ook nog in de stad - ik ken hem van onze tijden in Bangkok en later Vientiane, Laos. Goed om hem weer te zien, na bijna vier jaar... De tijd vliegt.
wow
HELSINKI - Dinsdagavond. Het was weer een lange dag. Het begon met Finse les; ik heb in het afgelopen jaar nog niet veel geleerd van de taal. Vanuit linguïstisch oogpunt is het best aardig om zo'n totaal andere taal te leren, maar praktisch gezien is het nut voor mij nogal beperkt. Ik spreek de hele dag Engels, Duits en soms Nederlands -- maar Fins? Daarbij komt dat Fins een nogal uitdagende taal is. We bespraken de 15 vormen waarin een zelfstandig naamwoord kan voorkomen. En dan hebben we het alleen nog maar over het enkelvoud; hetzelfde circus moet ook nog eens worden uitgevoerd voor het meervoud. 2x15=30 vormen dus? Nee, natuurlijk niet! Het Fins kent drie verschillende meervoudsvormen, zodat we tot 4x15=60 komen... Maar goed, als ik die zestig vormen ken, dan is het verder allemaal eenvoudig toch. Of? Nee natuurlijk niet. Zelfstandige naamwoorden behoren tot zo'n 20 groepen (en nog wat onregelmatige), die elke zo hun eigen regels hebben voor het bepalen van die zestig vormen. **diepe zucht**
Het is geen wonder dat Finnen zo'n zwijgzaam volk zijn...
De rest van de dag stond in het teken van vergaderen en het verwerken van veel e-mail. Aan het eind van de dag was er zowaar nog tijd om een beetje code te schrijven. Nu is code schrijven strikt gezien niet mijn taak. Het is echter goed om een beetje scherp te blijven. En een software architectuur opzetten zonder ook kniediep in de implementatie te gaan, dat vind ik wat lastig. Belangrijkste reden is natuurlijk dat het gewoon leuk is om code te schrijven. Ik heb elke dag slechts een paar uurtjes om wat code te schrijven, en da's niet zo slecht. De rest van de tijd kan ik een beetje nadenken (bewust en onbewust) over hoe ik het best verder kan gaan. Als ik dan eindelijk weer ga zitten om code te schrijven, is het me al volledig duidelijk wat ik wil gaan doen. En word ik slechts nog afgeremd door mijn typsnelheid.
Gtk+ en GObject kunnen wat stug zijn in de omgang. Maar het is vooral een kwestie van elkaar goed leren kennen. Aan elkaar wennen. En dan gaat het geweldig. Op zeker moment wordt het overvloedige casten MIJN_HANDIGE_WIDGET(foo) een soort tweede natuur... Wat heel erg krachtig is, is het callback-systeem: elke GObject kan een signaal afgeven, dat dan weer elders in het programma afgehandeld kan worden. Misschien moet ik daar eens wat meer over schrijven.
De complexiteit van Gtk+/GObject zit 'm met name in het definiëren van libraries. Code generators zoals spuug kunnen daarbij natuurlijk een beetje helpen, maar nog steeds moet de programmeur erg zorgvuldig en precies te werk gaan, en kennis hebben van veel details. De gebruikers van de libraries hebben het dan echter gemakkelijk. Met name als ze niet C gebruiken, maar bijv. Ruby of Python. Ik heb veel in C++ geprogrammeerd (met std::/boost::), en dacht enige tijd dat C++ een veel productievere taal was -- maar ik betwijfel dat nu. Zolang ik maar een code generator kan gebruiken.
Ok -- genoeg geschreven. Ik ga nu maar weer bier drinken en tv-kijken.
free beer free software free willy
HELSINKI - Maandag. Eindelijk is ook hier in het Hoge Noorden de lente aangebroken. Het meeste ijs is gesmolten, de dag worden langer. Het voorjaarszonnetje verwarmt ons tot meer dan tien graden! En ik ben weer begonnen met hardlopen. Nog wat voorzichtig, meer joggen dan hardlopen, maar het is heerlijk om een beetje over de eilanden te rennen, kop in de zon, briesje door de haren. En natuurlijk met muziek in mijn oren -- en daarbij deed ik een aardige ontdekking.
Mijn el cheapo Odys 1GB MP3-speler die ik in Nederland kocht blijkt namelijk ook Ogg/Vorbis te ondersteunen. Een behoorlijk deel van mijn muziekverzameling is in dat formaat geëncodeerd, en die was voorheen onbereikbaar voor mijn mobiele muziekbeleving. Maar nu gaat het prima - ergens in China moet iemand een helder moment hebben gehad - maar ze vergaten het te vermelden...
Dit weekend bezocht ik met AC een rock-star party -- ik had mijn haar met wat gel in een Elvis-achtige structuur geboetseerd - en met groot succes. De helft van de eh rocksterren werkte voor Nokia... Binnen Nokia blijft onze 770 populair; het is moeilijk voor technisch ingestelde mensen om geen sympathie te hebben voor Linux en open-source. Maar hoe populair ook - bier was nog populairder op dit feest. Het bleef nog lang onrustig voor we weer naar huis wankelden, moe maar tevreden. Free beer Free Software Free Willy.
spuug ii
HELSINKI - Het GObject-systeem maakt het mogelijk om object-georiënteerd (OO) te programmeren in C. Een flink deel van de OO-gereedschappen is beschikbaar, zoals inheritance en encapsulation. Daarnaast is er een 'main-loop' en een signal-systeem beschikbaar. Na enige tijd besteed te hebben aan het programmeren van GObjecten lijkt het bijna elegant... Een van de pijnpunten blijft het handmatig definiëren van nieuwe classes. Omdat C niet 'out-of-the-box' komt OO-faciliteiten, moet er veel, heel veel boilerplate code geschreven worden. (Maar misschien is dat ook wel goed: het zorgt ervoor dat je eerst nog eens diep nadenkt...)
De oplossing? Eenvoudig: geen C gebruiken. Programmeer in Ruby, Python of C++, die goed werkende bindings hebben voor GObject/GTK+ enzo, en waarbij het meeste vervelende werk automatisch gedaan wordt. Überhaupt wordt C nog te vaak gebruikt. Voor veel applicaties is Ruby een veel betere keuze.
Maar goed, soms is het toch het beste om C te gebruiken. Niet alleen omdat ik zo'n masochist ben, maar bijvoorbeeld omdat de bestaande code in C is. Of omdat andere talen toch niet alles ondersteunen wat ik nodig heb. Daarom heb ik spuug geschreven. Je geeft aan wat voor gobject-class je wilt maken, en spuug spuugt alle boilerplate code uit -- voor een simpel object is dat meer dan 150 regels code. spuug kan zelfs (unit) test-code genereren, GInterface-code. Enzovoort.
Voor wie iets uitgebreiders zoekt: er is natuurlijk codegen dat werkt vanuit UML Class Diagrams: je tekent een plaatje en de code wordt gegenereerd. Daarna is het feest echter voorbij - je kunt niet nog even een functie toevoegen aan je UML en opnieuw genereren (zonder je oude code te verliezen), noch wordt je UML bijgewerkt als er iets in de code wijzigt. Dat is natuurlijk ook behoorlijk lastig. spuug geeft dat ruiterlijk toe, en doet dan ook niets meer dan op een zo eenvoudige mogelijke wijze de boilerplate-code genereren. Daarna moet de arme programmeur het werk toch weer op de vertrouwde wijze doen met zijn of haar favoriete teksteditor. Dat moet ook bij codegen, maar bij spuug hoef ik in ieder geval geen tijd te besteden aan het tekenen van diagrammen -- en dat kan een voordeel zijn of een nadeel.
Oh ja, in het algemeen zijn code generators natuurlijk een slecht idee. Behalve dan die, die je zelf geschreven hebt :-)
spuug is van alpha-kwaliteit en slechts lichtjes getest. Het programma doet de nodige moeite om te 'raden' wat de programmeur wil, en zal daarbij soms fouten maken; da's niet zo erg als het klinkt, tenslotte is de boilerplate slechts het begin.
Hoe dan ook, hier is spuug.
mindcrime
HELSINKI - Dinsdag -- hoogste tijd om mijn blog weer eens bij te werken. Bijna twee weken geleden sinds ik voor het laatst wat schreef. Ik heb veel gewerkt, en genoten van een heel lang paasweekend. En weer vol energie :-) En da's ook nodig.
Ik ben begonnen met een todo-list met taken en data, en probeer die dagelijks af te werken. Voordat ik bij Nokia in dienst trad, maakte ik nauwelijks gebruik van een agenda. Maar nu is het vrijwel onmogelijk om zonder elektronische hulp mijn werk te doen. Gelukkig is die elektronische hulp er ook. Ik ben niet zo'n liefhebber van MS-Outlook, maar een ding dat prima functioneert is het synchroniseren met mijn telefoon. Dat wil zeggen - een kwartier voor elke vergadering begint, waarschuwt m'n telefoon mij. En waar synchronisatie allerlei gepruts met (dure!) kabels betekende, gaat dat tegenwoordig eenvoudig met Bluetooth. Zo gauw m'n telefoon inde buurt komt, worden automagisch alle nieuwe afspraken etc. bijgewerkt.
Excercise for the reader: probeer dit werkend te krijgen met multisync/opensync/...
Ik ben ook begonnen aan wat tamelijk intensieve coding-sessies, waarover ik binnenkort wat meer zal vertellen. Het is in ieder geval een goed gevoel weer een wat echte C te schrijven. Ondanks de verdiensten van haar opvolgers, is C nog steeds het krachtige precisiewerktuig, waarmee software in elke gewenste vorm gekneed kan worden. Zolang het maar gedisciplineerd gebruikt wordt. Ik las met interesse over D, waarnaar Philip verwees. Maar voorlopig houd ik het maar bij C, en wellicht maar weer eens C++/Boost.
De keuze tussen C, C++ of D... Mogen mijn problemen nooit groter zijn.
Ik heb de neiging weg te zinken in deep-hack-mode als ik code schrijf, maar ik heb ontdekt dat het beter is om na een uur of twee eens te stoppen en wat anders te gaan doen. Dat zijn de momenten dat het Grote Geheel helder overzien kan, en de juiste ontwerpbeslissingen kan maken. Als ik te lang blijf coden is er een niet geringe kans dat ik tot een goede implementatie van een slecht idee kom...
...een van de dingen die aardig goed functioneert is het bekijken van wat tv-series. In het DVD-tijdperk zijn hele seizoenen van veel goede en slechte series in een klap beschikbaar. Momenteel ben ik het eerste seizoen van Lost aan het afwerken, de serie rond de lotgevallen van de overlevenden van een vliegramp, die op een verlaten eiland zijn gestrand. Natuurlijk is het allemaal niet zo realistisch - maar op de een of andere manier wil ik dan toch ook die volgende episode zien. Wordt vervolgd.
De beste metalplaat van de jaren '80 is zonder twijfel Queensrÿche's Operation: Mindcrime. Na 18 jaar wachten (!) is er nu deel 2. Maar wat een teleurstelling. Het is best aardig, en best leuk om een duet te horen van Geoff Tate met Ronnie James Dio. Maar is dit alles?! En oude interviews vertelden de bandleden dat ze bij het maken van deel 1 elke laatste restje inspiratie gebruikt hebben. Ik begrijp nu wat ze daarmee bedoelden.
Misschien moet ik 'm vaker beluisteren.
donderdag
HELSINKI - Vandaag maar eens een kort dagje - ik was om acht uur 's avonds al thuis. Soms is het goed om wat vroeger naar huis te gaan. Dan kan ik thuis nog wat werken :-) Ik volg tamelijk strikt mijn TODO-lijst. Mijn doorgestreepte items laat ik nog even staan, zodat ik het gevoel heb ook wat gedaan te hebben. Naast de proactieve items in de TODO-lijst, word ik echter ook nog veelvuldig gestoord door e-mails. Meer en meer zie ik in waarom Knuth geen email meer leest (sinds 1990 ofzo): het kost gewoon teveel tijd. Ik herinner me nog dat ik in januari 2005 een mail ontving. Iets dat mijn aanging maar wat ik niet precies begreep. Ik besloot de mail te negeren, maar ergens knaagde er toch iets. Het kon toch niet zo zijn dat mensen mijn mail stuurden, en ik daar niets mee hoefde te doen? Meer dan een jaar verder, is er weinig meer over van die naïviteit... ?
Mijn gejeremieer ten spijt heb ik nog best lol in mijn werk; als ik voorbij de huidige rompslomp ben, kan ik me weer wat meer gaan richten op interessantere dingen, zoals softwareontwikkeling. Er staan heel wat interessante ontwikkelingen op stapel. We hebben de Maemo Development Roadmap gepubliceerd. Binnen afzienbare tijd zullen leuke dingen als Telepathy (VoIP/IM), Farsight en EDS beschikbaar zijn voor Maemo/770. (Eerder schreef ik al over GtkHTML en Gazpacho).
slapeloos
HELSINKI - Van negen tot negen. Wat een dag. Zelfs geen tijd voor lunch. Ik heb in ieder geval een deel van het puin geruimd, maar er blijft nog wat over voor later deze week... Wat het ook niet eenvoudiger maakte is dat ik slechts enkele uren sliep, afgelopen nacht.
Want, weer thuis, moest ik natuurlijk een beetje mijn nerd-tekort wegwerken. Dat leverde mij een werkende webcam, een werkende USB-muis, eindelijk een werkende LIRC en kernel 2.6.16.1 op, en een beetje slaaptekort.
In Nederland kocht ik een Microsoft optische muis voor een tientje. Werkt prima; beter dan Suns optische knaagdieren van zo'n 10 jaar geleden. En hopelijk ben ik nu eindelijk af van dat eeuwige geschraap van een schilmesje in de jichtige gewrichten van een mechanische muis. Het muiswiel is natuurlijk ook fijn, en werkt ook als middelklik (webbrowsen zonder middelklik-betekent-open-in-nieuwe-tab is zo 1999...)
Mijn nieuwe webcam (een goedkope oude Logitech Quickcam Messenger) werkt ook prima, met behulp van de Linux Drivers. Het werkt in ieder geval met Ekiga. En ik ontdekte dat aMSN (enige) ondersteuning biedt voor MSN-Messenger-met-videocamera. Nooit gedacht dat ik nog eens een TCL/Tk programma zou gebruiken...
En nu werkt dus zelfs LIRC. LIRC is de software om een afstandsbediening te kunnen gebruiken met Linux. Eind 2004 schreef ik:
Het enige dat nog niet werkt is de afstandsbediening van de TV-kaart (ja ik kan ook TV kijken :-), Maar goed, dat komt nog wel.En nu was het eindelijk zover. LIRC werkt namelijk wel, maar vergt enig gepruts. Er schijnen niet zo heel veel mensen een TV-kaart met bijbehorende afstandsbediening te gebruiken (onder Linux althons) om LIRC een beetje te stroomlijnen. Ik moet bijv. voor elke programma (mplayer, xine, freevo, ...) handmatig en afzonderlijk te mapping instellen om de programma's te vertellen dat Play "PLAY" betekent en Stop "STOP". Maar nu kan ik vanaf mijn luie bank films bekijken met freevo en de afstandsbediening in de hand. En dat is een goed gevoel. Want de afstandsbediening is de scepter van de moderne tijd.
terug naar huis
HELLENDOORN / WUPPERTAL / HELSINKI - Na ons verblijf in Den Haag zijn we teruggereisd naar Hellendoorn, voor wat laatste uren familiepret. Een totaal andere wereld, daar in het oosten van Nederland, waar ik ben geboren en getogen. In Den Haag is alles vol. Gebouwen en mensen. En demografische ontwikkelingen hebben witte Nederlanders tot een minderheid gemaakt in het straatbeeld. Nou ja, zoveel zal er niet veranderd zijn sinds september, maar het viel op. In Finland is het een beetje anders.
Den Haag is natuurlijk meer dan alleen vol. De residentie kent ook een rijke historie die zich uit in vele oude en deftige gebouwen. En hoewel het stadscentrum zo druk is, zou je bijna vergeten dat het ook vanuit het centrum maar enkele minuten lopen is naar het Haagse Bos, en het is niet voor niets dat de koningin daar woont. Je kunt er ook heerlijk hardlopen.
Hellendoorn mist de oude gebouwen en ook de historie is niet rijk. Bos is er echter volop. We fietsten wat rond en genoten van de frisse lucht, zo nu en dan afgewisseld met boerenlucht. Zoveel ruimte. Maïsvelden, bomen, boerderijen. Hellendoorn was ook de laatste stop in onze voorjaarstoernee door Nederland. Nederland beviel me prima, moet ik zeggen. Zoveel te zien, zoveel te doen. Tijdens mijn bezoek in september ontmoette ik nogal wat onvriendelijke landgenoten, maar ditmaal was iedereen behulpzaam en beleefd. Ik kan Nederland dan ook van harte aanbevelen als vakantieland (maar ik wil er niet wonen).
Van Nederland ging het naar Duitsland, met de Eurolines-bus. De Slowaakse chauffeurs verzonnen nog een extra post 'bagage-kosten', maar waren met 2 euro al tevreden. Enkele uren later kwamen we aan in Wuppertal, voor een kort bezoek aan Ann-Christins tante en oom. Wuppertal wordt gedomineerd door een kabelbaan ('Schwebebahn'); ik vond het een nogal monsterlijk gevaarte, maar hij stamt uit 1901(!), en moet de stad destijds een hypermodern aanzien gegeven hebben. Het stadshart vond ik niet zo fraai, maar het huis waar we verbleven gaf een prachtige uitzicht over het dal, waar ooit de wieg stond van Horst Tappert.
En nu zijn we weer op weg naar huis. Naar Helsinki. Terwijl ik deze woorden typ vlieg ik enkele kilometers boven de Oostzee, onzichtbaar onder de wolken. Het was een goede week. Heel ontspannen - grotendeels zonder elektronica eigenlijk, Dat komt de aankomende week weer. Er staan grote plannen op stapel (en kleine).
Ik ben m'n vla vergeten in een Wuppertaler koelkast. Grmphfff.