Ik vertaal je business-vraagstuk naar een concreet technisch landschap: framework-keuze, integratiestrategie, schaalbaarheid en kostenefficiëntie.
Ik ontwerp en bouw robuuste backend-applicaties, API's en integraties: van greenfield-ontwikkeling tot het moderniseren van bestaande software.
Ik help teams om techniek, processen en samenwerking zo in te richten dat het bouwen, uitbrengen en beheren van software één soepel geheel wordt.
Ik help teams om samen met de klant te bouwen, leren en bij te sturen, zonder te doen alsof complexe software vooraf volledig te voorspellen is.
Binnen mijn team bij Enrise heb ik het initiatief genomen om de stap te zetten van experimenteren met AI naar verantwoord gebruik ervan in codebases van klanten: klanttoestemming regelen, samen ontwikkelafspraken maken, Claude Code invoeren en de opgedane kennis daarna binnen Enrise delen zodat andere teams er op konden voortbouwen.
Het uitgangspunt dat we daarbij hebben vastgelegd: AI helpt ons sneller denken en schrijven, maar wij blijven degene die begrijpen, beslissen en onderhouden.
Sinds de introductie van de Enrise GitLab-instantie in 2017 zijn vrijwel alle dev teams van GitHub en Travis overgestapt op GitLab.
Rick van der Staaij en ik zijn om stabiliteit te kunnen waarborgen aan de slag gegaan met het opzetten van een variant van GitLab op basis van Kubernetes.
Nadat een eerste proef-versie draaide hebben we een migratie uitgevoerd van EC2-instances op AWS naar een Kubernetes-cluster op Google Cloud, en hebben we vanaf dat moment 24/7 standby gestaan voor eventuele downtime.
Er zijn vele manieren om PHP-code te debuggen met Xdebug. Daarom hebben Nico Stapelbroek en ik een blogpost geschreven van de meest veel voorkomende varianten.
Handig om als ontwikkelaar te bookmarken en er bij te houden!
Tijdens CodeCuisine®Live, een evenement van Enrise, heb ik samen met Rick van der Staaij een presentatie gegeven over het inzetten van review applications en hoe dit process sneller waarde levert dan de klassieke vorm van software releasen.
Na jarenlang binnen Enrise ontwikkeld te hebben op virtual machines die beheerd werden door Vagrant, was er een nieuwe techniek op de markt, genaamd Docker.
Samen met Rick van der Staaij heb ik uitgezocht of dit interresant kon zijn voor Enrise.
We hebben Docker onderzocht, Docker-Compose, Rancher, en uiteindelijk hebben we de grote stap gemaakt naar Kubernetes.
In de jaren hierna hebben we deze kennis erg goed kunnen inzetten voor Enrise en diverse klanten.
Waar Webstack er is om PHP-applicaties te draaien, is Builder de tegenhanger om ze te bouwen en te testen. Het is een image op basis van Alpine Linux met PHP, Composer, NodeJS, NPM, Yarn, Docker, Buildah en Podman aan boord, gemaakt voor CI-pipelines zoals GitLab CI in Docker-in-Docker-modus.
Het idee erachter is snelheid: omdat alle tools al in de image zitten hoeft een pipeline ze niet bij elke build opnieuw op te halen. Er zit daarnaast een cache-tool in waarmee je mappen buiten de build-directory kunt cachen, iets wat de GitLab-runner normaal niet toestaat, zodat stages de cache van bijvoorbeeld Composer en Yarn kunnen delen.
Ook deze image staat op Docker Hub en is inmiddels ruim 200.000 keer gepulled.
Toen ik met Docker aan de slag ging viel me op dat de bestaande Nginx/PHP-FPM-containers hun processen startten via een bash-script of via supervisord, wat niet bedoeld is om als PID 1 te draaien en je container met zombie-processen kan opzadelen.
Daarom ben ik Webstack gaan bouwen: een herbruikbare basis-image voor PHP-applicaties op basis van Alpine Linux, met Nginx, PHP-FPM en s6-overlay als init-daemon. De image komt in diverse PHP-smaken, waarvan een deel rootless draait, en wordt dagelijks opnieuw gebouwd zodat de laatste securitypatches van Nginx en PHP er in zitten.
Ik gebruik hem sindsdien als basis onder mijn eigen projecten, wat per project een hoop regels Dockerfile scheelt. De image is te vinden op Docker Hub en is inmiddels ruim 400.000 keer gepulled.
GitLab leek een totaal-oplossing te kunnen bieden met daarin alle functionaliteit van GitHub en Travis-CI terwijl dit bovendien een flinke kostenbesparing zou kunnen opleveren.
Rick van der Staaij en ik hebben dit onderzocht, de uitkomst hiervan is dat we een eigen instantie voor Enrise hebben opgezet en deze aan de ontwikkelaars van Enrise hebben aangeboden.
Hierna hebben we geholpen bij de migratie van de projecten van GitHub naar GitLab toe en hebben we onze opgedane kennis ingezet bij de conversie van Travis-CI naar GitLab CI.
Binnen Enrise gebruikten we voor automatische tests Jenkins, maar we kregen vanuit verschillende richtingen te horen dat het lastig te onderhouden en in te stellen was. Ik ben daarom samen met Rick van der Staaij gaan uitzoeken of er geen betere alternatieven waren.
Na veel vergelijken en uitzoeken zijn we op Travis-CI uitgekomen. We hebben onze resultaten aan Enrise gepresenteerd, en nadat het laatste project gemigreerd was kon tot ieders grote vreugde de stekker uit het Jenkins-serverpark.
Bij Enrise zijn we rond 2011 Vagrant gaan gebruiken voor de virtuele ontwikkelomgevingen waar we onze software op schreven. Ik heb een blogpost geschreven hoe ik dit op Windows heb ingericht.
Na mijn studie HBO mediatechnologie ben ik in dienst gekomen bij Enrise, toen het nog 4worx heette en het nog maar uit een man of 12 bestond.
In 2004 had de wereld nog geen Afspreken en DatumPrikker, en ik merkte dat afspreken met mijn vriendengroep via MSN of mail niet altijd optimaal verliep.
Ik heb toen Planning voor n00bs gebouwd, waarin je dingen kan organiseren, en iedereen zijn of haar aanwezigheid kan opgeven.
De toegangspoort van PVN is te aanschouwen op planningvoornoobs.nl maar slechts een selecte groep mensen kan naar binnen.