Wie ben ik

Van HTML voor Dummies tot MediaWiki-architect.

Twintig jaar geleden begon het met een boek uit de Bruna. Wat volgde was twee decennia bouwen, breken en opnieuw bouwen: van eigen servers op de thuiscomputer tot de kunstatlas van A-Pack, gesteund door het Franse Ministerie van Cultuur.

De rode draad

Drie dingen die twintig jaar hetzelfde bleven.

MediaWiki

In 2004 voor een Splinter Cell walkthrough. In 2008 voor buzet.nl, vastgelegd door het Internet Archive. In 2021 voor een overheidsorganisatie. In 2025 voor de kunstatlas van Frankrijk. Steeds hetzelfde platform, steeds een orde van grootte zwaarder.

Zelf de infrastructuur draaien

XAMPP en MySQL op de thuiscomputer, Hamachi als netwerk zodat vrienden konden verbinden, private servers die ik zelf overeind hield. Nu Docker met nginx, php-fpm en MySQL 8, met een zelftest van achtentwintig punten die zegt of de stack klopt.

Gereedschap bouwen zodat een ander het overneemt

Dat is het derde, en het is het belangrijkste geworden. Een migratie is af als de site draait. Ik vind dat niet genoeg: het platform moet zichzelf schoon kunnen houden als ik er niet meer ben.

Tijdlijn

20+ jaar. Eén rode draad.

  1. 2003

    HTML voor Dummies. Gekocht bij de Bruna.

    Mijn moeder kocht het boek. Vanaf dat moment zat ik alles uit te proberen. Paint, Windows Movie Maker, Adobe Premiere. Alles wat aanpasbaar was werd aangepast. Dit was het begin van twintig jaar werk.

    • Origin story
    • HTML voor Dummies
    • Bruna
    • Paint
    • Windows Movie Maker
    • Adobe Premiere
  2. 2004

    MySQL op de basisschool. MediaWiki voor GTA en Splinter Cell.

    Op tienjarige leeftijd eigen GTA San Andreas multiplayer servers opgezet via SA-MP. XAMPP en MySQL lokaal draaien. Hamachi als virtueel netwerk zodat vrienden konden joinen. Tegelijkertijd MediaWiki opgezet voor de GTA Games community en een Splinter Cell walkthrough wiki gebouwd met 5.000 pagina’s. Niemand op school wist wat een database was.

    • 10 jaar oud
    • MediaWiki
    • GTA Games
    • Splinter Cell
    • 5.000 pagina's
    • MySQL
    • XAMPP
    • Hamachi
    • SA-MP
    • GTA San Andreas
  3. 2005

    Habbo Hotel private server en Sulake scripts

    Eigen Habbo Hotel private server opgezet met een emulator, MySQL database en XAMPP. Sulake scripts gecodeerd en aangepast. Hamachi als virtueel netwerk zodat anderen konden verbinden. Backend van een platform met miljoenen gebruikers nagebootst op een thuiscomputer.

    • Habbo Hotel
    • Sulake scripts
    • Private server
    • Hamachi
    • Emulator
  4. 2006

    Rockstar North mods en RuneScape private servers

    Mods gemaakt voor Rockstar Games North titels. Eigen RuneScape private servers opgericht en beheerd, inclusief database, spelersbeheer en community. Serverinfrastructuur volledig zelfstandig opgezet en draaiende gehouden.

    • Rockstar North
    • Game mods
    • RuneScape
    • Private server
  5. 2007

    Forums bouwen voor echte mensen

    IP.Board en Invision Power Board forums opgezet en beheerd voor meerdere communities. Waaronder een forum speciaal voor mensen met autisme. e107 en Joomla gehost en beheerd. De techniek begon mensen te verbinden die dat anders moeilijk vonden.

    • IP.Board
    • Invision Power Board
    • e107
    • Joomla
    • Autisme forum
  6. 2008

    Het staat nog in het archief

    Op 9 februari 2008 legde het Internet Archive een MediaWiki vast op buzet.nl, in het Nederlands, met hoofdpagina, navigatie, geschiedenis en een link naar de mailinglijst voor nieuwe versies. In de vastleggingen daaromheen staan een SMF forum met subfora voor filmen en montage, een browsergame met registratiepagina en huisregels, en een nieuwspagina met een kolom medewerkers. Vijftien vastleggingen van de voorpagina, en 121 losse URL's van het domein in totaal. Niemand hoeft mij te geloven.

    • Internet Archive
    • buzet.nl
    • MediaWiki
    • SMF
    • e107
    • Browsergame
  7. 2009

    Eerste commerciële websites

    WordPress en e-commerce voor betalende klanten. Hosting opgezet en beheerd. Vijf jaar experimenteren in game communities bleek direct toepasbaar in het bedrijfsleven. Eerste professionele opdrachten afgerond.

    • WordPress
    • E-commerce
    • Hosting
    • Klanten
  8. 2016

    Shopify en professionele videobewerking

    Shopify webshops voor klanten. Adobe Premiere professioneel ingezet voor videobewerking, een vak dat al begon met Windows Movie Maker in 2003. E-commerce en video gecombineerd tot een compleet pakket voor ondernemers.

    • Shopify
    • E-commerce
    • Adobe Premiere
    • Video
  9. 2018

    Grootste champagneverkoper op Bol.com. Landelijk in het nieuws.

    Diploma Zomerondernemer 2018 behaald. Ondernemer in exclusieve champagnes, B2B. Destijds de grootste verkoper van champagne op Bol.com. Het concept trok landelijke media-aandacht: in de krant, op RTV Hattem, RTV Oost en BNR Radio. Een proefperiode die duurde tot medio 2021. Bewijs dat ondernemen en zichtbaarheid hand in hand gaan.

    • Zomerondernemer
    • Diploma
    • B2B Champagne
    • Bol.com
    • Krant
    • BNR Radio
    • RTV Hattem
    • RTV Oost
  10. 2021

    Start van het werk voor de overheid

    Ultra-complexe MediaWiki omgevingen voor grote overheidsorganisaties. Wat ik in de jaren daarvoor uit nieuwsgierigheid had gedaan, werd hier het werk zelf.

    • Overheid
    • MediaWiki
    • Kennisbank
  11. 2023

    Maatwerk voor ondernemers met een visie

    Een cateringsite gebouwd, en een website voor een traditionele kapperszaak in Fojnica in Bosnië. Klanten die weten wat ze willen en een partner zoeken die dat kan bouwen.

    • Catering
    • Kapperszaak
    • Fojnica
    • Bosnië
  12. 2025

    De kunstatlas van Frankrijk, gered in plaats van herbouwd

    Een gehackte MediaWiki 1.26.4 uit 2015 in fasen naar 1.39.10, van PHP 7.4 naar 8.3 en van MySQL 5.7 naar 8.0. Drieenveertig extensies moesten mee, en een aantal daarvan is met de hand op PHP 8 gezet. De database is ter plekke gerepareerd in plaats van opnieuw opgebouwd, omdat twintig jaar redactiewerk zich niet laat herbouwen.

    • atlasmuseum
    • Frankrijk
    • MediaWiki 1.39.10
    • PHP 8.3
    • MySQL 8
    • Docker
  13. 2026

    Een systeem dat zichzelf meet

    Deze site is de voorkant van een meetsysteem dat robertblok.com en rbck.nl elk kwartier bezoekt en atlasmuseum.net elk uur, met een echte Chromium. Elke meting wordt vastgelegd als onwijzigbaar record in een hashketen, en de site laat je die keten in je eigen browser narekenen. Daarnaast bouw ik een meertenant SaaS voor de uitvaartbranche, nog niet gelanceerd en daarom anoniem beschreven.

    • Platform
    • PostgreSQL
    • Hashketen
    • SKIP LOCKED
    • Chromium
    • SaaS

Hoofdstuk 1

Het staat nog in het archief

Ik weet niet meer precies wanneer ik begon. Het Internet Archive wel.

Op 31 augustus 2007 legde het buzet.nl vast, een jongerensite die ik zelf draaide. In de anderhalf jaar daarna staan er vijftien vastleggingen, en daarin zie je het uit de hand lopen. Een community met polls en een RSS-kanaal. Een IP.Board forum, gelicentieerd op mijn eigen domein. Daarna een SMF forum met subfora voor filmen en montage. Een browsergame met een registratiepagina en huisregels waar je op moest aanvinken. Een nieuwspagina met een kolom medewerkers.

En op 9 februari 2008 een MediaWiki. In het Nederlands. Hoofdpagina, navigatie, geschiedenis, persoonlijke instellingen, een link naar de MediaWiki-mailinglijst voor nieuwe versies.

Ik was er niet mee bezig een carriere te beginnen. Ik wilde dat het werkte.

Vijftien vastleggingen tussen 31 augustus 2007 en 14 april 2026. Hieronder de zeven die uitgeschreven zijn, met het pad erbij, want het pad verraadt welk pakket eronder draaide.

Vastleggingen van buzet.nl in het Internet Archive
DatumPadWat er draaideWat er te zien is
Bekijk de vastlegging van 31 augustus 2007 in het Internet Archivebuzet.nlBuzet CorprationsEen eenvoudige site met de navigatie Home, Informatie, Contacteer ons, Links en Movies. De begintekst kondigt aan dat Buzet een jongerensite is, met plannen voor de filmindustrie en een online magazine.
Bekijk de vastlegging van 16 januari 2008 in het Internet Archivebuzet.nl/indexCMS met polls en RSSEen volwaardige community met Main Menu, inlogformulier, polls, RSS-kanaal en Newsflash. De rubrieken lopen van Games en Sport tot School en studie. De poll op de voorpagina vraagt bezoekers of ze het thema mooi vinden.
Bekijk de vastlegging van 17 januari 2008 in het Internet Archivebuzet.nl/forumIP.Board 2.3.3Een IP.Board forum, gelicentieerd op Buzet.nl, met Portal, Today’s Active Topics, Today’s Top 20 Posters, Arcade, Blogs en Gallery.
Bekijk de vastlegging van 9 februari 2008 in het Internet Archivebuzet.nl/nuacMediaWiki Dit is de vastlegging waar de regel over twintig jaar MediaWiki op rust. Geen bewering, maar een pagina met een datum eraan.Een MediaWiki in het Nederlands, onder de naam Nuac Incorp. Hoofdpagina, navigatie, bewerken, geschiedenis, persoonlijke instellingen, en links naar de MediaWiki FAQ en de mailinglijst voor nieuwe versies.
Bekijk de vastlegging van 17 februari 2008 in het Internet Archivebuzet.nl/nieuws.phpEigen nieuwspaginaEen nieuwstabel met kolommen voor onderwerp, datum, medewerkers en tekst. Drie berichten: een nieuw websysteem op komst, waarschijnlijk php-fusion, met de vraag aan bezoekers om mee te denken over de vormgeving. De kantine in Hattem-Zwolle die tijdelijk gesloten is. En een nieuwe game die online is gezet.
Bekijk de vastlegging van 28 februari 2008 in het Internet Archivebuzet.nl/bs/signup.phpBrowsergame, BulletstarEen aanmeldpagina voor een browsergame met gebruikersnaam, e-mail, startstad en een referral-veld, plus drie huisregels waar je op moet aanvinken. De paginatitel is Criminals, de regels verwijzen naar Bulletstar.
Bekijk de vastlegging van 16 september 2008 in het Internet Archivebuzet.nl/forumSMF 1.1.6Inmiddels een SMF forum onder de naam Videoforum, met de rubrieken News, Mededelingen, Tutorials, Programmatjes, Wedstrijden, Filmen met de subfora Gevorderd en Beginners, Je eigen gemaakte films, Games, en Sport en Beweging.

Binnen achttien maanden op een domein: een CMS-community, twee forumpakketten, een MediaWiki, een browsergame met registratie en een nieuwsredactie met medewerkers. Niet als opdracht, maar uit mijzelf.

Een pakket installeren was in 2007 makkelijker dan het klinkt, en er waren meer tieners die een forum draaiden. Wat er wel toe doet is de breedte en het doorzetten, en dat twintig jaar later dezelfde soort software draait onder een kunstatlas met steun van een ministerie.

Waar ik mee werk

Elk gereedschap met de plek waar het gedraaid heeft.

A

MediaWiki en semantiek

  • MediaWiki 1.26.4 tot 1.39.10atlasmuseum, vier generaties in fasen
  • Semantic MediaWiki 5.1.051.277 entiteiten opnieuw opgebouwd
  • Drieenveertig extensiesstuk voor stuk mee naar PHP 8.3
  • PageForms en arraymapde nacht dat 4.589 pagina's de verkeerde waarde hadden
  • Wikidata en verrijkingWikidataBundle, achttien sub-extensies
  • Eigen skinAtlasNova, 1.478 regels

B

Backend en data

  • PHP 8.315.929 regels eigen PHP in de kunstatlas
  • MySQL 8van 5.7 naar 8.0, database ter plekke gerepareerd
  • Prepared statementseen SQL-injectie in de kaartgenerator gedicht
  • TypeScript, strictdit platform, geen any
  • PostgreSQL met hashketenselke meting op deze site
  • Wachtrij met SKIP LOCKEDtwee workers, nul dubbele uitvoeringen

C

Infrastructuur

  • Docker, nginx, php-fpmde stack onder atlasmuseum
  • Zelftest van achtentwintig puntenwiki.sh, zegt of de stack klopt
  • Statuspagina per endpointAMAPIStatus, voor de overdracht
  • Caching in twee lagen26 tot 64 keer sneller bij herhaalde lading
  • Back-up per bewerkt bestandachtentwintig met tijdstempel in de boom
  • Eigen hosting en VPSrbck.nl, doorlopend

D

Front-end en toegankelijkheid

  • WCAG 2.2 AAdeze site meet het tegen zichzelf, elke run
  • axe-corein de meting, niet achteraf
  • De toegankelijkheidsboomvia het Chrome DevTools Protocol
  • CSS met design tokensgeen framework, een bron in plaats van twintig kopieen
  • WebGL2 en shadersde bewegende delen van deze site
  • Twee talen zonder duplicateneen woordenboek, een routetabel

E

Meten en bewijzen

  • Playwright met echte Chromiumelk kwartier, drie doelen
  • sha256 over elk recordde keten die je zelf kunt narekenen
  • Canonieke JSONRFC 8785, zodat dezelfde meting dezelfde hash geeft
  • Architectuurregels als test65 modules, nul overtredingen
  • Droge run voor elke bulkbewerkingAtlasRepair, 1.343 records aangemerkt
  • Runbook bij opleveringzestig pagina's met de foutencatalogus erin

F

Webshops en CMS

  • Shopifymaatwerk voor ondernemers, vanaf 2016
  • WordPress en e-commercede eerste betalende klanten, 2009
  • IP.Board en SMFbuzet.nl, vastgelegd in het archief in 2008
  • e107 en Joomlagehost en beheerd, 2007
  • Migraties tussen pakkettenvier websystemen op een domein in achttien maanden
  • Adobe Premieresinds 2003, later professioneel ingezet

Waar het op draait

Hoe ik werk

De regels waar ik me aan hield.

Dit is het deel dat op geen enkel ander portfolio staat, en het is het deel waar een opdrachtgever iets aan heeft.

  1. Eerst bewijzen, dan offreren

    Bij atlasmuseum bouwde ik uit de database-dump de hele site na in een offline omgeving op mijn eigen machine, zonder verbinding met de live site. Pas toen die test aantoonde dat de inhoud te redden was, kwam er een plan en een prijs. Ik verkoop geen zekerheid die ik nog niet heb.

  2. Elke bulkbewerking draait eerst droog

    Eerst een run die niets verandert en een rapport schrijft, dan een overzicht met elke voorgestelde wijziging van huidige naar gecorrigeerde waarde, en pas dan een toepassing met attributie en een snelheidslimiet. Er is geen pad waarbij een massabewerking gebeurt zonder dat een mens bevestigt.

  3. Elk bewerkt bestand wordt eerst geback-upt

    Met een tijdstempel, zodat elke afzonderlijke wijziging terug te draaien is. In die boom staan achtentwintig van die back-ups. Dat is geen rommel, dat is de regel.

  4. Nooit rechtstreeks uit SQL

    De eigen API-laag leest MediaWiki uitsluitend via de stabiele action API. Daardoor kan een toekomstige upgrade de backend niet breken. Dat is precies wat er misging bij de installatie die ik erfde.

  5. Wat niet gemeten kan worden, staat er niet

    Elk cijfer op deze site komt uit een meting of uit een bron die ik erbij kan noemen. Wat nog niet vaststaat, laat ik weg. Er staat een test in deze repository die daar op controleert en de build laat falen.

  6. Een runbook voor wie na mij komt

    Zestig pagina's, met de complete foutencatalogus en de openstaande punten erin. Niet omdat het moest, maar omdat de volgende ontwikkelaar niet opnieuw moet uitzoeken wat ik al weet.

Nieuwsgierig wat dit voor uw project kan betekenen? Bekijk de diensten of plan direct een gesprek.

In de media