Software Gabor de Mooij | Freelance Softwareontwikkelaar

Mijn overgrootvader. Als kleinere ondernemer geldt: de vent is de tent. Daarom vertel ik op deze pagina wat meer over mijn achtergrond, dan weet u ook een beetje met wie u te maken hebt als u mij wilt inhuren.

Passie voor technologie zit in onze familie.
Mijn vader is van oorsprong elektricien, maar moest uiteindelijk de schoenenwinkel van mijn opa overnemen. Tja, zo ging dat vroeger. Om de administratie en voorraad op orde te krijgen wilde hij automatiseren. Dat bleek een kostbare zaak. Een voorraadprogramma kostte destijds ongeveer ƒ 40.000,-. Onbetaalbaar dus voor een klein familiebedrijf zoals het onze.
Dat was dan ook de reden dat mijn vader het zelf begon te bouwen. Hij kocht goedkope homecomputers en sloot die aan op de kassa's in de winkel. Zijn eerste poging faalde, hij had een VIC-20 gekocht maar deze had te weinig geheugen. Dit soort afdankertjes kwamen bij mij terecht. Vanaf mijn vierde jaar speelde ik met de overblijfselen van de experimenten uit mijn vaders automatiseringsavontuur. Uiteindelijk lukte het hem om de kassasystemen aan te sluiten op een boekhoud- en voorraadprogramma door middel van Commodore 64 computers. De software had hij zelf geschreven in Commodore 64 BASIC. Maar hij ging verder, hij maakte ook demo's en presentatiesoftware in BASIC. Hij haalde echt alles uit BASIC wat erin zat. De stroom afgedankte computers zwelde ook aan en binnen korte tijd had ik een hele berg Commodore 64-systemen op mijn kamer staan.

De jaren '80

De Commodore 64 is een speciale computer, deze machine heeft dan ook een speciaal plekje in mijn hart. Hoewel je er leuke spellen op kon spelen (Henry's House, Panther, Burgertime, Frogger.... ), was dat niet het enige. Nee, het meest bijzondere aan deze machine was toch echt BASIC. In tegenstelling tot de computers zoals we die vandaag de dag kennen, werd je bij het inschakelen van de computer direct in BASIC 'gedropt' en vanaf daar mocht je het verder zelf uitzoeken. Ook als je alleen een spelletje wilde spelen, moest je een serie BASIC-commando's intoetsen voordat je kon spelen. Die situatie lokte dus ook een bepaalde mate van experimenteren uit. Toen ik net naar de basisschool ging, kreeg ik door dat je de kleur van de cursor kon veranderen. Ook kreeg ik door dat je met het LIST-commando allerlei tekens over je scherm kon laten 'rollen'. Mijn eerste projectje was dus om een soort 'regenboog' van tekens over het scherm te laten rollen (leuk voor naast de kerstboom). Later besloot ik om mijn favoriete computerspel uit die tijd, The Fall Guy na te maken in De schoenenwinkel van mijn ouders, vestiging aan de Herenweg. BASIC. Dat deed ik door de levels na te tekenen in ASCII art en met het INPUT-commando spelers door de schermen heen te leiden. Dit was mijn eerste spel, al was het eigenlijk meer een film dan een game, want afgezien van PRINT en INPUT had ik geen idee hoe ik echt iets kon doen waardoor de speler ook daadwerkelijk invloed op zijn lot kon uitoefenen. Je ging dus gewoon altijd 'af' aan het einde van het spel. Niet zo spannend eigenlijk. Mijn volgende doel was dan ook het 'veroveren' van de joystick, als ik de joystick kon uitlezen kon ik een écht spel maken. Gelukkig was een buurjongen inmiddels ook aan het rotzooien met computers. Hij had een klein BASIC-programmaatje dat soort van contact legde met de joystick. Alleen de vuurknop deed het niet. Wekenlang heb ik lopen pielen met dat programmaatje om uit te zoeken waarom de vuurknop niet werkte. Uiteindelijk kwam ik erachter dat uitleescode van de vuurknop verkeerd was: het moest 110 zijn in plaats van 111. Of net andersom, ik weet het niet meer precies. Toen ik dat stukje code eenmaal gerepareerd had, was het hek van de dam (nu ik erover nadenk, dit was mijn eerste bugfix - als ik toen had geweten hoeveel er zouden volgen...). Er volgde een uitgebreid repertoire van in elkaar geknutselde, onzinnige spelletjes die zich steeds verder ontwikkelden in grootte en complexiteit. Van huppelende konijnen, tot zichzelf vormende doolhoven, spookhuizen, onderzeebootspellen en alles wat er tussen in zou kunnen zitten. Soms ontwikkelde ik zelfs wel meer dan één spel per dag! De BASIC-interpreter van de computer begon ook echt te kraken in zijn voegen. Toen ik Summer Games wilde nabouwen, raakte ik mijn complete game kwijt doordat mijn BASIC programma zo lang was geworden dat het het geheugen van de BASIC interpreter zelf overschreven werd door mijn spel en het hele systeem vastliep. Dagenlang was ik kwaad op dat stomme apparaat!

De jaren '90

Achterin de winkel zat ik op een bankje te programmeren. Sinds die ervaring begon ik ook meer te letten op de kwaliteit van mijn code. Ik probeerde de programma's kleiner te maken en mooier. Ik wilde mijn programma's zo mooi maken dat ik ze kon uitprinten en op papier kon teruglezen. Het voelde een beetje als magie. Ik kon mijn programma lezen op papier en mij verbazen over het feit dat zo weinig code zoveel moois kon doen op het scherm. Dat vond ik (en vind ik nog steeds) een beetje tovenarij. Je hebt een stuk tekst en dat geef je aan de machine en floep, dan heb je opeens een spel of een programma. Op die manier begon ik ook mijn eigen boekje met broncodes samen te stellen, met allerlei kleine, nette BASIC-programma's erin. Nadat mijn oom en tante mij meenamen naar Duindigt voor een paardenrace bouwde ik bijvoorbeeld een 'Duindigt' spelletje waarbij je geld kon inzetten op paarden. Hierdoor begon ik ook te experimenteren met de random number generator. Waar ik mij wel aan begon te ergeren was mijn onvermogen om echt mooie plaatjes op het scherm te toveren. In BASIC waren de grafische capaciteiten nogal beperkt, ik moest vooral landschappen en figuren bouwen met letters en symbolen. De paarden waren bijvoorbeeld pi-tekens omdat dat nog het meeste op een paard leek (Π), maar je moest wel een aardige dosis fantasie gebruiken om er een paard in te zien. Op mijn 13e nam ik daarom mijn eerste duik in machinetaal om de beperkingen van BASIC te omzeilen.

Mijn ouders houden erg van rommelmarkten. Deze vlooienmarkten waren, bij gebrek aan internet (we zitten ergens in 1992-1994), mijn onuitputtelijke bron van tweedehands computerboeken. Met behulp van allerlei oude boeken en tijdschriften over programmeren begon ik langzaam maar zeker stukjes assembly en machinetaal te schrijven. Ook begon ik nieuwe computers te kopen. Vooral van andere kinderen die hun oude homecomputers dumpten omdat ze een spelcomputer wilden kopen. Zo kwam ik onder andere aan een Commodore 16, een Spectra Video en diverse andere afdankertjes en nam de berg huiscomputers op mijn slaapkamer groteske vormen aan. Je deed de deur open en de computers rolden naar buiten, zeg maar, beetje overdreven misschien, maar het was echt geen gezicht meer. Samen met een andere jongen uit de buurt begon ik ook nu ook serieus machinetaalspelletjes te maken. Toen ik vijftien was, schraapte ik al mijn zakgeld bijeen voor mijn eerste tweedehands PC, een pentium 90 (met DOS). Hier begon ik samen met mijn vriend X86-machinetaal op te schrijven. Daar is niet veel meer van over helaas, eigenlijk alleen Pacz.

De jaren Nul (2000-2010)

Mijn vader en ik. Ondanks het feit dat ik goed was met computers, was ik slecht in wiskunde. Ik had vaak vragen aan mijn wiskunde leraar over mijn computeravonturen. Maar hij vond dat ik moest wachten totdat de stof in de klas behandeld zou worden. Daardoor nam mijn interesse voor wiskunde af en daalden mijn cijfers. Ik beschouwde wiskunde als iets voor oude mannetjes die nog geen computers hadden en keek er niet meer naar om. Als gevolg hiervan kon ik ook geen informatica meer doen, want daar had je wiskunde voor nodig. Maar mijn interesse in informatica was sowieso bekoeld. Dat kwam ook door Windows. Mijn machinetaalspellen die allemaal onder DOS werkten begonnen langzaam uit elkaar te vallen door de komst van nieuwe Windows PC's. Het was allemaal zeer frustrerend en demotiverend. Uiteindelijk koos ik ervoor om psychologie te gaan studeren, mijn doel was vooral om de 'menselijke' computer beter te begrijpen. Achteraf gezien was psychologie een goede keuze. Al snel werd duidelijk dat ik vooral geboeid werd door aandachts- en geheugenprocessen. Daarnaast kwam ik in aanraking met diverse andere nerds. Samen met wat studiegenoten maakte ik Midnite Motel. In die tijd begon ik ook met PHP, HTML en JavaScript. Ik werd assistent bij de webredactie van de faculteit.

Na mijn studie was ik een beetje 'lost', om het zo maar te zeggen. Ik wilde onderzoeksassistent worden maar helaas, dat lukte niet. Om toch brood op de plank te krijgen, want de stufie was natuurlijk stopgezet, ging ik werken bij een helpdesk. Dat was geen succes, mijn oren zijn kennelijk niet zo geschikt voor headsets en na de derde oorontsteking op rij besloot ik er de brui aan te geven. Foto uitreiking diploma cognitief  psycholoog, Universiteit Leiden. Volgende halte was verkoper bij een telefoonzaak. Ook geen succes. Allemaal in afwachting van een onderzoeksplaats. Uiteindelijk besloot ik toch gewoon weer eens mijn andere passie te volgen en solliciteerde ik voor programmeur bij webbureau. Aangezien ik geen relevante opleiding had, besloot ik mijn complete oeuvre eigen gemaakte zooi over de tafel bij de directeur uit te storten. Volgens mij dachten mijn gesprekspartners dat ze met de nutty professor aan tafel zaten, maar ze gaven me het voordeel van de twijfel. Om mijn eigen onzekerheden weg te nemen, begon ik als een gek certificaten te halen. Sindsdien ben ik 'professioneel' programmeur.

Terugblik

Door mijn achtergrond als cognitief psycholoog en mijn ervaring als programmeur heb ik een unieke kijk op code gekregen. Als tiener had ik al eens de BASIC-interpreter van de C64 omgebouwd naar een Nederlandse versie in een poging om het programmeren makkelijker te maken. Tot op de dag van vandaag houd ik mij bezig met die vraag: hoe kunnen we code simpeler maken? Hoe zouden we programmeerfouten kunnen voorkomen? Hoe kunnen we programma's beter onderhoudbaar maken? Hoe kunnen we programmatuur veiliger maken? Dat zijn de vragen die ik interessant vind. Vooral in relatie tot mens en taal. Kunnen we een taal verzinnen die de communicatie tussen mens en machine soepeler maakt? Vandaar mijn focus op onderhoudbaarheid, versimpeling en softwarerenovatie. Vandaar ook dat ik mijn eigen programmeertaal heb geschreven: Citrine. Het komt eigenlijk allemaal samen in die éne vraag: hoe kunnen we computerprogramma's beter opschrijven?

Terug naar de homepage.