[{"data":1,"prerenderedAt":1987},["ShallowReactive",2],{"navigation":3,"content-/writing/ai-will-not-live-in-one-place-but-trust-has-to":1439,"related-/writing/ai-will-not-live-in-one-place-but-trust-has-to":1725,"content-query-WqyPCfFHMY":1787},[4,7,952,1158,1427,1430,1433,1436],{"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,1025,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,1152,1155],{"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},"AI will not live in one place, but trust has to","/writing/ai-will-not-live-in-one-place-but-trust-has-to",{"title":969,"_path":970},"Build context-aware MCPs, not API wrappers","/writing/build-context-aware-mcp-not-api-wrappers",{"title":972,"_path":973},"Choosing the right visual editor for your website Platform-First vs. Code-First","/writing/choosing-the-right-visual-editor",{"title":975,"_path":976},"Code is craft now, not labor","/writing/code-is-craft-now-not-labor",{"title":978,"_path":979},"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":981,"_path":982},"Create a performant YouTube embed with a native web component","/writing/create-a-performant-youtube-embed-with-a-native-web-component",{"title":984,"_path":985},"Creating a custom video player in Vue.js","/writing/creating-a-custom-video-player-in-vue",{"title":987,"_path":988},"Cursor, rules, and my vibe engineer workflow","/writing/cursor-rules-and-my-vibe-engineer-workflow",{"title":990,"_path":991},"Development 101 for non-technical vibe coders","/writing/development-101-for-non-technical-vibe-coders",{"title":993,"_path":994},"The DevRel Operating System","/writing/devrel-os",{"title":996,"_path":997},"DevRel success metrics that actually matter","/writing/devrel-success-metrics-that-actually-matter",{"title":999,"_path":1000},"The different approaches to visual editing in headless CMS","/writing/different-approaches-to-visual-editing",{"title":1002,"_path":1003},"Digital experience platforms the old versus the new","/writing/digital-experience-platforms-the-old-versus-the-new",{"title":1005,"_path":1006},"Do we still need SDKs in the age of AI agents?","/writing/do-we-still-need-sdks-in-the-age-of-ai-agents",{"title":1008,"_path":1009},"Fast, personalized pages with Vercel Edge Middleware and Uniform","/writing/fast-personalized-pages-with-vercel-edge-middleware-and-uniform",{"title":1011,"_path":1012},"How I supercharched my website's speed","/writing/how-i-supercharched-my-websites-speed",{"title":1014,"_path":1015},"How to dynamically stream video","/writing/how-to-dynamically-stream-video",{"title":1017,"_path":1018},"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":1020,"_path":1021},"How to sniff out the Glue Monster","/writing/how-to-sniff-out-the-glue-monster",{"title":1023,"_path":1024},"I will not log into your vibe coded app","/writing/i-will-not-log-into-your-vibe-coded-app",{"title":953,"_path":954},{"title":1027,"_path":1028},"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":1030,"_path":1031},"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":1033,"_path":1034},"MACH versus monolithic suites","/writing/mach-versus-monolithic-suites",{"title":1036,"_path":1037},"Make the Web Greener, Luxury Edition","/writing/make-the-web-greener-luxury-edition",{"title":1039,"_path":1040},"MCP fragmentation, context efficiency, and the rise of curated skills","/writing/mcp-fragmentation-context-efficiency-and-the-rise-of-curated-skills",{"title":1042,"_path":1043},"Most CMS migrations fail before the first record moves","/writing/most-cms-migrations-fail-before-the-first-record-moves",{"title":1045,"_path":1046},"My Fitness Story","/writing/my-fitness-story",{"title":1048,"_path":1049},"New job alert - Hygraph 2023","/writing/new-job-alert",{"title":1051,"_path":1052},"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":1054,"_path":1055},"CMS Showdown do you need a page builder or a data modeler?","/writing/page-builder-cms-vs-data-modeler-cms",{"title":1057,"_path":1058},"SDKs are everywhere. But should you use them?","/writing/sdks-use-them-or-not",{"title":1060,"_path":1061},"TDD finally makes sense","/writing/tdd-finally-makes-sense",{"title":1063,"_path":1064},"Your team is the key to success when going headless","/writing/team-is-key-when-going-headless",{"title":1066,"_path":1067},"The 2015 Paris marathon","/writing/the-2015-paris-maratho",{"title":1069,"_path":1070},"The Age of the \"Super-T\" Product Person","/writing/the-age-of-the-super-t-product-person",{"title":1072,"_path":1073},"Intuition and the real cost of research","/writing/the-best-product-decisions-were-never-analytical",{"title":1075,"_path":1076},"The case for boring setups","/writing/the-case-for-boring-setups",{"title":1078,"_path":1079},"The content Graph is the future","/writing/the-content-graph-is-the-future",{"title":1081,"_path":1082},"The Experience Factory why experience is the real flagship","/writing/the-experience-factory-01-why-experience-is-the-real-flagship",{"title":1084,"_path":1085},"The Future of CMS. It's dying.","/writing/the-future-of-cms-from-content-management-to-context-management",{"title":1087,"_path":1088},"The future of headless CMS Content Federation with GraphQL","/writing/the-future-of-headless-cms-content-federation-with-graphql",{"title":1090,"_path":1091},"The future of jamstack is composable","/writing/the-future-of-jamstack-is-composable",{"title":1093,"_path":1094},"The future of managing projects at agencies","/writing/the-future-of-managing-projects-at-agencie",{"title":1096,"_path":1097},"The future of software is bespoke","/writing/the-future-of-software-is-bespoke",{"title":1099,"_path":1100},"The lost promise of headless","/writing/the-lost-promise-of-headless",{"title":1102,"_path":1103},"The MACH monolith","/writing/the-mach-monolith",{"title":1105,"_path":1106},"The MACH monolith in 2026","/writing/the-mach-monolith-in-2026",{"title":1108,"_path":1109},"The move from monolithic to composable architectures","/writing/the-move-from-monolithic-to-composable-architectures",{"title":1111,"_path":1112},"The nuanced impact of AI we should not overlook","/writing/the-nuanced-impact-of-ai-we-should-not-overlook",{"title":1114,"_path":1115},"The pragmatic guide to coding with AI agents","/writing/the-pragmatic-guide-to-coding-with-ai-agents",{"title":1117,"_path":1118},"The real deal about content management buzzwords","/writing/the-real-deal-about-content-management-buzzword",{"title":1120,"_path":1121},"The Mini Shai-Hulud supply chain backlash will create worse software","/writing/the-supply-chain-backlash-will-create-worse-software",{"title":1123,"_path":1124},"The vibe-coded app architecture guide","/writing/the-vibe-coded-app-architecture-guide",{"title":1126,"_path":1127},"This is headless 2.0","/writing/this-is-headless-20",{"title":1129,"_path":1130},"Uniform DXCP the what, why, and how","/writing/uniform-dxcp-the-what-why-and-how",{"title":1132,"_path":1133},"Uniform is Nuxt 3 ready","/writing/uniform-is-nuxt-3-read",{"title":1135,"_path":1136},"Universal CMS the wheel we're reinventing","/writing/universal-cms-the-wheel-we-are-reinventing",{"title":1138,"_path":1139},"Want to be better at vibe coding? Become a better coder","/writing/want-to-be-better-at-vibe-coding-become-a-better-coder",{"title":1141,"_path":1142},"We have collectively forgotten what monoliths are","/writing/we-have-collectively-forgotten-what-monoliths-are",{"title":1144,"_path":1145},"We moved the difficulty. We didn't make it disappear.","/writing/we-moved-the-difficulty",{"title":1147,"_path":1148},"What type of content organization do you need?","/writing/what-type-of-content-organization-do-you-need",{"title":1150,"_path":1151},"When Output Is Cheap, Taste Is Everything","/writing/when-output-is-cheap-taste-is-everything",{"title":1153,"_path":1154},"Why I didn't run the 2016 marathon","/writing/why-i-didnt-run-the-2016-marathon",{"title":1156,"_path":1157},"Your legacy patterns are technical debt in modern architecture","/writing/your-legacy-patterns-are-technical-debt-in-modern-architecture",{"title":1159,"_path":1160,"children":1161},"Speaking","/speaking",[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,1423,1426],{"title":1163,"_path":1164},"2019 02 14 Clifq5gzg40j20bw9ne2mh9n6","/speaking/2019-02-14-clifq5gzg40j20bw9ne2mh9n6",{"title":1166,"_path":1167},"2019 02 26 Clifq5gns3xhu0buv6a8th0jk","/speaking/2019-02-26-clifq5gns3xhu0buv6a8th0jk",{"title":1169,"_path":1170},"2019 04 19 Clifq5gd63xhq0buvufv6nagk","/speaking/2019-04-19-clifq5gd63xhq0buvufv6nagk",{"title":1172,"_path":1173},"2019 05 17 Clifq5g1f3wh90bw81u5sa0ai","/speaking/2019-05-17-clifq5g1f3wh90bw81u5sa0ai",{"title":1175,"_path":1176},"2019 05 25 Clifq5fpd3xt00aw4grnzft29","/speaking/2019-05-25-clifq5fpd3xt00aw4grnzft29",{"title":1178,"_path":1179},"2019 09 04 Clifq5fer3xhl0buvzzgwqg1k","/speaking/2019-09-04-clifq5fer3xhl0buvzzgwqg1k",{"title":1181,"_path":1182},"2019 09 09 Clifq5f1b3wh10bw8ftmppjkc","/speaking/2019-09-09-clifq5f1b3wh10bw8ftmppjkc",{"title":1184,"_path":1185},"2019 09 27 Clifq5eos3xhh0buvewly5gxs","/speaking/2019-09-27-clifq5eos3xhh0buvewly5gxs",{"title":1187,"_path":1188},"2019 11 28 Clifq5ebo3wgx0bw8vno5ce0d","/speaking/2019-11-28-clifq5ebo3wgx0bw8vno5ce0d",{"title":1190,"_path":1191},"2019 12 17 Clifq5dyh40ij0bw9oquw072b","/speaking/2019-12-17-clifq5dyh40ij0bw9oquw072b",{"title":1193,"_path":1194},"2020 02 18 Clifq5dk940if0bw9ok9achtj","/speaking/2020-02-18-clifq5dk940if0bw9ok9achtj",{"title":1196,"_path":1197},"2020 03 19 Clifq5dal3xsn0aw49a9wad1n","/speaking/2020-03-19-clifq5dal3xsn0aw49a9wad1n",{"title":1199,"_path":1200},"2020 04 22 Clifq5czw3wgs0bw8srwiffx1","/speaking/2020-04-22-clifq5czw3wgs0bw8srwiffx1",{"title":1202,"_path":1203},"2020 05 06 Clifq5cpx40hk0bw9odxcxt0q","/speaking/2020-05-06-clifq5cpx40hk0bw9odxcxt0q",{"title":1205,"_path":1206},"2020 05 13 Clifq5cfw3xh00buvhyslf4s3","/speaking/2020-05-13-clifq5cfw3xh00buvhyslf4s3",{"title":1208,"_path":1209},"2020 05 25 Clifq5c5u3wgo0bw8g8yudazp","/speaking/2020-05-25-clifq5c5u3wgo0bw8g8yudazp",{"title":1211,"_path":1212},"2020 05 28 Clifq5bvw40h20bw92kt7pmp1","/speaking/2020-05-28-clifq5bvw40h20bw92kt7pmp1",{"title":1214,"_path":1215},"2020 06 09 Clifq5bj73xrj0aw42st3pna4","/speaking/2020-06-09-clifq5bj73xrj0aw42st3pna4",{"title":1217,"_path":1218},"2020 07 21 Clifq5b6s3xrf0aw4s8ml5qjb","/speaking/2020-07-21-clifq5b6s3xrf0aw4s8ml5qjb",{"title":1220,"_path":1221},"2020 07 27 Clifq5axb3xgw0buvy6hrvpv2","/speaking/2020-07-27-clifq5axb3xgw0buvy6hrvpv2",{"title":1223,"_path":1224},"2020 08 05 Clifq5anp3xrb0aw4jxeipa7e","/speaking/2020-08-05-clifq5anp3xrb0aw4jxeipa7e",{"title":1226,"_path":1227},"2020 08 26 Clifq5a9x3wgk0bw8x8qfl5rk","/speaking/2020-08-26-clifq5a9x3wgk0bw8x8qfl5rk",{"title":1229,"_path":1230},"2020 09 17 Clifq59zj3wgg0bw8xmh09vvm","/speaking/2020-09-17-clifq59zj3wgg0bw8xmh09vvm",{"title":1232,"_path":1233},"2020 10 14 Clifq59mp3wgc0bw82qykah6x","/speaking/2020-10-14-clifq59mp3wgc0bw82qykah6x",{"title":1235,"_path":1236},"2020 10 29 Clifq59b83xr60aw45w2sqa1g","/speaking/2020-10-29-clifq59b83xr60aw45w2sqa1g",{"title":1238,"_path":1239},"2020 11 10 Clifq590340gy0bw9onnmgr7y","/speaking/2020-11-10-clifq590340gy0bw9onnmgr7y",{"title":1241,"_path":1242},"2020 11 11 Clifq58oo40gu0bw9iffiakmh","/speaking/2020-11-11-clifq58oo40gu0bw9iffiakmh",{"title":1244,"_path":1245},"2020 12 01 Clifq58cz3xr10aw4n6qndf3s","/speaking/2020-12-01-clifq58cz3xr10aw4n6qndf3s",{"title":1247,"_path":1248},"2020 12 02 Clifq582i3wg80bw8rszss5am","/speaking/2020-12-02-clifq582i3wg80bw8rszss5am",{"title":1250,"_path":1251},"2020 12 11 Clifq57o03xgp0buvlvdxm5l9","/speaking/2020-12-11-clifq57o03xgp0buvlvdxm5l9",{"title":1253,"_path":1254},"2020 12 16 Clifq57c43wg40bw81h7fr291","/speaking/2020-12-16-clifq57c43wg40bw81h7fr291",{"title":1256,"_path":1257},"2020 12 18 Clifq571z40gq0bw9b62wbowr","/speaking/2020-12-18-clifq571z40gq0bw9b62wbowr",{"title":1259,"_path":1260},"2021 01 12 Clifq56q43xgk0buv4hu04quz","/speaking/2021-01-12-clifq56q43xgk0buv4hu04quz",{"title":1262,"_path":1263},"2021 02 01 Clifq56gq3xqx0aw47qor4w9s","/speaking/2021-02-01-clifq56gq3xqx0aw47qor4w9s",{"title":1265,"_path":1266},"2021 02 02 Clifq56623xqt0aw44sbds5cn","/speaking/2021-02-02-clifq56623xqt0aw44sbds5cn",{"title":1268,"_path":1269},"2021 02 22 Clifq55tf40gk0bw9vofea3yp","/speaking/2021-02-22-clifq55tf40gk0bw9vofea3yp",{"title":1271,"_path":1272},"2021 03 03 Clifq55jz3xqp0aw4je7y5sw1","/speaking/2021-03-03-clifq55jz3xqp0aw4je7y5sw1",{"title":1274,"_path":1275},"2021 03 24 Clifq559p3xgf0buvzch9im3l","/speaking/2021-03-24-clifq559p3xgf0buvzch9im3l",{"title":1277,"_path":1278},"2021 04 07 Clifq54zf3wfz0bw80v5gzndk","/speaking/2021-04-07-clifq54zf3wfz0bw80v5gzndk",{"title":1280,"_path":1281},"2021 04 20 Clifq54na3xgb0buvrvmbamxf","/speaking/2021-04-20-clifq54na3xgb0buvrvmbamxf",{"title":1283,"_path":1284},"2021 04 29 Clifq54ct3wfu0bw8zsr9mejw","/speaking/2021-04-29-clifq54ct3wfu0bw8zsr9mejw",{"title":1286,"_path":1287},"2021 07 27 Clifq542s3xg60buvdk199xtq","/speaking/2021-07-27-clifq542s3xg60buvdk199xtq",{"title":1289,"_path":1290},"2021 09 07 Clifq53so3wfq0bw81xni3t7x","/speaking/2021-09-07-clifq53so3wfq0bw81xni3t7x",{"title":1292,"_path":1293},"2021 11 04 Clifq53ib40gf0bw9c3mxprzu","/speaking/2021-11-04-clifq53ib40gf0bw9c3mxprzu",{"title":1295,"_path":1296},"2021 11 10 Clifq536v3xg20buvlz1n7ddw","/speaking/2021-11-10-clifq536v3xg20buvlz1n7ddw",{"title":1298,"_path":1299},"2021 11 22 Clifq52wr3wfm0bw83eawjx9x","/speaking/2021-11-22-clifq52wr3wfm0bw83eawjx9x",{"title":1301,"_path":1302},"2021 12 01 Clifq52jm3xqj0aw4mxuyuaey","/speaking/2021-12-01-clifq52jm3xqj0aw4mxuyuaey",{"title":1304,"_path":1305},"2021 12 14 Clifq528940gb0bw9bok0o68k","/speaking/2021-12-14-clifq528940gb0bw9bok0o68k",{"title":1307,"_path":1308},"2022 01 27 Clifq51vy3wf30bw8qsv8nsv9","/speaking/2022-01-27-clifq51vy3wf30bw8qsv8nsv9",{"title":1310,"_path":1311},"2022 02 08 Clifq51j53wez0bw8cd1znjmi","/speaking/2022-02-08-clifq51j53wez0bw8cd1znjmi",{"title":1313,"_path":1314},"2022 02 10 Clifq515940g70bw9yu0ltedp","/speaking/2022-02-10-clifq515940g70bw9yu0ltedp",{"title":1316,"_path":1317},"2022 03 01 Clifq50sj40g30bw9rqy825mb","/speaking/2022-03-01-clifq50sj40g30bw9rqy825mb",{"title":1319,"_path":1320},"2022 03 02 Clifq50g53xfr0buv56km2voa","/speaking/2022-03-02-clifq50g53xfr0buv56km2voa",{"title":1322,"_path":1323},"2022 05 26 Clifq506e3wev0bw88q2lf63q","/speaking/2022-05-26-clifq506e3wev0bw88q2lf63q",{"title":1325,"_path":1326},"2022 06 02 Clifq4zvh40fz0bw986sdpv5u","/speaking/2022-06-02-clifq4zvh40fz0bw986sdpv5u",{"title":1328,"_path":1329},"2022 06 13 Clifq4z8o3xqf0aw49q8f55f9","/speaking/2022-06-13-clifq4z8o3xqf0aw49q8f55f9",{"title":1331,"_path":1332},"2022 06 13 Clifq4zjc40fv0bw95ufcly4y","/speaking/2022-06-13-clifq4zjc40fv0bw95ufcly4y",{"title":1334,"_path":1335},"2022 07 01 Clifq4ywg3xq60aw48tkujxyl","/speaking/2022-07-01-clifq4ywg3xq60aw48tkujxyl",{"title":1337,"_path":1338},"2022 07 27 Clifq4yep3xf20buv5vorwrl5","/speaking/2022-07-27-clifq4yep3xf20buv5vorwrl5",{"title":1340,"_path":1341},"2022 08 10 Clifq4xw640fr0bw9po5n2nug","/speaking/2022-08-10-clifq4xw640fr0bw9po5n2nug",{"title":1343,"_path":1344},"2022 08 11 Clifq4xdz3wek0bw862z7knrr","/speaking/2022-08-11-clifq4xdz3wek0bw862z7knrr",{"title":1346,"_path":1347},"2022 08 25 Clifq4x0z3xq20aw48a1n9hxy","/speaking/2022-08-25-clifq4x0z3xq20aw48a1n9hxy",{"title":1349,"_path":1350},"2022 09 14 Clifq4wqo40fh0bw9sifjtw70","/speaking/2022-09-14-clifq4wqo40fh0bw9sifjtw70",{"title":1352,"_path":1353},"2022 09 27 Clifq4wef3xpx0aw4l7ueiqwb","/speaking/2022-09-27-clifq4wef3xpx0aw4l7ueiqwb",{"title":1355,"_path":1356},"2022 10 14 Clifq4w263xet0buv0mzqzfre","/speaking/2022-10-14-clifq4w263xet0buv0mzqzfre",{"title":1358,"_path":1359},"2022 11 02 Clifq4vps3xep0buvimxfntyq","/speaking/2022-11-02-clifq4vps3xep0buvimxfntyq",{"title":1361,"_path":1362},"2022 11 08 Clifq4vdb40el0bw9il2y3pb4","/speaking/2022-11-08-clifq4vdb40el0bw9il2y3pb4",{"title":1364,"_path":1365},"2023 02 08 Clifq4uz43xpt0aw4mw4awvuj","/speaking/2023-02-08-clifq4uz43xpt0aw4mw4awvuj",{"title":1367,"_path":1368},"2023 03 29 Clifq4ul43we80bw8ihhkw7qr","/speaking/2023-03-29-clifq4ul43we80bw8ihhkw7qr",{"title":1370,"_path":1371},"2023 04 20 Clifq4u9b3xpm0aw45vj51alh","/speaking/2023-04-20-clifq4u9b3xpm0aw45vj51alh",{"title":1373,"_path":1374},"2023 05 12 Clifq4tw33we40bw8jxhaaroo","/speaking/2023-05-12-clifq4tw33we40bw8jxhaaroo",{"title":1376,"_path":1377},"2023 05 29 Clifq4thm3xel0buvdpqx8bdm","/speaking/2023-05-29-clifq4thm3xel0buvdpqx8bdm",{"title":1379,"_path":1380},"2023 06 06 Clifq4t4w40dr0bw98f7p9zrq","/speaking/2023-06-06-clifq4t4w40dr0bw98f7p9zrq",{"title":1382,"_path":1383},"2023 07 27 Clifq4sto3xph0aw4letve613","/speaking/2023-07-27-clifq4sto3xph0aw4letve613",{"title":1385,"_path":1386},"2024 02 29 Clkzot86xire30aujuy08465e","/speaking/2024-02-29-clkzot86xire30aujuy08465e",{"title":1388,"_path":1389},"2024 06 05 Clqdq6ui7ts730bvzmk1xw47t","/speaking/2024-06-05-clqdq6ui7ts730bvzmk1xw47t",{"title":1391,"_path":1392},"2024 06 26 Clxkjutfsgp2b08uncx30wni3","/speaking/2024-06-26-clxkjutfsgp2b08uncx30wni3",{"title":1394,"_path":1395},"2024 09 23 Clzln21ozhc5j07vyl823v9qt","/speaking/2024-09-23-clzln21ozhc5j07vyl823v9qt",{"title":1397,"_path":1398},"2024 10 02 Clzlmyfs3hhe607ur0myt53gv","/speaking/2024-10-02-clzlmyfs3hhe607ur0myt53gv",{"title":1400,"_path":1401},"2025 02 13 Cm0qgs8ctrqs207uk9qsijvlj","/speaking/2025-02-13-cm0qgs8ctrqs207uk9qsijvlj",{"title":1403,"_path":1404},"2025 03 13 Cm0qgtj7srztk07unk29eiehq","/speaking/2025-03-13-cm0qgtj7srztk07unk29eiehq",{"title":1406,"_path":1407},"2025 09 10 Clifq5gzg40j20bw9ne2mh9n2","/speaking/2025-09-10-clifq5gzg40j20bw9ne2mh9n2",{"title":1409,"_path":1410},"2025 09 11 Clifq5gzg40j20bw9ne2mh9n1","/speaking/2025-09-11-clifq5gzg40j20bw9ne2mh9n1",{"title":1412,"_path":1413},"2025 09 18 Clifq5gzg40j20bw9ne2mh9n3","/speaking/2025-09-18-clifq5gzg40j20bw9ne2mh9n3",{"title":1415,"_path":1416},"2025 09 19 Clifq5gzg40j20bw9n31322","/speaking/2025-09-19-clifq5gzg40j20bw9n31322",{"title":1418,"_path":1419},"2025 10 10 Clifq5gzg40j20bw9n333","/speaking/2025-10-10-clifq5gzg40j20bw9n333",{"title":1421,"_path":1422},"2025 10 24 Clifq5gzg40j20bw9n333asasdasd","/speaking/2025-10-24-clifq5gzg40j20bw9n333asasdasd",{"title":1424,"_path":1425},"2026 03 12 Clifq5gzg40j20bw9ne2mh9n87","/speaking/2026-03-12-clifq5gzg40j20bw9ne2mh9n87",{"title":1159,"_path":1160},{"title":1428,"_path":1429},"Live streams","/livestreams",{"title":1431,"_path":1432},"Press kit","/presskit",{"title":1434,"_path":1435},"Alive and kicking","/alive-and-kicking",{"title":1437,"_path":1438},"Uses","/uses",{"_path":967,"_dir":1440,"_draft":1441,"_partial":1441,"_locale":1442,"title":966,"description":1443,"slug":1444,"date":1445,"canonical_url":1446,"reading_time":1447,"image":1448,"tags":1449,"faqs":1457,"draft":1441,"head":1467,"body":1478,"_type":1719,"_id":1720,"_source":1721,"_file":1722,"_stem":1723,"_extension":1724},"writing",false,"","Enterprise AI is spreading into every tool where work happens, from IDE agents to browser assistants, but governance, spend control, and brand safety are lagging behind. This article explains a two-layer architecture for solving that tension. Off-platform AI, powered by APIs, MCP, and agent skills, acts as the reach layer that lets developers and teams experiment, prototype, and orchestrate across systems from within their preferred tools. On-platform AI, delivered through Agent OS, Polaris, and AI Credits, is the trust layer that handles permissions, spend visibility, brand context, review workflows, and auditability. Rather than choosing between open access and tight governance, enterprises should use both layers together so external AI gathers context while governed on-platform capabilities execute business-critical work safely.","ai-will-not-live-in-one-place-but-trust-has-to","2026-05-18T10:00:00Z","https://timbenniks.dev/writing/off-platform-ai-and-on-platform-ai-as-reach-and-trust-layers","8 min read","https://res.cloudinary.com/dwfcofnrd/image/upload/v1779099112/website/gib8lwjp8sxxu5v3jmz8.jpg",[1450,1451,1452,1453,1454,1455,1456],"ai","architecture","composable","api","orchestration","dxp","web development",[1458,1461,1464],{"question":1459,"answer":1460},"What is the main difference between off-platform AI and on-platform AI in this model?","Off-platform AI is the reach layer. It uses APIs, MCP, and agent skills to bring AI into the tools where people already work, such as IDEs, custom agents, and external copilots. It optimizes for experimentation, flexibility, and broad coverage across systems. On-platform AI is the trust layer. Through Agent OS, Polaris, and AI Credits, it manages permissions, spend, brand context, review and approval flows, and audit trails. Off-platform AI focuses on access and experimentation, while on-platform AI focuses on governance, accountability, and running AI as a reliable business capability.",{"question":1462,"answer":1463},"Why are MCP and Agent OS both necessary instead of choosing one?","MCP and Agent OS solve different problems. MCP is a protocol that standardizes how external AI clients connect to Contentstack and call capabilities, making it ideal for developer-led experimentation, external copilots, and custom orchestration. However, MCP does not handle spend attribution, brand context, permissions, or review. Agent OS provides that operating layer inside Contentstack, with AI Credits, Brand Kit integration, workflow approvals, and reusable governed agents and automations. Most enterprises need both: MCP for flexible reach into external tools, and Agent OS for controlled, auditable execution of AI-powered work.",{"question":1465,"answer":1466},"How does this architecture help enterprises manage AI spend and risk?","The architecture centralizes spend and risk management in the on-platform trust layer while allowing experimentation in the reach layer. MCP-based tools can call into Contentstack, but Agent OS tracks and governs usage through AI Credits, enabling per-user, per-agent, and per-workflow visibility into token consumption and cost. Admins can set thresholds, allocate budgets, and approve expensive workflows. At the same time, Agent OS enforces brand context, permission-aware actions, and review workflows, ensuring that AI-assisted changes—especially in regulated or customer-facing content—are logged, attributable, and reviewable before publishing.",{"meta":1468},[1469,1471,1473,1475],{"property":1470,"content":1448},"twitter:image",{"property":1472,"content":966},"twitter:title",{"property":1474,"content":1443},"twitter:description",{"property":1476,"content":1477},"keywords","ai, architecture, composable, api, orchestration, dxp, web development",{"type":1479,"children":1480,"toc":1712},"root",[1481,1489,1494,1499,1504,1509,1514,1519,1524,1529,1534,1539,1550,1555,1560,1565,1570,1575,1584,1589,1594,1599,1604,1609,1614,1619,1624,1629,1634,1643,1648,1653,1658,1663,1668,1673,1682,1687,1692,1697,1702,1707],{"type":1482,"tag":1483,"props":1484,"children":1485},"element","p",{},[1486],{"type":1487,"value":1488},"text","Enterprise AI is moving faster than enterprise governance. That is the contradiction most digital leaders are managing right now, whether they say it out loud or not.",{"type":1482,"tag":1483,"props":1490,"children":1491},{},[1492],{"type":1487,"value":1493},"AI is already showing up in the places where work happens. Browser assistants. Coding agents in the IDE. Local models on laptops. Custom agents wired through MCP. Chat-triggered workflow automations. AI features inside the platforms that run the business.",{"type":1482,"tag":1483,"props":1495,"children":1496},{},[1497],{"type":1487,"value":1498},"That is not going away, and it should not. People are finding leverage in the tools they already use.",{"type":1482,"tag":1483,"props":1500,"children":1501},{},[1502],{"type":1487,"value":1503},"The harder part is governance. No enterprise can review every prompt in every assistant, rebuild brand context inside every tool, or reconcile permissions across every agent, workflow, integration, and local experiment. Spend, audit, and risk cannot be treated as loose ends scattered across browser tabs and API keys.",{"type":1482,"tag":1483,"props":1505,"children":1506},{},[1507],{"type":1487,"value":1508},"This is the new AI architecture problem: work is becoming distributed, but trust still needs a home.",{"type":1482,"tag":1483,"props":1510,"children":1511},{},[1512],{"type":1487,"value":1513},"MCP gives developers access. Agent OS gives admins control.",{"type":1482,"tag":1483,"props":1515,"children":1516},{},[1517],{"type":1487,"value":1518},"Many organizations instinctively frame this as a choice. Open AI access or governed AI execution. Bring-your-own tooling or platform-contained AI. Pick a side.",{"type":1482,"tag":1483,"props":1520,"children":1521},{},[1522],{"type":1487,"value":1523},"That framing falls apart as soon as you look at how enterprise work actually happens.",{"type":1482,"tag":1483,"props":1525,"children":1526},{},[1527],{"type":1487,"value":1528},"Developers will use coding agents because those agents live inside their development workflow. Marketing teams will test assistants for campaign variants. Ops teams will chain external tools through automations. Agencies and partners will bring their own AI into client delivery. Some teams will run local LLMs for privacy or latency. Trying to force all of that into one product UI is not strategy. It is pretending.",{"type":1482,"tag":1483,"props":1530,"children":1531},{},[1532],{"type":1487,"value":1533},"At the same time, when AI touches regulated content, customer-facing experiences, brand, or compliance, ungoverned freedom becomes a real problem. Context fragments. Permissions get blurry. Spend spreads out. Audit trails weaken. The same flexibility that makes off-platform AI useful for exploration makes it risky as the default way to execute work.",{"type":1482,"tag":1483,"props":1535,"children":1536},{},[1537],{"type":1487,"value":1538},"The architecture that works accepts both realities. Use AI where the work happens. Govern AI actions where the business already manages the work.",{"type":1482,"tag":1540,"props":1541,"children":1543},"h2",{"id":1542},"off-platform-ai-is-the-reach-layer",[1544],{"type":1482,"tag":1545,"props":1546,"children":1547},"strong",{},[1548],{"type":1487,"value":1549},"Off-Platform AI is the reach layer",{"type":1482,"tag":1483,"props":1551,"children":1552},{},[1553],{"type":1487,"value":1554},"Off-platform AI is how enterprises get coverage across the systems that matter. Contentstack supports that through three practical surfaces: APIs, MCP, and agent skills.",{"type":1482,"tag":1483,"props":1556,"children":1557},{},[1558],{"type":1487,"value":1559},"Friendly APIs make the platform programmable for teams and partners. MCP makes Contentstack reachable from AI-native clients, IDEs, custom agent hosts, and external copilots without a pile of bespoke integrations. Agent skills give those external tools enough context to operate intelligently against Contentstack instead of treating the platform as a generic API to poke at through trial and error.",{"type":1482,"tag":1483,"props":1561,"children":1562},{},[1563],{"type":1487,"value":1564},"That combination is what makes external AI useful at enterprise scale. A coding agent can inspect content models through documented interfaces. An external assistant can request approved context through MCP. A custom agent can invoke an automation that already contains the workflow logic. In each case, the user stays in the tool they prefer.",{"type":1482,"tag":1483,"props":1566,"children":1567},{},[1568],{"type":1487,"value":1569},"This is the reach layer. It is where developer experimentation happens, where prototypes get built quickly, and where teams create their own orchestration across Contentstack and other systems. For technical teams that want flexibility, MCP plus skills plus APIs is the right surface.",{"type":1482,"tag":1483,"props":1571,"children":1572},{},[1573],{"type":1487,"value":1574},"What this layer does not do, and was never meant to do alone, is enforce enterprise governance. That is the other half of the architecture.",{"type":1482,"tag":1540,"props":1576,"children":1578},{"id":1577},"on-platform-ai-is-the-trust-layer",[1579],{"type":1482,"tag":1545,"props":1580,"children":1581},{},[1582],{"type":1487,"value":1583},"On-Platform AI is the trust layer",{"type":1482,"tag":1483,"props":1585,"children":1586},{},[1587],{"type":1487,"value":1588},"If MCP is free, the obvious question is why on-platform AI is worth paying for. The answer is simple: MCP and Agent OS are doing different jobs.",{"type":1482,"tag":1483,"props":1590,"children":1591},{},[1592],{"type":1487,"value":1593},"MCP is a protocol. Think of it as a USB port for AI. It standardizes how an external client plugs into Contentstack and calls capabilities. That is useful, and Contentstack should make MCP excellent.",{"type":1482,"tag":1483,"props":1595,"children":1596},{},[1597],{"type":1487,"value":1598},"But a USB port does not decide who is allowed to plug in, what they can do once connected, who pays for what they use, or what gets logged when something goes wrong. The operating system around the port handles that.",{"type":1482,"tag":1483,"props":1600,"children":1601},{},[1602],{"type":1487,"value":1603},"Agent OS is that operating system for AI inside Contentstack. It is the part that turns AI from a capability into something the business can actually run. Four gaps make the value clear.",{"type":1482,"tag":1483,"props":1605,"children":1606},{},[1607],{"type":1487,"value":1608},"The first gap is spend. MCP burns tokens. It does not bill them to a team, attribute them to a workflow, or warn an admin before a runaway agent eats through a quarter's budget over a weekend. AI Credits inside Agent OS give per-user, per-agent, and per-workflow visibility into what AI costs, where it is used, and why. Admins can allocate credits, set thresholds, approve expensive workflows, and connect usage back to business value. Without that layer, AI spend becomes a string of small surprises that eventually turns into one big one.",{"type":1482,"tag":1483,"props":1610,"children":1611},{},[1612],{"type":1487,"value":1613},"The second gap is brand and content context. MCP gives an external client access to the API. It does not automatically give that client the brand voice profile, approved content rules, locale-specific tone, or editorial guardrails the business has spent years defining. Agent OS can, because it runs inside the platform where that context already lives. The difference shows up in the output. An MCP call against an API can produce technically correct content that still feels off-brand. An Agent OS workflow can use Brand Kit voice profiles and approved context by default.",{"type":1482,"tag":1483,"props":1615,"children":1616},{},[1617],{"type":1487,"value":1618},"The third gap is review and approval. MCP can change things. MCP does not review what changed. When AI suggests copy for a developer's local prototype, that may be fine. When AI updates a regulated product description on a live entry, it is not. Agent OS can route AI-assisted changes through the same workflow stages, approval gates, and review surfaces that already govern human changes. The audit trail can show who acted, which agent was involved, what context was used, and what was reviewed.",{"type":1482,"tag":1483,"props":1620,"children":1621},{},[1622],{"type":1487,"value":1623},"The fourth gap is reusability. The most useful AI workflows in an enterprise are usually refined over weeks of trial and error. Without an operating layer, those workflows end up on someone's laptop, in a personal prompt library, in a private GitHub repo, or in an agency folder. The organization pays for the learning but never really owns it. Agent OS turns agents, skills, and automations into governed assets that belong to the business. They can be scoped by permission, versioned, reused, and improved across teams.",{"type":1482,"tag":1483,"props":1625,"children":1626},{},[1627],{"type":1487,"value":1628},"None of these are protocol problems. They are operating-model problems, and they appear the moment AI moves from experimentation into production work.",{"type":1482,"tag":1483,"props":1630,"children":1631},{},[1632],{"type":1487,"value":1633},"That is what on-platform AI buys. Not a better chat window. A governed substrate for AI work that is permission-aware, brand-aware, reviewable, and economically visible.",{"type":1482,"tag":1540,"props":1635,"children":1637},{"id":1636},"best-fit-guidance",[1638],{"type":1482,"tag":1545,"props":1639,"children":1640},{},[1641],{"type":1487,"value":1642},"Best-Fit guidance",{"type":1482,"tag":1483,"props":1644,"children":1645},{},[1646],{"type":1487,"value":1647},"The honest answer to \"MCP or Agent OS?\" is usually both, for different reasons.",{"type":1482,"tag":1483,"props":1649,"children":1650},{},[1651],{"type":1487,"value":1652},"MCP, agent skills, and APIs are the right fit for developer-led experimentation, rapid prototyping, external copilots and coding agents, bring-your-own orchestration across systems, and invoking approved automations from external clients. They give technical teams room to build their own AI experience.",{"type":1482,"tag":1483,"props":1654,"children":1655},{},[1656],{"type":1487,"value":1657},"Polaris, Agent OS, and AI Credits are the right fit for usage visibility, spend control, admin-managed governance, permission-aware AI actions tied to each user's authentication context, brand-aware workflows that respect Brand Kit and approved content context, custom agents that run on demand or inside editing and workflow surfaces, and reviewable AI-assisted changes that are attributed and logged.",{"type":1482,"tag":1483,"props":1659,"children":1660},{},[1661],{"type":1487,"value":1662},"The pattern most enterprises land on is straightforward once it has a name. External AI gathers context through MCP and skills, requests action through governed capabilities, and hands work back into Contentstack workflows for review, approval, and publishing.",{"type":1482,"tag":1483,"props":1664,"children":1665},{},[1666],{"type":1487,"value":1667},"The reach layer expands what is possible. The trust layer makes it usable in the business.",{"type":1482,"tag":1483,"props":1669,"children":1670},{},[1671],{"type":1487,"value":1672},"There is also a practical efficiency angle that often gets missed in the governance conversation. On-platform AI does not start cold. Polaris benefits from a smart cache layer that sits between the agent and the Contentstack API, keeping a lightweight, automatically synced view of the space, content types, structure, and entries. Instead of running bulk discovery calls every time it needs to understand the environment, Polaris reads that pre-built context and makes a targeted API call only for the specific entry it actually has to act on. The result is fewer API calls, lower token consumption, and faster execution. Governance is the headline reason to run AI on-platform. Efficiency is the quiet one, and at enterprise volume it compounds quickly.",{"type":1482,"tag":1540,"props":1674,"children":1676},{"id":1675},"conclusion",[1677],{"type":1482,"tag":1545,"props":1678,"children":1679},{},[1680],{"type":1487,"value":1681},"Conclusion",{"type":1482,"tag":1483,"props":1683,"children":1684},{},[1685],{"type":1487,"value":1686},"The tension between off-platform AI and on-platform AI is not a product category fight. It is an architecture question that every enterprise will answer, either deliberately or by accident.",{"type":1482,"tag":1483,"props":1688,"children":1689},{},[1690],{"type":1487,"value":1691},"Off-platform AI gives enterprises reach. It brings AI into the tools where people already code, plan, write, analyze, and automate. No platform vendor will out-build that ecosystem, and none should try.",{"type":1482,"tag":1483,"props":1693,"children":1694},{},[1695],{"type":1487,"value":1696},"On-platform AI gives enterprises trust. It brings AI into the systems where content, permissions, workflow, brand, and accountability already live. It turns AI activity into repeatable business capability.",{"type":1482,"tag":1483,"props":1698,"children":1699},{},[1700],{"type":1487,"value":1701},"Contentstack's position is to connect those worlds: open access through APIs, MCP, and agent skills; governed execution through Agent OS, Polaris, and AI Credits.",{"type":1482,"tag":1483,"props":1703,"children":1704},{},[1705],{"type":1487,"value":1706},"The platforms that win this next phase will be open enough for the AI ecosystem and governed enough for enterprise operations.",{"type":1482,"tag":1483,"props":1708,"children":1709},{},[1710],{"type":1487,"value":1711},"AI will not live in one place. But trust has to.",{"title":1442,"searchDepth":1713,"depth":1713,"links":1714},2,[1715,1716,1717,1718],{"id":1542,"depth":1713,"text":1549},{"id":1577,"depth":1713,"text":1583},{"id":1636,"depth":1713,"text":1642},{"id":1675,"depth":1713,"text":1681},"markdown","content:4.writing:ai-will-not-live-in-one-place-but-trust-has-to.md","content","4.writing/ai-will-not-live-in-one-place-but-trust-has-to.md","4.writing/ai-will-not-live-in-one-place-but-trust-has-to","md",[1726,1749,1769],{"_path":17,"_dir":1727,"_draft":1441,"_partial":1441,"_locale":1442,"title":16,"description":1728,"date":1729,"position":1730,"image":1731,"videoId":1732,"transcript":1733,"tags":1734,"playlist":1727,"body":1742,"_type":1719,"_id":1746,"_source":1721,"_file":1747,"_stem":1748,"_extension":1724},"alive-and-kicking","After a guitar hiatus of 10 years, I played a gig in front of 1000 people, without a band, all on my own. The browser controlled everything, from the backing tracks to the visualization, to the guitar amp presets. Users could live-vote on which song I played next.\n\nTech used:\n* Vue.js\n* Nuxtjs\n* Pinia\n* Vercel\n* Supabase\n* Webmidi.js\n* Cloudinary\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2023-08-12T10:05:11Z","000","https://i.ytimg.com/vi/hhPiTREYobI/maxresdefault.jpg","hhPiTREYobI","cool [Applause] [Music] about yourself [Music] over time things sometimes just kind of musically for me at least they go down in the back of my mind is like there's this guitar I need to play it but not today and not today became the last seven eight years like I would get it up noodle a bit put it back but that's not making music that's just noodling I don't know what it is sometimes some spark needs to go off somewhere and I have it back now and I'm so happy I speak at all these conferences right and I wanted to kind of shake things up with different things that I do people that watch this probably know me as someone who is a developer who speaks at conferences makes YouTube videos but all that music stuff is not that on the foreground with me and I wanted to change that because it's my passion actually my music is a bigger passion than anything else you've ever seen of me online there has to be a way with modern technology that I can grab a guitar plug it into an audio interface that with USB talks to my computer and then the rest happens there I had this idea of you know what I'm going to do guitar karaoke myself on stage using the technology that people use at that conference so I pitched this idea to Yos from qds Amsterdam my dear friend who is always ready to hear crazy ideas for me and I said you know what I'm gonna have the audience vote and they fought on four or five songs and whatever song gets voted on I play on stage no matter what happens it's going to be awesome and he's like you're crazy it's ambitious but let's go we're gonna do this and so I wrote down what it's going to be and they did Big Marketing and it was like oh boy I actually didn't check how am I going to actually pull this off is there technology that with a browser can talk to my guitar and change the sound turns out it's not that hard [Music] right [Applause] [Music] [Music] [Applause] foreign [Music] backstage it's like 7am I'm dead it's really early but Rock life goes on I thought I'd just warm up my fingers and like just rocking with it you know small setup all we need in one of the backstage areas which is basically a shipping container so anyways let's rock and roll you have your phone and you're in the audience you log in with GitHub you fold on whatever song you want that I for me to play you get three votes there's five songs and the moment you vote you see your little GitHub um profile icon fly about on the screen because it's fun to see stuff live and whatever song gets the most votes I click play on the backing track starts to play through the laptop then I put my guitar on top of that and both go out to the output and then there's music foreign [Applause] are you awake yet no I can guarantee you you will be after this it's Gonna Get Loud and this is actually a pretty different talk than you're used to okay so super bass is actually dealing with the amount of votes more more more more you get three photos out of five songs right oh we have lots of Michael Jackson AC DC obviously look at all these boats so it's going to be so much fun waking up the crowd opening this lovely conference with some you know party because I want some interaction there and I want to just like this is Tim I like music I like nerd stuff I like coding I guess I've been thinking about this project for a few years now [Music] welcome [Music] same I have not seen a guitar this good in a long time it has like a roasted Maple neck you can see it's darker so it's not moving as much it has a floating tremolo um it has locking tuners I can play Blues on it I can play any sort of Pop tune because it it has all these features so um I'll be using this on stage because it's so versatile [Applause] [Music] let's go foreign [Applause] [Music] [Music] to extract isolated tracks for Focus guitars drums whatever from these songs that I'm playing I removed all the guitars and all the extras I cut up the song to be two minutes and I replayed all the guitars myself as a Bass track for me to play over on stage and so I just opened GarageBand free tool on a MacBook works perfectly and so I essentially kind of re-recorded all these songs with my own guitars and cutting them up and then using some original parts some my of my own Parts some programmed Parts just to make these songs my own and really great for at the conference and I had some help from Nicolette bruntner who is the production manager at few DS Amsterdam and she's actually a trained audio engineer she's amazing at mixing and recording and so we were chatting all the time like how does this have to sound how would I do that and I gave her all the tracks and she did this insanely good mix for me that I didn't expect her to put so much time [Music] [Music] [Music] foreign [Music] [Music] [Music] look at all these boats go [Applause] foreign [Music]",[1456,1735,1736,1737,1738,1739,1740,1741],"frontend-development","Cloud","Database","deployment","performance","frameworks","Media",{"type":1479,"children":1743,"toc":1744},[],{"title":1442,"searchDepth":1713,"depth":1713,"links":1745},[],"content:3.videos:alive-and-kicking:000-hhPiTREYobI.md","3.videos/alive-and-kicking/000-hhPiTREYobI.md","3.videos/alive-and-kicking/000-hhPiTREYobI",{"_path":20,"_dir":1727,"_draft":1441,"_partial":1441,"_locale":1442,"title":19,"description":1750,"date":1751,"position":1752,"image":1753,"videoId":1754,"transcript":1755,"tags":1756,"playlist":1727,"body":1762,"_type":1719,"_id":1766,"_source":1721,"_file":1767,"_stem":1768,"_extension":1724},"The folks at ContentCon asked me if I wanted to be the entertainment and open their annual conference with my Alive & Kicking guitar talk. Austin, Texas was awesome. Thanks for having me!\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2024-06-15T14:39:24Z","001","https://i.ytimg.com/vi/mvq-_s20NDk/maxresdefault.jpg","mvq-_s20NDk","[Music] it is now 543 in the morning and I'm on my way to Austin Texas cuz I'm speaking at content con and so let's just start driving anyways and because I have 24 hours of travel ahead that's why I'm this early all normally I speak at a conference just you know to to talk about the tech right now nope I have 15 probably 20 minutes to play my guitar go off stage and be gone anyways um I cannot keep driving like this so um let's make a montage shall we because this is 24 hours for d for travel anyways cheers [Music] [Applause] [Music] [Applause] [Music] so I haven't even talked about what I'm actually doing here at the conference because I did mention a little bit like I'm going to play guitar right on the entertainment and so actually um I'm coming here to do my Alive and Kicking talk which is basically a guitar karaoke where people can phote on what songs I play and together we make a mashup of four songs and then I play all the songs and the fun bit of course is that I'm using um technology that's all in the cloud it's hatless it's all in the browser and so it really fits a conference like this where I use the technology that they sell but I don't explain how to do it I actually just show you this is a way you can use it right and so because I'm traveling all the way here all the flights and stuff I couldn't bring a guitar because that's just really challenging to do and so I get here I buy a guitar and then we buy a nice flight case and then we send it back and so going back with the guitar is a lot safer than coming here because I come here and something goes wrong we're screwed essentially and so I'm going to buying a guitar now yeah [Music] [Music] now that is an awesome guitar I'm really really excited to use it so thank you content stack for actually um helping me get that and so after buying it um I went out on the town I saw a few people we had some lovely food and then we had a great um speakers dinner and then we went out for some whiskies and Good Times [Applause] [Music] [Applause] [Music] [Applause] [Music] [Applause] [Music] [Music] [Applause] more often V again try to hack it please I ask this on every conference and based on the audience they either hack it or they don't [Applause] [Music] [Applause] [Music] you",[1757,1758,1759,1760,1736,1456,1761,1741],"headless-cms","composable-architecture","digital-experience-platform","composable-dxp","Content",{"type":1479,"children":1763,"toc":1764},[],{"title":1442,"searchDepth":1713,"depth":1713,"links":1765},[],"content:3.videos:alive-and-kicking:001-mvq-_s20NDk.md","3.videos/alive-and-kicking/001-mvq-_s20NDk.md","3.videos/alive-and-kicking/001-mvq-_s20NDk",{"_path":23,"_dir":1727,"_draft":1441,"_partial":1441,"_locale":1442,"title":22,"description":1770,"date":1771,"position":1772,"image":1773,"videoId":1774,"transcript":1775,"tags":1776,"playlist":1727,"body":1780,"_type":1719,"_id":1784,"_source":1721,"_file":1785,"_stem":1786,"_extension":1724},"In this video, I explain how I created a Vue.js guitar karaoke system in which the browser controls everything. #vuejs and #nuxtjs deal with backing tracks, visualization, and guitar amp presets with midi. Users live-vote on which song I play next using #supabase.\n\nThe talk is called Alive and Kicking, a Vue into rock & roll. I did this talk in front of 1000 people at @VuejsAmsterdam in February 2023.\n\nThe code is open source: https://github.com/timbenniks/AliveAndKickingTalk\n\n00:00 Introduction\n00:57 Signal chain\n02:50 Webmidi controls the guitar amp\n07:26 Live-voting with Supabase\n11:49 Animated avatars for real-time votes\n14:17 Ending\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2023-08-12T10:05:17Z","002","https://i.ytimg.com/vi/M0MrLIGs6I0/maxresdefault.jpg","M0MrLIGs6I0","I have created the ultimate piece of content for me personally as a devrel and I was thinking about this for a few years like how can I combine all my passions and have the right Tech at the right moment the right place to do it and I did and it worked I'm so excited I created a life and taking a few into rock and roll which is essentially a guitar karaoke run completely in the browser so I did this thing in front of a thousand people at a conference all my own no band behind me nothing else just a laptop a guitar and me plug-in go and the audience would live vote which songs I would play and everything happened really organically and it was a lot of fun and so in this video I'll show you how I build it [Music] let's first start with the signal chain so the signal chain of course starts with a guitar and that has to go into the computer so what we use for that is an audio interface that actually converts the analog to digital signal and over USB just sends it to the computer and so from there it goes into the laptop which then has a general output of audio over like HDMI or whatever you want to use that then goes to the venue's output and so this is the essential chain of where the guitar comes in but if you just do it like this it sounds really bad because it's just that dry signal from the guitar so what you need is you need to amplify it well that's what we do with this this is a tool by neural DSP and they have been working for a few years alongside a few other companies to actually make digital versions of old-school amplifiers that are also analog that sound amazing and a few years back this was possible but not affordable and now it gets much better and this was like 99 bucks it's amazing and so this also goes to the output of the computer and then of course we have the browser and so the browser itself playing the background tracks that I recorded because these songs were too long so I made them all two minutes recorded my own guitar backing tracks and then put back the original Focus that we extracted with AI so it feels like a real song but actually it's me playing most of the stuff and that also goes to the output and then of course there's this one more thing because from the refrain to the first to perhaps the solo or the outro of the song The Guitar needs to change its sound and so I'm using web midi API to talk from the browser to the amplifier to change the presets and the sounds like more echo or more volume or more you know gain and that could actually work through the browser using the midi API and so midi is a very old API that actually normally existed between Hardware devices you know from digital drum pads to keyboards that would actually talk over midi to other like Samplers and whatever or syncing things together with this midi signal and now that works in the browser and I had to just virtually create a midi instrument in my laptop and so we now virtually use midi between all these tools and it works extremely well let's talk a little bit about how this works in code so I just made a very very simple database because this is for a conference talk this is not live right this is not production code so I have each song has like a Json object essentially and so this is AC DC's Back in Black and you can see it has presets and so what this is doing essentially is um there is a preset control that you can send over midi and I want to go for preset 2 and the name should be Stadium Rock that's just the phrase that I'm using in the amp and Stadium Rock has to happen at second zero and then when the video is playing it's actually sending events right because it's just or I mean the audio so every second or I don't know how often but it keeps pushing events I'm here now I'm here now and I am made a listener that says oh I'm at 66 you know second 65. let me now send a program change a PC event from midi to go to program three and call it face bleeding solo so that's the solo right and then we go back to Stadium rock at second 106. and so this is literally just some chapters that I created in all these songs and when we actually go to the midi client here you can see it's getting the current time constantly from the audio player and so essentially just find the preset for the time and if it has set the preset it doesn't touch it but if there's a new preset that is higher than a certain value of where the time is it just sends this PC event over the midi and so there's literally it's that easy there's not that much to it and so essentially it's just watching the time find the preset and set the preset and so the only thing you have to do to make midi work is use an amazing Library called webmedi.js because the low level API in the browser is hard think about webgl it's pretty hard to use right web media just normalized it so the only thing you have to do is just okay let's just wait for web media to be enabled find my driver or find the midi interface I'm talking to this is a virtual one that I built in Mac OS everybody can do that and then sending presets is literally send program change on channel one and there's many things you can do in MIDI that I'm not going to talk about now because that's there's so much and so essentially when you look at that so this is now my AC DC here and you can see the amp here on the right actually sets on the default preset and it has like a lovely color here refresh this browser you'll see that it actually goes to you know zero seconds so it needs to actually send a midi event to the amp to say this is what you need to do so let's refresh so I just refreshed it goes to zero seconds and you can see this now changed to a brown interface called Stadium Rock 2. and so you can actually check here there's all these midi programs and so for channel one preset one it's boobie Boogie and then basically the stadium rock is preset two the solo for this song preset three so it's kind of mapped it just listens to these signals from the browser so when I go to play this I muted this for the video I'll go to like I don't know move it forward ah there we go so it just changed to the red face here so now it says here face bleeding solo and so it's just because it's that chapter in the song it changes whatever the amp is doing and if I go forward again oh now it went back to just the rhythm playing and that was essentially a really simple way for me to communicate between browser and amplifier which means I don't have to think about it it's all automated so I just hit play go in front of the stage don't look at my amp don't look at anything and just play and have fun all right on to the next I really wanted some interactivity in this talk because it would be the first talk of the day it would wake people up with loud music but I also wanted them to interact with you know what happened is happening on stage they have a bit of influence on what's Happening and so what I built is somebody goes to a life in kicking.forsale.app on their phone in the audience and they log in with GitHub and I want them to log in so I have their little Avatar image from GitHub that I can then use right and so the moment you log in you get to vote on five songs and you can only vote three times you can also just unfold or download and fold on another one and every time you vote I show you your avatar bouncing around on the screen which means if people start to be very enthusiastically you know voting and voting and voting you'll still see themselves live on the screen into huge venue of the conference which is a lot of fun so here on the left I have my slash live endpoint where I'm basically just counting the votes on the songs and you can see I did a few a few photos already in a previous session somewhere and on the right is essentially the interface that the end user will get to be able to vote so you're not logged in yet so let's just do that so I'm going to GitHub and I'm already logged in because I was already logged in in GitHub and this is using Super Bass for logging in and I cannot stress enough how easy it is to actually log in with Super Bass check this out literally I have a button that says login which is this function right I just do sign in with all provider GitHub done there's there's literally nothing else I have to do other than setting up my GitHub so people can log in with it this is ridiculous Super Bass you are awesome all right I have logged in and now see all the five songs here right and I just made it look good so yeah you have some lovely images behind when you scroll by it's just good fun and so when I hit vote let's vote on a few of them you can actually see my avatar bouncing around on the screen now and um I actually have three votes only so I can actually say you know what no more folds left let's remove this vote and add another vote and let's remove some a few more folds and then fold again so you can see my avatar you know going around and what I do is if like a thousand people at the same time do this every five seconds I'm removing the first little ball I've added here otherwise things go mental and this has to run at 60 frames per second while it's also visualizing the audio and also talking to the guitar amp right and so you could see every time I add a photo here these numbers update as well and all these photos are stored in Super Bass as well and so let's have a look at how I actually pull that off and so okay login is done so essentially we have a fold view component and all you need to know other than how it looks is song store which is Pina which works extremely well here upload the song ID or download the song ID and you can see like how many times you have folded what are the maximum Amber votes all this updated reactively with Pina and so in the songs um store here there's an upvote and a downfote and there's a few more but we don't need to go into that now it's so easy again with Super Bass I just have the user from Super Bass I have the client from Super Bass and literally I just say you know if I'm voting do I already have a thought from this user if so already voted stop it so if somebody's trying to hack my interface they will not be able to vote um and other than that I'm literally just saying okay I'm gonna vote well from votes and then insert this and I have a little TS ignore here please ignore that because this was coded really fast and I I didn't want to show you the errors um uh and that's it and then after that it just checks all the voted songs and then updates the interface with that and that's all there is to it it's a simple query if you want to download I'll just delete the row that's it so if you don't know how you have to write MySQL queries you don't need to know just do it like this and it's relatively simple and so there's one last bit which is like the moving balls right let's have a look at that one so let's go to life votes this is life votes and this is basically a huge canvas and what I've done I've actually created a real-time Channel Through the Super Bass SDK with nox.js every time a change happens on the photos table it actually sends refresh photos into my use async data function and so the refresh function is really easy and it's added by nux3 that essentially just refreshes your thing and this is mainly built for things like next page or paginated Ajax calls and so every time there's a new update to a table row I fresh do refresh and it queries again and this is how it gets this live thing going on because it just knows when a row was changed I query again and then I basically just create the photos data prop that is you know reactive and then you can do stuff with that and so then let's go down a little I have created a canvas and there are some gravity stuff going on and essentially what I'm doing is I create a ball and this bowl has a whole bunch of properties and it does request animation frame so 60 frames per second it's rendering these balls so every new vote is a ball and um it just renders it again with a little bit of math to make it kind of look like it's you're on the moon so it's not real gravity but it's almost real and then every time a new phone happens so I'm watching the photos reactive property I just you know add a new one with the the image of the user the avatar from cloudinary upload because I wanted to make them a PNG I wanted to rounded them and make them only 40 pixels wide and there's not much to it like and it just pushes a new ball that then is added to my canvas that is doing the animations all the time and then every five seconds it just removes a ball because otherwise it's too many balls it's ridiculous and so um once we go to another page we remove the real-time channel so it doesn't keep querying and there you go once you're done you go to the next song the whole thing repeats and so this is a short way to show you all the fun stuff that I've built and it's open source you can find it on my GitHub I'll put the link in the description and if you want more of this if you want me to do this on your conference feel free to reach out because this is so much fun to do um cheers and I'll speak to you soon [Music] thank you",[1735,1456,1777,1778,1741,1779,1736,1453],"Development","Tools","Audio",{"type":1479,"children":1781,"toc":1782},[],{"title":1442,"searchDepth":1713,"depth":1713,"links":1783},[],"content:3.videos:alive-and-kicking:002-M0MrLIGs6I0.md","3.videos/alive-and-kicking/002-M0MrLIGs6I0.md","3.videos/alive-and-kicking/002-M0MrLIGs6I0",{"_path":967,"_dir":1440,"_draft":1441,"_partial":1441,"_locale":1442,"title":966,"description":1443,"slug":1444,"date":1445,"canonical_url":1446,"reading_time":1447,"image":1448,"tags":1788,"faqs":1789,"draft":1441,"head":1793,"body":1799,"_type":1719,"_id":1720,"_source":1721,"_file":1722,"_stem":1723,"_extension":1724},[1450,1451,1452,1453,1454,1455,1456],[1790,1791,1792],{"question":1459,"answer":1460},{"question":1462,"answer":1463},{"question":1465,"answer":1466},{"meta":1794},[1795,1796,1797,1798],{"property":1470,"content":1448},{"property":1472,"content":966},{"property":1474,"content":1443},{"property":1476,"content":1477},{"type":1479,"children":1800,"toc":1981},[1801,1805,1809,1813,1817,1821,1825,1829,1833,1837,1841,1845,1852,1856,1860,1864,1868,1872,1879,1883,1887,1891,1895,1899,1903,1907,1911,1915,1919,1926,1930,1934,1938,1942,1946,1950,1957,1961,1965,1969,1973,1977],{"type":1482,"tag":1483,"props":1802,"children":1803},{},[1804],{"type":1487,"value":1488},{"type":1482,"tag":1483,"props":1806,"children":1807},{},[1808],{"type":1487,"value":1493},{"type":1482,"tag":1483,"props":1810,"children":1811},{},[1812],{"type":1487,"value":1498},{"type":1482,"tag":1483,"props":1814,"children":1815},{},[1816],{"type":1487,"value":1503},{"type":1482,"tag":1483,"props":1818,"children":1819},{},[1820],{"type":1487,"value":1508},{"type":1482,"tag":1483,"props":1822,"children":1823},{},[1824],{"type":1487,"value":1513},{"type":1482,"tag":1483,"props":1826,"children":1827},{},[1828],{"type":1487,"value":1518},{"type":1482,"tag":1483,"props":1830,"children":1831},{},[1832],{"type":1487,"value":1523},{"type":1482,"tag":1483,"props":1834,"children":1835},{},[1836],{"type":1487,"value":1528},{"type":1482,"tag":1483,"props":1838,"children":1839},{},[1840],{"type":1487,"value":1533},{"type":1482,"tag":1483,"props":1842,"children":1843},{},[1844],{"type":1487,"value":1538},{"type":1482,"tag":1540,"props":1846,"children":1847},{"id":1542},[1848],{"type":1482,"tag":1545,"props":1849,"children":1850},{},[1851],{"type":1487,"value":1549},{"type":1482,"tag":1483,"props":1853,"children":1854},{},[1855],{"type":1487,"value":1554},{"type":1482,"tag":1483,"props":1857,"children":1858},{},[1859],{"type":1487,"value":1559},{"type":1482,"tag":1483,"props":1861,"children":1862},{},[1863],{"type":1487,"value":1564},{"type":1482,"tag":1483,"props":1865,"children":1866},{},[1867],{"type":1487,"value":1569},{"type":1482,"tag":1483,"props":1869,"children":1870},{},[1871],{"type":1487,"value":1574},{"type":1482,"tag":1540,"props":1873,"children":1874},{"id":1577},[1875],{"type":1482,"tag":1545,"props":1876,"children":1877},{},[1878],{"type":1487,"value":1583},{"type":1482,"tag":1483,"props":1880,"children":1881},{},[1882],{"type":1487,"value":1588},{"type":1482,"tag":1483,"props":1884,"children":1885},{},[1886],{"type":1487,"value":1593},{"type":1482,"tag":1483,"props":1888,"children":1889},{},[1890],{"type":1487,"value":1598},{"type":1482,"tag":1483,"props":1892,"children":1893},{},[1894],{"type":1487,"value":1603},{"type":1482,"tag":1483,"props":1896,"children":1897},{},[1898],{"type":1487,"value":1608},{"type":1482,"tag":1483,"props":1900,"children":1901},{},[1902],{"type":1487,"value":1613},{"type":1482,"tag":1483,"props":1904,"children":1905},{},[1906],{"type":1487,"value":1618},{"type":1482,"tag":1483,"props":1908,"children":1909},{},[1910],{"type":1487,"value":1623},{"type":1482,"tag":1483,"props":1912,"children":1913},{},[1914],{"type":1487,"value":1628},{"type":1482,"tag":1483,"props":1916,"children":1917},{},[1918],{"type":1487,"value":1633},{"type":1482,"tag":1540,"props":1920,"children":1921},{"id":1636},[1922],{"type":1482,"tag":1545,"props":1923,"children":1924},{},[1925],{"type":1487,"value":1642},{"type":1482,"tag":1483,"props":1927,"children":1928},{},[1929],{"type":1487,"value":1647},{"type":1482,"tag":1483,"props":1931,"children":1932},{},[1933],{"type":1487,"value":1652},{"type":1482,"tag":1483,"props":1935,"children":1936},{},[1937],{"type":1487,"value":1657},{"type":1482,"tag":1483,"props":1939,"children":1940},{},[1941],{"type":1487,"value":1662},{"type":1482,"tag":1483,"props":1943,"children":1944},{},[1945],{"type":1487,"value":1667},{"type":1482,"tag":1483,"props":1947,"children":1948},{},[1949],{"type":1487,"value":1672},{"type":1482,"tag":1540,"props":1951,"children":1952},{"id":1675},[1953],{"type":1482,"tag":1545,"props":1954,"children":1955},{},[1956],{"type":1487,"value":1681},{"type":1482,"tag":1483,"props":1958,"children":1959},{},[1960],{"type":1487,"value":1686},{"type":1482,"tag":1483,"props":1962,"children":1963},{},[1964],{"type":1487,"value":1691},{"type":1482,"tag":1483,"props":1966,"children":1967},{},[1968],{"type":1487,"value":1696},{"type":1482,"tag":1483,"props":1970,"children":1971},{},[1972],{"type":1487,"value":1701},{"type":1482,"tag":1483,"props":1974,"children":1975},{},[1976],{"type":1487,"value":1706},{"type":1482,"tag":1483,"props":1978,"children":1979},{},[1980],{"type":1487,"value":1711},{"title":1442,"searchDepth":1713,"depth":1713,"links":1982},[1983,1984,1985,1986],{"id":1542,"depth":1713,"text":1549},{"id":1577,"depth":1713,"text":1583},{"id":1636,"depth":1713,"text":1642},{"id":1675,"depth":1713,"text":1681},1779176603892]