Waarom ik naast mijn werk apps blijf bouwen?


Ik werk als product manager bij een grote bank. Ik denk de hele dag na over gebruikerservaring, technologie en hoe je complexe dingen simpel maakt. En toch bouw ik in mijn vrije tijd ook dingen. Niet omdat het moet. Maar omdat ik het niet kan laten.

De aanleiding voor de meest recente sprong was Claude Code. Een tool die bijna dagelijks updates krijgt en die de manier waarop je software bouwt fundamenteel aan het veranderen is. Ik wilde begrijpen wat het kon — niet door er over te lezen, maar door er mee te werken.

Bijblijven door te doen

De wereld van AI-ontwikkeling gaat snel. Heel snel. En de enige manier om dat echt te begrijpen is door een praktisch probleem te pakken en te kijken hoe ver je komt.

Bij Kalplat.nl (neem vooral eens een kijkje) — een tool die Limburgs dialect transcribeert naar notulen — merkte ik hoe anders bouwen aanvoelt als je Claude als sparringpartner gebruikt. Niet als zoekmachine, maar als senior developer, als UX-adviseur, als compliance-check. Je maakt een keuze en gaat door. Het werkt bijna verslavend snel.

Zelfs vraagstukken waar ik normaal een specialist voor zou inschakelen — security, privacy, legal — kun je nu stap voor stap doorlopen. Niet als vervanging van expertise, maar als manier om de juiste vragen te stellen.

De laatste 5% is het moeilijkste

Afgelopen zondag was Kalplat voor 95% klaar. En toch staat die laatste 5% er nog niet. Het privacy statement dat nog even gecheckt moet worden. De URL-infrastructuur die goed moet staan voordat de eerste echte gebruikers testen. Kleine dingen die groot aanvoelen als je er moe van bent.

Tijd vinden naast een fulltime baan op werk en fulltime papa privé blijft het moeilijkste deel. Niet de techniek, niet de ideeën — de tijd.

De projecten die de finish niet haalden

Kalplat is niet mijn eerste side project. Spotmeister — een locatiegebaseerde quiz-app — leeft al jaren in mijn hoofd. Het idee was een drietrapsraket: eerst feitjes op locaties, dan quizjes en speurtochtjes, dan samenwerken met VVV’s en toeristische plekken. De eerste twee trappen zijn er. De derde staat nog steeds in de steigers.

Misschien haal ik die finish ooit. Misschien niet. Maar ik leerde er meer van dan van menig cursus.

Waarom ik toch doorbouw

De projecten die blijven plakken zijn de projecten die iets oplossen voor echte mensen. Een vriend die notulen typt voor zijn voetbalvereniging. Een heemkunde-vereniging die boeken catalogiseert. Een boer die zijn koeien wil kunnen volgen. Mensen in mijn omgeving met een concreet probleem.

Dat is mijn filter geworden: bouw ik iets waar iemand die ik ken morgen mee geholpen is? Dan ga ik verder. Anders niet.


Dank aan Claude voor de gestelde vragen hierboven en redigeren van mijn teksten.

Vooruitgang in 2025 op het gebied van vibe coding

De kerstperiode biedt altijd een mooie gelegenheid om terug te blikken op het werk dat je het afgelopen jaar hebt verricht. Daarnaast biedt het ook een moment om na te denken over de trends en vooruitgangen die ik het afgelopen jaar heb waargenomen en waar . Naast het bijhouden van alle nieuwe AI-mogelijkheden die online verschijnen, zag ik deze kerstperiode de kans om met Claude Code te werken, mij weer eens onder te dompelen in de mogelijkheden en onmogelijkheden en te ontdekken hoe deze tool functioneert.

Het leuke aan Claude Code is dat het beter presteert dan de combinatie van vibe coding die ik eerder probeerde met Lovable, Cursor en ChatGPT. Waarbij deze automatische coding tool opnieuw meer werk uit handen neemt. Zodra je een en ander goed hebt geconfigureerd, denk aan automatische code updates naar github en automatische deployments naar een website kon ik een oud studentenproject weer nieuw leven inblazen.

In 2012 had ik samen met drie andere computer science studenten het idee om een gps-gebaseerde quiz te maken. Het doel was om mensen meer bezig te laten zijn met hun omgeving en hen daar vragen over te laten stellen, zodat ze minder op hun telefoon zouden zitten en meer betrokken zouden zijn bij hun omgeving. We bedachten een gps-gebaseerde locatiequiz genaamd Spotmeister.

Om Claude Code grondig te testen, heb ik in drie avonden vibe code geschreven, ik bedoel Claude code laten schrijven. Dit resulteerde in een eerste MVP die zowel op desktop als mobiel te gebruiken is. Ik ben met name onder de indruk van de plannen die Claude zelf schrijft voordat “het” begint zaken aan te passen.

Kortom, ik merk dat vibe coding wéér beter is geworden dit jaar. Hoewel ik geen expert ben in de kwaliteit van de geschreven code, zag ik wel enkele onhandigheden voorbij komen. Het blijft dus een kwestie van itereren. Maar ook deze tak van sport heeft weer aanzienlijke vooruitgang geboekt, wat voor mij als niet-programmeur enorm interessant is en veel nieuwe mogelijkheden biedt.

Dit wilde ik graag met jullie delen en ik ben benieuwd wat jullie ervan vinden.

Vaarwel Rabobank. Hallo bol.com

Het is alweer 7 jaar geleden dat ik begon als trainee bij de Rabobank. Na diverse functies ben ik veel ervaringen rijker en wil ik mijn collega’s bij de Rabobank graag bedanken voor alle hulp, leermomenten, kansen en gezelligheid die ik heb mogen ervaren de afgelopen jaren.

Ik heb mogen werken aan gave producten bij de Rabobank. Met name het opzetten van een geheel nieuwe chatbot voor de klantenservice is een van mijn grootste en meest uitdagende projecten geweest, maar ik heb geleerd dat je daar met een goed team hele grote stappen kan zetten. Daarnaast heb ik altijd met veel plezier en liefde gewerkt aan de site van rabobank, het verbeteren van de search (zowel intern als de externe SEO) en natuurlijk het verder uitwerken van de voice propositie.

Vaarwel Rabobank.

Hey Google, praat met Seven minute workout

Leerdoelen: analytics, routines en hergebruik van content in Google Actions

Samenvatting: tijdens review proces wordt content hergebruik herkend, routines zijn enkel nog beschikbaar in het engels en over analytics is nog veel onduidelijk.

Achtergrond

Afgelopen jaar had ik een simpele action gemaakt om te leren hoe makkelijk (of moeilijk) het is om een Google Action te maken waarbij alle samples zijn opgenomen en door middel van SSML uitgesproken moeten worden. Het resultaat was de Action PV (pretty virtual) personal trainer. Het doel van deze action was om gebruikers een seven minute workout te laten doen.

In grofweg 3 avonden maakte ik deze PV personal trainer. Inclusief het uitzoeken van passende opensource samples, knippen / plakken, opnemen en modificeren van mijn eigen stem. Dit resulteerde in een 7 minuten durende sample met diverse workout oefeningen. De PV personal trainer was alleen in het Nederlands beschikbaar. Na het deployen en zonder enige marketing, anders dan de standaard “explore” lijst van Google Actions, bleek er maar weinig animo te zijn voor de action. Het gevolg was dat het project stil viel.

Om snel te leren hoe routines werken heb je een engelse action nodig. Ik koos (na een paar invocation tests) om een nieuwe action te maken in het Nederlands én Engels genaamd “seven minute workout”. Gewoon simpel, to the point en met maar een doel: mensen aanmoedigen om een seven minute workout te doen.

Content hergebruik

Tijdens het maken van de action “seven minute workout” gebruikte ik dezelfde sample die ik vorig jaar maakte voor de PV personal trainer, maar dan met een hele andere flow ernaar toe. Tijdens het reviewen werd ik keihard afgewezen door Google met de reden: “Your action appears to spam users or includes excessive low quality or duplicated content“, zo luidde de boodschap. Er is dus een (mogelijk geautomatiseerd) proces dat bij het maken van actions een controle doet op het hergebruiken van content.

Dagelijkse routines

We weten allemaal hoe moeilijk de “exploration” van Google actions zijn. En wanneer een gebruiker eenmaal je action geprobeerd heeft is het hopen dat hij of zij je de volgende keer weer weet te vinden.

Dagelijkse routines zijn hiervoor dé oplossing! Mijn voorspelling is dat meer en meer mensen met een Google Home gebruik zullen gaan maken van dagelijkse routines. Stel je maar eens voor: je wordt wakker, je staat op en loopt naar de keuken waar je gaat ontbijten of de boterhammen voor die dag gaat smeren. Je zegt “Hi Google, goedemorgen!” als je de keuken binnen loopt. Je lichten gaan aan, je hoort het weer voor vandaag, de drukte op je vaste route naar het werk en het laatste nieuws.”

Als een action het voor elkaar krijgt om aan dit lijstje te worden toegevoegd zit je als action gebakken! Als bank zou je bijvoorbeeld een financiële update kunnen geven aan je rekeninghouder en als sportschool zou je de mensen die fit willen blijven een seven-minute-workout kunnen aanbieden die ze kunnen opnemen in hun dagelijkse routine.

Een routine toevoegen ziet er zo uit:

Een routine activeren werkt alsvolgt, zeg: “Hey Google, goede morgen”. Noem dus de naam van het routine moment. Goede morgen, middag of avond. Ook zijn er andere varianten beschikbaar “naar huis”, “ik ben thuis”, etc.

Zoals eerder gezegd werken routines alleen voor gebruikers die de account taal en assistant taal op en-en hebben ingesteld. Hieronder zie je een video hoe je een routine start en hoe je bij de settings ervan terecht komt.

Goede morgen routine

Analytics

Na een tweetal berichten over de seven minute workout op LinkedIn van Emiel Langeberg waren we beide benieuwd hoe het met de analytics gesteld zou zijn van deze action.

Geen touw aan vast te knopen! Je zou verwachten dat de aantallen in Dialogflow en Google Actions enigszins overeen zouden komen, helaas zie ik het verband niet.

Zie hier een paar voorbeelden:

We beginnen met Google Actions:

Googel Actions

Hieronder de stats van Dialogflow:

Dialogflow

Bestanden worden in firebase gehost. Dit zijn de stats uit de Firebase bucket:

Firebase

Chatbot conference 2019 Utrecht

Afgelopen week gesproken tijdens een break-outsesie van de chatbot conference 2019 in Utrecht. Ik deelde grofweg 3 grote learnings met het publiek op basis van mijn ervaringen het afgelopen jaar:

  1. Begin klein
  2. Focus op content
  3. Blijven testen
Presenting @chatbot conference

Begin klein

Denk groot, maar begin klein en zorg dat je overzicht krijgt in het speelveld waar je mee te maken hebt. Door iets simpels als een onderwerp zoals bic/swift op te pakken leerden we hoe moeilijk het is om een goed dialoog te schrijven en de hoeveelheid keuzes waar je mee te maken krijgt.

Focus op content

Met focus op content bedoel ik dat je écht veel tijd moet steken in het leren van de dialogen die klanten met je bedrijf of merk voeren. Snel beginnen met de techniek is verleidelijk, dus pas daar voor op. Het is te makkelijk gedacht wanneer je denkt even de FAQ’s van je website in dialoogvorm aan te bieden. Dialogen schrijven is gewoon een vak apart en moeilijk om logisch in een (chat)gesprek te gieten.

Blijven testen

Itereren, itereren, en blijven… itereren. Als ik terug kijk op het afgelopen jaar kan ik alleen maar het advies geven om klein te beginnen en zo snel mogelijk te gaan leren, liefst meteen met klanten. Zo voorkom je onnodig (grote) investeringen op zowel technisch als content vlak.

Meer weten? De slides worden beschikbaar gesteld op: https://www.chatbotconference.nl/

Analytics

Na het approved krijgen van mijn action in de <action-store?> van Google hoopte ik natuurlijk op vele bezoekers de eens een kijkje komen nemen. Gewoon om een te proberen en weer te verlaten. De overzichtspagina ziet er per slot van rekening niet kinderactig uit dacht ik zo… (link)

Zonder enige vorm van marketing staat de action al 3 maanden op de Google Cloud. Mijn idee was om verder te gaan met de ontwikkelingen wanneer er toch een persoon of 50 per dag interesse zouden tonen.

Anyway, wat zijn de resultaten van een action voor 18+ publiek (want alcohol) die je zonder marketing online slingert? Hou je vast, hier een overzicht van de afgelopen 30 dagen:

Action approved!

Versie 2.0 van Favino werd afgekeurd aangezien de microfoon nog steeds “open” zou blijven staan bij een intent. In de e-mail stond duidelijk om welke intent het ging wat de zoektocht een stuk makkelijker maakte.

Ik bleek bij de betreffende intent niet met een vraag te eindigen. Het is dus erg belangrijk om een gebruiker van een voice interface altijd een vraag te stellen om deze zo de juiste antwoordrichting in te sturen.

Eindig een intent altijd met een vraag of zorg dat de intent de conversatie sluit.

Versie 3.0 was al snel gemaakt en binnen 24 uur gereviewed en approved! Het lijkt er steeds meer op dat het reviewen van Google Actions toch echt mensenwerk is, gezien de precisie waarmee mijn versie 2.0 afgekeurd was. Navraag bij Wally Brill (van Google), die ik sprak bij een bijeenkomst georganiseerd door Valsplat, bevestigde me dat dit inderdaad nog mensen werk is.

“Action not approved”

Het duurde 5 werkdagen voor ik bericht van Google kreeg, helaas is de action niet goedgekeurd… 3 verbeterpunten staan er in de e-mail:

  • De taal van de privacy policy (in het engels) komt niet overeen met de taal van de action (in het Nederlands).
  • De invocaties blijken nog onjuist gestructureerd te zijn.
  • De microfoon zou “open” blijven staan na sommige intents wat niet de bedoeling zou zijn.

Aangezien ik graag een eerste versie in productie live wil zetten om ook te leren van de analytics ga ik “effectief” te werk. Taal van privacy policy in het Nederlands toegevoegd, nog maar 1 invocation (namelijk praat met favino wijnadvies en als laatste na elk advies het vinkje “end of conversation” ingesteld.

Versie 2 is een feit en vandaag ingestuurd. To be continued…

Deploying Favino v1.0

Al met al ben je toch makkelijk een hele avond kwijt om je eerste versie helemaal deploy-ready te maken. Naast een paar juist opgezette intents, een icoon, een naam en een manier van aanroepen heb je ook nog een privacy policy nodig. Deze policy moet dan ook nog eens op een online benaderbare plek staan. Gelukkig komt Google je een klein beetje tegenmoed door al een template beschikbaar te stellen die je kunt over nemen en maar hoeft aan te passen naar de voor jou geldende regels.

Any way, mijn eerste versie is “pending” bij Google en ik zal jullie op de hoogte houden van de voortgang.

Voice response opmaken

Bij het maken van een website gebruik je HTML voor de inhoud en CSS voor de opmaak zodat het geheel er mooi en leuk uitziet. Dit zelfde fenomeen zien we ook terugkomen bij de ontwikkeling van conversaties. In Dialogflow schrijf je een response voor je intent en maak je deze mooier en leuker door gebruik te maken van SSML (Speech Synthesis Markup Language).

Hier een link naar de officiele website: https://www.w3.org/TR/speech-synthesis/ en nog een link over de manier hoe Google dit interpreteert: https://developers.google.com/actions/reference/ssml

Een eerste test met deze markup language komt positief uit de bus! De taal laat zich makkelijk toepassen in Dialogflow en het antwoord van onze default welcome intent wordt er meteen een stuk duidelijker van.