{"id":78760,"date":"2025-11-26T11:51:48","date_gmt":"2025-11-26T19:51:48","guid":{"rendered":"https:\/\/dhblog.dream.press\/blog\/?p=78760"},"modified":"2026-01-12T12:23:06","modified_gmt":"2026-01-12T20:23:06","slug":"ik-heb-mijn-oma-leren-vibe-code-dit-is-wat-er-gebeurde-nl","status":"publish","type":"post","link":"https:\/\/www-dev.dreamhost.com\/blog\/nl\/ik-heb-mijn-oma-leren-vibe-code-dit-is-wat-er-gebeurde-nl\/","title":{"rendered":"Ik Heb Mijn Oma Leren Vibe Code (Dit Is Wat Er Gebeurde)"},"content":{"rendered":"<div class=\"tldr-block\" style=\"display: none;\">\n\t<div class=\"svg\">\n\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 119.25 37.8\">\n\t<g>\n\t\t<g>\n\t\t\t<path fill=\"#ffffff\" d=\"M23.4,6.93h-8.1v24.57h-7.2V6.93H0V0h23.4v6.93Z\" \/>\n\t\t\t<path fill=\"#ffffff\" d=\"M45,24.57v6.93h-18.45V0h7.2v24.57h11.25Z\" \/>\n\t\t\t<path fill=\"#ffffff\"\n\t\t\t\td=\"M90.9,15.75c0,8.91-6.61,15.75-15.3,15.75h-12.6V0h12.6c8.68,0,15.3,6.84,15.3,15.75ZM83.97,15.75c0-5.4-3.42-8.82-8.37-8.82h-5.4v17.64h5.4c4.95,0,8.37-3.42,8.37-8.82Z\" \/>\n\t\t\t<path fill=\"#ffffff\"\n\t\t\t\td=\"M105.57,21.15h-3.42v10.35h-7.2V0h12.6c5.98,0,10.8,4.81,10.8,10.8,0,3.87-2.34,7.38-5.81,9.13l6.71,11.56h-7.74l-5.94-10.35ZM102.15,14.85h5.4c1.98,0,3.6-1.75,3.6-4.05s-1.62-4.05-3.6-4.05h-5.4v8.1Z\" \/>\n\t\t<\/g>\n\t\t<path\n\t\t\tfill=\"#0173ec\"\n\t\t\td=\"M53.97,37.8h-5.4l1.8-13.27h7.2l-3.6,13.27ZM49.02,12.55c0-2.34,1.93-4.27,4.27-4.27s4.27,1.94,4.27,4.27-1.93,4.27-4.27,4.27-4.27-1.94-4.27-4.27Z\"\n\t\t \/>\n\t<\/g>\n<\/svg>\n\t<\/div>\n\t<div class=\"tldr-wrap\">\n\t\t\n\n<ul class=\"wp-block-list\">\n<li>Vibe-codering stelt iedereen in staat functionele apps te bouwen door gesprekken met AI, maar <a href=\"https:\/\/cset.georgetown.edu\/publication\/cybersecurity-risks-of-ai-generated-code\/\">48%<\/a> van door AI gegenereerde code bevat beveiligingsfouten.<\/li>\n\n\n\n<li>Mijn oma leren een app te bouwen voor het volgen van haar tuin toonde precies waar vibe-codering slaagt en catastrofaal faalt.<\/li>\n\n\n\n<li>De <a href=\"https:\/\/en.wikipedia.org\/wiki\/Tea_(app)\">2025 TEA app-inbreuk<\/a> liet zien hoe snelle ontwikkeling zonder beveiligingscontrole apps cre\u00ebert die prachtig functioneren, terwijl ze kwetsbaarheden verbergen.<\/li>\n\n\n\n<li>Je kunt snel prototypes bouwen. Ze productieklaar maken vereist expertise.<\/li>\n\n\n<\/ul>\n\n\n\n\n\t<\/div>\n<\/div>\n\n<p>Mijn oma beheerde inventaris spreadsheets voor een textielbedrijf gedurende 40 jaar. Ze berekent samengestelde kortingen in haar hoofd sneller dan de meeste mensen met rekenmachines kunnen, maar heeft geen enkele ervaring met programmeren.&nbsp;<\/p>\n\n\n<p>Toen ik voorstelde om samen een tuintracking-app te bouwen met AI, was haar scepsis bijna onmiddellijk.<\/p>\n\n\n<p>Twee uur later had ze een werkende webapplicatie totdat we om nog een ding vroegen, en de app crashte. Dit is een veelvoorkomend verhaal van vibe-coderen.&nbsp;<\/p>\n\n\n<p>Nu heb ik een kader voor het begrijpen van wat vibe-coding daadwerkelijk levert versus wat het belooft, zodat je voorbij de marketinghype kunt kijken en het product daadwerkelijk kunt gebruiken.&nbsp;<\/p>\n\n\n<h2 id=\"h-first-what-is-vibe-coding\" class=\"wp-block-heading\">Ten Eerste, Wat Is Vibe Coding?<\/h2>\n\n\n<p>Vibe coding is <strong>software bouwen door te beschrijven wat je wilt in gewoon Engels en de AI voor jou de code te laten schrijven.&nbsp;<\/strong><\/p>\n\n\n<p>Voormalig Tesla AI-directeur en medeoprichter van OpenAI Andrej Karpathy bedacht de term in februari 2025 toen hij <a href=\"https:\/\/x.com\/karpathy\/status\/1886192184808149383?lang=en\">tweette<\/a>: &#8220;<em>Er is een nieuw soort coderen dat ik &#8216;vibe coding&#8217; noem, waarbij je je volledig overgeeft aan de vibes, exponenti\u00eblen omarmt en vergeet dat de code zelfs bestaat<\/em>.&#8221;&nbsp;<\/p>\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1600\" height=\"1291\" data-src=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/01_what_is_vibe_coding.webp\" alt=\"Tweet van Andrej Karpathy waarin hij de vibe-coding-benadering beschrijft waarbij hij sterk leunt op AI-coding-assistenten en kopi\u00ebren-en-plakken in plaats van code te begrijpen.\" class=\"wp-image-77857 lazyload\" data-srcset=\"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/01_what_is_vibe_coding.webp 1600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/01_what_is_vibe_coding-300x242.webp 300w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/01_what_is_vibe_coding-1024x826.webp 1024w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/01_what_is_vibe_coding-768x620.webp 768w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/01_what_is_vibe_coding-1536x1239.webp 1536w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/01_what_is_vibe_coding-600x484.webp 600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/01_what_is_vibe_coding-1200x968.webp 1200w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/01_what_is_vibe_coding-730x589.webp 730w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/01_what_is_vibe_coding-1460x1178.webp 1460w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/01_what_is_vibe_coding-784x633.webp 784w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/01_what_is_vibe_coding-1568x1265.webp 1568w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/01_what_is_vibe_coding-877x708.webp 877w\" data-sizes=\"(max-width: 1600px) 100vw, 1600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1600px; --smush-placeholder-aspect-ratio: 1600\/1291;\" \/><\/figure>\n\n\n<p>Het bericht explodeerde met meer dan 5 miljoen weergaven, en legde een ontwikkelingsaanpak vast die al door de techgemeenschap verspreidde.&nbsp;<\/p>\n\n\n<p>In plaats van programmeertalen te leren en te worstelen met syntax, vertel je gewoon aan een AI wat je wilt bouwen. De AI genereert de code. Je wordt een productmanager in plaats van een programmeur, gericht op wat de app moet doen in plaats van hoe je het werkend krijgt.<\/p>\n\n\n<div class=\"article-newsletter article-newsletter--gradient\">\n\n\n<h2>Get Content Delivered Straight to Your Inbox<\/h2><p>Subscribe now to receive all the latest updates, delivered directly to your inbox.<\/p><form class=\"nwsl-form\" id=\"newsletter_block_\" novalidate><div class=\"messages\"><\/div><div class=\"form-group\"><label for=\"input_newsletter_block_\"><input type=\"email\"name=\"email\"id=\"input_newsletter_block_\"placeholder=\"Enter your email address\"novalidatedisabled=\"disabled\"\/><\/label><button type=\"submit\"class=\"btn btn--brand\"disabled=\"disabled\"><span>Sign Me Up!<\/span><svg width=\"21\" height=\"14\" viewBox=\"0 0 21 14\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n<path d=\"M13.8523 0.42524L12.9323 1.34521C12.7095 1.56801 12.7132 1.9304 12.9404 2.14865L16.7241 5.7823H0.5625C0.251859 5.7823 0 6.03416 0 6.3448V7.6573C0 7.96794 0.251859 8.2198 0.5625 8.2198H16.7241L12.9405 11.8535C12.7132 12.0717 12.7095 12.4341 12.9323 12.6569L13.8523 13.5769C14.072 13.7965 14.4281 13.7965 14.6478 13.5769L20.8259 7.39879C21.0456 7.17913 21.0456 6.82298 20.8259 6.60327L14.6477 0.42524C14.4281 0.205584 14.0719 0.205584 13.8523 0.42524Z\" fill=\"white\"\/>\n<\/svg>\n<\/button><\/div><\/form><\/div>\n\n<h3 class=\"wp-block-heading\" id=\"h-why-does-vibe-coding-matter-now\">Waarom Is Vibe-Coding Nu Belangrijk?<\/h3>\n\n\n<p><a href=\"https:\/\/www.mckinsey.com\/capabilities\/people-and-organizational-performance\/our-insights\/five-fifty-the-skillful-corporation\">87% van de bedrijven<\/a> kampen met talenttekorten of verwachten deze binnen enkele jaren, volgens McKinsey.<a href=\"https:\/\/qubit-labs.com\/it-talent-gap-still-growing\/\">&nbsp;<\/a><\/p>\n\n\n<p>AI-codingtools zoals Bolt.new, Lovable, Replit Agent en Cursor beloven dit probleem op te lossen door de productiviteit van bestaande ontwikkelaars te verbeteren en niet-ontwikkelaars in staat te stellen hun idee\u00ebn snel te testen.<\/p>\n\n\n<p>De cijfers ondersteunen de hype:<\/p>\n\n\n<ul class=\"wp-block-list\">\n<li>In maart 2025 onthulde Y Combinator dat <a href=\"https:\/\/techcrunch.com\/2025\/03\/06\/a-quarter-of-startups-in-ycs-current-cohort-have-codebases-that-are-almost-entirely-ai-generated\/\">25% van hun Winter 2025 batch<\/a> voor 95% uit door AI gegenereerde codebases bestond.<\/li>\n\n\n\n<li>In april 2025 onthulde Microsoft CEO Satya Nadella dat <a href=\"https:\/\/www.cnbc.com\/2025\/04\/29\/satya-nadella-says-as-much-as-30percent-of-microsoft-code-is-written-by-ai.html\">20\u201330%<\/a> van de codebasis door AI was geschreven.<\/li>\n\n\n\n<li>Een kwart van de startups<a href=\"https:\/\/techcrunch.com\/2025\/03\/06\/a-quarter-of-startups-in-ycs-current-cohort-have-codebases-that-are-almost-entirely-ai-generated\/\"> in de huidige lichting van YC<\/a> hebben codebases die bijna volledig door AI zijn gegenereerd.\u00a0<\/li>\n\n\n\n<li>Google CEO Sundar Pichai rapporteerde vergelijkbare cijfers en stelde dat <a href=\"https:\/\/blog.google\/inside-google\/message-ceo\/alphabet-earnings-q3-2024\/#search:~:text=Today%2C%20more%20than%20a%20quarter%20of%20all%20new%20code%20at%20Google%20is%20generated%20by%20AI%2C%20then%20reviewed%20and%20accepted%20by%20engineers.%20This%20helps%20our%20engineers%20do%20more%20and%20move%20faster\">meer dan 25% van de code van Google<\/a> door AI gegenereerd is.<\/li>\n\n\n<\/ul>\n\n\n<p>We zijn overgestapt van basis automatisch aanvullen naar het schrijven van complete applicaties met minimaal menselijke input.&nbsp;<\/p>\n\n\n<p>Maar dezelfde functies die vibe coding toegankelijk maken, zoals invoer in natuurlijke taal, autonome codegeneratie en automatische complexiteitsbehandeling, cre\u00ebren serieuze problemen wanneer je app moet groeien voorbij die eerste versie.&nbsp;<\/p>\n\n\n<h3 class=\"wp-block-heading\" id=\"h-what-can-you-actually-build-with-vibe-coding\">Wat Kun Je Daadwerkelijk Bouwen Met Vibe-Coderen?<\/h3>\n\n\n<p>Wanneer je daadwerkelijk kunt bouwen met vibe-coding hangt af van drie dingen:<\/p>\n\n\n<ul class=\"wp-block-list\">\n<li>Hoe complex je applicatie moet zijn<\/li>\n\n\n\n<li>Of je slechte code en beveiligingslekken kunt herkennen<\/li>\n\n\n\n<li>Of je weet wanneer je moet stoppen met het toevoegen van functies<\/li>\n\n\n<\/ul>\n\n\n<p>Als de vereisten van jouw app eenvoudig zijn, en je technische lacunes kan identificeren en onnodige functietoevoegingen kan weerstaan, kan vibe coderen je helpen snel functionele resultaten te leveren.<\/p>\n\n\n<p>Echter, naarmate de complexiteit toeneemt of als je productieklare apps moet bouwen, worden professionele beoordeling en architecturale planning onontkoombaar.<\/p>\n\n\n<p>Mijn oma&#8217;s ervaring met het bouwen van een app voor het volgen van een tuin liet precies zien waar deze grenzen liggen.<\/p>\n\n\n<h2 id=\"h-what-happened-in-hour-one-simple-instructions-worked\" class=\"wp-block-heading\">Wat Gebeurde Er In Het Eerste Uur? Eenvoudige Instructies Werkten<\/h2>\n\n\n<p>Er zijn ten minste een dozijn AI vibe coderingsplatformen zoals Bolt, Lovable, OpenAI Code, Claude Code, Google Opal, enz.<\/p>\n\n\n<p>We zijn begonnen met de <a href=\"https:\/\/developers.openai.com\/codex\/ide\/\">OpenAI Codex-extensie in VS Code<\/a> omdat ik al een abonnement had, maar ik zou aanraden om te beginnen met Bolt.new, Lovable of Vercel voor een meer visuele vibe-coding ervaring.&nbsp;<\/p>\n\n\n<p>Onze eerste opdracht:<em> &#8220;Bouw een app voor het bijhouden van een tuin waarin ik kan opnemen wat ik heb geplant, wanneer ik het heb geplant en hoeveel ik heb geoogst. Voeg een manier toe om te zien welke planten elk seizoen het beste presteerden.&#8221;<\/em><\/p>\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1600\" height=\"1525\" data-src=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/02_our_first_prompt_codex.webp\" alt=\"Cursor AI IDE toont een meerstappenplan voor het bouwen van een tuinvolgapp met takenlijst en chatinterface voor AI-assistentie.\" class=\"wp-image-77858 lazyload\" data-srcset=\"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/02_our_first_prompt_codex.webp 1600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/02_our_first_prompt_codex-300x286.webp 300w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/02_our_first_prompt_codex-1024x976.webp 1024w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/02_our_first_prompt_codex-768x732.webp 768w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/02_our_first_prompt_codex-1536x1464.webp 1536w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/02_our_first_prompt_codex-600x572.webp 600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/02_our_first_prompt_codex-1200x1144.webp 1200w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/02_our_first_prompt_codex-730x696.webp 730w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/02_our_first_prompt_codex-1460x1392.webp 1460w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/02_our_first_prompt_codex-784x747.webp 784w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/02_our_first_prompt_codex-1568x1495.webp 1568w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/02_our_first_prompt_codex-877x836.webp 877w\" data-sizes=\"(max-width: 1600px) 100vw, 1600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1600px; --smush-placeholder-aspect-ratio: 1600\/1525;\" \/><\/figure>\n\n\n<p><strong>Deze prompt werkte omdat het drie cruciale elementen bevatte:<\/strong><\/p>\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Duidelijke gegevensstructuur<\/strong> (plantnaam, plantdatum, oogsthoeveelheid, seizoen)<\/li>\n\n\n\n<li><strong>Gedefinieerde output<\/strong> (prestatievergelijking per seizoen)<\/li>\n\n\n\n<li><strong>Specifieke gebruikssituatiecontext<\/strong> (persoonlijke tuintracking)<\/li>\n\n\n<\/ul>\n\n\n<p>Binnen enkele minuten genereerde Codex een complete applicatie. Het had een SQLite-database met tabellen voor <em>planten, beplantingen en oogsten<\/em>, REST API-eindpunten voor CRUD-operaties, een Python-frontend met datatabellen en invoerformulieren, en basisstyling met CSS.<\/p>\n\n\n<p>Het had zelfs standaard wat demogegevens.<\/p>\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1600\" height=\"1301\" data-src=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/03_generated_application_demo_data_by_default.webp\" alt=\"Interface van de Garden Tracker-app die vier plantenkaarten toont met details voor Aardbei, Komkommer, Tomaat en Basilicum inclusief plantdata en oogstrecords.\" class=\"wp-image-77859 lazyload\" data-srcset=\"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/03_generated_application_demo_data_by_default.webp 1600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/03_generated_application_demo_data_by_default-300x244.webp 300w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/03_generated_application_demo_data_by_default-1024x833.webp 1024w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/03_generated_application_demo_data_by_default-768x624.webp 768w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/03_generated_application_demo_data_by_default-1536x1249.webp 1536w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/03_generated_application_demo_data_by_default-600x488.webp 600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/03_generated_application_demo_data_by_default-1200x976.webp 1200w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/03_generated_application_demo_data_by_default-730x594.webp 730w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/03_generated_application_demo_data_by_default-1460x1187.webp 1460w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/03_generated_application_demo_data_by_default-784x637.webp 784w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/03_generated_application_demo_data_by_default-1568x1275.webp 1568w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/03_generated_application_demo_data_by_default-877x713.webp 877w\" data-sizes=\"(max-width: 1600px) 100vw, 1600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1600px; --smush-placeholder-aspect-ratio: 1600\/1301;\" \/><\/figure>\n\n\n<p>De webapp <em>zag<\/em> er goed uit. Dat is de superkracht van vibe-coderen en tegelijkertijd het grootste gevaar. Maar voordat ik daarop inga, laat me uitleggen wat er daadwerkelijk gebeurt achter de gedachten van Codex. Ik speelde met de app, achterhaalde wat we hadden en wat we nog meer nodig hadden.&nbsp;<\/p>\n\n\n<h3 class=\"wp-block-heading\" id=\"h-what-happened-behind-the-interface\">Wat Gebeurde Er Achter De Interface<\/h3>\n\n\n<p>De gegenereerde code nam architecturale beslissingen voor een applicatie met \u00e9\u00e9n gebruiker. Het databaseschema kon makkelijk nieuwe invoeren verwerken. De API volgde RESTful conventies. De frontend componenten waren logisch gescheiden.&nbsp;<\/p>\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1600\" height=\"802\" data-src=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/04_what_happened_behind_the_interface.webp\" alt=\"Visual Studio Code editor die TypeScript code toont voor een tuinvolg-app met models.ts bestand geopend met Plant en PlantLog interfaces.\" class=\"wp-image-77860 lazyload\" data-srcset=\"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/04_what_happened_behind_the_interface.webp 1600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/04_what_happened_behind_the_interface-300x150.webp 300w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/04_what_happened_behind_the_interface-1024x513.webp 1024w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/04_what_happened_behind_the_interface-768x385.webp 768w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/04_what_happened_behind_the_interface-1536x770.webp 1536w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/04_what_happened_behind_the_interface-600x301.webp 600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/04_what_happened_behind_the_interface-1200x602.webp 1200w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/04_what_happened_behind_the_interface-730x366.webp 730w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/04_what_happened_behind_the_interface-1460x732.webp 1460w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/04_what_happened_behind_the_interface-784x393.webp 784w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/04_what_happened_behind_the_interface-1568x786.webp 1568w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/04_what_happened_behind_the_interface-877x440.webp 877w\" data-sizes=\"(max-width: 1600px) 100vw, 1600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1600px; --smush-placeholder-aspect-ratio: 1600\/802;\" \/><\/figure>\n\n\n<p>Echter, ik merkte dat er standaard geen kritische beveiligingsoverwegingen werden gemaakt. Er was geen invoervalidatie, geen authenticatielaag, geen snelheidsbeperking, geen rekening gehouden met SQL-injectie kwetsbaarheden, en geen encryptie.<\/p>\n\n\n<p><strong>De architectuur van de AI-agent ging uit van een vertrouwde enkele gebruiker in een gecontroleerde omgeving.<\/strong><\/p>\n\n\n<p>Aangezien dit een project was voor mijn oma en voor niemand anders, zijn deze weglatingen beheersbare risico&#8217;s. Echter, voor iedereen die overweegt om vibe-coding te gebruiken om een multi-user webapplicatie te bouwen, zijn dit kritieke beveiligingsrisico&#8217;s die simpelweg niet genegeerd kunnen worden.&nbsp;<\/p>\n\n\n<p>Ik zie vaak discussies hierover op Reddit of PostStatus: ontwikkelaars itereren succesvol op door AI gegenereerde code omdat ze deze lacunes identificeren en passende beveiligingslagen implementeren. Niet-technische gebruikers zien een werkende app en gaan ervan uit dat deze klaar is voor productie.<\/p>\n\n\n<h2 id=\"h-what-happened-in-hour-two-feature-creep-became-obvious\" class=\"wp-block-heading\">Wat Gebeurde Er In Uur Twee? Feature Creep Werd Duidelijk<\/h2>\n\n\n<p>De app werkte zoals bedoeld, en dit doorslaggevende moment hielp haar vertrouwen op te bouwen. Mijn grootmoeder begon na te denken over verbeteringen. Dit is waar de beperkingen van vibe-codering duidelijk worden.<\/p>\n\n\n<p>We hebben een functieverzoek geprobeerd: <em>&#8220;Voeg de mogelijkheid toe om foto&#8217;s van elke plant te uploaden zodat ik kan zien hoe ze eruit zagen in verschillende groeistadia.&#8221;<\/em><\/p>\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1600\" height=\"1298\" data-src=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/05_feature_request_codex.webp\" alt=\"Cursor AI-interface die de voortgang toont bij het implementeren van een foto-uploadfunctie voor planten met taakverdeling en voltooiingsstatus.\" class=\"wp-image-77861 lazyload\" data-srcset=\"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/05_feature_request_codex.webp 1600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/05_feature_request_codex-300x243.webp 300w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/05_feature_request_codex-1024x831.webp 1024w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/05_feature_request_codex-768x623.webp 768w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/05_feature_request_codex-1536x1246.webp 1536w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/05_feature_request_codex-600x487.webp 600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/05_feature_request_codex-1200x974.webp 1200w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/05_feature_request_codex-730x592.webp 730w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/05_feature_request_codex-1460x1184.webp 1460w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/05_feature_request_codex-784x636.webp 784w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/05_feature_request_codex-1568x1272.webp 1568w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/05_feature_request_codex-877x711.webp 877w\" data-sizes=\"(max-width: 1600px) 100vw, 1600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1600px; --smush-placeholder-aspect-ratio: 1600\/1298;\" \/><\/figure>\n\n\n<p>Deze ogenschijnlijk eenvoudige aanvraag veroorzaakte een cascade van architecturale complexiteit.<\/p>\n\n\n<p><strong>Wijzigingen in databaseschema en app-module vereist:<\/strong><\/p>\n\n\n<ul class=\"wp-block-list\">\n<li>Nieuwe fototabel met kolommen: id, plant_id (vreemde sleutel), foto_url, upload_datum, groeifase<\/li>\n\n\n\n<li>Relatiedefinitie tussen planten en foto&#8217;s (\u00e9\u00e9n-op-veel)<\/li>\n\n\n\n<li>Migratiestrategie voor bestaande gegevens<\/li>\n\n\n<\/ul>\n\n\n<p><strong>Aanpassingen aan de backend nodig:<\/strong><\/p>\n\n\n<ul class=\"wp-block-list\">\n<li>Bestand upload endpoint met multipart formulierverwerking<\/li>\n\n\n\n<li>Bestandsopslagoplossing (lokaal bestandssysteem vs. cloudopslag)<\/li>\n\n\n\n<li>Nieuwe API-endpoints voor foto CRUD-operaties<\/li>\n\n\n\n<li>Bestaande plant endpoints bijwerken om fotogegevens te bevatten<\/li>\n\n\n<\/ul>\n\n\n<p><strong>Wijzigingen Aan De Frontend Vereist:<\/strong><\/p>\n\n\n<ul class=\"wp-block-list\">\n<li>Bestandinvoercomponent met slepen-en-neerzetten<\/li>\n\n\n\n<li>Functionaliteit voor afbeeldingsvoorvertoning<\/li>\n\n\n\n<li>Fotogalerij weergave voor elke plant<\/li>\n\n\n\n<li>Bestaande plantenkaarten bijwerken om thumbnails te tonen<\/li>\n\n\n\n<li>Laadtoestanden voor uploadvoortgang<\/li>\n\n\n<\/ul>\n\n\n<p>OpenAI Codex probeerde alles tegelijkertijd uit te voeren. Het nieuwste model GPT5-Codex-High was in staat om dit binnen ~5 minuten na het invoeren van de opdracht te laten werken.&nbsp;<\/p>\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1600\" height=\"1774\" data-src=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/06_codex_cascade_of_architectural_complexity.webp\" alt=\"Garden Tracker plant detail pagina voor komkommer met oogstgeschiedenis van twee registraties, totale oogst van 5.60 lbs, en een sectie voor het uploaden van foto's.\" class=\"wp-image-77862 lazyload\" data-srcset=\"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/06_codex_cascade_of_architectural_complexity.webp 1600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/06_codex_cascade_of_architectural_complexity-271x300.webp 271w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/06_codex_cascade_of_architectural_complexity-924x1024.webp 924w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/06_codex_cascade_of_architectural_complexity-768x852.webp 768w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/06_codex_cascade_of_architectural_complexity-1385x1536.webp 1385w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/06_codex_cascade_of_architectural_complexity-600x665.webp 600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/06_codex_cascade_of_architectural_complexity-1200x1331.webp 1200w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/06_codex_cascade_of_architectural_complexity-730x809.webp 730w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/06_codex_cascade_of_architectural_complexity-1460x1619.webp 1460w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/06_codex_cascade_of_architectural_complexity-784x869.webp 784w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/06_codex_cascade_of_architectural_complexity-1568x1739.webp 1568w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/06_codex_cascade_of_architectural_complexity-877x972.webp 877w\" data-sizes=\"(max-width: 1600px) 100vw, 1600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1600px; --smush-placeholder-aspect-ratio: 1600\/1774;\" \/><\/figure>\n\n\n<p>Het probleem is dat het buggy en onveilige code cre\u00eberde. Dit is wat er mis ging:<\/p>\n\n\n<ul class=\"wp-block-list\">\n<li>De oorspronkelijke structuur van de <em>planten<\/em> tabel is gewijzigd<\/li>\n\n\n\n<li>Frontendcomponenten die naar het oude schema verwezen werkten niet meer<\/li>\n\n\n\n<li>CSS-conflicten tussen nieuwe fotocomponenten en bestaande UI (zoals zichtbaar in de screenshot) traden op<\/li>\n\n\n<\/ul>\n\n\n<p>En toen was er het probleem van overengineering: Codex genereerde een complex systeem met onnodige beeldverwerking en gegevens die voor elke foto werden genomen, enz.&nbsp;<\/p>\n\n\n<p>Elke poging tot herstel introduceerde nieuwe problemen. Werk het databaseschema bij, breek de API. Repareer de API, breek de frontend. Los frontend-problemen op, ontdek nieuwe backend bugs. De codebasis die perfect werkte met 200 regels code besloeg nu 1.500 regels met onderling verbonden afhankelijkheden.<\/p>\n\n\n<h3 class=\"wp-block-heading\" id=\"h-the-non-extensible-architecture-trap\">De Val Van Niet-Uitbreidbare Architectuur<\/h3>\n\n\n<p>De architectuur van de app is geoptimaliseerd <em>alleen<\/em> voor wat we in het eerste uur hebben gevraagd. Met vibe-coding moet je heel specifiek zijn, en dat is het lastige deel voor niet-ontwikkelaars.<\/p>\n\n\n<p>Je zou niet weten wat uitbreidbare architectuur betekent als de AI het zou implementeren.<\/p>\n\n\n<p>Als je een eenvoudige app klaar hebt en deze vervolgens moet uitbreiden, betekent een niet-uitbreidbare architectuur dat je de code vanaf het begin opnieuw moet schrijven voor de AI.&nbsp;<\/p>\n\n\n<p><strong>Architecturale aannames vanaf het eerste uur:<\/strong><\/p>\n\n\n<ul class=\"wp-block-list\">\n<li>Ontwerp met \u00e9\u00e9n tabel (redelijk voor eenvoudige gegevens)<\/li>\n\n\n\n<li>Directe API-naar-database queries (snel voor leesintensieve operaties)<\/li>\n\n\n\n<li>Inline componentdefinities (acceptabel voor kleine UI&#8217;s)<\/li>\n\n\n\n<li>Geen scheiding tussen bedrijfslogica en gegevenstoegang (prima voor eenvoudige CRUD)<\/li>\n\n\n<\/ul>\n\n\n<p><strong>Waarom deze aannames beperkingen werden:<\/strong><\/p>\n\n\n<ul class=\"wp-block-list\">\n<li>Het ontwerp met \u00e9\u00e9n tabel verhinderde een goede relationele gegevensmodellering voor foto&#8217;s<\/li>\n\n\n\n<li>Directe queries vereisten complete herschrijvingen wanneer het schema veranderde<\/li>\n\n\n\n<li>Inline componenten betekenden dat veranderingen door de hele codebasis vloeiden<\/li>\n\n\n\n<li>Geen bedrijfslogica laag betekende dat elke functie de database direct raakte<\/li>\n\n\n<\/ul>\n\n\n<p>We waren voorbij het punt van terugkeer. Er bestond te veel code om op te geven. Elke poging tot reparatie verbruikte meer tokens in een poging om een architectuur te redden die de nieuwe vereisten niet kon ondersteunen.<\/p>\n\n\n<h2 id=\"h-what-happened-in-hour-three-token-exhaustion-and-barely-functional-code-emerged\" class=\"wp-block-heading\">Wat Gebeurde Er In Uur Drie? Token Uitputting En Nauwelijks Functionerende Code Kwamen Tevoorschijn<\/h2>\n\n\n<p>Nadat de foto-uploadfunctie werkte, hebben we extra verbeteringen geprobeerd.<\/p>\n\n\n<ul class=\"wp-block-list\">\n<li>&#8220;Voeg categorie\u00ebn toe voor plantensoorten (groenten, kruiden, bloemen)&#8221;<\/li>\n\n\n\n<li>&#8220;Geef plantadviezen op basis van het seizoen&#8221;<\/li>\n\n\n\n<li>&#8220;Laat me planten als favorieten markeren&#8221;<\/li>\n\n\n<\/ul>\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1600\" height=\"1030\" data-src=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/07_token_exhaustion_and_barely_functional_code.webp\" alt=\"Cursor AI toont de voltooiing van de bouw van de tuinvolgapp met toegevoegde functies waaronder plantcategorie\u00ebn, seizoensaanbevelingen en favorieten met zichtbare code.\" class=\"wp-image-77863 lazyload\" data-srcset=\"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/07_token_exhaustion_and_barely_functional_code.webp 1600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/07_token_exhaustion_and_barely_functional_code-300x193.webp 300w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/07_token_exhaustion_and_barely_functional_code-1024x659.webp 1024w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/07_token_exhaustion_and_barely_functional_code-768x494.webp 768w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/07_token_exhaustion_and_barely_functional_code-1536x989.webp 1536w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/07_token_exhaustion_and_barely_functional_code-600x386.webp 600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/07_token_exhaustion_and_barely_functional_code-1200x773.webp 1200w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/07_token_exhaustion_and_barely_functional_code-730x470.webp 730w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/07_token_exhaustion_and_barely_functional_code-1460x940.webp 1460w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/07_token_exhaustion_and_barely_functional_code-784x505.webp 784w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/07_token_exhaustion_and_barely_functional_code-1568x1009.webp 1568w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/07_token_exhaustion_and_barely_functional_code-877x565.webp 877w\" data-sizes=\"(max-width: 1600px) 100vw, 1600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1600px; --smush-placeholder-aspect-ratio: 1600\/1030;\" \/><\/figure>\n\n\n<p>Elk verzoek volgde hetzelfde patroon: Codex probeerde grondige implementatie voor schijnbaar eenvoudige verzoeken, introduceerde veranderingen die fouten veroorzaakten, cre\u00eberde overontwikkelde oplossingen en verbruikte duizenden tokens om de resulterende bugs op te lossen.<\/p>\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"932\" data-src=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/08_implementations-1024x932.webp\" alt=\"Dashboard van Garden Tracker met seizoensaanbevelingen, een lijst van planten met groenten en acties, en jouw beplantingssectie met kaarten van Komkommer en Basilicum.\" class=\"wp-image-77864 lazyload\" data-srcset=\"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/08_implementations-1024x932.webp 1024w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/08_implementations-300x273.webp 300w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/08_implementations-768x699.webp 768w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/08_implementations-1536x1399.webp 1536w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/08_implementations-600x546.webp 600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/08_implementations-1200x1093.webp 1200w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/08_implementations-730x665.webp 730w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/08_implementations-1460x1330.webp 1460w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/08_implementations-784x714.webp 784w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/08_implementations-1568x1428.webp 1568w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/08_implementations-877x799.webp 877w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/08_implementations.webp 1600w\" data-sizes=\"(max-width: 1024px) 100vw, 1024px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1024px; --smush-placeholder-aspect-ratio: 1024\/932;\" \/><\/figure>\n\n\n<p>De app werkt prima, en mijn oma was tevreden met het resultaat.&nbsp;<\/p>\n\n\n<p>Als ontwikkelaar kon ik echter duidelijk zien dat we qua code op onze laatste benen liepen. Nog een paar functies en de app zou een puinhoop zijn.&nbsp;<\/p>\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"620\" height=\"421\" data-src=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/IMAGE-9.png\" alt=\"SpongeBob meme met Patrick die gefrustreerd is aan de computer met de tekst Werkt het? en Nee, het is kapot, maar maak het niet kapot.\" class=\"wp-image-77865 lazyload\" data-srcset=\"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2025\/11\/IMAGE-9.png.webp 620w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/IMAGE-9-300x204.png 300w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2025\/11\/IMAGE-9-600x407.png.webp 600w\" data-sizes=\"(max-width: 620px) 100vw, 620px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 620px; --smush-placeholder-aspect-ratio: 620\/421;\" \/><\/figure>\n\n\n<p>via <a href=\"https:\/\/imgflip.com\/i\/tc9hy\">Imgflip<\/a><\/p>\n\n\n<h3 class=\"wp-block-heading\" id=\"h-why-is-this-such-a-common-problem\">Waarom Is Dit Zo&#8217;n Veelvoorkomend Probleem?<\/h3>\n\n\n<p>Coderingsagenten zijn gewoon grote taalmodellen die &#8220;gevraagd&#8221; worden om code te produceren.&nbsp;<\/p>\n\n\n<p>Dus ze hebben alle problemen die reguliere grote taalmodellen hebben, inclusief:<\/p>\n\n\n<ul class=\"wp-block-list\">\n<li>Niet specifiek zijn over wat er van hen verwacht wordt<\/li>\n\n\n\n<li>Verzinnen van willekeurige functieaanroepen (hallucinaties)<\/li>\n\n\n\n<li>Gecompliceerde code schrijven voor simpele doelen<\/li>\n\n\n<\/ul>\n\n\n<p>Ook naarmate de chatgeschiedenis groeit, bereiken codeeragenten hun <a href=\"https:\/\/www.ibm.com\/think\/topics\/context-window\">contextvensterlimieten<\/a>.&nbsp;<\/p>\n\n\n<ul class=\"wp-block-list\">\n<li>Oorspronkelijke architectuur beslissingen en hun redenen<\/li>\n\n\n\n<li>Latere wijzigingen en hun onderlinge afhankelijkheden<\/li>\n\n\n\n<li>Huidige bugs en hun hoofdoorzaken<\/li>\n\n\n\n<li>Gewenste functionaliteit voor nieuwe functies<\/li>\n\n\n<\/ul>\n\n\n<p>Elke nieuwe opdracht werd ge\u00efsoleerd ge\u00efnterpreteerd zonder een volledig begrip van de architectuurgeschiedenis. De AI stelde oplossingen voor die logisch waren voor individuele functies, maar systemische conflicten veroorzaakten wanneer ze werden ge\u00efntegreerd met bestaande code.<\/p>\n\n\n<p>Deze <a href=\"https:\/\/www.reddit.com\/r\/ClaudeAI\/comments\/1kivv0w\/the_ultimate_vibe_coding_guide\/\">Reddit-gids benadrukt<\/a>: <em>&#8220;Wanneer de chat erg groot wordt, open dan gewoon een nieuwe. Het contextvenster van de AI is beperkt. Als de chat erg groot is, zal het alles wat eerder is gezegd vergeten, geen patronen en ontwerp meer herkennen, en beginnen met het produceren van slechte resultaten.&#8221;<\/em><\/p>\n\n\n<p>Maar het openen van een nieuwe chat betekende het verliezen van alle context over wat bestond. Het verstrekken van die context verbruikte tokens. Zelfs met een &#8220;samengevatte&#8221; context missen we nog steeds belangrijke details als het gaat om code.&nbsp;<\/p>\n\n\n<h3 class=\"wp-block-heading\" id=\"h-we-faced-the-tea-app-problem-at-a-smaller-scale\">We Zijn Het TEA App Probleem Op Kleinere Schaal Tegengekomen<\/h3>\n\n\n<p>De TEA-app toonde dit exacte falenpatroon op productieschaal. Gelanceerd in 2023 als een platform voor vrouwenveiligheid, schaalde het snel naar 1,6 miljoen gebruikers.&nbsp;<\/p>\n\n\n<p><strong>Daarna, in juli 2025, faalde het catastrofaal:<\/strong><\/p>\n\n\n<ul class=\"wp-block-list\">\n<li><strong>De Inbreuk:<\/strong> Beveiligingsonderzoekers ontdekten een onbeveiligde Firebase-opslagbucket met 72.000 gebruikersafbeeldingen, inclusief 13.000 verificatieselfies en overheids-ID&#8217;s. Een tweede database legde 1,1 miljoen priv\u00e9berichten bloot.<\/li>\n\n\n\n<li><strong>De Technische Tekortkomingen:<\/strong> API-sleutels hard gecodeerd in broncode, Firebase bucket openbaar toegankelijk zonder authenticatie, geen runtime-beveiligingen en geen beveiligingsreviewlaag. Experts koppelden deze kwetsbaarheden aan vibe-codeerpraktijken, waarbij de snelheid van functieontwikkeling de beveiligingsarchitectuur overschaduwde.<\/li>\n\n\n\n<li><strong>Het Resultaat:<\/strong> Een anonieme 4chan-poster ontdekte en deelde downloadtools. Collectieve rechtszaken ingediend binnen 48 uur. Het platform werd gesloten. Gemiddelde kosten van een inbreuk: $4,88 miljoen.<\/li>\n\n\n<\/ul>\n\n\n<p>De mislukking van TEA vertoont hetzelfde patroon dat we op zo&#8217;n kleine schaal ervaren, wat me doet afvragen waarom mensen AI-gegenereerde code niet verifi\u00ebren.&nbsp;<\/p>\n\n\n<p>We hadden een initi\u00eble implementatie die goed werkte; echter, toevoegingen van functies compliceerden de architectuur, beveiligingsoverwegingen werden over het hoofd gezien voor nieuwe functionaliteit, en systemische kwetsbaarheden bleven onbewust openstaan voor exploitatie.<\/p>\n\n\n<h2 id=\"h-how-to-vibe-code-without-experiencing-the-same-problems-we-did\" class=\"wp-block-heading\">Hoe Code Te Vibren Zonder Dezelfde Problemen Te Ervaren Als Wij<\/h2>\n\n\n<p>Als je geen ontwikkelaar bent, is het onmogelijk om de problemen helemaal te vermijden. Er zijn echter manieren om problemen te minimaliseren.&nbsp;<\/p>\n\n\n<h3 class=\"wp-block-heading\" id=\"h-1-start-with-ruthless-feature-minimalism\">1. Begin Met Rigoureuze Functieminimalisme<\/h3>\n\n\n<p>Bepaal de absoluut minimale set functies voordat je de eerste opdracht schrijft, maar weersta altijd de verleiding om functies toe te voegen tijdens de initi\u00eble ontwikkeling.<\/p>\n\n\n<p><strong>Effectief Scoping Framework:<\/strong><\/p>\n\n\n<ol class=\"wp-block-list\">\n<li>Maak een lijst van alle gewenste functies<\/li>\n\n\n\n<li>Identificeer de 3-5 functies die je kernhypothese bevestigen<\/li>\n\n\n\n<li>Bouw alleen die functies in versie \u00e9\u00e9n<\/li>\n\n\n\n<li>Lanceer, valideer en itereer<\/li>\n\n\n<\/ol>\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><em>Geef geen opdrachten zoals, &#8216;Bouw deze hele functie voor mij.&#8217; De AI zal hallucineren en verschrikkelijke code produceren. Breek elke functie op in ten minste 3\u20135 opeenvolgende verzoeken.<\/em><\/p>\n\n\n<\/blockquote>\n\n\n<p>Als je de minimale functieset niet kunt identificeren, gebruik dan de &#8220;<strong>Planmodus<\/strong>&#8221; of &#8220;<strong>Chatmodus<\/strong>&#8221; die beschikbaar is in de meeste AI-programmeertools.&nbsp;<\/p>\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1600\" height=\"1715\" data-src=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/10_claude_plan_mode.webp\" alt=\"Claude Code interface toont lege staat met pixel art-karakter en de aanwijzing om \/model te typen om de AI-codetool te selecteren.\" class=\"wp-image-77866 lazyload\" data-srcset=\"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/10_claude_plan_mode.webp 1600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/10_claude_plan_mode-280x300.webp 280w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/10_claude_plan_mode-955x1024.webp 955w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/10_claude_plan_mode-768x823.webp 768w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/10_claude_plan_mode-1433x1536.webp 1433w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/10_claude_plan_mode-600x643.webp 600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/10_claude_plan_mode-1200x1286.webp 1200w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/10_claude_plan_mode-730x782.webp 730w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/10_claude_plan_mode-1460x1565.webp 1460w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/10_claude_plan_mode-784x840.webp 784w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/10_claude_plan_mode-1568x1681.webp 1568w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/10_claude_plan_mode-877x940.webp 877w\" data-sizes=\"(max-width: 1600px) 100vw, 1600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1600px; --smush-placeholder-aspect-ratio: 1600\/1715;\" \/><\/figure>\n\n\n<p>Dit stelt je in staat om in natuurlijke taal aan de agent te vertellen wat je wilt, en laat AI uitvogelen hoe de app in individuele functies of bestanden op te delen.&nbsp;<\/p>\n\n\n<h3 class=\"wp-block-heading\" id=\"h-2-commit-to-git-after-every-working-feature\">2. Commit Naar Git Na Elk Werkend Kenmerk<\/h3>\n\n\n<p>Voor een niet-ontwikkelaar kan versiebeheer ingewikkeld klinken, maar het is een noodzakelijke toevoeging. Git is een tool voor versiebeheer die herstelpunten cre\u00ebert wanneer toevoegingen van functies bestaande functionaliteit onderbreken.&nbsp;<\/p>\n\n\n<p><strong>Git-werkstroom voor vibe-codering:<\/strong><\/p>\n\n\n<ol class=\"wp-block-list\">\n<li>Initialiseer de repository voor de eerste prompt<\/li>\n\n\n\n<li>Commit na de initi\u00eble werkende versie<\/li>\n\n\n\n<li>Maak een nieuwe branch voor elke functietoevoeging<\/li>\n\n\n\n<li>Commit regelmatig tijdens de ontwikkeling van de functie<\/li>\n\n\n\n<li>Test grondig voor het samenvoegen naar de hoofdbranch<\/li>\n\n\n<\/ol>\n\n\n<p>Je kunt de door jou gekozen coderingsagent vragen dit voor je te doen als je niet vertrouwd bent met <a href=\"https:\/\/www.dreamhost.com\/blog\/git-commands\/\">Git-opdrachten<\/a>.&nbsp;<\/p>\n\n\n<h3 class=\"wp-block-heading\" id=\"h-3-design-for-extension-in-initial-prompts\">3. Ontwerp Voor Uitbreiding In Eerste Prompts<\/h3>\n\n\n<p>Je eerste opdracht bepaalt de codebasis. Eenvoudige opdrachten geven je alleen een werkende app totdat je om nieuwe functies vraagt.&nbsp;<\/p>\n\n\n<p>Vraag in plaats daarvan vanaf het begin om een uitbreidbare architectuur.&nbsp;<\/p>\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Ineffectieve initi\u00eble opdracht:<\/strong> &#8220;Bouw een app voor het volgen van je tuin waarin je kunt vastleggen wat je hebt geplant en geoogst.&#8221;<\/li>\n\n\n\n<li><strong>Effectieve initi\u00eble opdracht:<\/strong> &#8220;Bouw een app voor het volgen van je tuin met een uitbreidbaar databaseschema dat toekomstige functies kan ondersteunen. Gebruik een modulaire architectuur waarbij frontend componenten, API-endpoints en databasetoegang gescheiden zijn. Includeer duidelijke documentatie van het schema en de API-structuur voor toekomstige aanpassingen.&#8221;<\/li>\n\n\n<\/ul>\n\n\n<p>Dit verhoogt in eerste instantie het tokengebruik. Echter, wanneer je nieuwe functies begint toe te voegen, hoeft de AI geen tokens te verspillen aan het herstructureren van de oude code om aanvragen te verwerken.&nbsp;<\/p>\n\n\n<h3 class=\"wp-block-heading\" id=\"h-4-choose-tools-based-on-architectural-stability\">4. Kies Gereedschap Op Basis Van Architecturale Stabiliteit<\/h3>\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Bolt.new, Replit agent, en Lovable:<\/strong> Uitstekend voor prototypes van \u00e9\u00e9n sessie en gemakkelijke uitrol. Slecht voor toevoegingen van functies over meerdere sessies. De architectuur wordt geleidelijk fragieler bij elke wijziging.<\/li>\n\n\n\n<li><strong>Claude\/OpenAI\/Gemini coding agents:<\/strong> Soms nuttig voor complexe codering, maar kan gecompliceerder aanvoelen vergeleken met de visuele web-apps die we eerder hebben gezien.<\/li>\n\n\n\n<li><strong>DreamHost Liftoff:<\/strong> Geweldig als een WordPress-fundament met bewezen uitbreidingspatronen. WordPress-architectuur is ontworpen voor modificatie en plugin-toevoegingen. Dit lost het probleem van de niet-uitbreidbare architectuur op door te beginnen met een beproefde uitbreidbare basis.<\/li>\n\n\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-5-implement-security-from-hour-one\">5. Implementeer Beveiliging Vanaf Het Eerste Uur<\/h3>\n\n\n<p>Net als uitbreidbaarheid wil je beveiliging integreren vanaf de eerste prompt. Dus, naast het vragen om een uitbreidbare, modulaire architectuur, wil je ook beveiliging als prioriteit toevoegen aan de initi\u00eble prompt.<\/p>\n\n\n<p><strong>Hier is een voorbeeld van hoe ik beveiliging zou toevoegen in de eerste opdracht:<\/strong> <em>&#8220;Bouw een tuinvolg-app met bcrypt wachtwoordhashing, invoervalidatie voor alle velden, geparametriseerde SQL-query&#8217;s om injectieaanvallen te voorkomen, snelheidsbeperkingen op alle API-eindpunten, en geheimen opgeslagen in omgevingsvariabelen die nooit worden blootgesteld aan frontend code.&#8221;<\/em><\/p>\n\n\n<p><strong>Als je een app ontwikkelt die gericht is op klanten, zijn hier een paar dingen om rekening mee te houden:<\/strong><\/p>\n\n\n<ul class=\"wp-block-list\">\n<li>Vertrouw nooit op klantgegevens\u2014valideer en zuiver aan de serverkant<\/li>\n\n\n\n<li>Bewaar geheimen in omgevingsvariabelen<\/li>\n\n\n\n<li>Controleer de permissies voor elke actie<\/li>\n\n\n\n<li>Gebruik algemene foutmeldingen\u2014gedetailleerde logboeken alleen voor ontwikkelaars<\/li>\n\n\n\n<li>Implementeer eigendomscontroles om ongeautoriseerde gegevens toegang te voorkomen<\/li>\n\n\n\n<li>Bescherm API&#8217;s met snelheidslimieten<\/li>\n\n\n<\/ul>\n\n\n<p>Begrijpen <a href=\"https:\/\/www.dreamhost.com\/blog\/guide-to-generative-ai\/\">hoe generatieve AI werkt<\/a> helpt je te herkennen wanneer AI beveiligingsaannames maakt die kwetsbaarheden cre\u00ebren.<\/p>\n\n\n<h3 class=\"wp-block-heading\" id=\"h-6-know-when-to-start-fresh-vs-continue\">6. Weten Wanneer Je Opnieuw Moet Beginnen vs. Doorgaan<\/h3>\n\n\n<p>Herken de signalen dat doorgaan tokens zal verspillen.<\/p>\n\n\n<p><strong>Begin opnieuw wanneer:<\/strong><\/p>\n\n\n<ul class=\"wp-block-list\">\n<li>Tokenverbruik overschrijdt 300k zonder werkende functies<\/li>\n\n\n\n<li>Elke bugfix introduceert twee nieuwe bugs<\/li>\n\n\n\n<li>Architectuurwijzigingen verbreken meerdere bestaande functies<\/li>\n\n\n\n<li>Chatgeschiedenis overschrijdt 30 uitwisselingen<\/li>\n\n\n\n<li>Je kunt de huidige codebase-architectuur niet uitleggen<\/li>\n\n\n<\/ul>\n\n\n<p><strong>Ga verder wanneer:<\/strong><\/p>\n\n\n<ul class=\"wp-block-list\">\n<li>Nieuwe functies integreren naadloos met bestaande code<\/li>\n\n\n\n<li>Bugfixes lossen problemen op zonder bijwerkingen<\/li>\n\n\n\n<li>Tokenverbruik blijft binnen budgetten<\/li>\n\n\n\n<li>Architectuur blijft begrijpelijk<\/li>\n\n\n<\/ul>\n\n\n<p>Wanneer de AI het fout heeft en de verkeerde kant op gaat, is terugkeren, de opdracht wijzigen en opnieuw versturen veel beter dan deze waardeloze code af te maken.<\/p>\n\n\n<h3 class=\"wp-block-heading\" id=\"h-7-review-with-ai-security-analysis\">7. Beoordeling Met AI Beveiligingsanalyse<\/h3>\n\n\n<p>Na het bouwen van de kernfunctionaliteit, kopieer de volledige codebasis naar Gemini 2.5 Pro voor een uitgebreide beveiligingsanalyse. Ik geef de voorkeur aan dit taalmodel vanwege zijn grote contextvenster van twee miljoen tokens, zodat je de gehele codebasis erin kunt verplaatsen.&nbsp;<\/p>\n\n\n<p><strong>Beveiligingsreview prompt:<\/strong> <em>&#8220;Handel als een beveiligingsexpert. Analyseer deze volledige codebasis op kwetsbaarheden. Identificeer risico&#8217;s van SQL-injectie, XSS-kwetsbaarheden, authenticatiezwakheden, autorisatiegebreken, blootstelling van inloggegevens en eventuele OWASP Top 10-problemen. Geef specifieke code locaties en aanbevelingen voor herstel.&#8221;<\/em><\/p>\n\n\n<p>Dit benadert een professionele beveiligingscontrole voor een fractie van de kosten.&nbsp;<\/p>\n\n\n<p>Het is onvoldoende voor productie-implementatie, maar het identificeert catastrofale fouten in prototypes voordat ze gebruikers bereiken.<\/p>\n\n\n<h2 id=\"h-when-does-vibe-coding-make-business-sense\" class=\"wp-block-heading\">Wanneer Is Vibe-Coding Zakelijk Zinvol?<\/h2>\n\n\n<p>Je hoeft vibe-codering niet helemaal aan de kant te zetten, alleen omdat het nu geen ingewikkelde applicaties kan maken. Hier zijn een paar gevallen waarin ik denk dat een vibe-gecodeerde prototype of app daadwerkelijk zinvol is.<\/p>\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Snelle Conceptvalidatie:<\/strong> Bouw prototypes binnen enkele uren om marktinteresse te testen. Gemiddelde validatiekosten gedaald van $15.000\u2013$100.000+ naar onder de $500. Gebruik vibe-codering om te beantwoorden: &#8220;Willen klanten dit genoeg om het te gebruiken?&#8221;<\/li>\n\n\n\n<li><strong>Automatisering Van Interne Processen:<\/strong> Bied tools voor je team waarbij jij de toegang controleert en een hogere risicotolerantie accepteert omdat de schade beperkt blijft. Interne tools kunnen naar beveiliging evolueren in plaats van vanaf dag \u00e9\u00e9n beveiligd te moeten zijn.<\/li>\n\n\n\n<li><strong>Voorontwikkelingsspecificatie:<\/strong> Begrijp vereisten voordat je<a href=\"https:\/\/www.dreamhost.com\/blog\/how-to-hire-web-developer\/\"> ontwikkelaars inhuurt<\/a> om kostbare miscommunicatie te verminderen. Vibe-gecodeerde prototypes dienen als interactieve vereistendocumenten.<\/li>\n\n\n\n<li><strong>MVP Voor Fondsenwerving:<\/strong> Demonstreer functionaliteit aan investeerders terwijl je transparant bent over technische volwassenheid. Veel startups gebruiken vibe-gecodeerde MVP&#8217;s om startkapitaal te beveiligen, waarna ze het opnieuw opbouwen met professionele teams.<\/li>\n\n\n<\/ul>\n\n\n<h3 class=\"wp-block-heading\" id=\"h-when-professional-development-becomes-non-negotiable\">Wanneer Professionele Ontwikkeling Onontkoombaar Wordt<\/h3>\n\n\n<p>Klantgerichte applicaties die gebruikersgegevens verwerken, vereisen een professionele beveiligingsbeoordeling. De kosten van een onjuiste beveiligingsimplementatie overtreffen alle besparingen van vibe-codering.<\/p>\n\n\n<p>Sommige gevallen waarin je professionele beoordeling nodig hebt zijn:&nbsp;<\/p>\n\n\n<ul class=\"wp-block-list\">\n<li>Authenticatie voor meerdere gebruikers<\/li>\n\n\n\n<li>Betalingsverwerking<\/li>\n\n\n\n<li>Opslag van persoonlijke informatie<\/li>\n\n\n\n<li>Implementatie voor publiek gebruik<\/li>\n\n\n\n<li>Situaties die voldoen aan nalevingsvereisten (zoals GDPR, CCPA, HIPAA)<\/li>\n\n\n<\/ul>\n\n\n<p>De CEO van Microsoft onthulde dat <a href=\"https:\/\/www.cnbc.com\/2025\/04\/29\/satya-nadella-says-as-much-as-30percent-of-microsoft-code-is-written-by-ai.html\">30% van de code van het bedrijf<\/a> nu door AI gegenereerd is. Google meldde <a href=\"https:\/\/abc.xyz\/investor\/events\/event-details\/2025\/2025-Q1-Earnings-Call\/\">vergelijkbare cijfers<\/a>. Beide handhaven uitgebreide beveiligingsreviewprocessen, geautomatiseerd testen en menselijk toezicht.&nbsp;<\/p>\n\n\n<p>Productie-implementatie vereist vergelijkbare beschermingsmaatregelen, ongeacht de methode van codegeneratie.<\/p>\n\n\n<p>Het begrijpen <a href=\"https:\/\/www.dreamhost.com\/blog\/will-ai-replace-developers\/\">of AI ontwikkelaars zal vervangen<\/a> helpt bij het stellen van realistische verwachtingen over wat je veilig alleen kunt bouwen en implementeren. Verken de <a href=\"https:\/\/www.dreamhost.com\/blog\/best-online-resources-learn-to-code\/\">beste online bronnen om te leren programmeren<\/a> om de kloof te overbruggen tussen het ontwikkelen van prototypes en systemen die klaar zijn voor productie.<\/p>\n\n\n<h2 id=\"h-faqs-about-vibe-coding\" class=\"wp-block-heading\">Veelgestelde Vragen Over Vibe Coding<\/h2>\n\n\n<h3 class=\"wp-block-heading\" id=\"h-what-is-vibe-coding-and-how-is-it-different-from-traditional-programming\">Wat is vibe-codering en hoe verschilt het van traditioneel programmeren?<\/h3>\n\n\n<p>Vibe-coderen is het proces van het bouwen van applicaties door vereisten in gewoon Engels te beschrijven aan een AI, die de code voor je genereert. In tegenstelling tot traditioneel programmeren, dat kennis van programmeertalen vereist, verschuift vibe-coderen de focus naar productbeheer en intentie in plaats van handmatig coderen.<\/p>\n\n\n<h3 class=\"wp-block-heading\" id=\"h-can-non-developers-build-production-ready-apps-using-vibe-coding\">Kunnen niet-ontwikkelaars productieklare apps bouwen met behulp van vibe-codering?<\/h3>\n\n\n<p>Hoewel vibe-coding niet-ontwikkelaars in staat stelt snel functionele apps te prototypen, ontbreekt het aan de meeste door AI gegenereerde codes aan de beveiliging en robuustheid die nodig zijn voor productie-implementatie. Dat gezegd hebbende, zijn prototypes die met vibe-coding zijn gemaakt geweldig voor conceptvalidatie.<\/p>\n\n\n<h3 class=\"wp-block-heading\" id=\"h-what-are-the-biggest-risks-of-using-ai-generated-code-for-app-development\">Wat zijn de grootste risico&#8217;s van het gebruik van door AI gegenereerde code voor app-ontwikkeling?<\/h3>\n\n\n<p>De meest significante risico&#8217;s omvatten beveiligingsfouten (zoals het ontbreken van validatie, authenticatie, snelheidsbeperking en bescherming tegen SQL-injectie), niet-uitbreidbare architectuur en functietoename die leidt tot kwetsbare of defecte systemen. De TEA app inbreuk is een voorbeeld van snelle ontwikkeling zonder de juiste beveiligingscontrole, resulterend in catastrofale gevolgen.<\/p>\n\n\n<h3 class=\"wp-block-heading\" id=\"h-when-does-it-make-sense-to-use-vibe-coding-for-real-business-projects\">Wanneer Is Het Zinvol Om Vibe Coding Te Gebruiken Voor Echte Bedrijfsprojecten?<\/h3>\n\n\n<p>Vibe-codering is ideaal voor snelle prototyping, interne tools, pre-ontwikkelingsspecificaties (vereistenverzameling) en MVP&#8217;s voor fondsenwerving. Investeer echter altijd in professionele ontwikkeling en beveiligingscontroles voor klantgerichte apps of apps die gevoelige gegevens verwerken.<\/p>\n\n\n<h2 id=\"h-the-bottom-line-know-your-architectural-limits\" class=\"wp-block-heading\">De Kern: Ken Je Architecturale Grenzen<\/h2>\n\n\n<p>Mijn grootmoeder onderhoudt haar vereenvoudigde tuintracker voor persoonlijk gebruik. Ze heeft ook functionele analyses toegevoegd (de knop in de navigatiebalk ging eerder nergens naartoe) om te zien hoe haar tuin presteert.&nbsp;<\/p>\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1600\" height=\"1572\" data-src=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/11_functional_analytics.webp\" alt=\"Dashboard die de prestatieanalyse van planten toont met gegevens van twee seizoenen, met de nadruk op 22 basilicumoogsten in de lente en 5,6 pond komkommers in de zomer\" class=\"wp-image-77867 lazyload\" data-srcset=\"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/11_functional_analytics.webp 1600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/11_functional_analytics-300x295.webp 300w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/11_functional_analytics-1024x1006.webp 1024w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/11_functional_analytics-768x755.webp 768w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/11_functional_analytics-1536x1509.webp 1536w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/11_functional_analytics-600x590.webp 600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/11_functional_analytics-1200x1179.webp 1200w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/11_functional_analytics-730x717.webp 730w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/11_functional_analytics-1460x1434.webp 1460w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/11_functional_analytics-784x770.webp 784w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/11_functional_analytics-1568x1541.webp 1568w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/11_functional_analytics-877x862.webp 877w\" data-sizes=\"(max-width: 1600px) 100vw, 1600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1600px; --smush-placeholder-aspect-ratio: 1600\/1572;\" \/><\/figure>\n\n\n<p>Dit werkt als een app voor \u00e9\u00e9n gebruiker. Als je een platform bouwt voor gebruik door meerdere klanten, kun je nog steeds prototypes met vibe-codering, MVP&#8217;s, enz. maken om de boel op gang te krijgen. Maar alleen vertrouwen op vibe-codering zonder te begrijpen wat er gebeurt, is simpelweg het verhaal van de TEA-app herhalen.&nbsp;<\/p>\n\n\n<p>Vibe-codering democratisseert softwarecreatie terwijl het nieuwe verantwoordelijkheden introduceert. Je kunt in 30 minuten apps bouwen. Je moet echter de architecturale grenzen, veiligheidsimplicaties en tokenverbruikspatronen begrijpen voordat je deze aan gebruikers levert.<\/p>\n\n\n<p>De toekomst is voor bouwers die het gat tussen prototype en productie begrijpen.&nbsp;<\/p>\n\n\n<p>Klaar om je eerste webapp te bouwen? Begin met <a href=\"https:\/\/www.dreamhost.com\/features\/ai-website-builder\/\">DreamHost Liftoff<\/a> voor WordPress-gedreven vibe coding die een uitbreidbare architectuur, beheerde hosting, beveiligingsinfrastructuur en bewezen schaalbaarheid vanaf dag \u00e9\u00e9n omvat. Bouw snel. Breid veilig uit. Beheer je eigen code.<\/p>\n\n\n\n<div class=\"article-cta-shared article-cta-small article-cta--product\">\n\t<div class=\"tr-img-wrap-outer jsLoading\"><img decoding=\"async\" class=\"js-img-lazy \" src=\"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/themes\/blog2018\/assets\/img\/lazy-loading-transparent.webp\" data-srcset=\"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2024\/03\/product-cta-pro-services-design-877x586.webp 1x, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2024\/03\/product-cta-pro-services-design.webp 2x\"  \/><\/div>\n\n\t<a href='https:\/\/www.dreamhost.com\/pro-services\/design\/' class='link-top' target='_blank' rel='noopener noreferrer'>\n\t\t<span>Pro Services &#8211; Design<\/span>\n\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 384 512\" width=\"15\"><path d=\"M342.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-192 192c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L274.7 256 105.4 86.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l192 192z\"\/><\/svg>\n\t<\/a>\n\n\t<div class=\"content-btm\">\n\t\t<h2 class=\"h2--md\">\n\t\t\tBeautiful Websites, Designed From Scratch\n\t\t<\/h2>\n\t\t<p class=\"p--md\">\n\t\t\tStand out from the crowd with a modern WordPress website that\u2019s 100% unique to you.\n\t\t<\/p>\n\n\t\t        <a\n            href=\"https:\/\/www.dreamhost.com\/pro-services\/design\/\"\n                        class=\"btn btn--white-outline btn--sm btn--round\"\n                                    target=\"_blank\"\n            rel=\"noopener noreferrer\"\n            >\n                            See More                    <\/a>\n\n\t<\/div>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>Mijn oma beheerde inventaris spreadsheets voor een textielbedrijf voor 40 jaar. Ze berekent samengestelde kortingen in haar hoofd sneller dan de meeste mensen met rekenmachines kunnen, maar heeft geen ervaring met coderen. Toen ik voorstelde om samen een tuinvolg-app te bouwen met AI, was haar scepsis bijna onmiddellijk. Twee uur later had ze een werkende web [\u2026]<\/p>\n","protected":false},"author":1058,"featured_media":77870,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_yoast_wpseo_metadesc":"","toc_headlines":"[[\"h-first-what-is-vibe-coding\",\"Ten Eerste, Wat Is Vibe Coding?\"],[\"h-what-happened-in-hour-one-simple-instructions-worked\",\"Wat Gebeurde Er In Het Eerste Uur? Eenvoudige Instructies Werkten\"],[\"h-what-happened-in-hour-two-feature-creep-became-obvious\",\"Wat Gebeurde Er In Uur Twee? Feature Creep Werd Duidelijk\"],[\"h-what-happened-in-hour-three-token-exhaustion-and-barely-functional-code-emerged\",\"Wat Gebeurde Er In Uur Drie? Token Uitputting En Nauwelijks Functionerende Code Kwamen Tevoorschijn\"],[\"h-how-to-vibe-code-without-experiencing-the-same-problems-we-did\",\"Hoe Code Te Vibren Zonder Dezelfde Problemen Te Ervaren Als Wij\"],[\"h-when-does-vibe-coding-make-business-sense\",\"Wanneer Is Vibe-Coding Zakelijk Zinvol?\"],[\"h-faqs-about-vibe-coding\",\"Veelgestelde Vragen Over Vibe Coding\"],[\"h-the-bottom-line-know-your-architectural-limits\",\"De Kern: Ken Je Architecturale Grenzen\"]]","hide_toc":false,"footnotes":""},"categories":[14910],"tags":[],"class_list":["post-78760","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ai-nl"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.3 (Yoast SEO v27.4) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Ik Heb Mijn Oma Leren Vibe Code (Dit Is Wat Er Gebeurde) - DreamHost Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www-dev.dreamhost.com\/blog\/nl\/ik-heb-mijn-oma-leren-vibe-code-dit-is-wat-er-gebeurde-nl\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Ik Heb Mijn Oma Leren Vibe Code (Dit Is Wat Er Gebeurde)\" \/>\n<meta property=\"og:description\" content=\"Mijn oma beheerde inventaris spreadsheets voor een textielbedrijf voor 40 jaar. Ze berekent samengestelde kortingen in haar hoofd sneller dan de meeste mensen met rekenmachines kunnen, maar heeft geen ervaring met coderen. Toen ik voorstelde om samen een tuinvolg-app te bouwen met AI, was haar scepsis bijna onmiddellijk. Twee uur later had ze een werkende web [\u2026]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www-dev.dreamhost.com\/blog\/nl\/ik-heb-mijn-oma-leren-vibe-code-dit-is-wat-er-gebeurde-nl\/\" \/>\n<meta property=\"og:site_name\" content=\"DreamHost Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/DreamHost\/\" \/>\n<meta property=\"article:published_time\" content=\"2025-11-26T19:51:48+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-01-12T20:23:06+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/1460x1095_blog_hero_how_to_vibe_code-1.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"1460\" \/>\n\t<meta property=\"og:image:height\" content=\"1095\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"Ian Hernandez\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@dreamhost\" \/>\n<meta name=\"twitter:site\" content=\"@dreamhost\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Ian Hernandez\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"19 minutes\" \/>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Ik Heb Mijn Oma Leren Vibe Code (Dit Is Wat Er Gebeurde) - DreamHost Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www-dev.dreamhost.com\/blog\/nl\/ik-heb-mijn-oma-leren-vibe-code-dit-is-wat-er-gebeurde-nl\/","og_locale":"en_US","og_type":"article","og_title":"Ik Heb Mijn Oma Leren Vibe Code (Dit Is Wat Er Gebeurde)","og_description":"Mijn oma beheerde inventaris spreadsheets voor een textielbedrijf voor 40 jaar. Ze berekent samengestelde kortingen in haar hoofd sneller dan de meeste mensen met rekenmachines kunnen, maar heeft geen ervaring met coderen. Toen ik voorstelde om samen een tuinvolg-app te bouwen met AI, was haar scepsis bijna onmiddellijk. Twee uur later had ze een werkende web [\u2026]","og_url":"https:\/\/www-dev.dreamhost.com\/blog\/nl\/ik-heb-mijn-oma-leren-vibe-code-dit-is-wat-er-gebeurde-nl\/","og_site_name":"DreamHost Blog","article_publisher":"https:\/\/www.facebook.com\/DreamHost\/","article_published_time":"2025-11-26T19:51:48+00:00","article_modified_time":"2026-01-12T20:23:06+00:00","og_image":[{"width":1460,"height":1095,"url":"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/1460x1095_blog_hero_how_to_vibe_code-1.webp","type":"image\/webp"}],"author":"Ian Hernandez","twitter_card":"summary_large_image","twitter_creator":"@dreamhost","twitter_site":"@dreamhost","twitter_misc":{"Written by":"Ian Hernandez","Est. reading time":"19 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www-dev.dreamhost.com\/blog\/nl\/ik-heb-mijn-oma-leren-vibe-code-dit-is-wat-er-gebeurde-nl\/#article","isPartOf":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/nl\/ik-heb-mijn-oma-leren-vibe-code-dit-is-wat-er-gebeurde-nl\/"},"author":{"name":"Ian Hernandez","@id":"https:\/\/www-dev.dreamhost.com\/blog\/#\/schema\/person\/220faf2464d5ae08e41cf5f3b28fdc96"},"headline":"Ik Heb Mijn Oma Leren Vibe Code (Dit Is Wat Er Gebeurde)","datePublished":"2025-11-26T19:51:48+00:00","dateModified":"2026-01-12T20:23:06+00:00","mainEntityOfPage":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/nl\/ik-heb-mijn-oma-leren-vibe-code-dit-is-wat-er-gebeurde-nl\/"},"wordCount":3646,"publisher":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/#organization"},"image":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/nl\/ik-heb-mijn-oma-leren-vibe-code-dit-is-wat-er-gebeurde-nl\/#primaryimage"},"thumbnailUrl":"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/1460x1095_blog_hero_how_to_vibe_code-1.webp","articleSection":["AI"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www-dev.dreamhost.com\/blog\/nl\/ik-heb-mijn-oma-leren-vibe-code-dit-is-wat-er-gebeurde-nl\/","url":"https:\/\/www-dev.dreamhost.com\/blog\/nl\/ik-heb-mijn-oma-leren-vibe-code-dit-is-wat-er-gebeurde-nl\/","name":"Ik Heb Mijn Oma Leren Vibe Code (Dit Is Wat Er Gebeurde) - DreamHost Blog","isPartOf":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/nl\/ik-heb-mijn-oma-leren-vibe-code-dit-is-wat-er-gebeurde-nl\/#primaryimage"},"image":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/nl\/ik-heb-mijn-oma-leren-vibe-code-dit-is-wat-er-gebeurde-nl\/#primaryimage"},"thumbnailUrl":"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/1460x1095_blog_hero_how_to_vibe_code-1.webp","datePublished":"2025-11-26T19:51:48+00:00","dateModified":"2026-01-12T20:23:06+00:00","breadcrumb":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/nl\/ik-heb-mijn-oma-leren-vibe-code-dit-is-wat-er-gebeurde-nl\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www-dev.dreamhost.com\/blog\/nl\/ik-heb-mijn-oma-leren-vibe-code-dit-is-wat-er-gebeurde-nl\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www-dev.dreamhost.com\/blog\/nl\/ik-heb-mijn-oma-leren-vibe-code-dit-is-wat-er-gebeurde-nl\/#primaryimage","url":"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/1460x1095_blog_hero_how_to_vibe_code-1.webp","contentUrl":"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2025\/11\/1460x1095_blog_hero_how_to_vibe_code-1.webp","width":1460,"height":1095,"caption":"I Taught My Grandma To Vibe Code (What Happened)"},{"@type":"BreadcrumbList","@id":"https:\/\/www-dev.dreamhost.com\/blog\/nl\/ik-heb-mijn-oma-leren-vibe-code-dit-is-wat-er-gebeurde-nl\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/dhblog.dream.press\/blog\/"},{"@type":"ListItem","position":2,"name":"Ik Heb Mijn Oma Leren Vibe Code (Dit Is Wat Er Gebeurde)"}]},{"@type":"WebSite","@id":"https:\/\/www-dev.dreamhost.com\/blog\/#website","url":"https:\/\/www-dev.dreamhost.com\/blog\/","name":"DreamHost Blog","description":"","publisher":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www-dev.dreamhost.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www-dev.dreamhost.com\/blog\/#organization","name":"DreamHost","url":"https:\/\/www-dev.dreamhost.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www-dev.dreamhost.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/dhblog.dream.press\/blog\/wp-content\/uploads\/2019\/01\/dh_logo-blue-2.png","contentUrl":"https:\/\/dhblog.dream.press\/blog\/wp-content\/uploads\/2019\/01\/dh_logo-blue-2.png","width":1200,"height":168,"caption":"DreamHost"},"image":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/DreamHost\/","https:\/\/x.com\/dreamhost","https:\/\/www.instagram.com\/dreamhost\/","https:\/\/www.linkedin.com\/company\/dreamhost\/","https:\/\/www.youtube.com\/user\/dreamhostusa"]},{"@type":"Person","@id":"https:\/\/www-dev.dreamhost.com\/blog\/#\/schema\/person\/220faf2464d5ae08e41cf5f3b28fdc96","name":"Ian Hernandez","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2022\/04\/ian-hernandez-dreamhost-150x150.png","url":"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2022\/04\/ian-hernandez-dreamhost-150x150.png","contentUrl":"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2022\/04\/ian-hernandez-dreamhost-150x150.png","caption":"Ian Hernandez"},"description":"Ian is a Product Designer based in Los Angeles, California. He is responsible for driving brand and product design at DreamHost, developing and maintaining our internal design system, and writing frontend code when he can. In his free time, he enjoys walking his dog, learning history, and discovering new music online and irl. Connect with him on LinkedIn: https:\/\/www.linkedin.com\/in\/ianhernandez23\/","url":"https:\/\/www-dev.dreamhost.com\/blog\/author\/ianh\/"}]}},"lang":"nl","translations":{"nl":78760,"es":77777,"en":77844,"de":78687,"it":78701,"pt":78730,"fr":78738,"pl":78752,"uk":78899,"ru":78968},"pll_sync_post":[],"_links":{"self":[{"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/posts\/78760","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/users\/1058"}],"replies":[{"embeddable":true,"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/comments?post=78760"}],"version-history":[{"count":3,"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/posts\/78760\/revisions"}],"predecessor-version":[{"id":78943,"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/posts\/78760\/revisions\/78943"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/media\/77870"}],"wp:attachment":[{"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/media?parent=78760"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/categories?post=78760"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/tags?post=78760"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}