Gemaakt door mechanische middelen
Een opvallend verschil tussen het werken met Claude en andere productiviteitstools die ik heb gebruikt, is dat verzoeken om nieuwe functies verrassend genoeg niet het belangrijkste discussiepunt zijn. In plaats daarvan willen mensen weten hoe ik Claude gebruik, hoe zij Claude zouden moeten gebruiken en of er coole "magische spreuken" zijn die ik kan delen.
In dit artikel neem ik jullie mee door het proces van het herontwerpen van mijn homepage, zonder dat ik zelf code heb aangeraakt of uitgevoerd, en zonder het gebruik van traditionele Claude Code. Er zijn geen PR's gemaakt en ik heb GitHub niet geopend.
Het proces in een notendop
Ongeveer 60 threads werkten, vaak parallel, aan mijn steeds uitgesprokenere verzoeken. Deze varieerden van het maken van een CGI-parodie op een documentaire van Werner Herzog in Blender tot het vanaf nul synthetiseren van soundtracks. Ondanks de complexiteit vond een aanzienlijk deel van deze orchestratie plaats op mijn telefoon in plaats van op mijn computer; ik hoefde namelijk geen enkele code lokaal uit te voeren. Claude werkte volledig in de cloud.
Ik schrijf dit aan het eind van september 2026 en ik vermoed dat mijn workflow over zes maanden heel anders zal zijn. Zelfs vergeleken met het begin van dit jaar merk ik een groot verschil: mijn werk is nu veel creatiever, minder beperkt door de technologieën die ik beheers, en veel visueler en emotioneler. Voor al dit werk heb ik Opus 5.5 gebruikt.
Ik begon met het aanmaken van een nieuw Claude Project. Projecten worden een laag die Chat, Cowork en Code overspant; je kunt ze zien als een overkoepelende laag boven domeinspecifieke concepten. Je communiceert met één Claude die in staat is om extra sessies op te starten, bestanden en geheugen tussen deze sessies te delen en de volledige vloot van Claudes aanstuurt om doelen te bereiken.
Waar ik begin dit jaar nog zou grappen dat ik veel gedaan krijg door een groep Claudes werk op te dragen, heb ik nu één Claude verantwoordelijk gemaakt voor elk van mijn projecten. Die Claude weet vervolgens hoe hij taken, onderzoeken en threads moet beheren. We praten meer over doelen en minder over hoe we die moeten bereiken.
Elke thread beschikt over een eigen computer in de cloud, waar hij alles installeert wat nodig is (Blender, FFmpeg, Playwright), zijn werk controleert met screenshots van een headless browser en een privé-previewpagina publiceert waar ik doorheen kan klikken. Alle threads delen één map met bestanden en één geheugen. Claude is slim genoeg om beslissingen die ik neem in het geheugen op te schrijven, zodat nieuw gestarte threads deze volgen zonder dat ik mezelf hoef te herhalen.
Brainstormen over een nieuwe richting
Ik begon zoals ik dat met een designteam zou doen: door een hoop inspiratie op tafel te gooien. Dit omvatte rave-posters uit de jaren 90, films waar ik van hou, advertenties die me aanspraken, foto's waar ik steeds naar terugkeer en concepten die ik leuk vind.
Tien threads verkenden deze richtingen parallel met zeer weinig sturing. De één kwam met portfolio-richtingen voor iemand die graag kampeert in nationale parken; een ander stelde zich voor hoe een website van Ghost in the Shell uit de jaren 80 eruit zou zien. Beiden voelden voor mij echter wat te cliché aan. Ik wilde iets nieuws maken, niet simpelweg iets klonen wat al bestond.
Wanneer ik een richting leuk vond, vroeg ik Claude om daarop door te bouwen, creatief te worden en vijf variaties van diezelfde richting te geven.
Hoewel de meeste richtingen HTML, Three.js en andere bibliotheken gebruikten, merkte ik al snel dat ik Claude richting Blender duwde. Claude klikt niet in de interface van Blender, maar schrijft code en gebruikt Blender als een Python-module. Toen ik kortstondig overwoog om mijn website in een gezellig kampeerterrein te veranderen, modelleerde Claude er prompt een.
Gezien mijn voorkeur voor vintage technologie (Game Boys, platenspelers, Walkmans, etc.) en de taak om een creatieve portfolio-galerij te bedenken, stelde Claude uiteindelijk VHS-banden voor.
Samen combineerden we het idee van Claude (VHS-banden) met mijn eigen visie voor de website, inclusief een interactieve versie van het soort kamer dat een journalist in een Duitse film uit de jaren 90 zou hebben. De tweede versie van deze VHS-richting was schokkend goed. De uiteindelijke versie die ik heb gepubliceerd vereiste ongeveer 60 iteraties, maar de tweede draft — die 39 minuten na mijn eerste briefing arriveerde — was al herkenbaar als de kamer die je vandaag ziet.
Al vroeg besloot Claude dat de code modulair moest zijn, zodat threads parallel aan elementen van de kamer konden werken. Als voorbeeld: elke band is een eigen bestand dat op een 2D-canvas tekent.
export default {
id: "notion",
title: "Notion",
years: "2023–2025",
mount({ canvas, ctx, width, height, audio }) {
return {
frame(t, dt) { /* draw one frame */ },
input(event) { /* play, stop, next, prev, click */ },
stop() { /* clean up */ },
};
},
};
Na elke iteratiestap publiceerde Claude een nieuwe versie van een artifact: een privé-webpagina waar ik de huidige versie kon bekijken, zowel op mijn computer als op mijn telefoon. Ik vroeg constant om een paar opties, klikte erdoorheen, gaf kritiek en ging verder met mijn dag. Dit vanaf mijn telefoon doen voelde bijzonder krachtig; ik kon tijdens het fietsen ideeën sturen naar Claude en de resultaten bekijken bij de volgende koffiestop.
De kamer bouwen
De kamer is waarschijnlijk waar ik Claude het meest heb gepusht. Het mooie van LLM-tools is dat ze me in staat stellen dingen te doen die ik voorheen niet kon — ik heb namelijk geen idee hoe je Blender moet gebruiken. Ik beschrijf wat ik wil, Claude schrijft de geometrie als code, rendert een still, en ik geef feedback.
De kamer bestaat nu uit ongeveer 3.000 regels Python-code die Blender als bibliotheek aanstuurt. Enkele van deze scripts zijn:
tape_model.py(332 regels): één VHS-cassette (187 × 103 × 25 mm), als een holle schaal met spoelen, tape, geleiders en een scharnierdeksel.gear90s.py(659 regels): het bureau van een journalist uit de jaren 90. Een telefoon met een microcassette-antwoordapparaat op een telefoonboek, een Rolodex, diskettes, een pager, een zonne-calculator, een Discman en een Walkman, met kabels die achter het bureau naar een stopcontact lopen.retro_pc.py(431 regels): een beige PC-kloon uit eind jaren 80 van een fictief merk, met twee 5,25" drives, een sleutelslot, een rode schakelaar, een 14" groene CRT-monitor op een verstelbare voet en een XT-stijl toetsenbord.room_back.py(290 regels): het deel van de kamer achter de camera, dat je alleen ziet in reflecties en bij vrij kijken: een vierdelige deur met een sleutel in het slot en licht eronder, een bakelieten lichtschakelaar, een stucwerk plafondlijst en een tegelkachel.
Claude besloot zelf wanneer hij het internet moest afzoeken naar vrij gelicentieerde modellen en wanneer hij props vanaf nul moest modelleren. Sommige meubels kwamen van Poly Haven (CC0-licentie), maar de meeste items zijn "made by Claude" — zoals het bureau, de tv & videorecorder, Discman, Walkman, de volledige oude pc en de gehele kamergeometrie. Ook de oppervlaktetexturen zijn code: het hout, stucwerk, plastic en metaal van Claude zijn procedurele noise, geen foto's.
Ik bleef aandringen op een fotorealistische look, wat leidde tot gesprekken over light maps. Real-time belichting in een browser kan het zachte indirecte licht (bounce light) dat ik wilde niet reproduceren. Claude besloot daarom Cycles, de path tracer van Blender, te gebruiken om het licht in texturen te "bakken" (baking).
Dit is een complex proces: elk statisch oppervlak krijgt een tweede UV-set verpakt in atlases, en elke atlas krijgt tot vier maps:
- De kleur zonder licht.
- Het licht van de lampen in de kamer (bureaulamp, stadslicht, maan).
- Het licht van de tv alleen, glanzend wit.
- De kamer met de bureaulamp uitgeschakeld.
De shader kleurt het licht van de tv in op basis van wat de band laat zien; een blauwe band maakt de kamer dus blauw:
vec3 lamps = pow(texture2D(irrA, uv).rgb, vec3(3.0)) * sA; // bureaulamp, stad, maan
vec3 tv = pow(texture2D(irrB, uv).rgb, vec3(3.0)) * sB; // de TV alleen, gebakken wit
vec3 light = lamps + tv * tvColor;
Zaken die bewegen (banden, knoppen, de deur van de VCR, led-lampjes, schermen) zijn niet gebakken, maar worden live belicht.
Voor wie dat interessant vindt: hoewel het cool is om Claude in de cloud te laten werken terwijl ik fiets, profiteert intensief 3D-werk echt van dedicated GPU's. Je kunt je eigen computer aan een thread koppelen via het "+" icoon en "Work Locally" selecteren, zodat Claude jouw computer kan gebruiken voor snellere rendering.
Het uitzicht naar buiten
Ik had zeer specifieke ideeën over hoe de "buitenwereld" eruit moest zien: fotorealistisch en levendig, zonder teveel CPU/GPU-capaciteit van bezoekers te verbruiken. We hebben simpelweg elke mogelijke optie gebouwd.
De eerste placeholder was een foto ("Berlin Skyline" door Billie Grace Ward; CC BY 2.0). Ik dacht slim te zijn door een volledige skyline in Blender te genereren. Het zag er goed uit, maar niet zo goed als de foto, dus heb ik die richting verlaten.
Claude had een beter idee: we gebruikten Depth Anything V2, een open depth-estimation model, en zetten de foto om in een depth map van 50 KB met twee kanalen. Een "zacht" kanaal, zodat masten, signalen en nabijgelegen gebouwen verschuiven ten opzichte van de skyline wanneer de camera beweegt, en een "scherp" kanaal, zodat treinen achter gebouwen kunnen verdwijnen.
Dit gaf ons het beste van beide werelden: de zichtbare foto, maar ook diepte om geanimeerde lichten en treinen mogelijk te maken. Deze worden allemaal door de GPU over de foto heen getekend, tegen bijna geen CPU-kosten.
De nihilistische pinguïn creëren
Mijn favoriete onderdeel van het project was het maken van een parodie op de "nihilistische pinguïn", een scène uit Encounters at the End of the World van Werner Herzog: één pinguïn verlaat de kolonie en loopt alleen het binnenland in, richting de bergen.
Claude en ik begonnen simpel, met een kinderlijke animatie volledig getekend in SVG's. Dit stelde ons in staat om precies te bespreken wat voor soort parodie ik wilde. Toen het idee vaststond, vroeg ik Claude om een CGI-versie te maken die eerst het origineel nauwkeurig nabootste. Claude deed dit zoals een VFX-artiest dat zou doen:
- De scène werd opgedeeld in acht shots, gesneden op de grenzen van het origineel.
- De camera werd frame voor frame gevolgd om elke pan, zoom en het schudden van de handheld camera te matchen.
- De wereld werd gebouwd via code in Blender (de "Blender via Python" aanpak). Dit omvat alles: sneeuw, bergen, grind en pinguïns.
- Er werden 2.787 individuele 640×480 frames gerenderd op 23,976 fps, wat resulteerde in een video van 116 seconden.
Een goede parodie gedijt bij het nauw aansluiten bij het origineel, met een paar kleine details die zijn veranderd: een bureau met een computer op het ijs, een rij bedrijfsvlaggen over het pad van de eenzame pinguïn (één voor elke plek waar ik heb gewerkt), of een grappige verwijzing naar het feit dat ik een blog heb waar ongeveer één keer per jaar een post op verschijnt.
Hoewel Claude uitmuntend was in sound design, probeerde hij aanvankelijk gratis open-source modellen te gebruiken voor de voice-over. Dit werkte, maar de kwaliteit was matig. Daarom nam ik een ElevenLabs Starter-account en gaf ik Claude de API-sleutel.
Muziek synthetiseren
Daarnaast heeft Claude drie soundtracks voor de website vanaf nul gecomponeerd en gesynthetiseerd. Ook hiervoor werd Python gebruikt. Eerst schreef hij een partituur, daarna een synthesizer-engine. Ik heb geen idee hoe je muziek maakt. Toen ik Claude naar zijn aanpak vroeg, antwoordde hij: "Deep Field bestaat uit zes vier-maten akkoorden in Cis mineur (C#m(add9), Amaj7(#11), F#m9, F#m(add9)/G#, C#m(add9), B) over een Cis-drone op 34,6 Hz. Late Shift is een 32-maten AABA songform." Ik heb geen idee wat dat betekent, maar ik kon Claude feedback geven in de stijl van Rick Rubin: "Ik vind dit leuk" of "Nee, maak het... minder enthousiast".
De code niet lezen
Ik denk dat veel engineers een crisis van vertrouwen ervaren: als ik tientallen Claude-threads tegelijk heb draaien, is er geen manier waarop ik al die code kan lezen. En dat is waar: ik lees de code niet. Dit is makkelijker te begrijpen voor mensen die zowel als engineer als engineering manager hebben gewerkt. Als manager moet je manieren vinden om kwaliteit te waarborgen zonder elke wijziging die je mensen maken te reviewen. Ik pas ongeveer dezelfde mechanismen toe: het eisen van rigoureuze processen en metingen, of het inzetten van individuele agenten om dingen kapot te maken (adversarial agents die hun succes ontlenen aan het bewijzen dat de code slecht is).
Meerdere QA-threads reden de site ronde na ronde in een headless browser en schreven ongeveer 3.000 regels bevindingen naar de gedeelde map. De coördinerende Claude ontdekte snel welke andere thread verantwoordelijk was en gaf de bevinding door. De multi-Claude wereld is, zoals blijkt, niet vrij van schuld. De adversarial agents vonden cassettes met blanco labels, overgebleven Duits, links die klikbaar bleven achter kaarten en een race-conditie bij het snel wisselen van tapes. Eén enkele Claude-thread schrijft geen perfecte code, maar een vloot van Claudes die elkaar verantwoordelijk houden, voldoet aan mijn standaard.
Optimalisatie via "Hill Climbing"
Modellen zijn erg goed in hill climbing (stapsgewijze optimalisatie). Door threads specifieke doelen te geven, zoals framerate, draw calls of shadow draws, kom je heel ver.
Je zou denken dat modellen er moeite mee hebben om te bepalen of twee versies van een scène er ongeveer hetzelfde uitzien. Claude bedacht een slimme oplossing: hij maakte vergelijkende screenshots en berekende het pixel-per-pixel verschil. Als je dat vanuit meerdere hoeken doet, heb je een vrij waterdichte methode om te garanderen dat prestatiewinst echte winst is en geen kwaliteitsverlies.
Slotoverwegingen
Ik wil respectvol zijn naar hen die dit lezen met een zwaar hart, in het gevoel dat het schandalig is dat iemand die nooit de pijn heeft doorstaan om de theorie of praktijk van 3D-modellering te leren, plotseling claimt 3D-dingen te bouwen. Ik weet zeker dat je individuele elementen kunt vinden die van lage kwaliteit zijn en ze "slop" kunt noemen, waarbij je wijst op het verschil tussen iets waar ik 24 uur aan heb gewerkt en een kamer die wekenlang nauwgezet met de hand is ontworpen.
Ik heb soortgelijke gevoelens gehoord van engineers, zowel toen Electron de ontwikkeling van desktop-apps makkelijker maakte als tijdens de opkomst van AI-ondersteund programmeren. Ik ben waarschijnlijk een gemiddelde engineer, maar ik ben wel een professional; ik heb aan veel dingen gewerkt die door veel gebruikers zijn gebruikt. In 2026 zou ik mijn website zonder AI niet hebben herbouwd, maar het is grappig dat ik niet eens naar Claude Code greep als specifiek "coding" tool. Ik gebruikte gewoon Claude. Opus 5.5 en de generieke interface hoefden niet te horen dat we hier aan het "coderen" waren.
Het San Francisco Museum of Modern Art had onlangs een prachtige Matisse-tentoonstelling, inclusief een reconstructie van de beroemde Paris Salon d'Automne uit 1905, waar een criticus Matisse en zijn vrienden afdeed als "wilde beesten". Het herinnerde me aan het drama rondom fotografie van 50 jaar eerder, evenvonds rond een van de Paris Salons. De Franse dichter Charles Baudelaire had de felste meningen over fotografie, die in 1859 voor het eerst werd toegelaten tot de Salon. Fotografie als kunst beschouwen was in zijn ogen een symptoom van artistiek verval. Een mechanisch proces als creatief bestempelen was niet alleen fout, maar een bedreiging voor de Franse smaak! Fotografie was volgens hem "het toevluchtsoord van elke wannabe-schilder, elke schilder die te weinig talent heeft of te lui is om zijn studie te voltooien".
Misschien heb ik te weinig talent of ben ik te lui om mijn volledige homepage vanaf nul te herontwerpen. En toch zit ik hier, best trots op mijn nieuwe homepage, volledig gemaakt door mechanische middelen. Ik ben geen Fransman en ik weet niet of ik meer smaak heb dan wie dan ook — maar het is precies zoals ik het in mijn hoofd zag, slechts 48 uur geleden, en ik ben erg enthousiast om het aan mijn vrienden te laten zien.
Groetjes,