Nine Times PHP — een ode aan PHP in blauwe balpen

2026

Een ode aan PHP in blauwe balpen: negen versies van 1995 tot 2026, vier vloekende programmeurs en grafieken die vanzelf bewegen.

Nine Times PHP is één lange pagina in een gelinieerd schrift met spiraalbinding, getekend en geschreven in blauwe balpen. Het is een ode aan PHP in negen hoofdstukken: de PHP Tools uit 1995, PHP/FI 2.0, PHP 3, PHP 4 met de Zend Engine, PHP 5, het nooit verschenen PHP 6, PHP 7, PHP 8 en PHP 8.6, dat voor 19 november 2026 gepland staat. De jaartallen en feiten komen van php.net.

Achter de tekst schuift heel licht echte PHP-code uit al die jaren omhoog, van PHP/FI-commentaartags tot de pipe-operator. Elke regel wordt letter voor letter geschreven zodra hij onder in beeld komt, met een pennenpunt aan het eind. Het is een canvas met kolommen op verschillende diepte, die elk op hun eigen manier met het scrollen meebewegen.

De tekeningen zijn een olifantje in vijf houdingen, een computer uit de jaren negentig en vier programmeurs. Ze zijn gemaakt met gpt-image-2 als balpenschets; de houdingen zijn bewerkingen van dezelfde tekening, zodat een figuur zijn gezicht en bureau houdt. Een script haalt het witte papier weg, zodat alleen de inkt op het schrift ligt. Een SVG-filter laat de lijnen acht keer per seconde licht verspringen, zoals bij met de hand getekende animatie.

In het intermezzo werken Ruud, Sanne, Joep en Ria. Ze typen code, krijgen een echte foutmelding op hun scherm, vloeken, lossen het op en lachen erom. Ieder heeft drie van zulke fouten, van een vergeten puntkomma en headers already sent tot unexpected T_PAAMAYIM_NEKUDOTAYIM. Soms reageert een collega. Een vloekmeter, een scorebord en een taartgrafiek van een werkdag lopen mee. De vier bestaan niet; hun foutmeldingen wel.

Alle grafieken en tabellen bewegen uit zichzelf. Ze zijn getekend met rough.js en worden steeds opnieuw getekend. In de tabel met zoekfuncties wisselen naald en hooiberg van plaats tot de rode pen ze terugzet. Een formulier vult zichzelf in, ook een keer met de naam van Little Bobby Tables. De recursieve afkorting PHP: Hypertext Preprocessor groeit tot er een foutmelding komt, composer update blijft op 99 procent hangen en in een lijngrafiek wordt PHP af en toe dood verklaard. Waar de cijfers verzonnen zijn, staat dat erbij.

Het is TypeScript met Vite, zonder framework, ongeveer 30 kB JavaScript gzip. Eén requestAnimationFrame-lus tekent alleen wat in beeld is. De pagina is er in het Nederlands en het Engels. Unit-tests in Vitest controleren onder meer de echte volgorde van naald en hooiberg; end-to-end-tests draaien in Chromium, Firefox en WebKit.

Technologieën

TypeScript Canvas 2D SVG rough.js gpt-image-2 Vite Vitest Playwright

Meer van mijn werk

Bekijk het hele portfolio of lees het blog.

Meer werk