Bits & Chips

Ik schrijf al jaren voor het vakblad Bits & Chips. Ik vul daar zo'n twee maal per jaar een column en schrijf af en toe een gewoon artikel. Daarnaast ben ik sinds enkele jaren dagvoorzitter van het jaarlijkse bits & chips 'Embedded Systemen' event; waar ik ook presenaties gegeven heb.

Hieronder vindt u een selectie van de artikelen van mijn hand. Diversen zijn ook te vinden op hun website.

Hoe programmeer je de multi-mens?

Computers zijn net mensen. Dit geldt zeker bij een gemiddeld software-engineeringproject: sequentieel werk gaat redelijk efficiënt maar parallellisme vraagt om samenwerken, wat lastig is en overheadkosten geeft. Toch is dat vaak nodig. Anders zou een project van honderd mensjaar een eeuwigheid duren. Of we willen of niet, we moeten het leren: werk opdelen in steeds kleinere brokjes en die brokjes razendsnel en efficiënt verdelen. Zowel in onze programma’s als bij onze programmeurs.

Een Mooi Patroon

Het is vrijdag en het sneeuwt. Langzaam ontstaat een mooi patroon terwijl elk sneeuwvlokje chaotisch uit de lucht lijkt te vallen. Een plan lijkt er niet te zijn en toch vormt zich een structuur. Later zal blijken dat al die zachte deeltjes samen sterk genoeg zijn om het vervoer in Nederland vast te laten lopen. Maar nu zit ik nog fijn in de trein. Ik kom net van een vergadering hoe we een project voor een klant kunnen verbeteren. En het is echt toeval: de klant is een grote speler op gebied van het vervoer en we werken aan systemen die vooral in winterse omstandigheden moeten werken.

DrieLetterTools

Goede software-ingenieurs hebben vaak sterke voorkeuren en communiceren daar fanatiek over. Ook over tools voor versiebeheer, ook wel revisieadministratie of configuratiemanagement genoemd. Ik heb dan altijd drie vragen: wat is de beste tool? Waarom is dat gereedschap het beste? En vooral: waarvoor gebruik je het eigenlijk?

Luchtkastelen?

Modelleren is het nieuwe programmeren. Het voegt abstractie toe en laat de computer de saaie details berekenen. Dat geeft lucht aan projecten, ruimte voor echt belangrijke zaken. De benodigde tools, zo wordt beloofd, zijn er bijna – maar we allemaal weten wat bijna betekent in een softwareproject. Dat is overigens niet negatief bedoeld. Ik denk echt dat modelleren een belangrijke stap voorwaarts is. Maar ik heb ook geleerd dat de werkelijkheid ietsje complexer is dan de mooiste folders ons doen geloven.

Begrijpt u wat ik bedoel?

De meest gebruikte compiler, ook in de embedded-wereld, is waarschijnlijk GCC. We hebben zo’n compiler nodig om C te vertalen naar machinetaal en daar is GCC goed in. Deze opensource code kent diverse releases en wordt goed onderhouden. Maar de software stamt toch al weer uit de jaren tachtig en dat is te merken. Niet als we GCC gebruiken als compiler, maar wel als we kijken naar de architectuur.

Investeren in hergebruik

Ontwikkelaars verzamelen en hergebruiken codefragmenten. Al sinds Fortran kan dat systematisch met library’s. C bestaat zelfs voor een groot deel uit een library (libC) met functies als printf(), een complex stuk code van meer dan zevenhonderd regels. Er zijn weinig ontwikkelaars die zelfs maar overwegen om een dergelijke routine zelf te programmeren. Via printf() gebruiken ze deze code telkens opnieuw.

Navigeren naar kwaliteit

Waarom dagdromen we wel van de nieuwste testosteron-Lamborghini en nooit van een nieuwe Twingo-zonder-turbo? Kennelijk is de eerste leuker of beter. Terwijl beide toch voldoen aan alle eisen die worden gesteld aan een auto. Dit dromen heeft meer te maken met voorkeuren dan met eisen. Ook voor software geldt zoiets. Zo kan opensource altijd beter zijn, of juist niet. Al is het subjectief, schijnbaar is er een maatlat die aangeeft wat beter is. Omdat ik software altijd wil verbeteren, is dat een interessant fenomeen.

Negatieve kosten

Bezint eer gij begint, die volkswijsheid kent iedereen. Althans, iedereen buiten de ICT. Binnen de ICT lijkt nadenken vooraf nog steeds geen gewoonte. Of valt er een andere conclusie te trekken uit de berichten in de media over ICT-projecten die continu veel duurder uitvallen dan begroot? Een oplossing is er al lang: begroot gewoon 100 procent meer. Een project lijkt dan misschien duurder te worden, de (echte) kosten veranderen niet.

Kanjers

Games volgen elkaar in snel tempo op. De ontwikkelingen moeten dus altijd snel, snel, snel. Liever gisteren dan morgen. Tijd om na te denken is er nauwelijks. De toekomst? Die begon gisteren. En toch leren we steeds beter om na te denken over morgen, over volgende week, over hoe we volgend jaar spellen willen maken. Want één ding is zeker: ooit komt er een volgend platform. We willen immers nog sneller en efficiënter spellen maken en dan is een geweldig ontwikkel- en softwareplatform essentieel. We moeten dus leren om daarover na te denken.

10!

Voor chips geldt de wet van Moore: elk jaar een verdubbeling. Ook embedded systemen groeien. Meer geheugen, snellere CPU’s, meer features. Het aantal coderegels groeit more than Moore. Maar wat betekent dat? Meer dan een verdubbeling van het aantal bugs? Harder werken? Dat levert wellicht meer regels code op, maar ook nog meer bugs. Re-use dan? Dat is de mantra waar we al jaren op wachten. In de praktijk blijken vooral bugs opnieuw voor te komen.

Eenarmige bandiet is slimmer dan je denkt

Menig Nederlander mag graag een gokje wagen. Op tv met een van de bekende goededoelenloterijshows, via de staatsloterij of gewoon als een avondje uit. Minder bekend is dat Nederland diverse hightechbedrijven kent die hiervoor (kans)spelautomaten fabriceren. JVH Gaming uit Tilburg is zo’n bedrijf dat per jaar meer dan vijftig nieuwe spellen bedenkt, ontwikkelt en fabriceert voor heel Europa. Van buiten zien de kasten er aantrekkelijk uit, maar de binnenkant is voor techneuten zeker zo interessant.

Snelle Linux-overstap begint bij toepassing

Linux combineert de kracht van Unix met de vrijheid van OpenSource. Het besturingssysteem is daardoor erg geschikt voor moderne, krachtige embedded systemen. Toch is overstappen op Linux niet eenvoudig. Vele valkuilen kunnen de kostenvoordelen van OpenSource teniet doen.