Het is weer tijd voor de jaarlijkse MetaFactory Hackathon!
Deze pagina geeft een overzicht van de activiteiten op Dag 1, gehouden op maandag 11 september. Op deze pagina lees je een live-verslag van Dag 2, dinsdag 12 september.
Dit verslag van de twee dagen geeft een kijkje in de software ontwikkel keuken van MetaFactory.
Klik op de foto’s om te vergroten. Bekijk de vorige Hackathon van oktober 2022.
Liveblog
Start Dag 1: maandag 11 september 2023
Update 9:30 – 10:30 uur
Inloop en koffie.
De twaalf senior developers van MetaFactory hebben er goede zin in, vlnr: Ralph, Bruno, Bart, Kim, David, Dmytro, Olçay, Marnix, Marco, Edward, Tony en Sandra.
Kijk op de Over Ons pagina en leer iedereen kennen.
De teams kiezen uit 12 onderwerpen.
Zes gaan over verbeteringen binnen de MetaFactory Code Composer:
- Create AST for JSON / Create AST for YAML
- Support merging of XML files / Implement AutoHook for XML files
- Introduce JSON code instruction
- Java code tracing flow
- Entities should not have null fields anymore
- Use ‘ignore’ tag to keep custom implementation of method
Een gaat over Code Instructions:
- Create code instructions for Cypress tests
Een gaat over de IntelliJ Plugin:
- Plugin improvements: Save open files prior to running a buildset; Mark buildset(s) as favorite(s); Add toggle for AutoHook mechanism
Een gaat over Java:
- Apply modular monolith + Hexagonal architecture
Twee gaan over Spring:
- Facetted search (Blaze persistence)
- Introduce JHipster 8 Spring Exception features
En een gaat over de toepassing van AI:
- Generate app from text description with AI
Let’s go!

> Marco in opperste concentratie
> Marnix vraagt zich af waar de petjes van Team 5 zijn…
Update 11:30 – 13:30 uur
De teams staan inmiddels als een huis.
Marnix: “Uit een shortlist van 25 via TEAMS aangedragen onderwerpen liepen we tijdens de korte briefing van vanochtend de selectie van twaalf mogelijke projecten door. In no-time gingen vijf teams aan de slag op onze enkele maanden geleden gerenoveerde etage aan de Zekeringstraat 32E, hier in Amsterdam.
We werken met de MetaFactory Code Composer en iedereen krijgt die tool tegenwoordig snel gebruiksklaar om direct mee te kunnen werken. Dat kan nu voornamelijk dankzij de inspanningen van Sandra en Bart, die wekelijks een dag investeren in de doorontwikkeling van de Code Composer. Voorheen duurde inregeling en set-up enkele uren. Nu lukt dat in een kwartier, of ietsje langer, maar geen heel dagdeel meer.
Wat enorm helpt: Bart en Sandra hebben ongeveer een half jaar geleden een ’toverknop’ gemaakt voor de IntelliJ plugin waarmee je alle settings voor een Code Composer project in een keer goed zet: de acht aandachtspunten waar het mis kan gaan, worden nagelopen. Een soort automatische test dus. Ik gebruik het ook regelmatig. Superhandig!
Sleutelen aan de Code Composer doen we ook met de Code Composer.”
Team 1: Kim, Sandra en Ralph zijn druk met traceerbaarheid van Java code binnen de Code Composer (Java Code Tracing Flow). Dit is een vervolg op de uitkomsten van het project van de afgelopen Hackathon van oktober 2022. Dus Meta Programming, code instructies, daar genereren we o.a. Java code mee op basis van modellen en metadata.
Met de traceerbaarheid moeten we kunnen zeggen ‘deze Java file is gemaakt met deze code instructies, met dit model object en met deze metadata’. Ze gaan dus verder met waar ze vorig jaar gebleven zijn. Het is belangrijk voor gebruikers, ook voor onszelf, en voor toekomstige Client Server gebruikers. Binnen deze twee dagen is een werkend POC (Proof of Concept) zeker haalbaar.
Ralph: “Als wij aan een gegenereerd bestand kunnen zien welke code instructie en eventueel welk model object en metadata daaraan gerelateerd zijn, dan is dat een startpunt. Vanavond hopen zij daarvoor een goed startpunt te hebben.”
Team 2: Marco en Edward richten zich op het testen, en met name automatisering daarvan. Zij werken aan nieuwe code instructies om testen te genereren die in ieder geval het basale CRUD (Create, Read, Update, Delete) straatje – een scherm waarmee je die entiteit kunt bewerken, de details kunt zien en weer kunt deleten – om die cyclus in een geautomatiseerde test omzetten.
Normaal gaat dit met de hand, nu moet het met een script gaan. Nu met de ervaren tester Edward erbij in combinatie met de ervaring van Marco, die de code instructies zeer goed kent en zich tijdens zijn laatste detachering in dit onderwerp verdiepte, kan MetaFactory zich nog beter op testing richten.
Deze doorontwikkeling door Team 2 gaat daarbij helpen. Doel is om einde Dag 2 een script gereed te hebben voor in ieder geval de Happy Flow.
Team 3: Bart en Bruno sleutelen aan de Java code die de Code Composer genereert. Er zijn twee wensen: hoe om te gaan met optionele velden (Optionals), en Fluent Setters. Dat laatste is een gemakkelijke manier om Builder Classes te realiseren.
Sinds Java 8 is er de optie Optionals. Een gebruiker kan zien dat een veld ‘null’ kan zijn, en het dwingt af dat je daar mee kunt omgaan. Het doel is dat er minder bugs in de software komen. Het is eigenlijk altijd een programmeerfout. Eigenlijk gaat het dan om het niet correct afhandelen van een situatie die wel is toegestaan. Om dit te voorkomen, werken Bart en Bruno aan een methode om een ‘optionals’ in de Code Composer te bouwen.
Dit zijn twee haalbare functionaliteiten waarvan Team 3 verwacht dit einde Dag 2 op te kunnen leveren.
Team 4: Dmytro gaat aan de slag met AI, Artificial Intelligence.
Marnix: “Zoals iedereen eigenlijk, gebruiken wij developers ook ChatGPT. Een nuttige cobot: mensen die wel ChatGPT kunnen gebruiken gaan mensen vervangen die geen ChatGPT kunnen gebruiken.”
Dmytro wil met ChatGPT een Model XML genereren. Hoe mooi zou het zijn dat ChatGPT op basis van bestaande code een model kan onderkennen?
Een model is eenvoudiger dan de code instructies. We gaan zien welke input ChatGPT nodig heeft om een model te bedenken.
Het is een ambitieus onderwerp en het zou een enorme stap zijn en een hulp voor developers. In ieder geval kun je de tool dingen leren. We kijken hoe ver we kunnen gaan en of de resultaten bevredigend en voor MetaFactory bruikbaar zijn.
De dag eindigde voor Team 4 om half zes en Dmytro presenteerde zijn voortvarende resultaten die alom bewondering oogsten. Dat belooft wat voor Dag 2.

Team 5: David en Olçay zijn beiden database experts en aan het werken in Spring. Hun keuze is ‘Facetted Search (Blaze Persistence)’ of ‘Introduce JHipster 8 Spring Exception features’. Voor beide onderwerpen willen ze moderniseren: dus met Java 17 en gegenereerd met JHipster 8.
Meta programming
Marnix biedt ondersteuning aan de teams en is intensief bezig met de kerncode van Code Composer zelf. Een voorbeeld hiervan is het optimaliseren van de instructie ‘genereer jezelf’ om continu maximale resultaten op te kunnen leveren. Na deze instructie kan Code Composer zichzelf vernieuwen en verbeteren, wat een briljante eigenschap is. Dit kan worden vergeleken met het Expert Systeem binnen AI, waarbij consistent de input van ontwikkelaars wordt toegepast en geleidelijk wordt verbeterd. Het is duidelijk dat dit beter wordt uitgevoerd dan wanneer een ontwikkelaar dit handmatig zou moeten doen.
Marnix: “Dit is echt meta programming en ik ken geen andere tool die dit beter kan. Wat de MetaFactory Code Composer heeft met een model, Freemarker en template engines en een echte AST (Abstract Syntax Tree) is echt uniek. Ons doel is om het ambacht ‘softwareontwikkeling’ te automatiseren. En dat lukt steeds beter.”
Ondertussen op de achtergrond
Tony en Jack zorgen voor de samenhang en coördinatie, regelen de dagelijkse voortgang van de projecten en houden eten, sfeer en drinken op peil. Ondertussen focussen enkele bekwame collega’s zich bij toerbeurt op de muziekinstallatie. Daarover later meer. Pieter verzorgt ’s ochtends thuis de doorlopende sales maar komt ’s middags toch naar kantoor. Sfeertje hier!
Update 16:15
Pub Quiz!
De traditie wil dat Marco de dag breekt met ‘even iets heel anders’. En dat is gelukt. De verschillen tussen de drie teams waren klein, de hilariteit groot: filmtitels raden aan de hand van geblindeerde filmposters, namen van niet-alledaagse sporten en als klap op de vuurpijl popgroepen en idolen in de vorm van een rebus opgebouwd uit iPhone emoticons. Met 29 en 30 juiste antwoorden van de competitie tegen een highscore van 32 won het team van Ralph, Olçay en Bart.
Geen prijzen, wel bier en borrelnootjes. Na de klok van vijven nog even twee uur door onder het genot van de muziek van Modern Talking en The Pet shop Boys.
Update 18:30 uur
Food!
Na de avondmaaltijd gaan de teams met vernieuwde energie door aan hun projecten. In de liveblog van Dag 2 gaan we dieper in op de voortgang en de oplevering en presentatie van de vijf teams.