Eer wie eer toekomt.
Deze site is één persoon + een stapel gereedschap + een klein gezelschap mensen van wie ik leer. Ik noem ze hier, zodat het netjes op een rij staat.
Waar het op draait.
- Next.js — App router, server components, de hele site rust erop.
- React
- TypeScript — Strict mode. Elk rood golfje waard.
- Vite — Beide zusterapps (Snoek & Partners, AI-ftershow) draaien op Vite.
- Tailwind CSS — Gebruikt binnen de iframe-games. De hoofdsite draait op plain CSS + tokens.
- lucide-react — Iconen, inclusief die binnen Snoek & Partners.
- ffmpeg — De masteringketen op elke podcastaflevering.
Waar het mee praat.
- Google Gemini — Gemini 2.5 Flash drijft de Prompt Scribe-installatie en de chaos-engine in de game aan.
- Nano Banana (gemini-2.5-flash-image) — Beeldgeneratie voor de 9:16-illustraties bij de artikelen en de Win95-portretten in beide games.
- gemini-3.1-flash-image — Fotorealistische podcastcast — de 8 groepscomposities per aflevering en de 6 solo-portretten. Geconditioneerd op fotografische character sheets; vraagt om een 'fictional cast'-instructie, anders blokkeert de safety guard fotorealistische gezichten.
- Veo 2, Veo 3, Veo 3.1, Omni — Elke clip in het video-models-artikel. Onderwerp van een eigen stuk.
- NotebookLM — Te zien in het Interactivity-artikel; het audio-overzichtpatroon inspireerde het podcastformat.
- ElevenLabs (eleven_v3 Text-to-Dialogue) — Elke synthetische stem op deze site komt uit ElevenLabs Voice Design + de Text-to-Dialogue API. Zeven terugkerende stemmen: Rutger (een kloon van zijn eigen stem), Frits, Dino, Oracle, Angela, Marie, Saar.
- Whisk — Beeldgeneratie geconditioneerd op referenties. Gebruikt in de Character Sheet-tutorial.
Wie je hoort in de podcasts.
De terugkerende podcastgasten zijn verzonnen personages — stem, gezicht en persoonlijkheid zijn allemaal gegenereerd. Niemand van hen is een echt persoon. Rutger is de enige echte stem in de show (een kloon van zijn eigen stem), dus hij staat niet in dit lijstje. Je kunt ze ontmoeten op de podcastpagina.
- Frits — De Nestor — Een vermoeid, briljant archetype van een Nederlandse creative director. Stem: ElevenLabs Voice Design. Portret: gemini-3.1-flash-image.
- Dino — De Creatieve Dinosaurus — Een senior art director die met opzet elke trend heeft overleefd. Stem: ElevenLabs Voice Design. Portret: gemini-3.1-flash-image.
- Oracle — De Strateeg — Een merkstrateeg met voor alles een framework. Stem: ElevenLabs Voice Design. Portret: gemini-3.1-flash-image.
- Angela — De Chief of Staff — De onverstoorbare volwassene die de boel draaiende houdt. Stem: ElevenLabs Voice Design. Portret: gemini-3.1-flash-image.
- Marie — De Merkautoriteit — Dé autoriteit op het gebied van merkenbouw (Binet/Field, Ehrenberg-Bass, Ritson, Nelson-Field, BrandZ); beslecht merkdiscussies in één chirurgische zin. Stem: ElevenLabs Voice Design. Portret: gemini-3.1-flash-image.
- Saar — De Actrice — Een beroemde filmactrice die er zo ongeveer niets van volgt — volledig verzonnen, elke gelijkenis met een echte ster berust op toeval. Stem: ElevenLabs Voice Design. Portret: gemini-3.1-flash-image.
Wat je ziet, gerangschikt naar wat het maakte.
Dezelfde verzameling als hierboven, maar nu geordend op output in plaats van op tool. Per assetklasse: het model, de vastgezette prompttemplate in de repo, en het script dat hem aanstuurt. Opnieuw te draaien — richt een verse checkout op dezelfde prompts en dezelfde output komt er weer uit.
- Hero-portretcyclus (6 fotografisch)
De site heeft drie visuele registers. Dit is het enige met een echte camera. Overal elders geldt: geprompt, daarna gekozen.
- Artikelillustraties (12 × 9:16, donker)
12 kant-en-klare 9:16-prompts, één per artikelfase.
- Win95-personageportretten (15 — 8 boardroom + 7 agent-game)
Microsoft Bob / Encarta '95-register. Karikaturen van echte figuren krijgen de satirische-hernoeming + IMAGE_OTHER-guard-workaround.
- Podcastcast-portretten (8 groepscomposities + 6 solo, 1:1, fotorealistisch)
Donker, redactioneel fotorealistisch register. De 6-hoeks sheets in drop/podcast-character-sheets/ worden bij het renderen als multi-image-referenties meegegeven; --cast rendert de solo-tegels, --comps de groepsscènes (sommige met thematische achtergronden — een keuken, een agent-diagram, een slide-vs-live-scherm).
- Videoclips (Veo-lijn — 8 in sectie 1 + 5 verspreid over andere secties)
Vastgezette prompts voor elke vergelijkingsclip — van begin tot eind opnieuw te draaien.
- Podcastaudio (8 afleveringen — 7 artikelbegeleiders + 1 special)
Sequentiële dialoog uit de Text-to-Dialogue API. De stem van Marie Furie wordt alleen voor korte tussenwerpsels gebruikt (vastgelegd: nooit als enige gast, nooit een monoloog).
- Podcast-overlaplaag (backchannels + gelach over de dialoogbasis)
Over de eleven_v3-basis heen gelegd. Les uit de eerste poging: gelach heeft een echte clou nodig, backchannels werken overal natuurlijk — begin met de backchannels.
- Sitecode (Next.js-app + React server components + TypeScript)
Sessie na sessie pair-programmen. Het zichtbare vakmanschap zit in de kleine dingen — toegankelijke breadcrumbs, OG-cards per route, de 'height: auto !important'-fix voor next/image, JSON-LD per route. Geprompt, daarna gekozen.
- Tekst (artikelen, FAQ-antwoorden, bio's, /how-i-think-items)
Elke alinea doorstaat de Audience Test (Nederlandse CMO / bureau-CEO) of valt af. Geen 'AI Thought Leader'-taal. Een disclaimer over persoonlijke meningen geldt op elke pagina.
Waar het woont.
- Google Cloud Run — Host de Next.js-container in europe-west4.
- Google Cloud Build — Pushes naar main triggeren RTNLPUSH; deploy in één stap.
- Google Secret Manager — Bewaart de Gemini API-key, cross-project gekoppeld vanuit rutger-dml.
Code waar ik uit putte.
De externe GitHub-repo's waar deze site bovenop is gebouwd. Vooral de voorbeelden in google-gemini/cookbook scheelden uren werk aan de render-scripts.
- google-gemini/cookbook — Voorbeelden als referentie voor de Veo- + Nano Banana-render-scripts. Het poll-en-download-patroon in render-clip.py komt hier rechtstreeks vandaan.
- googleapis/python-genai — De Python Gemini SDK die in render-clip.py en de Win95-portretgenerator wordt gebruikt.
- googleapis/js-genai (@google/genai) — JS SDK-conventies voor de /api/gemini-serverroute achter de Prompt Scribe-installatie. Vervangt het inmiddels verouderde google-gemini/generative-ai-js.
- vercel/next.js — Het framework. Alles van app-router-conventies tot next/image leeft stroomafwaarts van deze repo.
- vitejs/vite — Build tool voor beide zusterapps (Snoek & Partners, AI-ftershow). De base-URL-truc waardoor de iframe-game onder /boardroom-game/ wordt gevonden, is een Vite-feature.
Die van mij.
- github.com/rutgertuit/RTNL — Deze site.
- Snoek & Partners (Boardroom_Game) — Zusterrepo. De Nederlandse reclamebureau-roguelite, ingebed via iframe op /creative/boardroom-game.
- AI-ftershow (DML) — Zusterapp. De live Prompt Scribe-installatie is hiervandaan overgezet.
- rutgertuit/Luminary — Voice-first deep-research-agent. Genoemd in het Interactivity-artikel.
Tabbladen die altijd openstaan.
Vier kanalen waar ik steeds op terugkom. Geen van hen heeft hier iets gesponsord; ze bleven gewoon opduiken in mijn feed en in mijn denken.
- Two Minute Papers — What a time to be alive — Károly is sinds 2017 mijn weerbericht voor AI-onderzoek.
- David Ondrej — Scherp over hoe de bouwstack voor agentic AI er week na week echt uitziet.
- Colin and Samir — De beste doorlopende duiding van de creator-economie en het YouTube-platform.
- Yaro / yaroflasher — Montagevakmanschap + creator-leven van iemand die het werk ook echt doet.
En tot slot — aan iedereen die AI gebruikt om méér te doen, en niet om hetzelfde te doen met minder mensen. Dat is het stuk dat dit de moeite waard maakt.
— Rutger