Wat leer je in deze aflevering?
In deze aflevering van AIToday Live, duikt het thema zich in de vernieuwende wereld van AI-gestuurde code vertaling, met een focus op de mogelijkheden van generatieve AI in programmeren. Van het transformeren van low-code platformen naar moderne programmeringstalen tot de rol van AI in het verfijnen van automatiseringstests, ontdek hoe deze technologieën het landschap van softwareontwikkeling veranderen. Een specifiek project, waarbij code vertaling met behulp van AI aanzienlijke efficiencyverbeteringen laat zien, wordt onder de loep genomen. Luisteraars krijgen inzicht in de uitdagingen en oplossingen bij de implementatie van AI in het ontwikkelproces, de impact op productiviteit, en de voordelen van geautomatiseerde testgeneratie.
Kernbegrippen
- Generatieve AI voor codeconversie
- AI-modellen die verouderde of low-code programmeercode automatisch omzetten naar moderne, volledig programmeerbare code.
- Low-code platforms
- Ontwikkelomgevingen waar applicaties met minimale handmatige codering via visuele interfaces worden gebouwd.
- Legacy modernisering
- Proces waarbij oude softwaresystemen worden geüpdatet naar huidige technologieën en architecturen.
- Geautomatiseerde testing
- Systemen die automatisch tests genereren en uitvoeren om functionaliteit van geconverteerde code te valideren.
Transcript
Hoi, leuk dat je weer luistert naar een nieuwe aflevering van AIToday Live. Vandaag geen gast, we doen het helemaal zelf. Ik denk dat we een buitengewoon interessant onderwerp hebben. Best wel vernieuwend. Mijn naam Joop Snijder, CTO bij Aigency. Mijn naam Niels Naglé, Area Lead D3I bij Info Support. Ja Niels, we gaan het vandaag hebben over generatieve AI. Generatieve AI is natuurlijk hot, dus we blijven erover praten. Maar ik denk dat we dat vandaag eens even gaan doen op een speciaal onderwerp. En dat gaat over vertalen, maar vertalen van code, programmeercode. We hebben best wel heel veel gehad over het omzetten van teksten. Dus als je prompts hebt, dat die wordt omgezet van vraag naar antwoord. Of we hebben het natuurlijk heel vaak gehad over als je een heel artikel hebt, daar een samenvatting van maken. Daar zijn heel veel voorbeelden van. En ik denk dat ook steeds veel mensen het al vaker gebruiken, ook omzetten naar plaatjes. Dus ja, de vertaling van het één naar het volgende. Ja toch? Ja. En op het gebied van het schrijven van code kan dat namelijk ook heel erg helpen. En ik denk dat heel veel, nou heel veel, dat mensen die code schrijven of zelfs beginnen met het schrijven van code, nu hebben gemerkt dat als je modellen gebruikt zoals ChatGPT, maar dat kan ook met Google Gemini en met Anthropic, dat je kan vragen om code te schrijven. Dus dan ga je van prompt naar code. En die code, daarvan hoop je dan zeg maar dat die werkt. En die kopieer je dan naar een omgeving waarin je dat kan runnen. En als die dat niet doet, ga je terug en vraag je het nogmaals. En op deze manier zijn er best heel wat mensen die op deze manier programmeren nu. Of leren programmeren op deze manier. Ja. Maar er is nog een andere, denk ik een hele krachtige case, waar we het nog nooit over hebben gehad, die wij zelf in de praktijk ook hebben toegepast. En dat is wat nou als jij best wel oude code hebt, of code die nu zeg maar in een bepaalde taal is, maar die wil je naar een andere taal, van programmeertaal naar een andere programmeertaal zou willen hebben. Of dat je op een low-code platform zit, waar eigenlijk is dat… Limieten bereikt worden. Ja, waar limieten bereikt worden. Je wilt daarvan af, om welke reden dan ook. En je wilt dan ook naar volledige code. En dat is iets wat wij gedaan hebben. Goede ervaringen mee. En daar gaan we het vandaag over hebben. Zeker. Ja. Zal ik beginnen? Ja. Kijk, de case die we vandaag gaan bespreken, is die van low-code naar een moderne stack. En dat is toch even voor mensen die luisteren en niet weten wat low-code is. Low-code, wat je daar doet, is dat je visueel programmeert. Dus je hebt blokjes die een… Hoe zeg je dat eigenlijk? User interface bij elkaar klikken. Ja, maar die voeren dan eigenlijk taken uit. Het zijn kleine taken, het kunnen grotere taken zijn. En dat klik je in elkaar. Dat zijn een soort van Lego blokjes. Dus je hoeft daar niet of nauwelijks te programmeren. En kan je uiteindelijk toch een applicatie in elkaar krijgen. En dat kan een web-applicatie zijn, dat kan eigenlijk van alles en nog wat kan dat zijn. In dit geval wilden ze van die low-code af. En dat moest naar een volledige programmeertaal. Zowel qua… Dit waren webformulieren. Dus dan moest… De backend, de frontend moest allemaal omgezet gaan worden inderdaad. Zodat eigenlijk van het hoge abstractieniveau afgestapt wordt. Zodat je meer controle, meer flexibiliteit hebt om je eigen code aan te passen en te kunnen muteren. Iets wat in low-code platformen niet mogelijk is. Omdat daar is het Lego blokje, gewoon het Lego blokje. Pas je niet goed, dan heb je pech, dan heb je een ander Lego blokje nodig. Dus dat betekent ook dat je dingen veel beter kan testen. Dat alles haalbaarder wordt. Er waren legio redenen om dit te doen. En dat omzetten. We hebben het nu in deze case over low-code. Maar dat kan ook verouderde code zijn. Dus dat je van verouderde technologie naar nieuwe technologie wil. We hebben natuurlijk nog oude mainframe Cobol. Ik wou dat zeggen. Kennis loopt af bij veel mensen. Precies. En zeker systemen die ergens tussen de 10 en 15 jaar in productie staan. Daar is een soort van houtrot ontstaan. Dus daar werd je niet alleen de technologie verouderd. De manier waarop je dingen hebt aangepakt. Kennis is verdwenen. Niet alles is vaak even goed gedocumenteerd. Ze weten ook niet meer exact wat er nou in productie staat. Dus dat zijn allemaal startpunten voor hetzelfde verhaal wat ik vandaag dan vertel. Wat je dan wil doen is dat je die code in dit geval wil gaan omzetten naar nieuwe. Dat zou je kunnen doen door te zeggen van hier heb je een stuk programmeercode. Vertaal die voor mij. Dat zou mooi zijn toch? Als dat in een keer werkt zeker. Ja, dat doet het niet. Jammer. Voor een deel is dat logisch. Want dit zijn vaak hele grote bestanden. Je moet je bedenken dat één zo'n formulier best wel kon bestaan uit 50.000 regels. Dat zijn nog veel meer woorden. Dus de context die ChatGPT aan kan. Dat geheugen als je het zo zou mogen uitdrukken. Dat is niet groot genoeg om dat bestand überhaupt te bevatten. Ik geloof dat Gemini of zo straks met een 1 miljoen context aan tokens komt. Dus daar zou het in passen. Maar dan gaat het nog niet werken. Want wat je doet is dat het een veel te grote taak is om te zeggen van. Hier heb je een hele berg code waar van alles in zit. Aan bedrijfsregels. Als je dit hebt moet je dat gaan doen. Er zaten allerlei routingsdingen in. In sommige gevallen moest het naar het ene mailadres. Dan naar het andere mailadres. Je kan je voorstellen dat als wij dat zelf zouden moeten doen. Wat zou je dan doen? Kleine stukjes knippen. Dus als je dit in een heel groot, 1 megaprompt zou willen oplossen. Dan word het niet. Dan krijg je slechte code, slechte kwaliteit. Je krijgt 1 brei. En dan uiteindelijk heb je iets waar je nog zoveel tijd, geld en energie in moet stoppen. Dan had je het beter gewoon handmatig kunnen doen. Het zou een beetje zonde zijn. Dus wij hebben daar ook naar gekeken naar opknippen. Opknippen, kleine stukjes. En heel gericht kijken van welk deel kunnen we oplossen met programmeren. Scripting. Dat is gewoon ouderwets. Dat klinkt oud. Traditioneel zou ik moeten zeggen. Traditioneel software engineering. Regels toepassen. Als dit, dan dat. Daarnaast hebben we ook nog gekeken van welk deel wil je handmatig blijven doen. Dus je kan heel veel door de AI laten doen. Maar er blijft ook best wel heel veel over wat je handiger, handmatig kan doen. En een van de voorbeelden is dat er bijvoorbeeld bestanden uitkwamen. En die moeten dan in een bepaalde structuur worden gezet. Daar zou je de AI voor kunnen gebruiken. Maar dat zou zoveel tijd en geld kosten om dat te bouwen. Terwijl als je dat zelf even in een soort van workflow sleept. Dat is dat je iets eventjes op dezelfde plek zet. Dan hebben we het over een taak van 30 seconden. Dus laten we nou een taak van 30 seconden niet uitprogrammeren. Kans op fouten laag testen. Die je er bovenop moet zetten om te kijken of het goed blijft gaan. Er zit veel meer omheen om dat goed te reproduceren en testbaar te houden. Ja, daar zeg je wel iets heel goeds. Want wat je natuurlijk wel wil is als je iets van oud naar nieuw omzet. Dat je ook zeker weet dat nieuw doet wat oud deed. Dus wat je met de AI kan doen is ook testen laten maken. Dus dat hebben we ook gedaan. Dus we hebben testen laten maken die we geautomatiseerd konden draaien op oud. Nadat alles is omgezet moeten we dus diezelfde teksten kunnen we testen. Testen kunnen we houden tegen nieuw. En die moeten dus hetzelfde doen, hetzelfde reageren functioneel als oud. En daarmee bewijs je dat oud en nieuw, eigenlijk moet ik het andersom zeggen, dat nieuw hetzelfde doet als oud. En wat ook nog mogelijk is, en dat is echt heel cool, omdat je juist, dus je kan dingen van het een naar het ander omzetten, transformeren. Daar hebben we het constant over. We kunnen ook van code naar functionele documentatie. En het is niet de functionele documentatie exact, dat als je dat heel goed vanaf het begin zou beschrijven, maar wel op een niveau dat het dus voor niet-programmeurs goed leesbaar is, wat is de functionaliteit die wordt uitgevoerd. En wat we dus ook zagen, is als je dat laat zien, dat mensen zeiden van, "Hé, ja, maar dat is raar, dat klopt niet." Jawel, want zo staat het nu in productie, zo werkt het nu. Dus we vonden ook nog eens een keer functionele fouten. Het is niet alleen maar van het een naar het ander, maar je krijgt er ook nog eens heel veel bij. Dus je krijgt geautomatiseerde testen erbij, je krijgt documentatie erbij, waardoor je veel beter inzichten hebt in, wat doet dat systeem nou eigenlijk en hoe is dat gegroeid in al die jaren. Ja, want er zijn altijd wijzigingen over tijd inderdaad, die zich niet meer hebben gevat in de documentatie, maar wel in de implementatie en dat komt dan boven tafel. Iets wat we natuurlijk vaak zien als we software aan het bouwen zijn en aan het ombouwen zijn, dat je dat terugziet. Maar hiermee zou je dus kunnen versnellen, door eigenlijk al gewoon die generatie te doen van het oude systeem, functionele beschrijving, en op de achtergrond dus de nieuwe al te kunnen bouwen en de specificaties al te kunnen laten valideren door de gebruikers. Dus eigenlijk kan je hier ook een parallelle stroom gaan opzetten. Ja, als je bedoelt dat je die validatie dan op papier laat uitvoeren, je hebt dan nieuw en opnieuw ga je dan de functionele wijzigingen doen. Want dat vind ik zelf een hele belangrijke. Ook hier in het traject werd er ook wel over gesproken van, ja, maar kunnen we dat dan niet direct aanpassen? Ja, dat zou kunnen, maar dan ben je je testen van nieuw naar oud kwijt. Dus in mijn geval vind ik het logisch of veilig en robuust om te zeggen van, ja, maar je gaat van oud naar nieuw, dat heb je helemaal getest. En opnieuw, daar ga je je functionele wijzigingen op uitvoeren. Ja, ik ben er eens. En daar kan je ook dan je testen op aanpassen, je documentatie op aanpassen. Dus dat… Ja, jij zegt documentatie aanpassen, laten aanpassen. Laten aanpassen, ja zeker, zeker. Maar daar is het natuurlijk ook de grote winst om dat mede te genereren en aan te vullen met, ja, beslissingen die je hebt gemaakt om een bepaalde oplossing zo te maken zoals die nu is. Dat zal niet uitgegenereerd worden, dat zijn keuzes die we gewoon vanuit ons software, Craftsmanship gewoon maken. Die zal je nog wel zelf apart vast moeten leggen als aanvulling erop. Ja. En, nou ja, de hele grote vraag is natuurlijk, weet je, wat win je hiermee? Ja. Voor dit traject golden eigenlijk twee criteria. Dus namelijk, het was best wel een heel grote codebase die omgezet zou moeten worden. Dus de vraag is, A, hoe leuk is dat? Dus als je een aantal van dit soort applicaties hebt omgezet, ja, hoe leuk is dat om dat herhalend te blijven doen? En aan de andere kant had het ook gewoon een productiviteitsvraagstuk. Dus het kostte echt wel een hele forse investering voor deze ombouw. En die hebben wij terug weten te brengen tot 50% van de tijd. En dat is inclusief dus het bouwen van die AI-conversiepipeline, want dat is het eigenlijk geworden. Het is een pipeline geworden met allemaal stapjes, dingetjes, controles. Het is een hele workflow geworden om van het ene stukje code naar het andere stukje code te gaan, waarbij de AI regelmatig een uurtje of twee weg is. Je zou kunnen haast zeggen van je AI-developer is op dat moment gewoon druk bezig. En als die klaar is, moet er nog een review gedaan worden, zoals je dat zeg maar... - Review ook doet. Ja, toch? Als we nu aan het programmeren zijn en jij hebt iets gemaakt, voordat je het wil inchecken, voordat het echt toegevoegd wordt aan het systeem, kijk ik het na en andersom. Dus als ik iets heb gemaakt, kijk jij het na, zodat we proberen fouten eruit te halen. Dat gebeurt hier ook. De AI is een uurtje of twee lekker druk, is die bezig, is die aan het kloppen, code kloppen, zoals wij dat dan noemen. En dan doe je er een menselijke review over. Pas je soms ook nog dingen aan of je stuur je het een beetje bij. Dus je zegt van, ja, maar ik wil dat je dit in deze vorm doet. Dus er zitten wat stappen daarin. Een vraag die bij mij wel opkomt is, je noemt de rol AI-developer, die even aan het code kloppen gaat. Welke rollen waren hier nog meer bij betrokken? In het project zelf? In het project zelf, inderdaad. Om die pipeline te kunnen gaan maken, testen, valideren. Ja, uiteraard zeg maar aan de bouwkant, hadden we een data scientist en een software engineer samen. Samen hebben ze die hele pipeline gebouwd, zodat de één is heel goed in de AI en de aansturing en de beperkingen daarvan te begrijpen. En de softwarebouwer natuurlijk ook. En de stukjes script die je nodig hebt in die pipeline, maar ook heel goed beoordelen, wat is nou de kwaliteit van de code die wordt opgeleverd? En moeten we dan zaken gaan bijsturen, zodat de AI een veel betere developer wordt? En aan de klantkant is het eigenlijk niet anders dan ieder ander project. We hadden een business analyst, we hadden een product owner, management. Aan die kant is er ook, zeg maar, developers die ook wel wilden kijken van, ja, best wel, hoe moet ik het zeggen? Kritisch. Nou, laten we het heel positief benaderen, heel benieuwd. Dus heel benieuwd van, wat komt eruit? Is het kwalitatief wel goed genoeg? Past het in onze architectuur? Past het bij onze codestandaarden? Nou, soms was dat niet zo. Daar kan ik ook heel eerlijk over zijn. Je maakt bepaalde keuzes. En het mooie is dat je dat dan kan bij gaan sturen. Dus je kan je prompts gaan aanpassen, zodat die als een schrijfwijzer, dus als een codeerwijzer, kan zeggen van, ja, maar zo moet het eruit gaan zien. Net als dat jij marketingteksten hebt of andere teksten, waarvan je echt een schrijfwijzer hebt van, ja, zo moet het eruit zien. Dit is de opbouw, dit is de structuur, dit is de woordkeuze. Zo kan je dat aan de programmeerkant ook opgeven. Ja, dus dan moet je denken aan afkortingen, gebruik van classes, allemaal van dat soort zaken die je meeneemt. Zeker, wat voor type casing je gebruikt. Dus of je ieder woord met de hoofdletter schrijft of niet. Nou, dat soort keuzes kan je meegeven. En wat was de ervaring met hoe die modellen dat oppakten? Was dat moeilijk om zo te kneden naar dat soort formatten? Want er zijn natuurlijk ook gewoon software tools die die formatting voor je kunnen applyen, erop kunnen zetten achteraf. Ja, en wat bedoel je nou met formatting? Nou, de formatting, wat je zegt, begint overal met een hoofdletter. Als je dat meegeeft aan het taalmodel, is die er heel consequent in? Of wat is daar een beetje de ervaring mee? Ja, nee, als je dat op een goede manier doet, is het er daar heel consequent in. De allergrootste truc zat in het opdelen naar taken. Dus hoe maak je nou de taak klein genoeg, zonder het zover te verfijnen, dat je uiteindelijk het allemaal weer zelf zit te doen. Het vinden van die balans tussen hoe groot kan iets zijn, dat kon af en toe heel erg lastig zijn. En de balans in van waar programmeer je het zelf uit? Dus doe je zelf wat code parsing, zet je zelf zaken even om met een scriptje, vertaal je dingetjes, en wat doe je met de hand? Die afweging hadden we regelmatig even met het team bespreken. We moeten het volgende probleem oplossen. Waar zit het? AI, handmatig, software development. Ja, heldere aanpak. Ja, was een leuk traject. Ja, dat geloof ik inderdaad. Ik zie je ook stralen als je het erover hebt. Maar het is ook gewoon heel erg mooi om natuurlijk de resultaten te zien en die efficiënt slag die je ermee kan doen. En ook de quirks die waarschijnlijk naar boven komen. De eigenaardigheden van de modellen die je daartegen aankomt, waardoor je nog beter leert wanneer zet ik het een in, wanneer zet ik het ander in. Ja, want een van de grappige dingen is dat wij gebruikten de modellen die onder ChatGPT zitten. Dus GPT-4 hebben we gebruikt. En die heeft nogal de neiging om lui te zijn. Dus als je dan code aanbiedt, en dat kunnen dan meerdere functies zijn, en die moeten dan omgezet worden. Dan doet hij bijvoorbeeld de eerste twee. En dan krijg je de onhebbelijkheid, want ChatGPT kan best wel kwebbelen. Ja. Kwam er ook terug. Ja, en de overige functies op dezelfde manier. Doe je op dezelfde, zet je op dezelfde manier om. Succes. Succes, ja. Nee, dat zou je van je developer krijgen, weet je. Je weet nu hoe het moet. Je weet nu hoe het moet, zoek het lekker zelf uit. Dus met dat soort onhebbelijkheden, daar moet je dan wel mee omgaan. Soms had je ook wel, dat toch niet helemaal de structuur wordt omgezet. Je moet vooral zodanig prompten dat hij ophoudt met al dat geklets. Daar word je op dat stuk echt niet goed van. Dus als dat in je persoonlijke workflow zit, prima. Dan kopieer je gewoon dat stukje eruit wat je nodig hebt. Dan laat je dat begin en dat eind, al dat gedoe, laat je weg. In een geautomatiseerde workflow kan dat natuurlijk niet. Wil je dat niet, dan moet je gewoon zeggen van, alleen die code, alleen dit, alleen die test. Ophouden met uitleg. En dat was af en toe wel een beetje stevig doorprompten. Ja, even goed opvoeden van de AI-developer en die hoedanigheid. Zeker, zeker. Ik schoot een vraag er binnen, maar het schiet ook in één keer weer weg. Hartstikke leuk is dat altijd. Nee, ik weet hem echt niet meer. Geeft niet. Want het mooie was ook die testen. Dank je wel, daar ging het over inderdaad. Je drinkt maar weer, dan komt hij weer. Het ging over testen inderdaad. Wat ik me afvroeg is, je bent begonnen met de oude codebase om te willen zetten naar een nieuwe codebase. Waren de tests al aanwezig op de oude codebase? Of zijn die speciaal gecreëerd om te kunnen testen op de nieuwe codebase? Ja, die zijn speciaal gecreëerd. Dus er was geen enkele test. Dus op dit moment werd alles handmatig getest. Dus als er een wijziging plaatsvond, zat er een heel proces achter van handmatig testen, hopen dat je alles raakt. Dus we hebben juist die testen ook weer gegenereerd. Eigenlijk is een test ook weer een stukje code. Dus het is weer van code naar code, alleen op een wat andere manier. Dus dat ook meegenomen in de workflow. En er eerst voor gezorgd dat die testen goed draaiden op oud. Dat we weten van, ze werken, ze doen het, ze dekken alles. En vanaf dat moment kon je over en kon je ook iedere keer kijken van, hoe doet hij het nieuw? Moeten we misschien wat dingen aanpassen? En zo verfijn je uiteindelijk die hele workflow. Waardoor je op een gegeven moment een optimale workflow hebt om de rest er uiteindelijk ook doorheen te halen. Waar was je het meest in verrast bij de implementatie? Het meest in verrast? Ja, dat is een hele goeie. Misschien toch wel de mate waarin die functionele documentatie best wel menselijk leesbaar kregen. Dus je hebt daar een semi-formele taal voor, Gherkin. Maak je feature files en daar staat eigenlijk van, als ik dit uitvoer met deze data, dan verwacht ik uiteindelijk dit resultaat. Met deze input, ik doe deze actie, verwacht ik deze uitkomst. En dat is voor mensen heel goed leesbaar. Dat verbaast me misschien nog het meest. Dat dat er gewoon zo goed uitkomt. Als we het zelf van tevoren zouden schrijven, zou je het op een ander conceptueel niveau doen. Waardoor het nog beter begrijpbaar is. Maar ik vond van zulke technische code, waar helemaal niets over beschreven is. Dus echt alleen maar de business rules, hoe dat geprogrammeerd is, voor een business analist te lezen taal. Daar was ik me misschien wel het meest verrast over. Ik had ook wel verwacht dat de productiviteit die winst zou kunnen halen. Wij hadden gemikt op 25-30 procent. Dat we daar ruim boven kwamen, dat was ook een enorme verrassing. Dat wil niet zeggen dat dit voor alles geldt. Dat je altijd van code naar code, en je doet het op onze manier, dat je op die 50 tot misschien wel meer uitkomt. Maar dat verraste me behoorlijk. Dan heb je nog niet eens meegenomen in de factor dat, ook door dit vaker te doen, in verschillende contexten, voor verschillende redenen, verschillende implementaties, verschillende code naar code, dat je daar ook efficiënter in wordt. En hopelijk de modellen er ook beter in worden. Je weet nooit of het beter wordt in een nieuwe versie, dus dat zou je ook moeten testen. Daar zou je ook een efficiënte slag in dat werk weer kunnen bekomen. Want het is natuurlijk allemaal hartstikke nieuw. We hebben het voor ons gevoel lang over generatieve AI, maar we hebben het over november 2022, dat de GPT uitkwam, waarbij mensen zijn gaan nadenken over wat ze hier allemaal mee kunnen doen. En dat omzetten van code naar code, dat zijn maar heel weinig bedrijven die dit op dit moment op deze manier aan het doen zijn. Terwijl ik denk de nood gaat toenemen met de COBOL-kennis die afneemt en andere platformen steeds meer low-code oplossingen. Leuk zijn om mee te beginnen, maar nooit de actie hebben gepakt om door te pakken naar het omzetten naar een full code base voor flexibiliteit en doorgroei. Dat we daar ook tegen de limieten soms aanlopen, zie je steeds vaker gebeuren. Ja, en dat zijn nog vrij technische limieten. Dan hebben we nog natuurlijk de vergrijzing, de productiviteit moet omhoog als we dezelfde dingen willen blijven doen. En ja, we hebben in de IT natuurlijk al decennia lang tekorten. En dit komt er allemaal bij, dus je wil versnelling, verbetering, kwaliteitsverbetering. En ik denk dat dit een hele mooie aanpak is om dat voor elkaar te krijgen. Ja, zeker. Toch? Ja. Dus zeg maar even een resumé. Het is traject code naar code. Vooral eigenlijk van je hebt toch wel te maken heel veel in je bedrijf met of verouderde code of code ergens in een systeem zit. Misschien zit dat zelfs in je Visual Basic achter Excel. Ik bedoel, daar zit vaak ook nog heel veel code en je wil dat naar een professionele omgeving brengen, waarbij je beter kan testen, beter kan begrijpen wat er allemaal gebeurt en weer klaar zijn voor de toekomst. Daar kan generatieve AI je ontzettend bij helpen. Zeker, mooi om je af te sluiten Joop. Cool, dankjewel. Leuk dat je weer luistert naar een aflevering van AIToday Live. Wil je geen aflevering missen? Abonneer je dan via je favoriete podcast app. En tot de volgende keer. Tot de volgende keer. [Muziek]