Een dag niets gemaakt is een dag niet geleefd

Ik heb er altijd plezier aan beleefd om veel dingen zelf te kunnen doen. Ik schrijf en vertaal mijn eigen teksten, ontwerp en bouw mijn websites, bewerk zelf foto's, ontwerp mijn eigen visitekaartjes en enveloppen. Alle programmatuur schrijf ik zelf, in een waaier van talen. Ik beheer mijn eigen systemen (alles Linux (Ubuntu) tegenwoordig), richt backup systemen in. Beheer mijn eigen BV. Ook het commerciële werk doe ik zelf. Al dat doe-het-zelven heeft nadelen ('t kost veel tijd, soms) - maar 't grote voordeel is dat ik elke dag mijn werk met ontzettend veel plezier doe. Never a dull day!

Een dag niets gemaakt is een dag niet geleefd. Dat geldt net zozeer privé: ik kook graag, deed zelf het graafwerk bij onze tuin-reconstructie, legde zelf de vijver aan, bouwde het houthok, speel accordeon (en ook weer klassiek gitaar), doe ons eigen schilderwerk, kan ook met de naaimachine overweg. Er is zoveel te doen, zoveel te leren! Leve internet en wikipedia.

 

Analyse en ontwerp

Analyseren, ontwerpen, maken. In de loop van vijfentwintig jaar werk in de informatie industrie heb ik werkprocessen geanalyseerd in bedrijven als de Nederlandse Spoorwegen, KLM-ERA en NedCar. Met partners heb ik gewerkt aan vernieuwing van de gezondheidszorg, van zittend ziekenvervoer tot verwijzing door huisartsen (www.zorgdomein.nl). Voor uitgevers als Malmberg, ThiemeMeulenhoff en Zwijsen heb ik vele leerprogramma's ontworpen.

Er zijn veel manieren om informatie te beschrijven. Ik geef de voorkeur aan XML schema's of object-role modelling en zoek in toenemende mate RDF schema's en sterkere semantisch web talen zoals OWL. Voor processen en systemen gebruik ik diagramtypen zoals bijeengebracht in UML. Nested state diagrams zijn een favoriet.

Elk computerprogramma van enige betekenis is het resultaat van de ambitie, de hoop en het werk van veel mensen. De meesten van hen kennen geen XML, ORM, RDF of UML. Voor hen schrijf ik Nederlands (of Engels), naar het motto van Bomans: schrijven is schrappen.

Ontwerpen is dromen, maken is wakker worden. Ik heb, naast het ontwerpwerk, altijd graag één project waar ik zelf aan bouw. Iets vernieuwends, iets met een uitdaging.

 

Purescript

In 2017 ontdekte ik een nieuwe functionele programmeertaal, Purescript. Purescript is een strikte (=direct uitgevoerde, als tegengesteld aan lazy) implementatie van Haskell. Purescript is fantastisch. Het gaat ver voorbij aan Scheme (sorry, Scheme). De leercurve is steil, maar eenmaal boven is het uitzicht adembenemend!

Scheme

Sinds 1982 ben ik een fan van de programmeertaal Scheme. Ik mocht ooit een workshop doen bij Hal Abelson aan het MIT en vind The Structure and Interpretation of Computer Programs de best mogelijke introductie tot programmeren en computer science.

En ik gebruik het nog steeds - mijn laatste product, TalkTalk, is er op gebaseerd. Scheme mag dan nooit mainstream zijn geworden, het is een volwaardig productiemiddel. Ik gebruik Racket IDE om te ontwerpen en uit te proberen. Met de Bigloo Scheme Compiler maak ik efficiënte programma's. De Scheme to javascript compiler van Florian Loitsch heeft me goede diensten bewezen en vormt een integraal onderdeel van TalkTalk.

 

XQuery

XQuery is een moderne functionele programmeertaal. Opgebouwd rond XML als first class object. Helder gedefinieerd. Goede implementaties zijn voorhanden. Ik gebruik sinds een paar jaar de eXist XML database, naar volle tevredenheid. eXist bevat een http server. Het is een genot om server side te programmeren in een taal waarin de html die je produceert niet bestaat uit strings die je moeizaam in elkaar moet plakken, maar eerste klas objecten zijn - en een taal waarin je de database objecten rechtstreeks manipuleert. Je hoeft dus ook geen query statements in elkaar te schroeven uit losse stringetjes. Vergelijk 't met Perl of PHP of ASP: dat is scripttaal + SQL + HTML. Programmeer in XQuery en je hebt scripttaal + HTML, waarbij de HTML eerste klas objecten zijn! Helder.

Verder vind ik de uitdrukkingskracht van XML schema's geweldig. Met goede ondersteuning (zoals b.v. de oXygen editor, die ik gebruik) is het heerlijk en verhelderend om een goede gegevensstructuur te schrijven en onderhouden.

 

Semantic MediaWiki

In de opleiding (AI) kwamen talen als KL-ONE aan de orde. Later, bij LCN, hebben we ons verdiept in Description Logics. En nu, vijfentwintig jaar later, zijn al die zaken mainstream geworden. Er zijn W3 standaarden voor allerlei 'semantisch web' onderwerpen, zoals bijvoorbeeld de taal OWL. Ik gebruik een versie van MediaWiki om de documentatie van TalkTalk mee te schrijven. Het is SMW+, waarin de wiki is uitgebreid met 'semantische annotaties'. Een koppeling met een RDF triple store maakt het compleet. Een mooie mix van tekst, wiki-stijl, en gestructureerde informatie. Queries ingebed in tekst. Sterk voor goed gestructureerde onderwerpen - zoals een cursus of een naslagwerk. Kijk zelf in de TalkTalk documentatie.

 

jQuery

Webpagina's zijn steeds vaker kleine programma's. Browsers groeien naar volwaardige besturingssystemen. En met HTML 5 (in opbouw) wordt zoveel gestandaardiseerd, video bijvoorbeeld, dat je serieus kunt programmeren voor de browser. Desondanks zijn de verschillen tussen browsers een serieuze hindernis. Wat in FireFox werkt, hoeft in Internet Explorer (vooral die!) niet te werken. Dat is waar jQuery in beeld komt. Een kleine, efficiente bibliotheek in javascript die dergelijke verschillen onzichtbaar maakt. Bovendien een bibliotheek met enorm veel extra's, zoals elementen benaderen met XPath achtige expressies (wat browser bouwers gewoon hebben laten liggen: je krijgt alleen middelen op heel laag niveau om het DOM te traverseren). Hulde!