[{"data":1,"prerenderedAt":1944},["ShallowReactive",2],{"navigation":3,"content-/writing/development-101-for-non-technical-vibe-coders":1433,"related-/writing/development-101-for-non-technical-vibe-coders":1704,"content-query-GO3HX6PtXJ":1767},[4,7,952,1152,1421,1424,1427,1430],{"title":5,"_path":6},"About","/about",{"title":8,"_path":9,"children":10},"Videos","/videos",[11,30,123,142,194,195,225,286,389,415,437,780],{"title":12,"_path":13,"children":14},"Alive And Kicking","/videos/alive-and-kicking",[15,18,21,24,27],{"title":16,"_path":17},"The story behind Alive and kicking","/videos/alive-and-kicking/000-hhpitreyobi",{"title":19,"_path":20},"72 hours in Austin, TX","/videos/alive-and-kicking/001-mvq-_s20ndk",{"title":22,"_path":23},"Vue.js guitar karaoke: how I built it","/videos/alive-and-kicking/002-m0mrligs6i0",{"title":25,"_path":26},"Tim Benniks - A Vue into Rock & Roll part 2 - Vuejs Amsterdam 2024","/videos/alive-and-kicking/003-p3pm_0p8lz4",{"title":28,"_path":29},"Tim Benniks - Alive and Kicking. A Vue into Rock& Roll! - Vuejs Amsterdam 2023","/videos/alive-and-kicking/004-4m4tij0z20",{"title":31,"_path":32,"children":33},"Contentstack","/videos/contentstack",[34,37,40,43,46,49,52,55,58,61,64,67,70,73,76,79,82,84,87,90,93,96,99,102,105,108,111,114,117,120],{"title":35,"_path":36},"Kickstart: Getting started with Contentstack Edge and Nuxt SSR","/videos/contentstack/000-uvqdbcxlipm",{"title":38,"_path":39},"Kickstart: Getting started with Contentstack Edge and Nuxt","/videos/contentstack/001-4kx5n8crpsi",{"title":41,"_path":42},"Bootstrap a Kickstart in under one minute with the CLI","/videos/contentstack/002-yntedayvmzm",{"title":44,"_path":45},"Contentstack Edge - Platform overview","/videos/contentstack/003-2u6da719nh0",{"title":47,"_path":48},"Kickstart: Getting started with Contentstack Edge and Next SSR","/videos/contentstack/004-1o4ya8laxlo",{"title":50,"_path":51},"Kickstart: Getting started with Contentstack Edge and Next SSG","/videos/contentstack/005-bowxbuqxfji",{"title":53,"_path":54},"Kickstart:Getting started with Next Middleware","/videos/contentstack/006-w8eudhea1ja",{"title":56,"_path":57},"Kickstart: Getting started with Contentstack Edge and Next GraphQL","/videos/contentstack/007-bczlgkd64g8",{"title":59,"_path":60},"Kickstart: Getting started with Contentstack Edge and Next","/videos/contentstack/008-xdjeuqr2usa",{"title":62,"_path":63},"Command Line Magic with Arke!","/videos/contentstack/009-m_xqi2xwwmy",{"title":65,"_path":66},"Contentstack Automate Magic: Markdown pages to entries","/videos/contentstack/010-eqridz0n81q",{"title":68,"_path":69},"Cache Priming Magic!","/videos/contentstack/011-j9npo_ba2po",{"title":71,"_path":72},"Contentstack Helpers: Endpoints","/videos/contentstack/012-h2dxe06mkd8",{"title":74,"_path":75},"Data & Insights: Mapping Audiences to Personalize","/videos/contentstack/013-r5gq3u8myvm",{"title":77,"_path":78},"Data & Insights: Exploring the Audience Insights App","/videos/contentstack/014-rbbswown6s",{"title":80,"_path":81},"Data & Insights: how to add the tag","/videos/contentstack/015-vfmm-bj_juk",{"title":38,"_path":83},"/videos/contentstack/016-gninm9si1ly",{"title":85,"_path":86},"Middleware Magic: Personalize and Visual builder in a complex setup","/videos/contentstack/017-i3go_cpxwgu",{"title":88,"_path":89},"Contentstack Live Preview with your own middleware","/videos/contentstack/018-fuy908j4cse",{"title":91,"_path":92},"Live stream🔴 Just Automate It!","/videos/contentstack/019-khev1dhs-ay",{"title":94,"_path":95},"Live stream🔴 A journey into the rich text editor w/ Lo & Tim","/videos/contentstack/020-siwf0naybsk",{"title":97,"_path":98},"Contentstack Implementation guide: Next 15","/videos/contentstack/021-px0b811rz3q",{"title":100,"_path":101},"Live stream🔴 Tour de Live Preview","/videos/contentstack/022-9vyysyv67qe",{"title":103,"_path":104},"Create a new stack and fill it with content via the CLI","/videos/contentstack/023-2dqheuo7uh4",{"title":106,"_path":107},"Contentstack Live Preview under the hood","/videos/contentstack/024-_xeu7q_op9a",{"title":109,"_path":110},"Contentstack Personalization for developers","/videos/contentstack/025-5o4yhtm5qba",{"title":112,"_path":113},"Data modelling best practises for visual builders","/videos/contentstack/026-qdd9uwwjna",{"title":115,"_path":116},"Contentstack Visual Builder for developers","/videos/contentstack/027-ni3mmmbfsfm",{"title":118,"_path":119},"Learn how to set up a simple PIM with Contenstack","/videos/contentstack/028-2fbm2t9cq8s",{"title":121,"_path":122},"Live stream🔴 Multi stack content type sync using Automate","/videos/contentstack/029-bhzrts_x9yu",{"title":124,"_path":125,"children":126},"Headless Creator","/videos/headless-creator",[127,130,133,136,139],{"title":128,"_path":129},"CDOBC 5: Transitioning from DXP to DXC","/videos/headless-creator/000-m8on6zkr7q4",{"title":131,"_path":132},"CDOBC Lesson 4: The DXP Tech Stack Overview","/videos/headless-creator/001-smbq8aoa4jm",{"title":134,"_path":135},"CDOBC Lesson 3: Separation of Concerns","/videos/headless-creator/002-sx5fbtcnrsg",{"title":137,"_path":138},"CDOBC Lesson 2: Intro to DXP - The DXP Dilemma","/videos/headless-creator/003-eybdyoihn1g",{"title":140,"_path":141},"CDOBC Lesson 1: Intro to DXP: Defining Digital Experience Platform","/videos/headless-creator/004-hshm8hlopka",{"title":143,"_path":144,"children":145},"Hygraph","/videos/hygraph",[146,149,152,155,158,161,164,167,170,173,176,179,182,185,188,191],{"title":147,"_path":148},"CMS Showdown: Do you need a page builder or a data modeler?","/videos/hygraph/000-xkz1cpc5j3o",{"title":150,"_path":151},"Hygraph's perfect use case","/videos/hygraph/001-gfjk7hxlcg0",{"title":153,"_path":154},"The simplest way to connect Hygraph to NuxtJS","/videos/hygraph/002-m8qftvizsmw",{"title":156,"_path":157},"The simplest way to connect Hygraph to Astro","/videos/hygraph/003-aahu9x5wajy",{"title":159,"_path":160},"The simplest way to connect Hygraph to Next.js","/videos/hygraph/004-fksw0bfbtdo",{"title":162,"_path":163},"How to connect Commercetools and Hygraph","/videos/hygraph/005-x8tb3li6dg0",{"title":165,"_path":166},"How to add a remote REST source to Hygraph","/videos/hygraph/006-zredqavtow4",{"title":168,"_path":169},"How to add a remote GraphQL source to Hygraph","/videos/hygraph/007-aydykxckkfe",{"title":171,"_path":172},"CMS Feature ninja: set up a GraphQL where clause on any field","/videos/hygraph/008-axq-jo8hmzq",{"title":174,"_path":175},"Headless commerce with #Nuxt and #Tailwind.","/videos/hygraph/009-e9jxm4h4a48",{"title":177,"_path":178},"Creating an Enterprise News starter with Next.js and Hygraph CMS","/videos/hygraph/010-hs1imxycyqg",{"title":180,"_path":181},"Coupling for a decoupling: Best practices for building a composable architecture | Datrycs x Hygraph","/videos/hygraph/011-snhzgplvm8o",{"title":183,"_path":184},"Set up headless CMS localization in 6 mins","/videos/hygraph/012-8_ttkblpdpm",{"title":186,"_path":187},"How to use Nuxt 3 with Hygraph and GraphQL","/videos/hygraph/013-keqn1rt8fwq",{"title":189,"_path":190},"How to add any REST source to Hygraph headless CMS","/videos/hygraph/014-nphsqsol3xc",{"title":192,"_path":193},"🌶️ Hot takes ahead: let's talk industry buzzwords (MACH, Composable, DXC, DXP)","/videos/hygraph/015-exzp3okqtxk",{"title":8,"_path":9},{"title":196,"_path":197,"children":198},"Live Contentstack","/videos/live-contentstack",[199,202,205,208,211,213,215,217,219,221,223],{"title":200,"_path":201},"Small group demo: Intro to Agent OS","/videos/live-contentstack/000-wt7tiq2e70a",{"title":203,"_path":204},"Small group workshop: Visual Builder setup for any stack","/videos/live-contentstack/001-73lwjwpkbd4",{"title":206,"_path":207},"Reimagine possible with Contentstack Edge with Tim Benniks & Victor Monsch","/videos/live-contentstack/002-2j9ehfjb-0m",{"title":209,"_path":210},"Exploring the possibilities: Contentstack free accounts!","/videos/live-contentstack/003-q7gnw4px4yo",{"title":62,"_path":212},"/videos/live-contentstack/004-m_xqi2xwwmy",{"title":68,"_path":214},"/videos/live-contentstack/005-j9npo_ba2po",{"title":85,"_path":216},"/videos/live-contentstack/006-i3go_cpxwgu",{"title":91,"_path":218},"/videos/live-contentstack/007-khev1dhs-ay",{"title":94,"_path":220},"/videos/live-contentstack/008-siwf0naybsk",{"title":100,"_path":222},"/videos/live-contentstack/009-9vyysyv67qe",{"title":121,"_path":224},"/videos/live-contentstack/010-bhzrts_x9yu",{"title":226,"_path":227,"children":228},"Live Hygraph","/videos/live-hygraph",[229,232,235,238,241,244,247,250,253,256,259,262,265,268,271,274,277,280,283],{"title":230,"_path":231},"How to personalize e-commerce with Relewise and Hygraph","/videos/live-hygraph/000-3dnlyhins6w",{"title":233,"_path":234},"Adding serverside rendering to Astro with Tim Benniks & Bryan Robinson","/videos/live-hygraph/001-auqie6tox40",{"title":236,"_path":237},"Exploring the Composable Commerce Accelerator by datrycs","/videos/live-hygraph/002-nokidin2gd8",{"title":239,"_path":240},"Exploring the latest Svelte stuff while connecting Hygraph CMS w/ Scott Spence","/videos/live-hygraph/003-eydstedp-v4",{"title":242,"_path":243},"How to integrate Cloudinary with headless CMS w/ Colby Fayock","/videos/live-hygraph/004-_iah2t5g02o",{"title":245,"_path":246},"Combining WordPress with Headless CMS","/videos/live-hygraph/005-fy_w2yousbo",{"title":248,"_path":249},"Exploring localisation & translation with headless CMS","/videos/live-hygraph/006-jgx1dytflvq",{"title":251,"_path":252},"Customizing Hygraph data with external services","/videos/live-hygraph/007-ombpixxx-3e",{"title":254,"_path":255},"Exploring the Hygraph Asset Manager","/videos/live-hygraph/008-ht-scjkem9q",{"title":257,"_path":258},"Hygraph Studio Launch - Workshop: Hygraph Asset Management","/videos/live-hygraph/009-qegf6rerifw",{"title":260,"_path":261},"Hygraph Studio Launch - DevX: Performance Gains","/videos/live-hygraph/010-etie3zygone",{"title":263,"_path":264},"How to build a live-voting experience with Hygraph, Nuxt and Supabase","/videos/live-hygraph/011-phcxh2m7ozm",{"title":266,"_path":267},"Building Content Models for Devs and Editors w/ Lo & Bryan","/videos/live-hygraph/012-pzc527rz7es",{"title":269,"_path":270},"Bryan teaches Tim Next.js with GraphQL and Hygraph","/videos/live-hygraph/013-t00uxbjsdum",{"title":272,"_path":273},"Pagination with Astro and Hygraph","/videos/live-hygraph/014-o_dvlrwpebk",{"title":275,"_path":276},"How to use Rich Text in a Headless CMS","/videos/live-hygraph/015-vrrzgly1n5c",{"title":278,"_path":279},"Add multi-tenancy to a Headless CMS","/videos/live-hygraph/016-m5xamvlqh1g",{"title":281,"_path":282},"Programmatically import data into the Hygraph Headless CMS","/videos/live-hygraph/017-jc09s5zmw_k",{"title":284,"_path":285},"Building an e-commerce site with Hygraph and Astro","/videos/live-hygraph/018-aietljmxmxm",{"title":287,"_path":288,"children":289},"Live Uniform","/videos/live-uniform",[290,293,296,299,302,305,308,311,314,317,320,323,326,329,332,335,338,341,344,347,350,353,356,359,362,365,368,371,374,377,380,383,386],{"title":291,"_path":292},"Uniform Product Meetup","/videos/live-uniform/000-5qx4fmkkh_m",{"title":294,"_path":295},"Jamstack Fridays with T&T | Jamstack and beyond with Alex Shyba","/videos/live-uniform/001-zdqk9zql3za",{"title":297,"_path":298},"Product Meetup #2: Interesting usecases with Adam Lamarre","/videos/live-uniform/002-tngn1e4hefi",{"title":300,"_path":301},"Personalizing Storyblok with Uniform and Nuxt.js","/videos/live-uniform/003-vkfasdfduf8",{"title":303,"_path":304},"Page compositions in Next.js with Uniform Canvas and the Jamstack","/videos/live-uniform/004-baibxsoagdw",{"title":306,"_path":307},"A Uniform Canvas use case deep-dive","/videos/live-uniform/005-rv4wzkhjp7k",{"title":309,"_path":310},"The Modern Digital Pipeline - The future of Jamstack is composable","/videos/live-uniform/006-r2lwjmehkmo",{"title":312,"_path":313},"Composable without Compromise w/ Natalia Venditto","/videos/live-uniform/007-7-ebcqip9ec",{"title":315,"_path":316},"Unpack the Stack w/ Daniel Roe","/videos/live-uniform/008-1h0jr_vbz7m",{"title":318,"_path":319},"Composable without Compromise w/ Matt Webb","/videos/live-uniform/009-sitbljdtbjy",{"title":321,"_path":322},"Unpack the Stack w/ Colby Fayock","/videos/live-uniform/010-rbjccl9qate",{"title":324,"_path":325},"Composable without Compromise w/ Casper Rasmussen","/videos/live-uniform/011-yjc8gvarvge",{"title":327,"_path":328},"Unpack the Stack w/ Brittney Postma","/videos/live-uniform/012-6ek_bv2yrf8",{"title":330,"_path":331},"Composable without Compromise w/ Filip Rakowski","/videos/live-uniform/013-trisovjcivw",{"title":333,"_path":334},"Unpack the Stack w/ Tomek Juranek","/videos/live-uniform/014-0xsg-apdt6c",{"title":336,"_path":337},"Composable without Compromise w/ Dom Selvon","/videos/live-uniform/015-hsirsjtqgs8",{"title":339,"_path":340},"Unpack the stack with Sybren Willemot & Jonathan Bakebwa","/videos/live-uniform/016-uuhul0tpezy",{"title":342,"_path":343},"Unpack the stack: next.js app directory with Steven Tey","/videos/live-uniform/017-8ju8znzjoh4",{"title":345,"_path":346},"Unpack the stack with Elian Van Cutsem","/videos/live-uniform/018-wmacanhmrsi",{"title":348,"_path":349},"Unpack the Stack with Marc Backes","/videos/live-uniform/019-axqvbrv_xc8",{"title":351,"_path":352},"Unpack the stack with William Imoh","/videos/live-uniform/020-gmh8pm-nvl0",{"title":354,"_path":355},"Unpack the stack: Leveraging a unified UI with Mitosis in a Composable Architecture using Uniform","/videos/live-uniform/021-5r8_kiqjk6c",{"title":357,"_path":358},"Unpack the Stack w/ Lucie from Prismic","/videos/live-uniform/022-hveoqtpoimk",{"title":360,"_path":361},"Unpack the Stack: End to end testing with playright  w/ Debbie O'Brien from Microsoft","/videos/live-uniform/023-skuvyvd-njg",{"title":363,"_path":364},"Unpack the Stack w/ Harshil from Contentful","/videos/live-uniform/024-mnkxtbb3_vw",{"title":366,"_path":367},"Introducing: Mesh + Component Starter Kit with Richard and Tim","/videos/live-uniform/025-hmtwfhon2o",{"title":369,"_path":370},"Composable without Compromise w/ Jonas Ulrich","/videos/live-uniform/026-dvqvxggnp5q",{"title":372,"_path":373},"Composable without Compromise: Team Diversity for success with Jasmin Guthmann","/videos/live-uniform/027-vfeieragxac",{"title":375,"_path":376},"Ultimate makeover. Make an existing Sitecore solution modern and composable","/videos/live-uniform/028-ekut1koa2n8",{"title":378,"_path":379},"How the RFP process has improved with composable architectures","/videos/live-uniform/029-opklvtnkncs",{"title":381,"_path":382},"Composable CMS evaluation:  Delivery APIs and CDNs","/videos/live-uniform/030-m-kkuomzg88",{"title":384,"_path":385},"What legacy? Migration tactics for monolith to composable","/videos/live-uniform/031-jvgiaotcerq",{"title":387,"_path":388},"Composable CMS evaluation: SDK frameworks","/videos/live-uniform/032-isxyi-5do5o",{"title":390,"_path":391,"children":392},"Misc Streams","/videos/misc-streams",[393,396,399,402,405,407,409,412],{"title":394,"_path":395},"The Dare Dialogues - S01E06: PR Married with DevRel","/videos/misc-streams/000-uq4ufq0ypt4",{"title":397,"_path":398},"The Dare Dialogues - S01E03: Making Waves","/videos/misc-streams/001-1tjmq5b0fmc",{"title":400,"_path":401},"The Dare Dialogues - S01E02: Mount Stupid","/videos/misc-streams/002-tvpdzpl2pvm",{"title":403,"_path":404},"Customer Story: How to Create AI Videos for B2B Content Marketing","/videos/misc-streams/003-rjjyhwso1gg",{"title":384,"_path":406},"/videos/misc-streams/004-jvgiaotcerq",{"title":375,"_path":408},"/videos/misc-streams/005-ekut1koa2n8",{"title":410,"_path":411},"Tim Tries: TresJS with Alvaro Sabu","/videos/misc-streams/006-d8ahncxgryg",{"title":413,"_path":414},"Keyboard Madness with Janos Kehl and Konstantin Bifert","/videos/misc-streams/007-umfrj32jle0",{"title":416,"_path":417,"children":418},"Mp","/videos/mp",[419,422,425,428,431,434],{"title":420,"_path":421},"Vue.js Amsterdam 2024","/videos/mp/000-ubgzoawmqlw",{"title":423,"_path":424},"Vue.js Amsterdam Vlog 2023","/videos/mp/001-zx6_fi0sdmy",{"title":426,"_path":427},"JSWorld Conference 2023 Vlog","/videos/mp/002-d4rai10p9m4",{"title":429,"_path":430},"Vlog - Vue.js Amsterdam 2022 conference vibes and interviews","/videos/mp/003-tmf2wzntooa",{"title":432,"_path":433},"JSWorld Conference 2022 - Vlog","/videos/mp/004-xhbwuk0qlue",{"title":435,"_path":436},"Vue.js Roadtrip Barcelona - Vlog","/videos/mp/005-2e_kk9mqrwm",{"title":438,"_path":439,"children":440},"Tim","/videos/tim",[441,444,447,450,453,456,458,461,464,467,470,473,476,479,482,485,488,491,494,497,500,503,506,508,510,513,516,519,522,525,528,531,534,537,540,543,546,549,552,555,558,561,564,567,570,573,576,579,582,585,588,591,594,597,600,603,606,609,612,615,618,621,624,627,630,633,636,639,642,645,648,651,654,657,660,663,666,669,672,675,678,681,684,687,690,693,696,699,702,705,708,711,714,717,720,723,726,729,732,735,738,741,744,747,750,753,756,759,762,765,768,771,774,777],{"title":442,"_path":443},"Tim Benniks - Automate all the things. AI, Nuxt, Countentstack, Clouidinary, and more.","/videos/tim/000-7nhbd9ankqg",{"title":445,"_path":446},"Transforming DevRel with AI: Doorbell DevRel Explained","/videos/tim/000-svuvhp4t0xq",{"title":448,"_path":449},"Traditional Developer Relations died in 2024","/videos/tim/001-wup0w-bqrr0",{"title":451,"_path":452},"The rant-to-blogpost pipeline with AI","/videos/tim/002-ualpjk4ousa",{"title":454,"_path":455},"The fastest site I ever built","/videos/tim/003-f6wjicjsjo0",{"title":19,"_path":457},"/videos/tim/004-mvq-_s20ndk",{"title":459,"_path":460},"The Jake Ward Interview. The power of developer advocacy with Data Protocol","/videos/tim/005-vex0ktitib4",{"title":462,"_path":463},"How to do Developer Relations in 2024","/videos/tim/006-196iqp-lhlw",{"title":465,"_path":466},"Cloudinary's hidden magic: AI image manipulation in the URL","/videos/tim/007-yutf3yvsdco",{"title":468,"_path":469},"HeyGen AI: Transform Your Sales Productivity with Personalized Video Outreach","/videos/tim/008-iip2anhietg",{"title":471,"_path":472},"How To Make The Best AI Avatar With Heygen","/videos/tim/009-_wrtdvv37y0",{"title":474,"_path":475},"How to tell if you're becoming a senior dev","/videos/tim/010-j7jsa49zqja",{"title":477,"_path":478},"Hygraph Content Federation FTW","/videos/tim/011-ed1tipzxzr8",{"title":480,"_path":481},"Tim Tries caisy CMS: the best CMS for agencies?","/videos/tim/012-3tbdmf1pwe",{"title":483,"_path":484},"The best Nuxt 3 GraphQL setup","/videos/tim/013-q282biqyj6a",{"title":486,"_path":487},"Browser Client Hints are awesome!","/videos/tim/014-h3rlwn27ga8",{"title":489,"_path":490},"This is Headless 2.0","/videos/tim/015-ergktbs0woe",{"title":492,"_path":493},"Nuxt 3: Learn about Pinia setup and basics","/videos/tim/016-zscc8-0-dis",{"title":495,"_path":496},"I cloned myself with AI to create more content","/videos/tim/017-zn2zxyvw4hy",{"title":498,"_path":499},"Vue.js Live London 2023 Vlog","/videos/tim/018-dyq17r5c9-s",{"title":501,"_path":502},"AI audio for content creators","/videos/tim/019-oq050_ytylk",{"title":504,"_path":505},"I joined the Supasquad ambassadors program at Supabase!","/videos/tim/020-rwrzovc5oc4",{"title":22,"_path":507},"/videos/tim/021-m0mrligs6i0",{"title":16,"_path":509},"/videos/tim/022-hhpitreyobi",{"title":511,"_path":512},"I fell back in love with Sitecore","/videos/tim/023-e64eyulaomk",{"title":514,"_path":515},"JamstackConf talk: DXC, the modern tech stack","/videos/tim/024-xetyke98mp0",{"title":517,"_path":518},"Turbo Tutorial | Vue 3: Learn how to make a composable","/videos/tim/025-0xo0bnzquf4",{"title":520,"_path":521},"Turbo Tutorial | Nuxt 3: How to add client only components","/videos/tim/026-cwkjy7raony",{"title":523,"_path":524},"Turbo Tutorial | Nuxt 3: Query from an internal Nuxt API route","/videos/tim/027-lsf2rhzsykg",{"title":526,"_path":527},"Turbo Tutorial | Nuxt 3: How to use Vue components in Nuxt Content v2","/videos/tim/028-mg0fevwnue0",{"title":529,"_path":530},"Turbo Tutorial | Learn about responsive image basics","/videos/tim/029-npse6yqqzki",{"title":532,"_path":533},"Turbo Tutorial | Nuxt 3: Head management","/videos/tim/030-rh6hjo9xk-o",{"title":535,"_path":536},"Turbo Tutorial | Nuxt 3: schema org","/videos/tim/031-rth3oikjp2k",{"title":538,"_path":539},"Turbo Tutorial | Nuxt 3: Query from an external API + read more","/videos/tim/032-zad7s01lfic",{"title":541,"_path":542},"Turbo Tutorial | Nuxt 3: Learn about hybrid rendering","/videos/tim/033-5i1zqfu6xtw",{"title":544,"_path":545},"Turbo Tutorial | Nuxt 3: Pick & Transform","/videos/tim/034-d33ynlhvhxm",{"title":547,"_path":548},"Tim Tries Medusajs the open source Shopify alternative","/videos/tim/035-c1jduhsh1ae",{"title":550,"_path":551},"How I film videos in my new studio. A content creator's dream.","/videos/tim/036-8z1npig-ya",{"title":553,"_path":554},"The State of Vue in 2022 with Monterail's Szymon Licau","/videos/tim/037-8wxdfixxktw",{"title":556,"_path":557},"Tim Tries Nuxt 3 & Algolia with Jakub Andrzejewski","/videos/tim/038-yzh1l740tno",{"title":559,"_path":560},"How to buy gear for content creation in 2022","/videos/tim/039-mdzkgc1pgbc",{"title":562,"_path":563},"I built my own YouTube studio 2022","/videos/tim/040-dli7uzzddx8",{"title":565,"_path":566},"Cable management for Nuxt 3","/videos/tim/041-ry60wvg0fzq",{"title":568,"_path":569},"My top 5 favourite Nuxt 3 features","/videos/tim/042-ek-hhozlfvg",{"title":571,"_path":572},"Vlog: DevBreak21 what an amazing conference experience!","/videos/tim/043-kn5u4ahcs_0",{"title":574,"_path":575},"Make your website even faster with Astro!","/videos/tim/044-o8m4cs3o4ii",{"title":577,"_path":578},"Vlog: I'm building my own studio!","/videos/tim/045-xba15vr-kfy",{"title":580,"_path":581},"Nuxt vs Next: the battle of the Images","/videos/tim/046-lpk392g10ou",{"title":583,"_path":584},"The Ultimate Guide to Responsive Images","/videos/tim/047-uxjgt2_mf90",{"title":586,"_path":587},"Tim Tries: Storyblok. One of the best headless content editing experiences","/videos/tim/048-d0ra_m3jlsy",{"title":589,"_path":590},"Tim Tries: Algolia Crawler Plugin for Netlify","/videos/tim/049-7jk6nyalhuc",{"title":592,"_path":593},"Apple M1 with Tailwind JIT and Vite is faster than my brain","/videos/tim/050-su22r2w3wea",{"title":595,"_path":596},"Unboxing the new M1 Mac Mini for Video editing and programming.","/videos/tim/051-6ub_k4uvz20",{"title":598,"_path":599},"Core Web Vitals explained with Ishan Anand | e01","/videos/tim/052-ec7pvgy8xsq",{"title":601,"_path":602},"DevRel Roundtable episode 2: Debbie O'brien and Lucie Haberer","/videos/tim/053-lsxu_q-8rrc",{"title":604,"_path":605},"The Modern DXP: How JAMstack will change the world","/videos/tim/054-yezaod1sddg",{"title":607,"_path":608},"Nuxt in depth: make your website faster by removing google analytics. Still get metrics!","/videos/tim/055-dv5mlxbrti8",{"title":610,"_path":611},"I have a new job at a Silicon Valley Startup!","/videos/tim/056-hcthe5pwhvm",{"title":613,"_path":614},"An Interview with Ishan Anand (CTO) and Mark Brocado (VP of Engineering) from Moovweb","/videos/tim/057-zd7qkgd8ix8",{"title":616,"_path":617},"2020 The best year of my career","/videos/tim/058-bhffzm6n3tw",{"title":619,"_path":620},"How to build your online persona","/videos/tim/059-s1od1u-itka",{"title":622,"_path":623},"How to record yourself guide","/videos/tim/060-rm_bameopiy",{"title":625,"_path":626},"Interview with Alex Shyba co-founder of Uniform","/videos/tim/061-db5jjbwg-zm",{"title":628,"_path":629},"How to reduce bundle sizes in Nuxt","/videos/tim/062-iykkwy8k2d4",{"title":631,"_path":632},"Interview with Evan You","/videos/tim/063-nr_aohhgl3s",{"title":634,"_path":635},"Easy dynamic routes in your Nuxt sitemap","/videos/tim/064-oxjhew-10aq",{"title":637,"_path":638},"Webpack 5 module federation and more","/videos/tim/065-zxz9mojtwh8",{"title":640,"_path":641},"DevRel Roundtable episode 1: Tessa Mero and Domitrius Clark","/videos/tim/066-xiz2p0zlbd8",{"title":643,"_path":644},"Magical combination to build a modern website","/videos/tim/067-v5aobiirud4",{"title":646,"_path":647},"Hi! 👋 I'm Tim and I'm a content creator!","/videos/tim/068-jtghl7ggoas",{"title":649,"_path":650},"Tim Tries: Chakra UI with Jonathan Bakebwa","/videos/tim/069-96xypbh-hyo",{"title":652,"_path":653},"Tim Tries: TailwindCSS with Alexander Lichter","/videos/tim/070-0vdfegtjdcg",{"title":655,"_path":656},"Tim's Vlog: How to be a successful leader","/videos/tim/071-mcyeoin1s48",{"title":658,"_path":659},"Vue.js Global talk: Introducing Vite & Vitepress","/videos/tim/072-gojckw5ih7e",{"title":661,"_path":662},"A developers guide to low carbon websites","/videos/tim/073-ewlegish6dw",{"title":664,"_path":665},"Tim's vlog: Career advice for developers","/videos/tim/074-auzzgmyn0z4",{"title":667,"_path":668},"Tim Tries: Figma, Zeplin and Storybook. Mind is blown...","/videos/tim/075-zuht0g3zpyw",{"title":670,"_path":671},"Vue.js Global Conference: An interview with Anthony Gore","/videos/tim/076-madbxcbsvqo",{"title":673,"_path":674},"Vue.js Global Conference: An interview with Eduardo San Martin Morote","/videos/tim/077-uufbfcipaly",{"title":676,"_path":677},"Webpack tutorial: Create a config from scratch","/videos/tim/078-fyuvqruzevy",{"title":679,"_path":680},"Vue.js Global conference: An interview with Gift Egwuenu","/videos/tim/079-tlbstgzcyyy",{"title":682,"_path":683},"Vue.js Global conference: An interview with Filip Rakowski","/videos/tim/080-brmxytpulm4",{"title":685,"_path":686},"Vue.js Global conference: An interview with Debbie O'Brien","/videos/tim/081-ibkgryfpuds",{"title":688,"_path":689},"Vue.js Global conference: An interview with Maria Lamardo","/videos/tim/082-2mfsb5ulhks",{"title":691,"_path":692},"Azure functions revisited for v3. Conclusion: AWESOME","/videos/tim/083-d0jk7hyu1ai",{"title":694,"_path":695},"Tutorial: How to build a Gridsome Source Plugin","/videos/tim/084-v50mhzzffaa",{"title":697,"_path":698},"My audio setup 2020","/videos/tim/085-pu8f59x14-y",{"title":700,"_path":701},"Tim Tries: Azure Static Web Apps","/videos/tim/086-a54ifas8rts",{"title":703,"_path":704},"Tutorial: Vue 3 composition API and Vite to recreate TikTok","/videos/tim/087-ggaoxqtc7ke",{"title":706,"_path":707},"Tim Tries: Slice Machine by Nuxt and Prismic","/videos/tim/088-bpjjxxqycdi",{"title":709,"_path":710},"An Interview with Scott Tolinski from Level up Tutorials","/videos/tim/089-zpq_gqmit5y",{"title":712,"_path":713},"Lazy Loading Images with Prismic and Vue.js","/videos/tim/090-5jaypm6gx1o",{"title":715,"_path":716},"An Interview with Jen Looper from Microsoft","/videos/tim/091-cf5_pit-ai",{"title":718,"_path":719},"JAMstack with Prismic and Gridsome. Score 100% on Google Page speed!","/videos/tim/092-tqr2eo7tivc",{"title":721,"_path":722},"An interview with Debbie O'brien from Nuxtjs","/videos/tim/093-aw4nl6hgjb0",{"title":724,"_path":725},"Quarantine licks #2 - Folksy Tunes","/videos/tim/094-gxwrzna4udq",{"title":727,"_path":728},"COVID-19 Work from home: how to make your webcam look good","/videos/tim/095-xit7qtmcmik",{"title":730,"_path":731},"Weight loss with Serveless architecture and the JAMstack","/videos/tim/096-bebr8ev2no8",{"title":733,"_path":734},"Quarantine Licks #1 - Acoustic Blues","/videos/tim/097-wlqlclwjorc",{"title":736,"_path":737},"An interview with Tim Benniks from Valtech","/videos/tim/098-zzrqozpc068",{"title":739,"_path":740},"HTTP/2 performance: you still need a bundler!","/videos/tim/099-f5f7n2kc7hq",{"title":742,"_path":743},"An Interview with Una Verhoeven Global Sitecore Architect at Valtech","/videos/tim/100-nw0y6dkx1ku",{"title":745,"_path":746},"An interview with Filip Rakowski from Vue Storefront","/videos/tim/101-vqjp5qfiolg",{"title":748,"_path":749},"[Livestream] Team First - How to lead a team to success in a high pressure environment","/videos/tim/102-ltm7wz0q564",{"title":751,"_path":752},"An interview With Natalia Tepluhina from Gitlab and the Vue.js core team","/videos/tim/103-u5s4dqqlt1o",{"title":754,"_path":755},"Vue.js Amsterdam recap and exciting announcements!","/videos/tim/104-boby5h-r1hc",{"title":757,"_path":758},"An interview with Anastasiya Flynn from Sitecore JSS","/videos/tim/105-pwqvqnnopiy",{"title":760,"_path":761},"An interview with Eduardo from the Vue.js core team","/videos/tim/106-lkiomruiaae",{"title":763,"_path":764},"Webpack basics and core concepts","/videos/tim/107-azqrjdqa_d8",{"title":766,"_path":767},"5 tips to become a better web developer.","/videos/tim/108-wexof1tfi04",{"title":769,"_path":770},"An interview with Maya Shavin: When you have the force, nothing is impossible!","/videos/tim/109-h7qmarrblw8",{"title":772,"_path":773},"Code faster and make less mistakes","/videos/tim/110-liek4kwnsbq",{"title":775,"_path":776},"An Introduction to my YouTube Channel","/videos/tim/111-shtbmwkzwpi",{"title":778,"_path":779},"How to make your webcam look great!","/videos/tim/112-vcf1xfoegwm",{"title":781,"_path":782,"children":783},"Uniform","/videos/uniform",[784,787,790,793,796,799,802,805,808,811,814,817,820,823,826,829,832,835,838,841,844,847,850,853,856,859,862,865,868,871,874,877,880,883,886,889,892,895,898,901,904,907,910,913,916,919,922,925,928,931,934,937,940,943,946,949],{"title":785,"_path":786},"Uniform DXCP: composability with Headless 2.0","/videos/uniform/000-sf8tcv5t9pa",{"title":788,"_path":789},"Uniform Canvas: Dynamic Pages","/videos/uniform/001-vkjwiqlm6_w",{"title":791,"_path":792},"Uniform Canvas: Redirect management","/videos/uniform/002-ndrabg4x6ya",{"title":794,"_path":795},"Uniform Dynamic Pages and Redirects","/videos/uniform/003-hcjlhnrjzpo",{"title":797,"_path":798},"Uniform introduces Component Starter Kit, Mesh updates, and Edgehancers","/videos/uniform/004-qh_ekk7cfzw",{"title":800,"_path":801},"Uniform Canvas: loops","/videos/uniform/005-ffwvyuyzewu",{"title":803,"_path":804},"Uniform Canvas: data types","/videos/uniform/006-zbi8h6-fp5c",{"title":806,"_path":807},"Uniform Canvas: component patterns","/videos/uniform/007-mczgzargim8",{"title":809,"_path":810},"CityJS conference talk: How to sniff out the glue code monster","/videos/uniform/008-rarbrmxkh5i",{"title":812,"_path":813},"Setting up Canvas","/videos/uniform/009-3uyyxncppd8",{"title":815,"_path":816},"Setting up Project map","/videos/uniform/010-krctdwmf9fg",{"title":818,"_path":819},"Getting started with Uniform DXCP - The why and the how","/videos/uniform/011-j0zqlcmtseq",{"title":821,"_path":822},"Work in new ways by integrating Algolia with Uniform’s visual editor","/videos/uniform/012-aoaqo3tlzpw",{"title":824,"_path":825},"Getting Started with Uniform and Algolia","/videos/uniform/013-lfkshonh3oc",{"title":827,"_path":828},"Creating with Canvas by Richard Bausek and Tim Benniks","/videos/uniform/014-t3avobqvwps",{"title":830,"_path":831},"Uniform + Algolia = A Magical Combination","/videos/uniform/015-z_41xoh9w1w",{"title":833,"_path":834},"Uniform and Cloudinary play very well together!","/videos/uniform/016-oqqj-tu-urc",{"title":836,"_path":837},"Nuxt 3 with Content v2 and Uniform is magic","/videos/uniform/017-sy9xkqrxzk8",{"title":839,"_path":840},"Uniform CLI: how to manage your compositions","/videos/uniform/018-e-9ylltykzk",{"title":842,"_path":843},"Up and running with Uniform & Nuxt 3 in three mins!","/videos/uniform/019-hkcxn_r0m54",{"title":845,"_path":846},"Setting up live preview with Uniform and Nuxt 3","/videos/uniform/020-u41omxoadtq",{"title":848,"_path":849},"Uniform MACHathon 2022 - Rage against MACHine's project demo","/videos/uniform/021-h-l_nj5aojs",{"title":851,"_path":852},"MACHathon 2022 entry Rage Against the MACHine","/videos/uniform/022-w4ppzyucowm",{"title":854,"_path":855},"Clearbit + Uniform Context = Super-powered personalization","/videos/uniform/023-ib6dglgf7uc",{"title":857,"_path":858},"The Uniform Content Editing Workflow","/videos/uniform/024-4xykmrzo8ha",{"title":860,"_path":861},"The future of the Jamstack is composable","/videos/uniform/025-4tuixex-iwk",{"title":863,"_path":864},"Progressing through Environments with Uniform","/videos/uniform/026-9q_1wzx_kju",{"title":866,"_path":867},"Uniform Product Meetup: Personalizing content based on user location","/videos/uniform/027-myj-ild_rxk",{"title":869,"_path":870},"Agile Digital Delivery for startups - build a composable DXP for free in ten minutes!","/videos/uniform/028-jdl4a64klrg",{"title":872,"_path":873},"Jamstack Fridays with T&T: Personalization with Uniform Canvas","/videos/uniform/029-fevaivas-ye",{"title":875,"_path":876},"Build a complete commerce storefront with BigCommerce, Tailwind UI and Uniform","/videos/uniform/030-_8gh9oycsus",{"title":878,"_path":879},"New features for Contentful in Uniform Canvas","/videos/uniform/031-vvlwwonsqe8",{"title":881,"_path":882},"Take your BigCommerce store to the next level with faster time to market and personalization","/videos/uniform/032-evmwlfhv8wc",{"title":884,"_path":885},"Uniform Tutorial Series #4: How Personalization Flows in Jamstack","/videos/uniform/033-jjwwwr9uixo",{"title":887,"_path":888},"Uniform Tutorial Series #3: Defining Intents","/videos/uniform/034-gwbkr9ut5-w",{"title":890,"_path":891},"Uniform Tutorial Series #2: Intents & Signals","/videos/uniform/035-0gp_yf4fvo8",{"title":893,"_path":894},"Uniform Tutorial Series #1: Personalization Basics","/videos/uniform/036-_tkrrqdsolk",{"title":896,"_path":897},"Uniform Platform for business users","/videos/uniform/037-pt1p8ixie-k",{"title":899,"_path":900},"Uniform Platform for Developers","/videos/uniform/038-jul6h-3wrnq",{"title":902,"_path":903},"Why is Jamstack so important for the future of DXP","/videos/uniform/039-pdekgezhffi",{"title":905,"_path":906},"The problem of modern DXP (and the solution)","/videos/uniform/040-iaabbjfiiro",{"title":908,"_path":909},"True composability in the modern DXP","/videos/uniform/041-fo9cop0znt0",{"title":911,"_path":912},"Astro FTW! Vue and React can work together in the same app","/videos/uniform/042-surxtza2sa0",{"title":914,"_path":915},"Uniform Personalization Basics for MACHathon contenders","/videos/uniform/043-wontid8zkf0",{"title":917,"_path":918},"Product Meetup: Uniform for Sitecore 5 is out!","/videos/uniform/044-itk9sgw0n7u",{"title":920,"_path":921},"Personalize Jamstack websites with Uniform for Kentico Kontent","/videos/uniform/045-hdupegqtjrm",{"title":923,"_path":924},"Jamstack Fridays with T&T: Next auth and Firebase","/videos/uniform/046-6jkekhxmmaq",{"title":926,"_path":927},"Jamstack Friday with T&T: Netlify Forms & Google sheets with Next.js","/videos/uniform/047-h3y_jnbtrom",{"title":929,"_path":930},"Jamstack Friday news: Featurepeek is fire!","/videos/uniform/048-xr8eo9g6bps",{"title":932,"_path":933},"How to personalize a Next.js site with Contentstack and Uniform in 10 minutes","/videos/uniform/049-4eepxpo9iqc",{"title":935,"_path":936},"Jamstack Friday news: The latest NextJS release is awesome!","/videos/uniform/050-fdounapttfy",{"title":938,"_path":939},"A comprehensive view on personalization with Lars Petersen","/videos/uniform/051-gsey28saqac",{"title":941,"_path":942},"Jamstack Fridays with T&T | Two buddies discuss performance and personalization","/videos/uniform/052-r2ygbt1to4s",{"title":944,"_path":945},"Jamstack Fridays with T&T: Braking Jamstack architecture cliches","/videos/uniform/053-9m73vicako4",{"title":947,"_path":948},"Jamstack personalization with Contentstack and Uniform","/videos/uniform/054-d41ch2lnxtq",{"title":950,"_path":951},"Jamstack Fridays with T&T | Questions we get from clients: Gatsby vs Next.js","/videos/uniform/055-eohudn8apm4",{"title":953,"_path":954,"children":955},"Writing","/writing",[956,959,962,965,968,971,974,977,980,983,986,989,992,995,998,1001,1004,1007,1010,1013,1016,1019,1022,1023,1026,1029,1032,1035,1038,1041,1044,1047,1050,1053,1056,1059,1062,1065,1068,1071,1074,1077,1080,1083,1086,1089,1092,1095,1098,1101,1104,1107,1110,1113,1116,1119,1122,1125,1128,1131,1134,1137,1140,1143,1146,1149],{"title":957,"_path":958},"AI chat interfaces will replace web apps","/writing/ai-chat-interfaces-will-replace-web-apps",{"title":960,"_path":961},"Plot twist! AI made developers more valuable.","/writing/ai-is-not-replacing-developers-it-is-exposing-everyone-else",{"title":963,"_path":964},"AI integrations expose platforms without headless DNA","/writing/ai-native-composability-needs-real-api-first-dna",{"title":966,"_path":967},"Build context-aware MCPs, not API wrappers","/writing/build-context-aware-mcp-not-api-wrappers",{"title":969,"_path":970},"Choosing the right visual editor for your website Platform-First vs. Code-First","/writing/choosing-the-right-visual-editor",{"title":972,"_path":973},"Code is craft now, not labor","/writing/code-is-craft-now-not-labor",{"title":975,"_path":976},"I'm cosplaying as a Product Manager, and I think I'm onto something","/writing/cosplaying-as-a-product-manager-and-i-think-im-onto-something",{"title":978,"_path":979},"Create a performant YouTube embed with a native web component","/writing/create-a-performant-youtube-embed-with-a-native-web-component",{"title":981,"_path":982},"Creating a custom video player in Vue.js","/writing/creating-a-custom-video-player-in-vue",{"title":984,"_path":985},"Cursor, rules, and my vibe engineer workflow","/writing/cursor-rules-and-my-vibe-engineer-workflow",{"title":987,"_path":988},"Development 101 for non-technical vibe coders","/writing/development-101-for-non-technical-vibe-coders",{"title":990,"_path":991},"The DevRel Operating System","/writing/devrel-os",{"title":993,"_path":994},"DevRel success metrics that actually matter","/writing/devrel-success-metrics-that-actually-matter",{"title":996,"_path":997},"The different approaches to visual editing in headless CMS","/writing/different-approaches-to-visual-editing",{"title":999,"_path":1000},"Digital experience platforms the old versus the new","/writing/digital-experience-platforms-the-old-versus-the-new",{"title":1002,"_path":1003},"Do we still need SDKs in the age of AI agents?","/writing/do-we-still-need-sdks-in-the-age-of-ai-agents",{"title":1005,"_path":1006},"Fast, personalized pages with Vercel Edge Middleware and Uniform","/writing/fast-personalized-pages-with-vercel-edge-middleware-and-uniform",{"title":1008,"_path":1009},"How I supercharched my website's speed","/writing/how-i-supercharched-my-websites-speed",{"title":1011,"_path":1012},"How to dynamically stream video","/writing/how-to-dynamically-stream-video",{"title":1014,"_path":1015},"How to get your webcam to look decent in a few simple steps","/writing/how-to-get-your-webcam-to-look-decent-in-a-few-simple-steps",{"title":1017,"_path":1018},"How to sniff out the Glue Monster","/writing/how-to-sniff-out-the-glue-monster",{"title":1020,"_path":1021},"I will not log into your vibe coded app","/writing/i-will-not-log-into-your-vibe-coded-app",{"title":953,"_path":954},{"title":1024,"_path":1025},"It's time to think of LLMs as having abilities, not protocols","/writing/its-time-to-think-of-llms-as-having-abilities-not-protocols",{"title":1027,"_path":1028},"Level up your collaboration game Developer insights for winning with marketing pros","/writing/level-up-your-collaboration-game-developer-insights-for-winning-with-marketing-pro",{"title":1030,"_path":1031},"MACH versus monolithic suites","/writing/mach-versus-monolithic-suites",{"title":1033,"_path":1034},"Make the Web Greener, Luxury Edition","/writing/make-the-web-greener-luxury-edition",{"title":1036,"_path":1037},"MCP fragmentation, context efficiency, and the rise of curated skills","/writing/mcp-fragmentation-context-efficiency-and-the-rise-of-curated-skills",{"title":1039,"_path":1040},"Most CMS migrations fail before the first record moves","/writing/most-cms-migrations-fail-before-the-first-record-moves",{"title":1042,"_path":1043},"My Fitness Story","/writing/my-fitness-story",{"title":1045,"_path":1046},"New job alert - Hygraph 2023","/writing/new-job-alert",{"title":1048,"_path":1049},"Codex built a skill with custom CLI for itself. Is MCP even a thing anymore?","/writing/openai-codex-built-a-skill-for-itself-is-mcp-even-a-thing-anymore",{"title":1051,"_path":1052},"CMS Showdown do you need a page builder or a data modeler?","/writing/page-builder-cms-vs-data-modeler-cms",{"title":1054,"_path":1055},"SDKs are everywhere. But should you use them?","/writing/sdks-use-them-or-not",{"title":1057,"_path":1058},"TDD finally makes sense","/writing/tdd-finally-makes-sense",{"title":1060,"_path":1061},"Your team is the key to success when going headless","/writing/team-is-key-when-going-headless",{"title":1063,"_path":1064},"The 2015 Paris marathon","/writing/the-2015-paris-maratho",{"title":1066,"_path":1067},"The Age of the \"Super-T\" Product Person","/writing/the-age-of-the-super-t-product-person",{"title":1069,"_path":1070},"Intuition and the real cost of research","/writing/the-best-product-decisions-were-never-analytical",{"title":1072,"_path":1073},"The case for boring setups","/writing/the-case-for-boring-setups",{"title":1075,"_path":1076},"The content Graph is the future","/writing/the-content-graph-is-the-future",{"title":1078,"_path":1079},"The Experience Factory why experience is the real flagship","/writing/the-experience-factory-01-why-experience-is-the-real-flagship",{"title":1081,"_path":1082},"The Future of CMS. It's dying.","/writing/the-future-of-cms-from-content-management-to-context-management",{"title":1084,"_path":1085},"The future of headless CMS Content Federation with GraphQL","/writing/the-future-of-headless-cms-content-federation-with-graphql",{"title":1087,"_path":1088},"The future of jamstack is composable","/writing/the-future-of-jamstack-is-composable",{"title":1090,"_path":1091},"The future of managing projects at agencies","/writing/the-future-of-managing-projects-at-agencie",{"title":1093,"_path":1094},"The future of software is bespoke","/writing/the-future-of-software-is-bespoke",{"title":1096,"_path":1097},"The lost promise of headless","/writing/the-lost-promise-of-headless",{"title":1099,"_path":1100},"The MACH monolith","/writing/the-mach-monolith",{"title":1102,"_path":1103},"The MACH monolith in 2026","/writing/the-mach-monolith-in-2026",{"title":1105,"_path":1106},"The move from monolithic to composable architectures","/writing/the-move-from-monolithic-to-composable-architectures",{"title":1108,"_path":1109},"The nuanced impact of AI we should not overlook","/writing/the-nuanced-impact-of-ai-we-should-not-overlook",{"title":1111,"_path":1112},"The pragmatic guide to coding with AI agents","/writing/the-pragmatic-guide-to-coding-with-ai-agents",{"title":1114,"_path":1115},"The real deal about content management buzzwords","/writing/the-real-deal-about-content-management-buzzword",{"title":1117,"_path":1118},"The vibe-coded app architecture guide","/writing/the-vibe-coded-app-architecture-guide",{"title":1120,"_path":1121},"This is headless 2.0","/writing/this-is-headless-20",{"title":1123,"_path":1124},"Uniform DXCP the what, why, and how","/writing/uniform-dxcp-the-what-why-and-how",{"title":1126,"_path":1127},"Uniform is Nuxt 3 ready","/writing/uniform-is-nuxt-3-read",{"title":1129,"_path":1130},"Universal CMS the wheel we're reinventing","/writing/universal-cms-the-wheel-we-are-reinventing",{"title":1132,"_path":1133},"Want to be better at vibe coding? Become a better coder","/writing/want-to-be-better-at-vibe-coding-become-a-better-coder",{"title":1135,"_path":1136},"We have collectively forgotten what monoliths are","/writing/we-have-collectively-forgotten-what-monoliths-are",{"title":1138,"_path":1139},"We moved the difficulty. We didn't make it disappear.","/writing/we-moved-the-difficulty",{"title":1141,"_path":1142},"What type of content organization do you need?","/writing/what-type-of-content-organization-do-you-need",{"title":1144,"_path":1145},"When Output Is Cheap, Taste Is Everything","/writing/when-output-is-cheap-taste-is-everything",{"title":1147,"_path":1148},"Why I didn't run the 2016 marathon","/writing/why-i-didnt-run-the-2016-marathon",{"title":1150,"_path":1151},"Your legacy patterns are technical debt in modern architecture","/writing/your-legacy-patterns-are-technical-debt-in-modern-architecture",{"title":1153,"_path":1154,"children":1155},"Speaking","/speaking",[1156,1159,1162,1165,1168,1171,1174,1177,1180,1183,1186,1189,1192,1195,1198,1201,1204,1207,1210,1213,1216,1219,1222,1225,1228,1231,1234,1237,1240,1243,1246,1249,1252,1255,1258,1261,1264,1267,1270,1273,1276,1279,1282,1285,1288,1291,1294,1297,1300,1303,1306,1309,1312,1315,1318,1321,1324,1327,1330,1333,1336,1339,1342,1345,1348,1351,1354,1357,1360,1363,1366,1369,1372,1375,1378,1381,1384,1387,1390,1393,1396,1399,1402,1405,1408,1411,1414,1417,1420],{"title":1157,"_path":1158},"2019 02 14 Clifq5gzg40j20bw9ne2mh9n6","/speaking/2019-02-14-clifq5gzg40j20bw9ne2mh9n6",{"title":1160,"_path":1161},"2019 02 26 Clifq5gns3xhu0buv6a8th0jk","/speaking/2019-02-26-clifq5gns3xhu0buv6a8th0jk",{"title":1163,"_path":1164},"2019 04 19 Clifq5gd63xhq0buvufv6nagk","/speaking/2019-04-19-clifq5gd63xhq0buvufv6nagk",{"title":1166,"_path":1167},"2019 05 17 Clifq5g1f3wh90bw81u5sa0ai","/speaking/2019-05-17-clifq5g1f3wh90bw81u5sa0ai",{"title":1169,"_path":1170},"2019 05 25 Clifq5fpd3xt00aw4grnzft29","/speaking/2019-05-25-clifq5fpd3xt00aw4grnzft29",{"title":1172,"_path":1173},"2019 09 04 Clifq5fer3xhl0buvzzgwqg1k","/speaking/2019-09-04-clifq5fer3xhl0buvzzgwqg1k",{"title":1175,"_path":1176},"2019 09 09 Clifq5f1b3wh10bw8ftmppjkc","/speaking/2019-09-09-clifq5f1b3wh10bw8ftmppjkc",{"title":1178,"_path":1179},"2019 09 27 Clifq5eos3xhh0buvewly5gxs","/speaking/2019-09-27-clifq5eos3xhh0buvewly5gxs",{"title":1181,"_path":1182},"2019 11 28 Clifq5ebo3wgx0bw8vno5ce0d","/speaking/2019-11-28-clifq5ebo3wgx0bw8vno5ce0d",{"title":1184,"_path":1185},"2019 12 17 Clifq5dyh40ij0bw9oquw072b","/speaking/2019-12-17-clifq5dyh40ij0bw9oquw072b",{"title":1187,"_path":1188},"2020 02 18 Clifq5dk940if0bw9ok9achtj","/speaking/2020-02-18-clifq5dk940if0bw9ok9achtj",{"title":1190,"_path":1191},"2020 03 19 Clifq5dal3xsn0aw49a9wad1n","/speaking/2020-03-19-clifq5dal3xsn0aw49a9wad1n",{"title":1193,"_path":1194},"2020 04 22 Clifq5czw3wgs0bw8srwiffx1","/speaking/2020-04-22-clifq5czw3wgs0bw8srwiffx1",{"title":1196,"_path":1197},"2020 05 06 Clifq5cpx40hk0bw9odxcxt0q","/speaking/2020-05-06-clifq5cpx40hk0bw9odxcxt0q",{"title":1199,"_path":1200},"2020 05 13 Clifq5cfw3xh00buvhyslf4s3","/speaking/2020-05-13-clifq5cfw3xh00buvhyslf4s3",{"title":1202,"_path":1203},"2020 05 25 Clifq5c5u3wgo0bw8g8yudazp","/speaking/2020-05-25-clifq5c5u3wgo0bw8g8yudazp",{"title":1205,"_path":1206},"2020 05 28 Clifq5bvw40h20bw92kt7pmp1","/speaking/2020-05-28-clifq5bvw40h20bw92kt7pmp1",{"title":1208,"_path":1209},"2020 06 09 Clifq5bj73xrj0aw42st3pna4","/speaking/2020-06-09-clifq5bj73xrj0aw42st3pna4",{"title":1211,"_path":1212},"2020 07 21 Clifq5b6s3xrf0aw4s8ml5qjb","/speaking/2020-07-21-clifq5b6s3xrf0aw4s8ml5qjb",{"title":1214,"_path":1215},"2020 07 27 Clifq5axb3xgw0buvy6hrvpv2","/speaking/2020-07-27-clifq5axb3xgw0buvy6hrvpv2",{"title":1217,"_path":1218},"2020 08 05 Clifq5anp3xrb0aw4jxeipa7e","/speaking/2020-08-05-clifq5anp3xrb0aw4jxeipa7e",{"title":1220,"_path":1221},"2020 08 26 Clifq5a9x3wgk0bw8x8qfl5rk","/speaking/2020-08-26-clifq5a9x3wgk0bw8x8qfl5rk",{"title":1223,"_path":1224},"2020 09 17 Clifq59zj3wgg0bw8xmh09vvm","/speaking/2020-09-17-clifq59zj3wgg0bw8xmh09vvm",{"title":1226,"_path":1227},"2020 10 14 Clifq59mp3wgc0bw82qykah6x","/speaking/2020-10-14-clifq59mp3wgc0bw82qykah6x",{"title":1229,"_path":1230},"2020 10 29 Clifq59b83xr60aw45w2sqa1g","/speaking/2020-10-29-clifq59b83xr60aw45w2sqa1g",{"title":1232,"_path":1233},"2020 11 10 Clifq590340gy0bw9onnmgr7y","/speaking/2020-11-10-clifq590340gy0bw9onnmgr7y",{"title":1235,"_path":1236},"2020 11 11 Clifq58oo40gu0bw9iffiakmh","/speaking/2020-11-11-clifq58oo40gu0bw9iffiakmh",{"title":1238,"_path":1239},"2020 12 01 Clifq58cz3xr10aw4n6qndf3s","/speaking/2020-12-01-clifq58cz3xr10aw4n6qndf3s",{"title":1241,"_path":1242},"2020 12 02 Clifq582i3wg80bw8rszss5am","/speaking/2020-12-02-clifq582i3wg80bw8rszss5am",{"title":1244,"_path":1245},"2020 12 11 Clifq57o03xgp0buvlvdxm5l9","/speaking/2020-12-11-clifq57o03xgp0buvlvdxm5l9",{"title":1247,"_path":1248},"2020 12 16 Clifq57c43wg40bw81h7fr291","/speaking/2020-12-16-clifq57c43wg40bw81h7fr291",{"title":1250,"_path":1251},"2020 12 18 Clifq571z40gq0bw9b62wbowr","/speaking/2020-12-18-clifq571z40gq0bw9b62wbowr",{"title":1253,"_path":1254},"2021 01 12 Clifq56q43xgk0buv4hu04quz","/speaking/2021-01-12-clifq56q43xgk0buv4hu04quz",{"title":1256,"_path":1257},"2021 02 01 Clifq56gq3xqx0aw47qor4w9s","/speaking/2021-02-01-clifq56gq3xqx0aw47qor4w9s",{"title":1259,"_path":1260},"2021 02 02 Clifq56623xqt0aw44sbds5cn","/speaking/2021-02-02-clifq56623xqt0aw44sbds5cn",{"title":1262,"_path":1263},"2021 02 22 Clifq55tf40gk0bw9vofea3yp","/speaking/2021-02-22-clifq55tf40gk0bw9vofea3yp",{"title":1265,"_path":1266},"2021 03 03 Clifq55jz3xqp0aw4je7y5sw1","/speaking/2021-03-03-clifq55jz3xqp0aw4je7y5sw1",{"title":1268,"_path":1269},"2021 03 24 Clifq559p3xgf0buvzch9im3l","/speaking/2021-03-24-clifq559p3xgf0buvzch9im3l",{"title":1271,"_path":1272},"2021 04 07 Clifq54zf3wfz0bw80v5gzndk","/speaking/2021-04-07-clifq54zf3wfz0bw80v5gzndk",{"title":1274,"_path":1275},"2021 04 20 Clifq54na3xgb0buvrvmbamxf","/speaking/2021-04-20-clifq54na3xgb0buvrvmbamxf",{"title":1277,"_path":1278},"2021 04 29 Clifq54ct3wfu0bw8zsr9mejw","/speaking/2021-04-29-clifq54ct3wfu0bw8zsr9mejw",{"title":1280,"_path":1281},"2021 07 27 Clifq542s3xg60buvdk199xtq","/speaking/2021-07-27-clifq542s3xg60buvdk199xtq",{"title":1283,"_path":1284},"2021 09 07 Clifq53so3wfq0bw81xni3t7x","/speaking/2021-09-07-clifq53so3wfq0bw81xni3t7x",{"title":1286,"_path":1287},"2021 11 04 Clifq53ib40gf0bw9c3mxprzu","/speaking/2021-11-04-clifq53ib40gf0bw9c3mxprzu",{"title":1289,"_path":1290},"2021 11 10 Clifq536v3xg20buvlz1n7ddw","/speaking/2021-11-10-clifq536v3xg20buvlz1n7ddw",{"title":1292,"_path":1293},"2021 11 22 Clifq52wr3wfm0bw83eawjx9x","/speaking/2021-11-22-clifq52wr3wfm0bw83eawjx9x",{"title":1295,"_path":1296},"2021 12 01 Clifq52jm3xqj0aw4mxuyuaey","/speaking/2021-12-01-clifq52jm3xqj0aw4mxuyuaey",{"title":1298,"_path":1299},"2021 12 14 Clifq528940gb0bw9bok0o68k","/speaking/2021-12-14-clifq528940gb0bw9bok0o68k",{"title":1301,"_path":1302},"2022 01 27 Clifq51vy3wf30bw8qsv8nsv9","/speaking/2022-01-27-clifq51vy3wf30bw8qsv8nsv9",{"title":1304,"_path":1305},"2022 02 08 Clifq51j53wez0bw8cd1znjmi","/speaking/2022-02-08-clifq51j53wez0bw8cd1znjmi",{"title":1307,"_path":1308},"2022 02 10 Clifq515940g70bw9yu0ltedp","/speaking/2022-02-10-clifq515940g70bw9yu0ltedp",{"title":1310,"_path":1311},"2022 03 01 Clifq50sj40g30bw9rqy825mb","/speaking/2022-03-01-clifq50sj40g30bw9rqy825mb",{"title":1313,"_path":1314},"2022 03 02 Clifq50g53xfr0buv56km2voa","/speaking/2022-03-02-clifq50g53xfr0buv56km2voa",{"title":1316,"_path":1317},"2022 05 26 Clifq506e3wev0bw88q2lf63q","/speaking/2022-05-26-clifq506e3wev0bw88q2lf63q",{"title":1319,"_path":1320},"2022 06 02 Clifq4zvh40fz0bw986sdpv5u","/speaking/2022-06-02-clifq4zvh40fz0bw986sdpv5u",{"title":1322,"_path":1323},"2022 06 13 Clifq4z8o3xqf0aw49q8f55f9","/speaking/2022-06-13-clifq4z8o3xqf0aw49q8f55f9",{"title":1325,"_path":1326},"2022 06 13 Clifq4zjc40fv0bw95ufcly4y","/speaking/2022-06-13-clifq4zjc40fv0bw95ufcly4y",{"title":1328,"_path":1329},"2022 07 01 Clifq4ywg3xq60aw48tkujxyl","/speaking/2022-07-01-clifq4ywg3xq60aw48tkujxyl",{"title":1331,"_path":1332},"2022 07 27 Clifq4yep3xf20buv5vorwrl5","/speaking/2022-07-27-clifq4yep3xf20buv5vorwrl5",{"title":1334,"_path":1335},"2022 08 10 Clifq4xw640fr0bw9po5n2nug","/speaking/2022-08-10-clifq4xw640fr0bw9po5n2nug",{"title":1337,"_path":1338},"2022 08 11 Clifq4xdz3wek0bw862z7knrr","/speaking/2022-08-11-clifq4xdz3wek0bw862z7knrr",{"title":1340,"_path":1341},"2022 08 25 Clifq4x0z3xq20aw48a1n9hxy","/speaking/2022-08-25-clifq4x0z3xq20aw48a1n9hxy",{"title":1343,"_path":1344},"2022 09 14 Clifq4wqo40fh0bw9sifjtw70","/speaking/2022-09-14-clifq4wqo40fh0bw9sifjtw70",{"title":1346,"_path":1347},"2022 09 27 Clifq4wef3xpx0aw4l7ueiqwb","/speaking/2022-09-27-clifq4wef3xpx0aw4l7ueiqwb",{"title":1349,"_path":1350},"2022 10 14 Clifq4w263xet0buv0mzqzfre","/speaking/2022-10-14-clifq4w263xet0buv0mzqzfre",{"title":1352,"_path":1353},"2022 11 02 Clifq4vps3xep0buvimxfntyq","/speaking/2022-11-02-clifq4vps3xep0buvimxfntyq",{"title":1355,"_path":1356},"2022 11 08 Clifq4vdb40el0bw9il2y3pb4","/speaking/2022-11-08-clifq4vdb40el0bw9il2y3pb4",{"title":1358,"_path":1359},"2023 02 08 Clifq4uz43xpt0aw4mw4awvuj","/speaking/2023-02-08-clifq4uz43xpt0aw4mw4awvuj",{"title":1361,"_path":1362},"2023 03 29 Clifq4ul43we80bw8ihhkw7qr","/speaking/2023-03-29-clifq4ul43we80bw8ihhkw7qr",{"title":1364,"_path":1365},"2023 04 20 Clifq4u9b3xpm0aw45vj51alh","/speaking/2023-04-20-clifq4u9b3xpm0aw45vj51alh",{"title":1367,"_path":1368},"2023 05 12 Clifq4tw33we40bw8jxhaaroo","/speaking/2023-05-12-clifq4tw33we40bw8jxhaaroo",{"title":1370,"_path":1371},"2023 05 29 Clifq4thm3xel0buvdpqx8bdm","/speaking/2023-05-29-clifq4thm3xel0buvdpqx8bdm",{"title":1373,"_path":1374},"2023 06 06 Clifq4t4w40dr0bw98f7p9zrq","/speaking/2023-06-06-clifq4t4w40dr0bw98f7p9zrq",{"title":1376,"_path":1377},"2023 07 27 Clifq4sto3xph0aw4letve613","/speaking/2023-07-27-clifq4sto3xph0aw4letve613",{"title":1379,"_path":1380},"2024 02 29 Clkzot86xire30aujuy08465e","/speaking/2024-02-29-clkzot86xire30aujuy08465e",{"title":1382,"_path":1383},"2024 06 05 Clqdq6ui7ts730bvzmk1xw47t","/speaking/2024-06-05-clqdq6ui7ts730bvzmk1xw47t",{"title":1385,"_path":1386},"2024 06 26 Clxkjutfsgp2b08uncx30wni3","/speaking/2024-06-26-clxkjutfsgp2b08uncx30wni3",{"title":1388,"_path":1389},"2024 09 23 Clzln21ozhc5j07vyl823v9qt","/speaking/2024-09-23-clzln21ozhc5j07vyl823v9qt",{"title":1391,"_path":1392},"2024 10 02 Clzlmyfs3hhe607ur0myt53gv","/speaking/2024-10-02-clzlmyfs3hhe607ur0myt53gv",{"title":1394,"_path":1395},"2025 02 13 Cm0qgs8ctrqs207uk9qsijvlj","/speaking/2025-02-13-cm0qgs8ctrqs207uk9qsijvlj",{"title":1397,"_path":1398},"2025 03 13 Cm0qgtj7srztk07unk29eiehq","/speaking/2025-03-13-cm0qgtj7srztk07unk29eiehq",{"title":1400,"_path":1401},"2025 09 10 Clifq5gzg40j20bw9ne2mh9n2","/speaking/2025-09-10-clifq5gzg40j20bw9ne2mh9n2",{"title":1403,"_path":1404},"2025 09 11 Clifq5gzg40j20bw9ne2mh9n1","/speaking/2025-09-11-clifq5gzg40j20bw9ne2mh9n1",{"title":1406,"_path":1407},"2025 09 18 Clifq5gzg40j20bw9ne2mh9n3","/speaking/2025-09-18-clifq5gzg40j20bw9ne2mh9n3",{"title":1409,"_path":1410},"2025 09 19 Clifq5gzg40j20bw9n31322","/speaking/2025-09-19-clifq5gzg40j20bw9n31322",{"title":1412,"_path":1413},"2025 10 10 Clifq5gzg40j20bw9n333","/speaking/2025-10-10-clifq5gzg40j20bw9n333",{"title":1415,"_path":1416},"2025 10 24 Clifq5gzg40j20bw9n333asasdasd","/speaking/2025-10-24-clifq5gzg40j20bw9n333asasdasd",{"title":1418,"_path":1419},"2026 03 12 Clifq5gzg40j20bw9ne2mh9n87","/speaking/2026-03-12-clifq5gzg40j20bw9ne2mh9n87",{"title":1153,"_path":1154},{"title":1422,"_path":1423},"Live streams","/livestreams",{"title":1425,"_path":1426},"Press kit","/presskit",{"title":1428,"_path":1429},"Alive and kicking","/alive-and-kicking",{"title":1431,"_path":1432},"Uses","/uses",{"_path":988,"_dir":1434,"_draft":1435,"_partial":1435,"_locale":1436,"title":987,"description":1437,"slug":1438,"date":1439,"canonical_url":1440,"reading_time":1441,"image":1442,"tags":1443,"faqs":1449,"draft":1435,"head":1465,"body":1476,"_type":1698,"_id":1699,"_source":1700,"_file":1701,"_stem":1702,"_extension":1703},"writing",false,"","When non-programmers think they're failing at AI coding, they're usually failing at their laptop. Projects sitting in iCloud, disks with 4 GB free, orphaned processes holding ports - these are the invisible problems AI agents can't solve because they assume your machine is sane. This is a short guide to the environmental basics every vibe coder needs, so the fundamentals underneath your AI tools stop quietly breaking your work.","development-101-for-non-technical-vibe-coders","2026-04-20T10:00:00Z","https://timbenniks.dev/writing/development-101-for-non-technical-vibe-coders","4 min read","https://res.cloudinary.com/dwfcofnrd/image/upload/v1776681704/website/oih1ckmqilxxeegsrprw.jpg",[1444,1445,1446,1447,1448],"ai","vibe-coding","developer-experience","fundamentals","tooling",[1450,1453,1456,1459,1462],{"question":1451,"answer":1452},"Why does the location of my project folder matter so much?","Cloud sync services like iCloud, Dropbox, and OneDrive are designed to offload files that look unused. They replace real files with placeholders, introduce file locking, and quietly mess with permissions. For documents this is fine. For active development it is a disaster. Your build tools, test runners, and AI agents all assume files on disk are real files on disk. When they are not, errors become nonsensical and debugging turns into archaeology. Keep active projects in a plain local folder like ~/Code or ~/Projects and leave cloud sync out of the loop.",{"question":1454,"answer":1455},"Is node_modules really that big a deal?","Yes, more than most people realise. A single node_modules folder can contain tens of thousands of files and hundreds of megabytes of data. Multiply that by ten projects and you are looking at a meaningful chunk of your disk consumed by dependency trees you are not actively using. The good news is that node_modules is disposable. Delete it when you are not working on a project and reinstall when you come back. That habit alone prevents most of the \"my machine feels slow\" problems developers blame on everything else.",{"question":1457,"answer":1458},"How much free disk space do I actually need to develop comfortably?","As a practical baseline, keep at least 20 to 30 GB free on your development machine. Modern tooling assumes room for installs, builds, caches, and temporary files, and it does not fail gracefully when those assumptions break. When you are sitting at 4 GB free, installs fail, builds fail, and error messages stop making sense. If you regularly juggle multiple projects or work with larger stacks, aim higher. Disk space is not a storage concern, it is a runtime concern.",{"question":1460,"answer":1461},"Why do ports cause so much confusion?","Because people think of ports as assigned when they are actually just occupied. A port is not reserved to your project. It is simply whatever a running process is currently using. If you forgot to stop a dev server from yesterday and it is still holding port 3000, your new project cannot use it. This is why behaviour feels random - you are running into invisible state. Learning to check what is actually running on your machine, and stopping things you are not using, removes a whole category of weird bugs.",{"question":1463,"answer":1464},"Do I need to become a systems engineer to vibe code effectively?","No, but you do need a baseline of environmental awareness. AI agents assume your machine is sane. They cannot detect that your project is half-downloaded from iCloud, or that your disk is full, or that another process is holding the port they are trying to use. If that layer underneath is unstable, agents will confidently guide you deeper into the problem. The goal is not mastery. It is making the environment boring enough that it stops lying to you.",{"meta":1466},[1467,1469,1471,1473],{"property":1468,"content":1442},"twitter:image",{"property":1470,"content":987},"twitter:title",{"property":1472,"content":1437},"twitter:description",{"property":1474,"content":1475},"keywords","ai, vibe-coding, developer-experience, fundamentals, tooling",{"type":1477,"children":1478,"toc":1688},"root",[1479,1487,1492,1497,1504,1509,1534,1539,1545,1550,1555,1577,1583,1596,1601,1614,1620,1625,1630,1636,1641,1646,1652,1657,1662,1667,1673,1678,1683],{"type":1480,"tag":1481,"props":1482,"children":1483},"element","p",{},[1484],{"type":1485,"value":1486},"text","When non-programmers think they're failing at AI coding, they're usually failing at their laptop.",{"type":1480,"tag":1481,"props":1488,"children":1489},{},[1490],{"type":1485,"value":1491},"Projects randomly stop working. Agents give nonsense fixes. Ports are mysteriously blocked. Installs fail for no clear reason. Things work one day and break the next. And then, after hours of debugging, it turns out the project was sitting in iCloud, half-downloaded, with 4 GB of disk space left.",{"type":1480,"tag":1481,"props":1493,"children":1494},{},[1495],{"type":1485,"value":1496},"That's an environment problem AI makes worse because agents assume your machine is sane. If it's not, they will confidently guide you deeper into the hole.",{"type":1480,"tag":1498,"props":1499,"children":1501},"h2",{"id":1500},"the-literacy-gap",[1502],{"type":1485,"value":1503},"The literacy gap",{"type":1480,"tag":1481,"props":1505,"children":1506},{},[1507],{"type":1485,"value":1508},"AI lowered the barrier to building apps. It didn't lower the barrier to understanding your own computer.",{"type":1480,"tag":1481,"props":1510,"children":1511},{},[1512,1514,1523,1525,1532],{"type":1485,"value":1513},"I've written before about ",{"type":1480,"tag":1515,"props":1516,"children":1520},"a",{"href":1517,"rel":1518},"https://timbenniks.dev/writing/the-pragmatic-guide-to-coding-with-ai-agents",[1519],"nofollow",[1521],{"type":1485,"value":1522},"treating AI agents like very fast junior developers who need clean environments to work in",{"type":1485,"value":1524},", and about how ",{"type":1480,"tag":1515,"props":1526,"children":1529},{"href":1527,"rel":1528},"https://timbenniks.dev/writing/want-to-be-better-at-vibe-coding-become-a-better-coder",[1519],[1530],{"type":1485,"value":1531},"getting better at vibe coding means getting better at the fundamentals underneath it",{"type":1485,"value":1533},". This post is the layer below both of those. Before you can brief an agent well, before you can even diagnose whether it's the code or the model that's failing, your machine needs to be a predictable place.",{"type":1480,"tag":1481,"props":1535,"children":1536},{},[1537],{"type":1485,"value":1538},"That means a baseline of awareness around three things: the file system, storage, and running processes. Skip those and you get a fragile setup that breaks in ways nobody, human or agent, can reliably debug.",{"type":1480,"tag":1498,"props":1540,"children":1542},{"id":1541},"your-project-has-to-actually-exist",[1543],{"type":1485,"value":1544},"Your project has to actually exist",{"type":1480,"tag":1481,"props":1546,"children":1547},{},[1548],{"type":1485,"value":1549},"This sounds stupid, but it's the root of a lot of pain.",{"type":1480,"tag":1481,"props":1551,"children":1552},{},[1553],{"type":1485,"value":1554},"If your project lives in Desktop, Documents, or anything synced with iCloud, Dropbox, or OneDrive, you're playing with fire. Those services offload files, replace real files with placeholders, mess with permissions, and introduce locking. Your code might look like it's there. It might not be. When tools or agents try to read or write, things break in ways that make no sense.",{"type":1480,"tag":1481,"props":1556,"children":1557},{},[1558,1560,1567,1569,1575],{"type":1485,"value":1559},"Pick one folder. Call it ",{"type":1480,"tag":1561,"props":1562,"children":1564},"code",{"className":1563},[],[1565],{"type":1485,"value":1566},"~/Code",{"type":1485,"value":1568}," or ",{"type":1480,"tag":1561,"props":1570,"children":1572},{"className":1571},[],[1573],{"type":1485,"value":1574},"~/Projects",{"type":1485,"value":1576},". Put everything there. No syncing. No magic. Just files on disk.",{"type":1480,"tag":1498,"props":1578,"children":1580},{"id":1579},"npm-install-is-not-a-small-thing",[1581],{"type":1485,"value":1582},"npm install is not a small thing",{"type":1480,"tag":1481,"props":1584,"children":1585},{},[1586,1588,1594],{"type":1485,"value":1587},"When you run ",{"type":1480,"tag":1561,"props":1589,"children":1591},{"className":1590},[],[1592],{"type":1485,"value":1593},"npm install",{"type":1485,"value":1595},", you're not installing a few packages. You're pulling in an entire dependency tree. Thousands of files per project. Sometimes hundreds of megabytes. Sometimes gigabytes.",{"type":1480,"tag":1481,"props":1597,"children":1598},{},[1599],{"type":1485,"value":1600},"Multiply that by ten projects and you can easily end up with a hundred thousand files and hundreds of gigabytes of data you're not even using. Then your machine slows down or crashes, and the problem looks like it's somewhere else.",{"type":1480,"tag":1481,"props":1602,"children":1603},{},[1604,1606,1612],{"type":1485,"value":1605},"The fix is simple once you know it. ",{"type":1480,"tag":1561,"props":1607,"children":1609},{"className":1608},[],[1610],{"type":1485,"value":1611},"node_modules",{"type":1485,"value":1613}," is disposable. Every project has its own copy. When you stop working on something, delete the folder and reinstall later if you come back. That one habit saves more disk space than anything else you can do.",{"type":1480,"tag":1498,"props":1615,"children":1617},{"id":1616},"ports-are-occupied-not-assigned",[1618],{"type":1485,"value":1619},"Ports are occupied, not assigned",{"type":1480,"tag":1481,"props":1621,"children":1622},{},[1623],{"type":1485,"value":1624},"Another common confusion: people think they assign ports to projects. That's not how it works. A port is just whatever a running process is currently using. If something is already running on 3000, your new app can't use it. You'll get errors, or worse, strange behaviour.",{"type":1480,"tag":1481,"props":1626,"children":1627},{},[1628],{"type":1485,"value":1629},"What matters is what's currently running and whether you stopped previous processes. If three dev servers are open and you've forgotten about two of them, you have three processes competing for ports. The randomness isn't random. It's just invisible.",{"type":1480,"tag":1498,"props":1631,"children":1633},{"id":1632},"disk-space-is-part-of-your-runtime",[1634],{"type":1485,"value":1635},"Disk space is part of your runtime",{"type":1480,"tag":1481,"props":1637,"children":1638},{},[1639],{"type":1485,"value":1640},"If you have 4 GB free, you don't have a development environment. You have a ticking time bomb.",{"type":1480,"tag":1481,"props":1642,"children":1643},{},[1644],{"type":1485,"value":1645},"Modern tooling assumes room for installs, builds, caches, and temp files. When you run out, installs fail, builds fail, processes crash, and the error messages are often useless. Keep at least 20 to 30 GB free. More if you're juggling multiple projects. Treat disk space the way you treat memory: it's not where your code sits, it's what your code needs to run.",{"type":1480,"tag":1498,"props":1647,"children":1649},{"id":1648},"lets-up-skill-everyone",[1650],{"type":1485,"value":1651},"Let's up-skill everyone",{"type":1480,"tag":1481,"props":1653,"children":1654},{},[1655],{"type":1485,"value":1656},"Telling people to \"just understand their computer\" is easier said than done. Operating systems have spent fifteen years hiding the file system from users. macOS actively pushes you toward iCloud. Windows defaults to OneDrive. The whole UX is designed around not thinking about where files live.",{"type":1480,"tag":1481,"props":1658,"children":1659},{},[1660],{"type":1485,"value":1661},"And there's a real argument that vibe coders shouldn't have to care. In a better world, tooling would detect cloud-synced folders and warn you. IDEs would flag low disk space before an install fails. Package managers would clean up unused trees automatically. Some of this is coming, slowly.",{"type":1480,"tag":1481,"props":1663,"children":1664},{},[1665],{"type":1485,"value":1666},"But we're not there yet. Until the tools catch up, the gap is yours to close. That's not fair, but it's the reality of building software in 2026.",{"type":1480,"tag":1498,"props":1668,"children":1670},{"id":1669},"concluding",[1671],{"type":1485,"value":1672},"Concluding",{"type":1480,"tag":1481,"props":1674,"children":1675},{},[1676],{"type":1485,"value":1677},"Before you blame the AI, check the boring layer. Is the project in a local folder? Do you have enough disk space? Are the files actually on your machine? Is something else already running? Did the install complete?",{"type":1480,"tag":1481,"props":1679,"children":1680},{},[1681],{"type":1485,"value":1682},"If any of those are off, the agent is working with a broken environment, and no amount of prompt engineering will fix it.",{"type":1480,"tag":1481,"props":1684,"children":1685},{},[1686],{"type":1485,"value":1687},"Your laptop is part of the stack. If that layer is unstable, everything above it becomes unreliable. Your code, your tools, your agents. So before you optimise prompts, frameworks, or architecture, make your environment boring.",{"title":1436,"searchDepth":1689,"depth":1689,"links":1690},2,[1691,1692,1693,1694,1695,1696,1697],{"id":1500,"depth":1689,"text":1503},{"id":1541,"depth":1689,"text":1544},{"id":1579,"depth":1689,"text":1582},{"id":1616,"depth":1689,"text":1619},{"id":1632,"depth":1689,"text":1635},{"id":1648,"depth":1689,"text":1651},{"id":1669,"depth":1689,"text":1672},"markdown","content:4.writing:development-101-for-non-technical-vibe-coders.md","content","4.writing/development-101-for-non-technical-vibe-coders.md","4.writing/development-101-for-non-technical-vibe-coders","md",[1705,1727,1748],{"_path":26,"_dir":1706,"_draft":1435,"_partial":1435,"_locale":1436,"title":25,"description":1436,"date":1707,"position":1708,"image":1709,"videoId":1710,"transcript":1711,"tags":1712,"playlist":1706,"body":1720,"_type":1698,"_id":1724,"_source":1700,"_file":1725,"_stem":1726,"_extension":1703},"alive-and-kicking","2024-06-15T14:39:08Z","003","https://i.ytimg.com/vi/p3pm_0p8lZ4/maxresdefault.jpg","p3pm_0p8lZ4","so this talk is going to be a little different and I love that jillson was asking how many people are new here and a lot of people raised their hands so you haven't probably seen what I'm about to do because you don't see that very often at a stage for a conference about Tech stuff right so my talk is really about not how you implement the tech or how you do it but I've actually done it for you and we're going to have an experience with guitars and you guys get to do a bunch of stuff with the talk so it's hopefully it's a bit more about the inspiration of what fuds can do right so before we get started um I work at HRA and I'm doing developer relations and we love AI nowadays because that's actually my face on this F this dude and so hgraph is a hatless CMS um that is graphql native and so I won't go too deep into it but all the content that you see in this talk actually comes out of hgraph all right so I'm an ambassador for a bunch of cool stuff um of course n we have algolia we have super base we have cloudinary and all that stuff is actually in the talk and I couldn't really find any images of me um with the you know the swag on so I just literally took anything I had anyways um you might think that my accent is a little strange because I was actually born here I think that side across the water um so I'm from Amsterdam but I live in France and I work with Americans so this is how I sound when you do that and I've checked with my colleagues they use that cheese like for real that's the thing so let's talk about this talk and so I have a few images here of when I was young and skinny but why not that's when I was a proper musician and so this talk is called Alive and Kicking and so the idea is that I created a guitar karaoke application because if you play guitar you want to do that as as many places as you can right and why not at work well that's what we're doing here and so essentially we use the guitar in the browser so the browser controls the whole karaoke application and of course we're using fuggs and so the thing is that you get to vote which songs I play and so what I've come up with is you can be kind of like a DJ because the idea is that I made something called like a mashup like a DJ could do a 20 minute set and it'll have five songs that kind of flow well together we're going to do that today but you're going to be fting which song comes when and I kind of have to figure out what that song is by just looking at my screen and then playing it instantly and it just it will Loop so if I don't look it's a problem right so you vote for your favorite mashup of the eight songs that I'll you know you'll get on your phone in a second so you'll get something like this and you I try to have songs that are a little bit rock and roll focused but hopefully for everyone right so we have bon Joi with its Mickey Mouse rock and then we have Iron Maiden with the proper metal like I have hopefully something for everyone and so I've buil it with all the tools that you've probably seen um today I won't go too deep into the tech right now I think it's time to just get you awake and play a little bit and then we talk about it more right and so like I said fugs controls the whole thing and I I'll we'll go over what this box is what the guitar does all that in a sec all right are you ready to rock yes let's go but one thing first um the conference here is helping me a ton with this right because you see I have the whole screen there's a whole bunch of extra things happening and so what I would love to do is um when you vote for your mashup you can actually share that and then once you share it you see there's like the the hashtag of fugs Amsterdam and so what I would love to see is like all of Twitter full of fugs Amsterdam stuff so these guys get like some organic growth from you and of course it's fun that my stuff is shared so let's let's be honest about that um so take out your phones and scan this thing or if you're on your laptop or tablet or whatever go to Alive and Kicking dodev so while you do that I'll just grab my guitar and get ready is it working it better work it's going to be a rough day I'll leave this on for just a sec so you guys have a chance to get there okay well that's working are we good to be honest once I start on that screen there you'll have the QR code as well and so just for you to remember it's called Alive and Kicking dodev guys can you turn off these lights a little better oh you cannot scan oh the new iPhones and their F their focus problems that's problematic I did not consider that okay so go to alive and kicking. Dev instead all right so I'll give you a quick note on what's Happening Here while you figure it out so have you guys been able to log in because then you can start voting on the songs like you have four spots right now we have zero votes and so these are just the first four songs that we have on so feel free to start voting for your favorite songs which spot is which that would be one 2 3 four ah and the screens are starting to work we're seeing some photes I think I have to do a refresh of my browser there we go so what you see here is when you vote you see your little icon bounce around so keep voting as much as you can and you'll see yourself be part of this and all of you are here and it keeps updating every 10 seconds and so this is using super base real time so all of this is basically a websocket so what whatever you see is live so this is starting to go so while this is going let me show you quickly what I'm dealing with here so this little red box has an input from the guitar it makes it digital and so this is an is an is an amplifier application and so we don't need amps we don't need anything we just plug in and go so um what I asked last year is try to hack it please I want as many photes as possible so if you can hack it it feel free I think it's a little safer now I did a lot of you know security stuff this time but here we go so it seems like Michael Jackson is the first vote so what I'll do now I'll make this go and then you can no longer vote for the first one but you can actually change the second third and fourth here we go e e [Music] it oh [Music] be [Music] go thank [Applause] [Music] you to listen to me why about nothing and everything all once I am one of those melodramatic fools neurotic to the bat no doubt about it sometimes I give my myself the creeps sometimes my mind plays tricks on me I'll keep set it up I think it [Music] just I shrink I like my dreams she says it's like the step that's bringing me down and I went to he said my [Applause] qu sometimes I give [Music] myselfs sometimes My Mind Tricks on Me it all keeps heading up I think I'm get [Music] [Music] just to control so I better hold [Music] sometimes I myself theep my Minds on me it all keeps up it my know I Just sh [Music] what's next thank you oh yes [Music] [Music] it by [Music] day very you can [Music] to the work here every day learn to live like a see [Music] w [Music] [Applause] [Music] [Applause] [Music] [Music] [Music] [Applause] I [Music] [Applause] [Music] oh [Music] [Music] [Music] he [Applause] [Music] [Applause] [Music] [Applause] [Music] y thank you very much all right I think it almost worked Nikki do you mind refreshing that browser we tried a crap okay I told you to use Chrome didn't I all right all right all right so let's chat a little bit about what happened all up there let's turn that volume off um and the lovely thing is I still have 22 minutes so what I can do is actually change it up in a sec to its normal mode so you can just F and we can actually play all the songs there's more than enough time which is awesome uh let's see what are we dealing with here so let's talk about some fancy term that we call the signal chain and so the signal goes from the guitar which is this bad boy here and the strings vibrate to these we call them pickups and this is analog signal that goes out here and that analog signal somehow needs to come into the computer and we do that by this lovely Focus ride box and everybody uses these there amazing and quite cheap and so they go into the box I'm saying it's cheap because it's very important because now everybody can do this anyways you go into the browser or into the computer and then the computer actually goes to the speakers here right so that's the guitar to the speakers but then inside the computer we have this little application that I just showed you that made my guitar sound the way it sounds it's like a virtualized amplifier normally it would be a big speaker here with a bunch of knobs and pedals on the floor and musician always love this stuff because it's extra gear you can deal with it but the whole point was I want to just put my laptop down to a conference talk so I did a virtualized one and then also we have the browser so the browser is playing this backing track and that also goes to the front of house here in all the sound so basically those two things are mixed and it's lovely for me because I can control it our lovely sound people just get whatever they get from me so there's not much mixing involved but I'm sure lots of fixes were done on the fly so thanks for that Andrew and so then the browser talks again to this amplifier because of course the intro versus the first versus the solo have different sounds sometimes there's more Echo sometimes there's a different equalizer so I need to make sure that I don't have to step on any boxes for the sound to change I don't want to think in this setting right so let's talk about the browser for a sec so you can see of course here on the left top that's where you see what song is playing all the photes all the things and then it will automatically actually go to the next one and so I've had to hack that one because if I want to play the next one and I needed to refresh the browser I going to do a click with JavaScript because it needs a user interaction to do autoplay for for the song so there's there's lots of like little tweaks in there that I had to do and so then you see The Equalizer right and so this actually responds to my guitar so this is a live Channel with an audio like there's there's this web audio API and so it can analyze and that's what this is and it's just a canfest that just goes 100% And it's it's kind of true to whatever the sound that comes in and then we have the audio player that has these chapters the thing I just talked about right and so each chapter would then actually say well for this part of the song go to that preset and so all this information the presets the chapters the images they all come from high graph which is the CMS I work for right and so of course you can put this stuff in adjacent file or in any other CMS but I work there you see there's the hat so there it is and so um it's actually pretty cool that you can do so many different things with hatless stch like all of this happens in the cloud right and um this is not an application per se it just talks to things on the side and figures things out together and then it's all in the client all the fting you saw it's all in the client right and then of course that little up up the iron sound goes to the amplifier gives the sound and we play and so on your phone when you're fting something it goes to super base so super bases has this there's a bunch of stuff like you're logged in with superbase also and they have a post exess database so every phote you do is your user ID with the phote of the song like the ID and then which spot and there is a um well when the moment that happens you see like right now the screenshot has a zero but it of course scks up when you put a phote and then you see all the balls bouncing around and that is something super cool with super base and N where you could literally say I have a real-time channel that listens to a change in the database so for now I just said update or insert and based on that it says hey there's a change and then I use the the use async data composable in N to just refresh the call and query the last thing and so if that happens a thousand times it does a thousand new queries for the last row that was just inserted and it is good enough for now because sometimes you might get five votes at the same time but I didn't put any database locks because who cares it's a conference talk and you know what it held up pretty well you guys were fting your butts off and it had 60 frames per second the life thing was happening and had like the technology today is is insane that it works that well and so this is the stress test I was doing on my local host and so this is literally just everything you see is a new query and the lovely thing I've noticed with super base especially when you do a query just one it's like 100 milliseconds but when you do it like this they become like four milliseconds like it scales up like crazy and so one last thing that I didn't talk about at all these songs were short right they were like two-ish minutes and I wanted to do that because otherwise I'd be be an hour here and it's these songs are repetitive because awesome focals and things but I'm just playing guitar so what I've done also for copyright issues I have basically taken these songs and cut them up and I used AI to isolate the instruments and it works most of the time and so what I've done is like taken the drums taken the bass taken the focals make it shorter put it in remix it with the help of lovely Nikki who sits behind there doing the production awesome Nikki and basically she helped me to mix and I played my own guitars and so what this means youve see so there's eight songs here so I basically recorded an EP for this but then with famous songs like I've been just playing myself because all these songs they have all these fancy bells and whistles that make no sense for me to play guitar over so I just kind of stripped them made them easy to listen to well my guitar is over it and that's what you heard today and so there's a few months of work there and so this is the first thank you here um doesn't mean it's the end because I have 15 minutes so lucky me right I expected 30 so that would be on the dot so what we're going to do is there's a different mode in my app where I just right now it's mashup mode but let's just put it on on the normal mode so you guys can vote on the songs that you hadn't seen yet so it says extra secret confict but you guys cannot go here I promise it won't work I promise try but maybe not I don't know I don't know okay I'm just going to reset everything now so photes are gone active songs are gone all the things are gone and we're setting it to normal mode you saw that IM immediately change that's the live super base thing I changed the database row it listened it quered again something else are you looking at my page are you I did not show you this seriously it's connected to my ID okay anyways so please don't go to that page because that not fun anymore so refresh your browsers and you'll see a different way of voting now you just have eight songs and I would suggest you vote on the songs that we didn't play yet and in that order we finish the rest in the last 15 minutes you see how performant this is it's all in the client so we we don't need that much there's no SSR here anywhere I know we talk about that a lot but if you can do it like this why not browsers are fast F okay so while this is going on I need to tune because I felt my guitar go out of tuning the hotlights while I was playing oh boy oh boy so if is there a buck in my application or are you guys faulting like crazy I don't see any double faces not really wow or maybe some or who hacked it raise your hand who hacked it the people who really hack it will come to me after and show me I hope right it looks like it's going to be Iron Maiden so what will holy moly can hardly see my interface so what we'll do is we'll just play the songs I didn't play yet in the order of your votes and while I play you can continue voting so let's start with Iron Maiden and then it's going to be Bon Joi then it's going to be Aerosmith and then I just can't read okay we'll see at that point here we go are you ready for some like old school rock this is like I never play this stuff right so this was like practice to the max this song Here We Go [Music] [Music] [Applause] [Music] you take my life but I'll take yours too you fireing musk but I'll run you through so when you're waiting for the next attack you better stand there's no turning back so few charge begins on this battlefield no one wins feel the just down [Music] [Music] [Music] oh [Music] [Music] no yo if I just keep smiling you don't hear the mistakes that's what happened there I hope I didn't show it too much all right who's next well Metallica we did right oh we did not what that's awesome let's go Metallica that's fun you guys are rockers is this an alarm I have to worry about okay we're good [Music] he he [Music] [Music] T the W the drag and the that with [Music] your my hand never [Music] w [Music] [Applause] s minutes let's do this okay we're good e e e e [Applause] I think there's one left are you ready for some 80s yes this is going to be full force Mickey Mouse rock for you and you know what I might say that but this is so fun to play this is like pure party here we go through the too late love bad [Music] name Angel Smile what you say you promised me heaven and put me through hell Jesus love got to hold on me pass of prison you can't break free oh you're not God W there's nowhere to run no one can save me the damage is done shout out High and love to you love I play play all game you love you love [Music] [Applause] through the heart [Music] andame that's it thank you thank you so much for entertaining me in my guitar Endeavors here um I want to thank you and I don't have my phone on me but I'm hoping Twitter is full of your shares because that would be super fun and you can follow me on YouTube or on Twitter and if you feel like I can just give you one CTA check out hgraph because I'm doing a guitar talk I'm not talking about my job at all but feel free to have um you know it's like a free account and it's a super cool CMS so that's it for me thank you so much and have a lovely conference cheers",[1444,1713,1714,1715,1716,1717,1718,1719],"headless-cms","cms","web development","api","Cloud","Media","Content",{"type":1477,"children":1721,"toc":1722},[],{"title":1436,"searchDepth":1689,"depth":1689,"links":1723},[],"content:3.videos:alive-and-kicking:003-p3pm_0p8lZ4.md","3.videos/alive-and-kicking/003-p3pm_0p8lZ4.md","3.videos/alive-and-kicking/003-p3pm_0p8lZ4",{"_path":78,"_dir":1728,"_draft":1435,"_partial":1435,"_locale":1436,"title":77,"description":1729,"date":1730,"position":1731,"image":1732,"videoId":1733,"transcript":1734,"tags":1735,"playlist":1728,"duration":1740,"body":1741,"_type":1698,"_id":1745,"_source":1700,"_file":1746,"_stem":1747,"_extension":1703},"contentstack","Data & Insights help you figure out the intent your end users have on the website. Combine this data with other data sources in Contentstack Data & Insights and you get a powerful engine to create the content your users want.\n\nIn this video we explore the Audience Insights App","2025-06-16T09:43:57Z","014","https://img.youtube.com/vi/-rbbSWoWn6s/maxresdefault.jpg","-rbbSWoWn6s","Data and insights are now available to all current content stack customers. In your base package, you get the following things. The opportunity explorer, the content graph, the audience explorer, and the advanced audience builder. And in this video, I'll show you how to get started quickly. Let's explore the brand new audience insights app. And for that, you have to go to your stack. So, we go to the CMS. Then, we find our stack. And then in the apps, you'll see that there's audience insights here. And this is a very interesting application that looks at all the insights gained by your visitors on your website. And we use machine learning and a bunch of really clever stuff to kind of figure out what are very interesting audiences for you. And so in my case, you can see there's a lot on the right here. So let me just move this to the side a bit. And this happened because I have recently had a bunch of visitors that kind of clicked on a lot of things. But if you can see here, we have intensity on the X value and prevalence on the Y. And the larger the bubble, the bigger the calculated audience size. Well, clearly this jewelry website that I'm working on is all about style. And you see there's earrings here. There's a bunch of different things, but by far the most interest intensity from our visitors, I'm actually getting in silver. the intensity is 0.98, but I do not have an audience for this. So, I can actually put the people in a bucket that like silver and then personalize for them or send them emails or things like that. And so, this is a very very interesting tool to kind of start figuring out, hey, what are my users looking at and how can I create maybe a potential audience of these specific people and then personalize towards that. And you can also see it over time. So if you go back let's say last month I kind of started to get all these you know these users here. So let's generate that and see that timeline and now I can go back full screen again. So you'll see that's everything there was not that many visitors right so it takes a few days for all this information to start you know um popping up and getting into these models. And now you can actually see that over time my users are very intense. They're finding a lot of information. And so you can really see if I just started the campaign and there's a bunch of new information on these pages. Let's see how people actually looked at that and what their intensity is. And there's a lot of different things about frequency, casual visitors, at risk. Like you can go deep here and this is very very cool stuff. So our next part is actually the content map and we were just talking about silver, right? So if we hover silver here, you can see it goes into a bunch of different routes. And so this is a very interesting map to kind of figure out where all the things go. Like when I go to gold, there's a bunch of links here. But when I go to link, it goes to other places again. And all of this is going to help you to figure out what is my content map, where are my biggest audiences at, what can I do with all this. This is very, very interesting stuff. And then lastly, we have our audience explorer. So we can say well last visit within a day what actually was their affinity what did they well they all kind of like style we saw that on the top here style is a big one for this website right but there's also tech optimism there center earrings things like that and so when you hit earrings here you can see there's this little graph about when in time they were interested in this you can also see well maybe anonymous profiles or deeply engaged users right and so there's a bunch of different information here you You can also see all the things you already created here. Like I have an earring enthusiast one that kind of like this drop earrings, right? This is very interesting to see if they actually went there and what they want to do with that. And so we can also just go to all our audiences inside our data and insights application and you can actually see them here. Like I have one that says likes gold material or as an earring enthusiast. So, when we look at this and we hit edit, there's a bunch of different things I've set up here to make this work. Like, if there's an affinity that is for earrings specifically because they go there all the time. Um, if this hits, we put these people in this audience and then you can do stuff with that audience later. I've also set an or. So if they either have an affinity to this product range or they actually have the recently visited category of earrings, we put them in this audience. So you can sync these audiences to content stack. But if you want to do that, you need to buy the content stack personalizer project. And so this is all I wanted to show you this video and we just released all this. We are very excited about it. We are ready for your questions. So reach out and we get you started. Happy coding.",[1736,1719,1714,1444,1737,1715,1738,1739],"Data","personalization","Commerce","Optimization","4:50",{"type":1477,"children":1742,"toc":1743},[],{"title":1436,"searchDepth":1689,"depth":1689,"links":1744},[],"content:3.videos:contentstack:014--rbbSWoWn6s.md","3.videos/contentstack/014--rbbSWoWn6s.md","3.videos/contentstack/014--rbbSWoWn6s",{"_path":92,"_dir":1728,"_draft":1435,"_partial":1435,"_locale":1436,"title":91,"description":1749,"date":1750,"position":1751,"image":1752,"videoId":1753,"transcript":1754,"tags":1755,"playlist":1728,"duration":1759,"body":1760,"_type":1698,"_id":1764,"_source":1700,"_file":1765,"_stem":1766,"_extension":1703},"Join us for a hands-on demonstration of Contentstack's Automate and how to configure it to set content teams up for success. Take a deep dive with special guest, Sr. Product Manager - Christine Master, into Automate and learn how to use it for copying content from an external source, translation, taxonomy, and analysis.","2025-03-27T04:05:56Z","019","https://img.youtube.com/vi/KhEV1dHs-aY/maxresdefault.jpg","KhEV1dHs-aY","[Music] Hey everybody. How's it going, Tim? All good. We have such a good stream today. It's going to be fun. Yeah, I'm so excited. Welcome everyone to um Content Stack Polls for developers. Today we have a fantastic stream for you. We're going to be talking about all things Automate. Um, and we have a very special guest, senior product manager for Automate and Brand Kit and AI assistant, Christine Masters. Everyone, welcome Christine Masters to the stage. I want an applause sound. We just don't have it. I wish we had an applause sound, but there we go. Welcome. Very good. Very good. So excited to be here and talk to you guys. This is super cool. Oh, this is going to be a whole lot of fun. So, we just you up like a lot. So, we Let's deliver now. Let's Sorry, that was really serious. I didn't mean that, Christine. We're just going to have fun. So, this is like a webinar. We're just gonna have We're going to show you some stuff. And so, maybe one question before we kick it off. Can you explain like for the folks that don't know what automate is because it's very generic term like maybe give us the elevator pitch and then it's all yours. Yeah, let me show I have a couple of slides and I know developers are kind of allergic to slides but um Oh, it's great. Um but so so yeah so we'll we'll try to do this really really quick but I think you know as a product person I think in slideshows so it you know you have to kind of get on my page a little bit as as we're talking about this but I'll go through this very quickly. Um so just to sort of get started I wanted to talk a little bit about practical use cases with automate and AI. Um we started off obviously a couple years ago working on automation and then you know chat GPT came out and we built it into the automation platform and the two things together are obviously really really powerful. Um taking an automation and adding AI as kind of like the brains behind it is just really really cool and we'll show a lot of that today. Um I'm super excited to to share some some of those examples but I wanted to talk for just a second just about some of these use cases like so over here we have sort of the traditional idea of generative UI of generative AI where you're writing a blog post redoing the headline you know that kind of very external facing stuff right but then over here I want to make sure people understand that there's a whole bunch of stuff that you can do with AI and automation that isn't putting AI content on the site. It's much more behind the scenes helping you with efficiency, helping you get stuff done, but without if if you're a maybe a financial company or a certain kind of company where you feel that AI is too risky for you right now, you can still do a whole bunch of stuff behind the scenes, right? QA testing of links, um adding keywords and metadata in a certain way, you know? So like all of those things can be done with this um and but not necessarily putting like a new blog post on your site. Does that make sense? It does. We we did however went from what is automate to talking about AI. How does that connect at all? Yeah, that's that's a very good point. Like both things together. So just as an example of um using automation to autotag something that's like use the AI is the thing that actually does the autotagging the it's part of the automation. So they're they're both kind of the the same thing. But but yeah, but just to explain that even for people who are um you know maybe not interested in doing a lot of AI work, there's still a lot of things that you can do with automation or automation and AI to really help you you know get get more stuff done and get rid of all the boring parts of your job. That is kind of the the goal that we have. That's the result. No more boring parts. I'm good. That's Yeah, I mean that's that's kind of the goal. I know I've talked to some customers where, you know, somebody spends four hours a week putting tags on images, you know, yeah, the tax, let's get rid of all of that stuff and just focus on the the more fun stuff of the job, right? Um, so let's talk for just a minute about the automate platform itself. And I think for developers, they'll very much understand this. It's, you know, it's essentially just the system of APIs and web hooks. You always start with a um you start with a trigger which is just a web hook and then you have kind of like steps that go sequentially after that that are just either you know functions or APIs or something like that. You can have conditionals, you can have um loops of things, you can have like multiple steps, you can have steps that trigger other steps. So you can kind of build these really relatively complex workflows but without a lot of code, right? So um this is something where again like I said a product manager can build some of these things without necessarily getting into a lot of code. For a developer we do have code blocks and you know serverless functions and things like that. So you can still do a lot of stuff that looks like code to a developer but for someone like me who isn't a coder um you know there's still a lot of stuff that you can do in here and and actually get a lot of stuff done without having to get into code. Yeah. And like particularly like internal stuff, right? Like like if you want to work within like the content stack management API, you can do that in here versus like also being able to do like external sources, right? Yes. Yes. Exactly. And you know this was started one of the reasons why we built this is a platform. This isn't just like a simple tool. You can actually have a trigger in a third party that does an API thing in another third party that has an output into another third party. None of it actually using content stack specifically. Um so it's very much a robust um endtoend platform um that you can it's not necessarily just like you know only you can only do stuff in content stack. It is a true like robust system. Um but that being said, you know, it it is something where we do have a lot of features where it's built into the system. Um you can do things like and we'll show that today. You can actually trigger an automation inside of the editorial interface, things like that that make it very very powerful and that makes make it more powerful than just kind of web hooks and APIs alone. So um the the very last thing I wanted to say is we kind of were just talking about this before before the call. What are some things that we want the developers to understand about the product? Um, the first thing is, you know, and I'll let you guys talk about this a little bit, but just kind of the idea of putting all of your code into one place. I know I've heard from other developers that sometimes, you know, you know that there's a script on some Amazon server somewhere, some Lambda function that is adding keywords to something, but you're not sure exactly where it is. Frank set it up two years ago. You don't know. Like I had someone saying that they weren't sure what like AWS region it was in. um and you know like all of those kind of things it makes it difficult to find this. That's a really great thing about this is that it's always in the same place as your website content, right? So everything can be you can still have like web hooks that go off to other places but it starts here so you can always log in with your SSO. You can always see it and have have a starting point of where it is so that you are you have it under control. Yeah. You don't have to play detective. Right. Exactly. Exactly. So when I I use this if I like like you just give this example, right? Our management ASDK or API like I always dread having to code yet another serverless function somewhere that then does something with our management API and does something to another service and then gets some data back and like I'm like okay I'm just going to have to code this write unit test all that blah and now I realized I can actually just do that in an automation and then have it return some data to me. So I am now putting all my code into automations that return data to me. So there's no real complex code in my front end anymore. That's very interesting. Yes. And I' I've heard that from a couple of developers actually that they after they sort of get used to the automate tool for like rapid prototyping. It's like really nice. Someone gives you an API and says, \"Oh, like we're going to do a PC for of this vendor or whatever.\" You plug it in, you see what it does. You plug it in, you put it over there, you and you're like, \"Oh, yeah. I can, you know, do this, you know, um without having to set up a lot of, you know, again, serverless functions or whatever to make it.\" You can just like rapid setup is basically nothing. You just go Yeah. Yeah. Yeah. Yeah. Awesome. So, yeah, I think that that's like kind of the the basic intro. Is there anything that uh I want to see basically? Yeah, let's go. Let's get into some examples. Well, look, we commented on our own stream. I love it. It's like like magic. I can do it again. Okay. Sorry. This is too much. I I'll fine. It's fine. I'm just showing we have the power. What's going on? Let's talk about some fun stuff. Let's do some automations. Let's set some things up. Yeah. Yeah. So, um, one one really interesting thing that I want to talk about. So, first off, what we're seeing here is the the automate, um, kind of entry page, and you can set up a bunch of different projects to kind of organize and, um, you know, group together your different automations. Um, one cool thing about this is that each of these folders has different permissions. So you can actually have, you know, a production folder that only one person has access to because you don't want anybody messing with those keys or whatever. And then you have another one that has all of your your dev projects in it. Um, and then when you're ready to go live, you can kind of clone it into production, set it up, and then again, nobody can go in there and mess with it. So um, I think that's kind of a a neat strategy. Um and um yeah and then essentially in here we have um just a list of all the different automations in these ca in this case the the new thing that we have launched in um a couple months ago is this concept of ondemand automations and this is where essentially this is the editorial interface. I have an automate kind of toolbar over here where I can launch automations while I'm working in the editorial interface. And so it used to be that we would set up like workflows that we'd have like a review workflow and a um governance workflow or whatever and those workflow stages might trigger automations which you can still do. But this is actually nice because a user can see it on the page and then approve it like with their own eyeballs and look at it and then save it if they're if they're good with any of those changes. So I think that that's a really nice paradigm that if you're doing any kind of reviewing and editing within content stack, that's a nice way to be able to look at those things. So you generally have an automation in a sidebar that works on the entry you're dealing with, I imagine. Yes. Exactly. Sorry. I was just going to say like that's a great like user experience, right? Because then you don't have to switch back and forth. You can just have it right there while you're working on your content. Yep. Exactly. Exactly. And the the one really cool thing that we actually have a a feature where it will write to and I actually I'm not sure how to explain this um but it's like writing to the user session or the the draft of the user's page, right? So it will um it will you can you can see it change and then you will say like um then you read it and then you can save it, right? So it's not actually ch making a version of it that's saved. you're actually able to do it like as a draft update on the page and then you can save it. So, which is again another feature that I I really like because people again want to have that kind of review. It's just like they did it but just a lot faster. Yeah, exactly. So, um so I I wanted to kind of explain one really quick thing. Um and I think that and I was I'll just show this. It's a little bit different than your uh than your order, Lo. So, I just want to show this very quickly. Oh, that's all good. We always go rogue. We're good. Yeah. I'm going a little rogue. I'm going a little rogue. Makes it spontaneous and fun. Yeah. Yeah. Or a nightmare, but we'll see. We'll see. No, we're good. We're good. Yeah, this is just something that I've been just really excited about where there especially with um ChatGpt has this, Gemini has it sort of a lot of the newer LLMs have this capability of they call it structured output mode where it will write in compliant a specific compliant JSON schema that you define. Right? So, let me show you really quickly what that's like and then why we kind of like that. So I'm going to turn this off really quick so we can kind of edit it. But now, so you can see here the very first thing in the list is my trigger. So in this case, my trigger is the the sidebar. So this is going to be a user triggered this event, right? I see. And over here we can have this is where I'm kind of defining what kind of event this is. Um, one thing that we when we very first launched this capability of having the user kind of click to start the automation, the very first thing we wanted to do was to be able to gather information from the user at the point of them invoking that trigger. So, this is kind of an option here where I'm I can build almost a little form to ask them questions about stuff. So, in this case, I'm asking for them to write in basically a command to AI. Okay? So I'm saying you know what what kind of custom command do you want to give? I'm going to collect that information from them and I'm going to send it to AI in the next step. Oh, cool. Okay. Okay. And so any any kind of thing that they want to ask the um the the AI to do, they can just type it into this little box at the point of invocation of the automation. Um but just just note here that I can add a number of things as input options here. I can add like if I wanted to say, you know, what's your name, right? Um, then I can add either a string, a boolean, a select field, a text area. I can have like a little description area here. You can have as many of these form fields as you want and that you're basically creating like a little mini form that the user can fill out again at the point of invocation. And then you're able to gather that data and pass it to the next steps of the automation. And can that automation like the next step can it also get the information from the entry that this was invoked on? Yes, absolutely. Any anything that you're doing in terms of so I'm going to delete this um anything that you're doing in terms of uh you know building these automations, you can always like click and see all of the data and it will actually have the data from all of the previous steps that you can pull into any place in the automation. So I'll jump over here. This one is the This is kind of the chat GPT interface and you can see like here's where I'm selecting my model of chatgpt. Um in here I'm I'm filling out you can have your your system assistant and user fields here. Um, now for those of you who have worked with, you know, kind of the LLM APIs, um, there's a, you know, a bunch of stuff you need to know how to do in the set the message and set the system and set whatever here. It's just a really nice form. I don't need to learn any of those APIs. I don't need to do any of that stuff. It's just a form in here that I can do. I can actually do they have this concept of like multi-shot um, like prompting to the LLM where I can say here's what the user is asking. Here's what the assistant is saying. Here's another user asking. Now you go like and that's kind of like um training the LLM how to answer the question. You can do that. Yeah. And you can do that really easily in here by just adding additional prompt text. So I can say like building context. Yeah. Yep. Exactly. Um so this outputs into one big prompt essentially right that you GPT but it's it's form based so you it's very nice. Yes. Yes. So, so again, I don't have to learn all of those things, but I still have all of those um powerful features available. So, this is kind of an example also of, you know, these are some variables that I'm pulling in from other steps in the automation. If I wanted to say like um you know, let's see. I don't know what what I'm going to say, but like uh here is the server and then I wanted to tell the LLM something about you know, what server it's on or whatever. here's a list of all of the different, you know, the payload from my previous steps that I can pull in just one piece. So, here's the title, right? So, if I wanted to tell them here's the title of the previous thing, I can actually add that in there very easily. Um, doing it that way. Um, I will say one thing that sometimes um people, you know, might get uh confused about is like again what step you're on. And you could see in there the the entry sidebar if I'm on this step, right? Then I'm able to see the the two steps above that, right? If that makes sense. Um and so yeah, you're able to kind of pull in any of that information. So now imagine, so again, this is my instructions to the AI. Imagine if I wanted to do something like, you know, pull in data from my product database, right? um or pull in data from Wikipedia or pull in data from my company, you know, whatever database. So, I can I can reach out to any APIs, pull them into my workflow, and then inside of my instructions to chat GPT, I can reference pieces of the payload from those different APIs from the external source. Yeah. Yeah. So, you put an extra step between one and two now to do an external call basically, right? Yep. Exactly. So you can add any steps inside of any other steps. Um we actually support you can see there's an action step or a conditional or a repeat path. So again I can do kind of conditional logic. I can do repeat loops without noting any code. So yeah. So like if in the entry sidebar I set my name, you can do a condition on if my name if that name is Tim or Christine or low, you can then do another action step here to ask an agent to Google me or to basically just get uh you know a product from Big Commerce or something, right? Yes. Exactly. IO. Yeah. Yes. Yes. Yeah. So, I mean, imagine um I know that we're working with one customer who they want to make sure that they're not duplicating content from another database, right? So, we actually are like cloning over the the database into a vector uh vector database and then we're doing a similarity search between what you're currently working on and what's in that vector database. And then we take the the most similar thing from that database and then we compare it to what you're working on just by asking AI, here's the thing I'm working on. Here's the closest thing from over here. Are they the same? And then if they are, it will um it will say yes, they're the same thing or whatever. So, it's really cool that you can like pull in all of these different steps and things from other places and then just like pull them into AI and ask AI to like do some stuff with it. Again, you know, I'm not a programmer. I'm sure that you can do the same thing with without the LLM, but it's like super easy just to like put it in and be like, \"Hey, are the are these the same?\" You know, you don't have to like parse them or whatever programming people do. I imagine if you have to do a million of these calls, you're not going to use an LLM, but if you have to do one a week, it's fine. Right. Right. Right. Or or even like maybe 20 a day would be fine. But yeah, I wouldn't do But you're right. Like I was joking with somebody the other day that um they said like can we reorder the things in this array? And I was like oh yeah I could just send it to chat GPT and just reorder the array. And then I was like you know there's probably a better way to do that. Yeah. Yeah. Me too. But in general this is like a big time saver. Like a lot of the things that you're showing here, if you were to custom code this, it would take a considerable amount of time, right? All that extras end to end tests, making sure everybody knows about it. If like that's what this makes this cool. So, should we just do one? Can you just Let's see. Well, I don't know what this one is. This is an AI everything. So, I'm pretty excited about that. Yeah. What does this include? So this particular one um basically we'll just so we can go to like this um let me just refresh because I don't need to make sure that we're this page. So this one I have like you know these are some like Bose head headphones. Um so I'll just use a really quick example of that AI anything one where again we kind of saw how this is set up right this is set up where I type in a custom command. that custom command is just basically sent to chat GPT with the article, right? And then again, we use that structured data. It's kind of like I don't like using the word training, but essentially in that in that um setup, I showed it the structured data for how to update this page. Actually, we should show that really quick. Yeah, I don't think you actually really show a little bit there. There. just there's basically a part here where you choose what kind of output you want and structured output is a very spec you can see that JSON is one of them but structured output is like a very specific oh yeah you have to stick to this structure and then you add actually you add like a JSON schema here yes so this is based on the content model and it's explaining to the LLM this is essentially what's in my content model and so the LLM would use the API to use this structure to send it some data that it changed ES and therefore your entry will just be updated with data because you send it to the API in the background. Right. Right. And it knows where to put it. Yeah. Sorry. I just was speaking through it to actually understand. But luckily you're good. Yes. You're fine. Yeah. And so like if I and I think like one of the examples would be like you know like replace um like we'll say the word bose with oops. Awesome because they are an awesome company. They are. So now this is essentially sending this to chat GPT. It is like reading all of my text and you can see that on the fly. No. So, think about like what kind of use cases do you have where you have to do like a find and replace and you're copying and pasting into something else back in or are you do you do you ever have to do something where you're like you've got all these like gross like Microsoft tags in there, you know, like or like um you know what I mean? Can you actually ask it to remove the Oh, okay. Christine, I have one for you. Can you do AI anything again and then ask it to remove the unordered list from the rich text field? Oh, this is going to be a hard one. Let's see. Oh, I want to see this. I love that it also changed the slug like the URL, too. Yeah, exactly. Oh, body copy. That's even harder. So, it's not even saying rich text. We're just going to say this. Yeah, we'll see if it does it or not. But, yeah. So, Lo, you mentioned that that actually might be something that we don't want it to do. Yeah. to work. No, especially if you don't have redirects set in place or anything like that. Exactly. Yeah. The URL, don't touch it. This is No. Did you just see that magic? By the way, the fact that that worked is Oh, it worked. That's so cool. Yeah. And you can ask it to, you know, like pretty much do whatever kind of text changes that you want to do. And it will, again, it's been trained. I don't like saying trained, but it's been shown the the schema for this page and now I can just do anything in terms of those types of things. So amazing. The other thing to clean this up or make it markdown or whatever, right? Yeah. Or like would it create a table like did you get it to create a table? I have no idea. Let's try let's try it. I have not tried this before. So create a table at the top of the body. Copy. Yeah. But what do we put in the table? Shows uh some of the the best features of these headphones. This is going to be interesting because it's going to [Laughter] Oh my gosh. Um um we are responding like this because almost every customer call I'm in they're complaining about rich text because it's just complicated. Let's be honest. It's not easy. It's not that this is a bad product. Ratings. Did you see how good this is? Yeah. And it added ratings and reviews. Yeah. I don't know before. Is this like fake data or did it actually get it from the rest? That's a good question. I'm not sure actually. Um [Music] but we could build it that it goes to the pimp system, fetches that data. We can build that one. Yes. And you know the the other thing I would say too is that um one of the things that I did not I mean obviously we are you know uh we could put into the instructions which I don't I don't believe that I did in this particular case. we can say like make sure to only use factual information that was included in the the um the the entry or something the entry of the page, right? Yes. And I've done that a couple of times where um uh so another one that we can show a little bit too is basically like a copying and pasting in one where that one I actually asked it to extrapolate based on the content that I'm put. So I can put in just a very small amount of content and it will actually like make up stuff and like extrapolate that onto the page. In the other direction, you can say do not make anything up and only use the headline, the subhead, the body copy as it pertains to the page. Right? Um so let's try that one really quickly. Like so I have let's see. So so by the way notice that wasn't saved. So right so none of that was actually saved. Nice. You as the editor get to like look at it with your human eyes and then it exactly if you like it then you can save it. Um while you go to the next one Jesse when you're in the chat and you feel like you have a question you want to challenge Christine to see what this AI can do. Feel free to put it and we might try just if you have it. If not that's fine. This is wild. It's pretty amazing. Yeah this is I didn't expect it. I'm still blown away about the table. Yeah, I'm glad that we So, what did you just do, Christine? What did you just I'm gonna drop this over here. I just took like a random page and you can just copy pasted this all of it. I copied the whole page. Okay. And then basically put that into So, I have this like smart paste thing. I just put that in here, right? So, this is just like a bunch of like blah blah blah blah from the page. Um, and then it wrote the headline. It wrote the Now, in this case, again, it wrote the URL, but we can tell it not to do that. So, you can add instructions. Um, and then it like wrote this little page here. Please go to my blog post. Like, just go to timbings.dev. Grab a blog post and add it. Like, if that works, I'm going to change jobs. What are you going to change your job to? No longer programming. That's for just go to writing on the top. Which one do you want? Let's see. Yeah, just grab anything. just whatever anything with AI. Maybe I have to rewrite this now because it's it's actually much more impactful. Yeah. And then I'll just like use this same page here. So, um Smart Paste whatever this is. Uh oh. So, headline change the URL. The headline the URL. Wow. This is clean HTML as well. And you see it found the category AI when it was published. Yeah. And it the headings. Now imagine though now this particular automation is like literally a three-step automation. It's just sending it to AI and writing it back. But if you wanted to like like we were saying before, pull in Wikipedia, pull in the product thing, pull in multiple sources, doublech checkck the data as you're putting it in. You can have like one AI check the other AI and make sure that it, you know, follows certain guidelines. You can pull in your brand kit. So brand kit is a a new product where you can kind of establish your voice and your guidelines. Pull in brand kit and say does this follow our company, you know, policies for things. Um so all of that can be done at this like cutting and pasting time. Um to get rid of the, you know, like I said, get rid of any kind of um uh tags from an external system or something like that. um all of those types of things, you know, you can clean that up, rewrite this. I mean, any of those things you can you can add as part of that. So, it's it could be very very powerful um in terms of how you want to um how you want to do that. Wow. Yeah. And I really like the way this is built, right? Because AI is great, but the more context you can give it, the better. the more you can work with it as a tool as far as cross referencing itself even sometimes with something else the better the better quality you are going to get in the output and sometimes I think people make the mistake of building out these sort of things and don't allow users to provide enough um context that I I love that point because whether or not they know about it there are a lot of people whoever you are that is watching this right now your organization there are people today who are cutting and pasting things into chat GPT and then pasting it back into whatever into Google Docs into content stack whatever um this is a great way to operationalize AI right so you can actually build an automation that follows your specific rules so again you're not allowed to say like we're you know in the product team at content stack we're not allowed to say innovation. So, uh, you know, I can make sure that like nowhere it says innovation in there that, and I'm kind of joking, by the way. You guys both look really serious. Like, what? To be fair, I'm a little allergic to the word innovation, but that's more because when I work at agency, we always did innovation campaigns and it was the most boring It's borderline like synergy. It's a little bit overused. Can you do an automation that gives us some synergy? Yeah. Exactly. Exactly. Yeah, but I mean but but yeah, so if you have specific rules, you can apply those rules as opposed to um you have no control over what people are bringing in from whatever LLMs they're interacting with. This way you're operationalizing it and you're able to control it so that it's under your rules and your values. Awesome. So awesome. That is one example. So now what we can do is we can show let let me look at your list. Um, let's do translation. Yeah. And also I want to Christine point you to this comment and I was kind of going here myself. I kind of want to also see what can you actually do with these automations that looks at other data outside of the AI stuff because I think there's kind of a lot of awesomeness there too. Yeah. Yeah. And we can we can I mean if you want we can run through that really quickly here. Sure. Um if uh Kustoff is okay with that. And then we also have this one. This is You have an answer to this. Are these examples anywhere that we can access? Yes. Yes. And and I can show an example of that as well. We are going to um we've made all of these recipes. So all of the little examples that I'm showing today. So they're really good starters in terms of like we have a so we have a translation one auto tagging like some of the fancy AI ones. Um this smart paste one. Um, those are all like examples that when we kind of put together the what do you call it like post show or something like that for for this uh thing then we can include those on the um on that that note and the links to all those as recipes. You click on it you get it. Yes. Yes. Exactly. And I can show an example of setting up a recipe too if we want to in a couple minutes as well. Um but yeah let let me show very quickly. Um, now I'll use I'll use brand kit as a quick example of pulling something in from an external source just because that's a pretty easy one. Um, and let's do like we'll just use this one. So this is very sim this is I think the same thing or very similar to the the AI anything um one I was showing before. But let's say right here. So before I go to chat GPT I'm going to pull in code from another platform. So I just add another step there. I go into my action step menu and then here you can see I have a whole bunch of different um platforms that are already set up. Um if I wanted to just find brand kit and you can do a search brand kit and now I have a bunch of actions that are these are basically just endpoints right that are supported. In this case I'm going to get a voice profile. Oops. Not I want to get a single voice profile. There we go. Actually, that's get all. And so what you're selecting here for the folks in the chat, this can also be another CMS. It can be YouTube. It can be anything that we connect to. It can be another um the output of another automation, whatever. Yep. And so most most of the time you'll have to authenticate. So like in this case I'm already authenticated into brandkit but if not I can create a new thing and I can say authorize and then it goes into another page that you can't see and then I you know do my authorization setup and then I'll have like a brand kit number three here or whatever. It's like an all setup basically you can do. That's good. Exactly. Exactly. Maybe one thing before you move on. You can also do any HTTP call here to any API. So even like posive ask about a PIM. You can definitely pull in and connect to any you can just go to blue stone pim or any URL that you have of like an old school system. You can just connect. Yep. Yep. Exactly. Exactly. Um so in here I'm basically again authenticating to my account. Then I'm choosing the um the LLM that I want to use. We'll say compass. Um this could also be dynamic. You can see that in here I'm again have this data from other steps. So it might be something where I'm pulling in like the name is based on something that maybe the user set in the very first step or something like that. So it could be a dynamic thing. Um in this case I'm just going to choose um compass. And then I can select the voice profile. So here's the different profiles I have. And then I can select that. Then I can proceed. I can test. And you can see that it's pulling this up as a test. This is the um basically a description of keyword tags that I want to support. Um but now when I go into chat GPT, I can actually pull in information from that brand kit. So I can say um please only use these keywords and then I go and find the here's the single profile. Then it'll say like description. Then this description is the the variable assigned to the that part of the the payload for um what the description is which has all my keywords in it. And then I just added in another. So that's an example of pulling data from an external source and then adding that data into your your basically your prompting for chat GPT. I kind of love how you showed external data and all that stuff again with all AI things, but I know I know we can uh I don't know if there's a like a let's see is there one if you want I can share my screen and show a quick one where it's all code and HTML and craziness if you want. Yeah. Yeah. have obviously like let's see if I can do that me a sec because then cost of we can go deep like we don't have to go too deep but we can definitely like for example this one so oh yeah and like I think um Christine you can talk about the ETL stuff for that also so this one for example this is a very interesting one so I have an external tool that sends a web hook to content stack and so I I asked them to create me something that takes some time and then when they are finished it sends me a web hook and so I actually subscribe to that web hook and well I basically I give them this URL and they call me with this URL. So when that comes in I actually do an HTTP if I turn this off I can actually show you that. Yeah, like I have like a management token here and I you see I query their API using my hen API key that is stored inside content stack and I have a bunch of parameters like I want 50 videos and so well let's see if it shows you the latest. Yeah. So you see it finds all my latest videos here and so this is just an API call. I have no code but then I do want code. So in my next step when I get that information in you see I get videos from that result and there's an ID that I actually wanted that was also then sent by that their initial web hook by this one. And so with that data I actually have like this is my little serless function that now just runs. And so this information I do stuff with it. I even console log it. And so I kind of just filter their latest 50 videos with the video I want because their API is so crappy that I just have to query the latest 50 again and I cannot just I like I could literally not say oh their success thing just told me what that video is because their web hook sends faster than they actually finished rendering. So I like so that's what if that happens if that's a shitty system I put it in here and I fix it. And then after that with the information they actually got I query them again to get a specific status to see hey how is that rendering going and then I get all their data and I map it to a data structure that I like for content stack and that then goes it finds a video I already created in content stack based on that information and then it uploads some video like the poster file it uploads the video file it a bunch of things like Then it adds it to another system which is cloudinary which is again code to cloud. You see how much you can do. Yeah. And then I upload keep all your assets there. You have a remote access. What? What am I saying? Remote assets. I couldn't say it for a second. I kept saying access. This is a really interesting way of literally I am coding actually. I'm going data in data out. And I like I'm going to show you one that's insane that we're not I'm not going to take the time because this is not me presenting but just give you one that is just ridiculous. So I have get all entries that I have in all the taxonomies where I have all these repeat parts with suba automations that then save stuff in data stores and log actions and append data in a data store memory that I have in an automation and then in subautomations I can get that data back and then do something with this and output whatever came out of that data store. And so this goes even deeper Kov where you can literally have a memory between all these actions add stuff to it and then in the end grab it and that memory is shared between my sub automations that this is insane. Okay, I'm done. I will say if if I can say very quickly, I love the the difference between like my automations are like, you know, one simple thing and then AI and then and then and yours is like HTTP code block HTTP code block HTTP code. This is my serverless function that I would have coded myself. Yeah, that's the thing, right? Imagine if you had to maintain all that custom code that you did you just did and automate him. Yeah. And now it's just here like the imagine I don't have any environment variables. I don't have any secrets. I don't have any all flows. I have nothing. And so what I can do is Yeah, it's just crazy. Sorry Christine, feel free. Please share your screen again and then we go to the nice stuff now because mine was like we're we're burning through time. We only have like 15 minutes left. It's always like that, isn't it? And thank you everyone for chiming in and asking questions. Please feel free to ask more. This is fantastic. Yeah, in and in regards to the ETL process, I mean this is a great um a a great kind of example of you know you can bring stuff in. We have some like builtin um capabilities of doing transformations. Um, so you can have like you you know like there there's specifically a tool that does transformations where you can pull things out of an array, find things with an array, split, add, join, whatever, those types of things. Norm normaliz one, so I just coded it, but I could use that to be fair. Exactly. So we we do have kind of both ways. We have both we have both the the the the developer way as well as you know um the the non-developer way. But yeah, I was going to say the other way, but yeah. But yeah, I I also wanted to say too, one really cool thing just to mention very quickly is we also have something called a um it's called templating. So we have like if you're able to build out um it basically uses handlebars if you're familiar with you know handlebars where you can do a very simple templating language. So you can kind of like get data out and then loop through it and then kind of create like really great for creating like an email and you send it the email to somebody or um you kind of have like a little modal popup or something like that and you're going to do a little design and like loop through things and then put a variable in there. So like those types of things are we have all of the tools to do that as well. Um so those are just some nice um nice capabilities to do that. So I guess I'll really quickly show um just an example of translation. So the thing about translation just very quickly because the the the thing I want to talk about with translation we have been asked by so many customers can we like help them with translation the LLMs are essentially good enough now that enterprises are starting to take notice right um pretty much this entire time it's been you know you really have to set if you wanted to do any kind of machine translation there would be a lot of rules that you have to set I've worked with some customers where they had, you know, 14,000 rules um about instead of this, do this. Instead of this, do this. Instead of this, do this. When it comes down to it for an LLM, you just say don't translate our product names. Yeah. You don't have to have 14 a list of 14,000 of them. It knows them. It knows what the entities are. It knows people versus products versus it knows all of those things. So a lot of times when again when we're working with these companies they had like really complicated um translation rules and they can very much be simplified with just the the power of AI basically. Um so just very quickly so one example that we can do is and again you can use brand kit for this you can use something else for this as well but like I did a um let me do this one let's see well we'll just pretend like this one you can just basically come in here and say like um just set your rules for what you want to do in terms of translation. This is about keywords for now, but you know, you can say like do not translate these words, do not translate people's names, do not but do translate recipe ingredients or whatever, right? Okay. So, you can kind of just be specific about your names. And then again, um those are just pulled into the prompting and then we're sending that to AI. Now, one thing that was really difficult about translations is that you want to make sure that you're getting essentially all of the data on the page, but not some data. Like you you might not want to to translate your taxonomy terms or your URL like we saw. So, so you can actually kind of um leave those out or disqualify those from the automation. Um, and essentially, you know, so this is kind of an example where again this is triggering from the user. I'm bringing in my brand voice, which in this case is basically my translation rules. Um, in this case, I'm getting the content model of um, whatever the page is that I'm trying to transform. And then what we did is we actually built a special connector that handles the basically it takes the the JSON of the entry which a lot of times is really really big like people have like 42 nested blocks and there's like you know so many things in there and like all this stuff and that page ends up being bigger than the context window on a lot of LLMs. Oh yeah. So we were actually getting a lot of like pages that were too big. So what we do is we take the JSON object, we pull out all the strings. We chunk those into chunks of content. We send the small chunks through to the AI and ask it to translate each piece. Then we put it back together and then we rehydrate the the JSON entry. Yes. Because the context window for Brand Kit itself is like a thousand characters only or something, right? So it it it has like basically it adds up to 4,000 which is the or like GPT4 is the base context window for GPT4. Most of the LLMs are much bigger now. You know uh Gemini is like 2 million. So as they get bigger we're going to be able to kind of release some of those restrictions but taking past whole code bases basically. Yes. Exactly. Exactly. But the the problem is is that when you do send too much data to the LLM, it fails very not gracefully. It just I've noticed I've noticed I think it confuses it. Yeah. So we had to build in Yes. So we had to build in kind of our own protection because it was a really bad user uh you know interface. So that being said, um so this is something that again, you know, we've got customers that pay multiple millions of dollars per year in translation costs and you know, if um and and I will say this also, I personally, and I am the most pro- AAI person, um I would not translate my front page with AI, right? like it's really good and it's really good at human translation and or it's better than human translation in a lot of cases, but I would still want a human if it was my front page, if it was my main new product page, I would really want to, you know, if in in the 3% of time where it makes a mistake, I don't want that mistake on my front page. Right. Right. So, um, so I I still think that you can look at your low value pages, look at your archives, look at whatever, and and if you're spending, you know, again, $500,000 transforming your archives and doing translations for Germany and these other places, maybe this is something for those like lower traffic pages where you can um save a lot of money in terms of doing that. But I would still look at, you know, some kind of a human translation or um, you know, a vendor for that for the front page. Um, and then, you know, obviously you can see how it goes. And if if you if you do a thousand translations and you never see a mistake, then maybe you're fine. But, um, but yeah, I would still be careful. Yeah. And that makes sense in terms of right like this can help you like you said with those lower value pages so that you can concentrate on not just translation of your higher value real estate right and you can also spend time on localizing it right because it's not just translation sometimes you need to also translate or localize for cultural things right exactly exactly what I like about this is that we're not actually building a product to translate we're just giving you a platform So you can actually build the translation yourself. Exactly. It just worked. This is pretty cool. So what do you you speak French, right? So is this like what do you think of the French? Uh yeah, it's okay. But you know what I mean? It's cool, but this is the problem. French like as an example, many languages have this. They have like four or five layers from street language to politics to doctor language to This is like localization versus translation. Yeah. Yeah. And so how do you judge what your tone has to be? Well, you can probably tell the AI what the tone needs to be, right? Yeah. I was just going to say like um I I can't remember what we were but if we said um you know you can again create a brand voice and then in here whatever the tone is that you want either you want it to be more informal you want it to be whatever in addition to specific rules again like um if you say you know my name or my the name of my blog or whatever don't translate that but we can add all of those rules into the brand kit and that becomes part of the and I've I've done this for my own stuff where I make video scripts for my own videos and I use brand kit for that with an automation obviously. And so I have told in my prom specifically grab like I gave it like three hours of me speaking but written out as the base um as the knowledge fault basically and then I have also written out Tim uses stop words like awesome and like and because I'm a 90s kid right so those kind of things well born in the 80s speak like the 90s and so I've actually written out exactly how I speak to brandkit And I also tell it just give me two paragraphs nothing more because I don't really want to speak longer in these videos. It is spot on me. Like it's it's like really cool. And I also think like this highlights like a you know there's there is sort of a due diligence and governance piece of AI right like even if you use automate to do some translations you should always go back and look at it. And so that's sort of that thing. You can use this as a framework or you know a draft but then you still look over it like remember this is a tool but it's also human controlled. You got to put some human power in there, too. And and that's what we were just talking about is that there's again probably people who are doing copying and pasting into Tat GBT, writing, please translate this into French and then copying and pasting it back into the localization and then they're missing all of that nuanced layer that we can add in there as part of that governance of how you want your language to be in these other in these other areas, right? So like that's something that that you can add a little bit of control over. Whereas, you know, if you're just asking someone to just paste in some French stuff, um it may or may not be in your tone of voice or your brand voice um when you when you add that in. Yeah, this is good fun. We have six minutes. What can we show in six minutes? Yeah. Do we have questions? Well, we we had a bunch, but we answered a lot of them. I don't know if we want Did we touch on the ETL process? I don't think so. But let's put this one on again. Yeah. Yeah. So, so that's definitely something that um again in terms of bringing in the data you can imagine and I can we can kind of show just very quickly. Um I'll show the the let's see. So again, I'll just take this one as an example. Um and we actually have a uh transform tool. And here's a whole bunch of different kind of transformation properties that you can run. So again, you can imagine um getting, you know, getting data from your your PIM and then you're going to get rid of this data and then add this data and normalize it into, you know, and you can add in all of these things. Um or it can be a code block like we saw with with Tim's example. Um but yeah, there's a lot of these things where you can, you know, very easily just add in some of these things. Here's the template tool that I was mentioning before where this is where you can build out those kind of handlebars um you know code block things where you can kind of again loop through those very easily and add things in there. So um but yeah but that that's a that's a great example of like bringing in things together. I'll show one more thing. Um the so I think what Kustoff kind of means here is also how does the caching work on RCDN for the data that comes in. Can we tell them to refresh something specifically? Yeah, I mean if there's a an action like an end point, right? So for example, launch launch has end points where we can actually like we'll show because we might actually be able to just send a header to just like invalidate this cache thing or something, right? And get it to go over call again. Yeah. Yeah. If we do I don't know if I have a because I know we have like read, right? Oh, yeah. So this has a specific action even but I think where KF is coming from where this is the world I live in API orchestration right I'm going to grab five things and make one output just for my website what happens if one of those five updates and my API call still looks the same right so do we have controls on let's say if something updates there are we going to just have a TTL for example of 60 seconds how can we control that somehow and the thing is this product is not yet a full API orchestrator, right? So the moment we go there, we might want to even on whatever returns on each field there field there figure out a TTL or we can do a TTL on the implementation side of the action. So because of we're kind of still looking at that because we have all the DNA to literally build like the best API or try to put it together. Yeah, the catch is always the story, right? We know this and all of this we can just maybe we even cach it on the CDN edge or we put it in fastly and how do we kind of like purge cache on certain systems. This is Oh, so you're going to show some some cool stuff now that is not actually released but I like it. This is we're getting an exclusive unplanned but yeah and this is this is still in our dev uh kind of experimental things but yeah so we do have yeah so this is on dev this is on dev currently this is on dev currently we have to we have to kind of figure out um is this the is this do we have everything that this is going to do what we need it to do but pretty much for what you're describing where you're bringing in a bunch of data from different places. So you can do the same action steps and all that stuff like we were showing before and then as part of that you know add everything to your to your body set your TTLs here and then your response is the uniformed um you know tied together response of all of those things together in the way that you want and then it responds with that on your Yeah. So all the stuff I custom build is basically just nicely handled within the product when this comes out. Yeah, which is I I literally cannot wait for that. And if you guys if anyone's super interested in this, please please let us know. We'd be interested in kind of like a proof of concept beta test to make sure that this does sort of what you're what you're needing to do. But it's something that again we're we're kind of beta testing this right now. Yeah. And this is potentially a huge product update if we can also do that part. I will say also just as a I wasn't going to talk about this but this is something also that um is one coming someday which is you know agents and agentic workflows in um in AI that's just automations. It's just automations but the AI gets to choose the ordering of it. Um so when when we add in aentic workflows with automations it's really really cool. So, we won't get to that right now, but coming soon. I'm so sad to say we are out of time. Oh, yes. Exactly. Yes. Um, but this was fantastic. Um, please everyone, if you joined in today or if you're looking at a recording, feel free to join the community. You can talk about and ask us any questions. We will always respond. Um, if you want to take a look at the recipes or get further information, it'll all be in the community. Awesome. Thank you so much, Christine. It was so much fun. Yes. I wish we' had more time. Have you ever seen where you had two developers almost fall off their chairs when you just add a table in a rich text? Like I say, I'm so glad that worked because I had no idea. Yes, it was amazing. Pure magic. Awesome. Thank you guys so much. I appreciate your time. Cheers everyone. Bye. All right. Bye. Take care everyone.",[1444,1756,1714,1757,1715,1758],"automation","product","process","1:00:51",{"type":1477,"children":1761,"toc":1762},[],{"title":1436,"searchDepth":1689,"depth":1689,"links":1763},[],"content:3.videos:contentstack:019-KhEV1dHs-aY.md","3.videos/contentstack/019-KhEV1dHs-aY.md","3.videos/contentstack/019-KhEV1dHs-aY",{"_path":988,"_dir":1434,"_draft":1435,"_partial":1435,"_locale":1436,"title":987,"description":1437,"slug":1438,"date":1439,"canonical_url":1440,"reading_time":1441,"image":1442,"tags":1768,"faqs":1769,"draft":1435,"head":1775,"body":1781,"_type":1698,"_id":1699,"_source":1700,"_file":1701,"_stem":1702,"_extension":1703},[1444,1445,1446,1447,1448],[1770,1771,1772,1773,1774],{"question":1451,"answer":1452},{"question":1454,"answer":1455},{"question":1457,"answer":1458},{"question":1460,"answer":1461},{"question":1463,"answer":1464},{"meta":1776},[1777,1778,1779,1780],{"property":1468,"content":1442},{"property":1470,"content":987},{"property":1472,"content":1437},{"property":1474,"content":1475},{"type":1477,"children":1782,"toc":1935},[1783,1787,1791,1795,1799,1803,1819,1823,1827,1831,1835,1851,1855,1865,1869,1879,1883,1887,1891,1895,1899,1903,1907,1911,1915,1919,1923,1927,1931],{"type":1480,"tag":1481,"props":1784,"children":1785},{},[1786],{"type":1485,"value":1486},{"type":1480,"tag":1481,"props":1788,"children":1789},{},[1790],{"type":1485,"value":1491},{"type":1480,"tag":1481,"props":1792,"children":1793},{},[1794],{"type":1485,"value":1496},{"type":1480,"tag":1498,"props":1796,"children":1797},{"id":1500},[1798],{"type":1485,"value":1503},{"type":1480,"tag":1481,"props":1800,"children":1801},{},[1802],{"type":1485,"value":1508},{"type":1480,"tag":1481,"props":1804,"children":1805},{},[1806,1807,1812,1813,1818],{"type":1485,"value":1513},{"type":1480,"tag":1515,"props":1808,"children":1810},{"href":1517,"rel":1809},[1519],[1811],{"type":1485,"value":1522},{"type":1485,"value":1524},{"type":1480,"tag":1515,"props":1814,"children":1816},{"href":1527,"rel":1815},[1519],[1817],{"type":1485,"value":1531},{"type":1485,"value":1533},{"type":1480,"tag":1481,"props":1820,"children":1821},{},[1822],{"type":1485,"value":1538},{"type":1480,"tag":1498,"props":1824,"children":1825},{"id":1541},[1826],{"type":1485,"value":1544},{"type":1480,"tag":1481,"props":1828,"children":1829},{},[1830],{"type":1485,"value":1549},{"type":1480,"tag":1481,"props":1832,"children":1833},{},[1834],{"type":1485,"value":1554},{"type":1480,"tag":1481,"props":1836,"children":1837},{},[1838,1839,1844,1845,1850],{"type":1485,"value":1559},{"type":1480,"tag":1561,"props":1840,"children":1842},{"className":1841},[],[1843],{"type":1485,"value":1566},{"type":1485,"value":1568},{"type":1480,"tag":1561,"props":1846,"children":1848},{"className":1847},[],[1849],{"type":1485,"value":1574},{"type":1485,"value":1576},{"type":1480,"tag":1498,"props":1852,"children":1853},{"id":1579},[1854],{"type":1485,"value":1582},{"type":1480,"tag":1481,"props":1856,"children":1857},{},[1858,1859,1864],{"type":1485,"value":1587},{"type":1480,"tag":1561,"props":1860,"children":1862},{"className":1861},[],[1863],{"type":1485,"value":1593},{"type":1485,"value":1595},{"type":1480,"tag":1481,"props":1866,"children":1867},{},[1868],{"type":1485,"value":1600},{"type":1480,"tag":1481,"props":1870,"children":1871},{},[1872,1873,1878],{"type":1485,"value":1605},{"type":1480,"tag":1561,"props":1874,"children":1876},{"className":1875},[],[1877],{"type":1485,"value":1611},{"type":1485,"value":1613},{"type":1480,"tag":1498,"props":1880,"children":1881},{"id":1616},[1882],{"type":1485,"value":1619},{"type":1480,"tag":1481,"props":1884,"children":1885},{},[1886],{"type":1485,"value":1624},{"type":1480,"tag":1481,"props":1888,"children":1889},{},[1890],{"type":1485,"value":1629},{"type":1480,"tag":1498,"props":1892,"children":1893},{"id":1632},[1894],{"type":1485,"value":1635},{"type":1480,"tag":1481,"props":1896,"children":1897},{},[1898],{"type":1485,"value":1640},{"type":1480,"tag":1481,"props":1900,"children":1901},{},[1902],{"type":1485,"value":1645},{"type":1480,"tag":1498,"props":1904,"children":1905},{"id":1648},[1906],{"type":1485,"value":1651},{"type":1480,"tag":1481,"props":1908,"children":1909},{},[1910],{"type":1485,"value":1656},{"type":1480,"tag":1481,"props":1912,"children":1913},{},[1914],{"type":1485,"value":1661},{"type":1480,"tag":1481,"props":1916,"children":1917},{},[1918],{"type":1485,"value":1666},{"type":1480,"tag":1498,"props":1920,"children":1921},{"id":1669},[1922],{"type":1485,"value":1672},{"type":1480,"tag":1481,"props":1924,"children":1925},{},[1926],{"type":1485,"value":1677},{"type":1480,"tag":1481,"props":1928,"children":1929},{},[1930],{"type":1485,"value":1682},{"type":1480,"tag":1481,"props":1932,"children":1933},{},[1934],{"type":1485,"value":1687},{"title":1436,"searchDepth":1689,"depth":1689,"links":1936},[1937,1938,1939,1940,1941,1942,1943],{"id":1500,"depth":1689,"text":1503},{"id":1541,"depth":1689,"text":1544},{"id":1579,"depth":1689,"text":1582},{"id":1616,"depth":1689,"text":1619},{"id":1632,"depth":1689,"text":1635},{"id":1648,"depth":1689,"text":1651},{"id":1669,"depth":1689,"text":1672},1776681773496]