[{"data":1,"prerenderedAt":2290},["ShallowReactive",2],{"navigation":3,"content-/writing/claude-desktop-mcp-lifecycle-is-broken":1472,"related-/writing/claude-desktop-mcp-lifecycle-is-broken":1914,"content-query-lJAQWi2CWw":1973},[4,7,952,1191,1460,1463,1466,1469],{"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,1028,1031,1034,1037,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,1158,1161,1164,1167,1170,1173,1176,1179,1182,1185,1188],{"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},"Buy the plumbing, vibe the rest","/writing/buy-the-plumbing-vibe-the-rest",{"title":975,"_path":976},"Choosing the right visual editor for your website Platform-First vs. Code-First","/writing/choosing-the-right-visual-editor",{"title":978,"_path":979},"Claude Desktop MCP lifecycle is broken","/writing/claude-desktop-mcp-lifecycle-is-broken",{"title":981,"_path":982},"Code is craft now, not labor","/writing/code-is-craft-now-not-labor",{"title":984,"_path":985},"Contentstack launched Agent OS, AXP, and the dev tools I have been itching to talk about","/writing/contentstack-launched-agent-os-axp-and-the-dev-tools",{"title":987,"_path":988},"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":990,"_path":991},"Create a performant YouTube embed with a native web component","/writing/create-a-performant-youtube-embed-with-a-native-web-component",{"title":993,"_path":994},"Creating a custom video player in Vue.js","/writing/creating-a-custom-video-player-in-vue",{"title":996,"_path":997},"Cursor, rules, and my vibe engineer workflow","/writing/cursor-rules-and-my-vibe-engineer-workflow",{"title":999,"_path":1000},"Cursor's moat","/writing/cursors-moat",{"title":1002,"_path":1003},"Development 101 for non-technical vibe coders","/writing/development-101-for-non-technical-vibe-coders",{"title":1005,"_path":1006},"The DevRel Operating System","/writing/devrel-os",{"title":1008,"_path":1009},"DevRel success metrics that actually matter","/writing/devrel-success-metrics-that-actually-matter",{"title":1011,"_path":1012},"The different approaches to visual editing in headless CMS","/writing/different-approaches-to-visual-editing",{"title":1014,"_path":1015},"Digital experience platforms the old versus the new","/writing/digital-experience-platforms-the-old-versus-the-new",{"title":1017,"_path":1018},"Do we still need SDKs in the age of AI agents?","/writing/do-we-still-need-sdks-in-the-age-of-ai-agents",{"title":1020,"_path":1021},"Fast, personalized pages with Vercel Edge Middleware and Uniform","/writing/fast-personalized-pages-with-vercel-edge-middleware-and-uniform",{"title":1023,"_path":1024},"How I supercharched my website's speed","/writing/how-i-supercharched-my-websites-speed",{"title":1026,"_path":1027},"How to dynamically stream video","/writing/how-to-dynamically-stream-video",{"title":1029,"_path":1030},"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":1032,"_path":1033},"How to sniff out the Glue Monster","/writing/how-to-sniff-out-the-glue-monster",{"title":1035,"_path":1036},"I will not log into your vibe coded app","/writing/i-will-not-log-into-your-vibe-coded-app",{"title":953,"_path":954},{"title":1039,"_path":1040},"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":1042,"_path":1043},"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":1045,"_path":1046},"MACH versus monolithic suites","/writing/mach-versus-monolithic-suites",{"title":1048,"_path":1049},"Make the Web Greener, Luxury Edition","/writing/make-the-web-greener-luxury-edition",{"title":1051,"_path":1052},"MCP fragmentation, context efficiency, and the rise of curated skills","/writing/mcp-fragmentation-context-efficiency-and-the-rise-of-curated-skills",{"title":1054,"_path":1055},"Most CMS migrations fail before the first record moves","/writing/most-cms-migrations-fail-before-the-first-record-moves",{"title":1057,"_path":1058},"My Fitness Story","/writing/my-fitness-story",{"title":1060,"_path":1061},"New job alert - Hygraph 2023","/writing/new-job-alert",{"title":1063,"_path":1064},"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":1066,"_path":1067},"CMS Showdown do you need a page builder or a data modeler?","/writing/page-builder-cms-vs-data-modeler-cms",{"title":1069,"_path":1070},"SDKs are everywhere. But should you use them?","/writing/sdks-use-them-or-not",{"title":1072,"_path":1073},"TDD finally makes sense","/writing/tdd-finally-makes-sense",{"title":1075,"_path":1076},"Your team is the key to success when going headless","/writing/team-is-key-when-going-headless",{"title":1078,"_path":1079},"Ten AI security problems hiding in plain text","/writing/ten-ai-security-problems-hiding-in-plain-text",{"title":1081,"_path":1082},"The 2015 Paris marathon","/writing/the-2015-paris-maratho",{"title":1084,"_path":1085},"The Age of the \"Super-T\" Product Person","/writing/the-age-of-the-super-t-product-person",{"title":1087,"_path":1088},"The agentic spectrum: stop burning tokens on what a script can do","/writing/the-agentic-spectrum-stop-burning-tokens-on-what-a-script-can-do",{"title":1090,"_path":1091},"Intuition and the real cost of research","/writing/the-best-product-decisions-were-never-analytical",{"title":1093,"_path":1094},"The biggest risk to AI is the enterprise org chart","/writing/the-biggest-risk-to-ai-is-the-enterprise-org-chart",{"title":1096,"_path":1097},"The case for boring setups","/writing/the-case-for-boring-setups",{"title":1099,"_path":1100},"The content Graph is the future","/writing/the-content-graph-is-the-future",{"title":1102,"_path":1103},"The Doer Economy - we are killing the translator class","/writing/the-doer-economy-we-are-killing-the-translator-class",{"title":1105,"_path":1106},"The Experience Factory why experience is the real flagship","/writing/the-experience-factory-01-why-experience-is-the-real-flagship",{"title":1108,"_path":1109},"The Future of CMS. It's dying.","/writing/the-future-of-cms-from-content-management-to-context-management",{"title":1111,"_path":1112},"The future of headless CMS Content Federation with GraphQL","/writing/the-future-of-headless-cms-content-federation-with-graphql",{"title":1114,"_path":1115},"The future of jamstack is composable","/writing/the-future-of-jamstack-is-composable",{"title":1117,"_path":1118},"The future of managing projects at agencies","/writing/the-future-of-managing-projects-at-agencie",{"title":1120,"_path":1121},"The future of software is bespoke","/writing/the-future-of-software-is-bespoke",{"title":1123,"_path":1124},"The lost promise of headless","/writing/the-lost-promise-of-headless",{"title":1126,"_path":1127},"The MACH monolith","/writing/the-mach-monolith",{"title":1129,"_path":1130},"The MACH monolith in 2026","/writing/the-mach-monolith-in-2026",{"title":1132,"_path":1133},"The move from monolithic to composable architectures","/writing/the-move-from-monolithic-to-composable-architectures",{"title":1135,"_path":1136},"The nuanced impact of AI we should not overlook","/writing/the-nuanced-impact-of-ai-we-should-not-overlook",{"title":1138,"_path":1139},"The pragmatic guide to coding with AI agents","/writing/the-pragmatic-guide-to-coding-with-ai-agents",{"title":1141,"_path":1142},"The real deal about content management buzzwords","/writing/the-real-deal-about-content-management-buzzword",{"title":1144,"_path":1145},"The Mini Shai-Hulud supply chain backlash will create worse software","/writing/the-supply-chain-backlash-will-create-worse-software",{"title":1147,"_path":1148},"The tool catalog is the product","/writing/the-tool-catalog-is-the-product",{"title":1150,"_path":1151},"The vibe-coded app architecture guide","/writing/the-vibe-coded-app-architecture-guide",{"title":1153,"_path":1154},"This is headless 2.0","/writing/this-is-headless-20",{"title":1156,"_path":1157},"Uniform DXCP the what, why, and how","/writing/uniform-dxcp-the-what-why-and-how",{"title":1159,"_path":1160},"Uniform is Nuxt 3 ready","/writing/uniform-is-nuxt-3-read",{"title":1162,"_path":1163},"Universal CMS the wheel we're reinventing","/writing/universal-cms-the-wheel-we-are-reinventing",{"title":1165,"_path":1166},"Want to be better at vibe coding? Become a better coder","/writing/want-to-be-better-at-vibe-coding-become-a-better-coder",{"title":1168,"_path":1169},"We are thinking too small","/writing/we-are-thinking-too-small",{"title":1171,"_path":1172},"We have collectively forgotten what monoliths are","/writing/we-have-collectively-forgotten-what-monoliths-are",{"title":1174,"_path":1175},"We moved the difficulty. We didn't make it disappear.","/writing/we-moved-the-difficulty",{"title":1177,"_path":1178},"What type of content organization do you need?","/writing/what-type-of-content-organization-do-you-need",{"title":1180,"_path":1181},"When Output Is Cheap, Taste Is Everything","/writing/when-output-is-cheap-taste-is-everything",{"title":1183,"_path":1184},"Why I didn't run the 2016 marathon","/writing/why-i-didnt-run-the-2016-marathon",{"title":1186,"_path":1187},"Your legacy patterns are technical debt in modern architecture","/writing/your-legacy-patterns-are-technical-debt-in-modern-architecture",{"title":1189,"_path":1190},"Your LinkedIn reads like a robot wrote it","/writing/your-linkedin-reads-like-a-robot",{"title":1192,"_path":1193,"children":1194},"Speaking","/speaking",[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,1429,1432,1435,1438,1441,1444,1447,1450,1453,1456,1459],{"title":1196,"_path":1197},"2019 02 14 Clifq5gzg40j20bw9ne2mh9n6","/speaking/2019-02-14-clifq5gzg40j20bw9ne2mh9n6",{"title":1199,"_path":1200},"2019 02 26 Clifq5gns3xhu0buv6a8th0jk","/speaking/2019-02-26-clifq5gns3xhu0buv6a8th0jk",{"title":1202,"_path":1203},"2019 04 19 Clifq5gd63xhq0buvufv6nagk","/speaking/2019-04-19-clifq5gd63xhq0buvufv6nagk",{"title":1205,"_path":1206},"2019 05 17 Clifq5g1f3wh90bw81u5sa0ai","/speaking/2019-05-17-clifq5g1f3wh90bw81u5sa0ai",{"title":1208,"_path":1209},"2019 05 25 Clifq5fpd3xt00aw4grnzft29","/speaking/2019-05-25-clifq5fpd3xt00aw4grnzft29",{"title":1211,"_path":1212},"2019 09 04 Clifq5fer3xhl0buvzzgwqg1k","/speaking/2019-09-04-clifq5fer3xhl0buvzzgwqg1k",{"title":1214,"_path":1215},"2019 09 09 Clifq5f1b3wh10bw8ftmppjkc","/speaking/2019-09-09-clifq5f1b3wh10bw8ftmppjkc",{"title":1217,"_path":1218},"2019 09 27 Clifq5eos3xhh0buvewly5gxs","/speaking/2019-09-27-clifq5eos3xhh0buvewly5gxs",{"title":1220,"_path":1221},"2019 11 28 Clifq5ebo3wgx0bw8vno5ce0d","/speaking/2019-11-28-clifq5ebo3wgx0bw8vno5ce0d",{"title":1223,"_path":1224},"2019 12 17 Clifq5dyh40ij0bw9oquw072b","/speaking/2019-12-17-clifq5dyh40ij0bw9oquw072b",{"title":1226,"_path":1227},"2020 02 18 Clifq5dk940if0bw9ok9achtj","/speaking/2020-02-18-clifq5dk940if0bw9ok9achtj",{"title":1229,"_path":1230},"2020 03 19 Clifq5dal3xsn0aw49a9wad1n","/speaking/2020-03-19-clifq5dal3xsn0aw49a9wad1n",{"title":1232,"_path":1233},"2020 04 22 Clifq5czw3wgs0bw8srwiffx1","/speaking/2020-04-22-clifq5czw3wgs0bw8srwiffx1",{"title":1235,"_path":1236},"2020 05 06 Clifq5cpx40hk0bw9odxcxt0q","/speaking/2020-05-06-clifq5cpx40hk0bw9odxcxt0q",{"title":1238,"_path":1239},"2020 05 13 Clifq5cfw3xh00buvhyslf4s3","/speaking/2020-05-13-clifq5cfw3xh00buvhyslf4s3",{"title":1241,"_path":1242},"2020 05 25 Clifq5c5u3wgo0bw8g8yudazp","/speaking/2020-05-25-clifq5c5u3wgo0bw8g8yudazp",{"title":1244,"_path":1245},"2020 05 28 Clifq5bvw40h20bw92kt7pmp1","/speaking/2020-05-28-clifq5bvw40h20bw92kt7pmp1",{"title":1247,"_path":1248},"2020 06 09 Clifq5bj73xrj0aw42st3pna4","/speaking/2020-06-09-clifq5bj73xrj0aw42st3pna4",{"title":1250,"_path":1251},"2020 07 21 Clifq5b6s3xrf0aw4s8ml5qjb","/speaking/2020-07-21-clifq5b6s3xrf0aw4s8ml5qjb",{"title":1253,"_path":1254},"2020 07 27 Clifq5axb3xgw0buvy6hrvpv2","/speaking/2020-07-27-clifq5axb3xgw0buvy6hrvpv2",{"title":1256,"_path":1257},"2020 08 05 Clifq5anp3xrb0aw4jxeipa7e","/speaking/2020-08-05-clifq5anp3xrb0aw4jxeipa7e",{"title":1259,"_path":1260},"2020 08 26 Clifq5a9x3wgk0bw8x8qfl5rk","/speaking/2020-08-26-clifq5a9x3wgk0bw8x8qfl5rk",{"title":1262,"_path":1263},"2020 09 17 Clifq59zj3wgg0bw8xmh09vvm","/speaking/2020-09-17-clifq59zj3wgg0bw8xmh09vvm",{"title":1265,"_path":1266},"2020 10 14 Clifq59mp3wgc0bw82qykah6x","/speaking/2020-10-14-clifq59mp3wgc0bw82qykah6x",{"title":1268,"_path":1269},"2020 10 29 Clifq59b83xr60aw45w2sqa1g","/speaking/2020-10-29-clifq59b83xr60aw45w2sqa1g",{"title":1271,"_path":1272},"2020 11 10 Clifq590340gy0bw9onnmgr7y","/speaking/2020-11-10-clifq590340gy0bw9onnmgr7y",{"title":1274,"_path":1275},"2020 11 11 Clifq58oo40gu0bw9iffiakmh","/speaking/2020-11-11-clifq58oo40gu0bw9iffiakmh",{"title":1277,"_path":1278},"2020 12 01 Clifq58cz3xr10aw4n6qndf3s","/speaking/2020-12-01-clifq58cz3xr10aw4n6qndf3s",{"title":1280,"_path":1281},"2020 12 02 Clifq582i3wg80bw8rszss5am","/speaking/2020-12-02-clifq582i3wg80bw8rszss5am",{"title":1283,"_path":1284},"2020 12 11 Clifq57o03xgp0buvlvdxm5l9","/speaking/2020-12-11-clifq57o03xgp0buvlvdxm5l9",{"title":1286,"_path":1287},"2020 12 16 Clifq57c43wg40bw81h7fr291","/speaking/2020-12-16-clifq57c43wg40bw81h7fr291",{"title":1289,"_path":1290},"2020 12 18 Clifq571z40gq0bw9b62wbowr","/speaking/2020-12-18-clifq571z40gq0bw9b62wbowr",{"title":1292,"_path":1293},"2021 01 12 Clifq56q43xgk0buv4hu04quz","/speaking/2021-01-12-clifq56q43xgk0buv4hu04quz",{"title":1295,"_path":1296},"2021 02 01 Clifq56gq3xqx0aw47qor4w9s","/speaking/2021-02-01-clifq56gq3xqx0aw47qor4w9s",{"title":1298,"_path":1299},"2021 02 02 Clifq56623xqt0aw44sbds5cn","/speaking/2021-02-02-clifq56623xqt0aw44sbds5cn",{"title":1301,"_path":1302},"2021 02 22 Clifq55tf40gk0bw9vofea3yp","/speaking/2021-02-22-clifq55tf40gk0bw9vofea3yp",{"title":1304,"_path":1305},"2021 03 03 Clifq55jz3xqp0aw4je7y5sw1","/speaking/2021-03-03-clifq55jz3xqp0aw4je7y5sw1",{"title":1307,"_path":1308},"2021 03 24 Clifq559p3xgf0buvzch9im3l","/speaking/2021-03-24-clifq559p3xgf0buvzch9im3l",{"title":1310,"_path":1311},"2021 04 07 Clifq54zf3wfz0bw80v5gzndk","/speaking/2021-04-07-clifq54zf3wfz0bw80v5gzndk",{"title":1313,"_path":1314},"2021 04 20 Clifq54na3xgb0buvrvmbamxf","/speaking/2021-04-20-clifq54na3xgb0buvrvmbamxf",{"title":1316,"_path":1317},"2021 04 29 Clifq54ct3wfu0bw8zsr9mejw","/speaking/2021-04-29-clifq54ct3wfu0bw8zsr9mejw",{"title":1319,"_path":1320},"2021 07 27 Clifq542s3xg60buvdk199xtq","/speaking/2021-07-27-clifq542s3xg60buvdk199xtq",{"title":1322,"_path":1323},"2021 09 07 Clifq53so3wfq0bw81xni3t7x","/speaking/2021-09-07-clifq53so3wfq0bw81xni3t7x",{"title":1325,"_path":1326},"2021 11 04 Clifq53ib40gf0bw9c3mxprzu","/speaking/2021-11-04-clifq53ib40gf0bw9c3mxprzu",{"title":1328,"_path":1329},"2021 11 10 Clifq536v3xg20buvlz1n7ddw","/speaking/2021-11-10-clifq536v3xg20buvlz1n7ddw",{"title":1331,"_path":1332},"2021 11 22 Clifq52wr3wfm0bw83eawjx9x","/speaking/2021-11-22-clifq52wr3wfm0bw83eawjx9x",{"title":1334,"_path":1335},"2021 12 01 Clifq52jm3xqj0aw4mxuyuaey","/speaking/2021-12-01-clifq52jm3xqj0aw4mxuyuaey",{"title":1337,"_path":1338},"2021 12 14 Clifq528940gb0bw9bok0o68k","/speaking/2021-12-14-clifq528940gb0bw9bok0o68k",{"title":1340,"_path":1341},"2022 01 27 Clifq51vy3wf30bw8qsv8nsv9","/speaking/2022-01-27-clifq51vy3wf30bw8qsv8nsv9",{"title":1343,"_path":1344},"2022 02 08 Clifq51j53wez0bw8cd1znjmi","/speaking/2022-02-08-clifq51j53wez0bw8cd1znjmi",{"title":1346,"_path":1347},"2022 02 10 Clifq515940g70bw9yu0ltedp","/speaking/2022-02-10-clifq515940g70bw9yu0ltedp",{"title":1349,"_path":1350},"2022 03 01 Clifq50sj40g30bw9rqy825mb","/speaking/2022-03-01-clifq50sj40g30bw9rqy825mb",{"title":1352,"_path":1353},"2022 03 02 Clifq50g53xfr0buv56km2voa","/speaking/2022-03-02-clifq50g53xfr0buv56km2voa",{"title":1355,"_path":1356},"2022 05 26 Clifq506e3wev0bw88q2lf63q","/speaking/2022-05-26-clifq506e3wev0bw88q2lf63q",{"title":1358,"_path":1359},"2022 06 02 Clifq4zvh40fz0bw986sdpv5u","/speaking/2022-06-02-clifq4zvh40fz0bw986sdpv5u",{"title":1361,"_path":1362},"2022 06 13 Clifq4z8o3xqf0aw49q8f55f9","/speaking/2022-06-13-clifq4z8o3xqf0aw49q8f55f9",{"title":1364,"_path":1365},"2022 06 13 Clifq4zjc40fv0bw95ufcly4y","/speaking/2022-06-13-clifq4zjc40fv0bw95ufcly4y",{"title":1367,"_path":1368},"2022 07 01 Clifq4ywg3xq60aw48tkujxyl","/speaking/2022-07-01-clifq4ywg3xq60aw48tkujxyl",{"title":1370,"_path":1371},"2022 07 27 Clifq4yep3xf20buv5vorwrl5","/speaking/2022-07-27-clifq4yep3xf20buv5vorwrl5",{"title":1373,"_path":1374},"2022 08 10 Clifq4xw640fr0bw9po5n2nug","/speaking/2022-08-10-clifq4xw640fr0bw9po5n2nug",{"title":1376,"_path":1377},"2022 08 11 Clifq4xdz3wek0bw862z7knrr","/speaking/2022-08-11-clifq4xdz3wek0bw862z7knrr",{"title":1379,"_path":1380},"2022 08 25 Clifq4x0z3xq20aw48a1n9hxy","/speaking/2022-08-25-clifq4x0z3xq20aw48a1n9hxy",{"title":1382,"_path":1383},"2022 09 14 Clifq4wqo40fh0bw9sifjtw70","/speaking/2022-09-14-clifq4wqo40fh0bw9sifjtw70",{"title":1385,"_path":1386},"2022 09 27 Clifq4wef3xpx0aw4l7ueiqwb","/speaking/2022-09-27-clifq4wef3xpx0aw4l7ueiqwb",{"title":1388,"_path":1389},"2022 10 14 Clifq4w263xet0buv0mzqzfre","/speaking/2022-10-14-clifq4w263xet0buv0mzqzfre",{"title":1391,"_path":1392},"2022 11 02 Clifq4vps3xep0buvimxfntyq","/speaking/2022-11-02-clifq4vps3xep0buvimxfntyq",{"title":1394,"_path":1395},"2022 11 08 Clifq4vdb40el0bw9il2y3pb4","/speaking/2022-11-08-clifq4vdb40el0bw9il2y3pb4",{"title":1397,"_path":1398},"2023 02 08 Clifq4uz43xpt0aw4mw4awvuj","/speaking/2023-02-08-clifq4uz43xpt0aw4mw4awvuj",{"title":1400,"_path":1401},"2023 03 29 Clifq4ul43we80bw8ihhkw7qr","/speaking/2023-03-29-clifq4ul43we80bw8ihhkw7qr",{"title":1403,"_path":1404},"2023 04 20 Clifq4u9b3xpm0aw45vj51alh","/speaking/2023-04-20-clifq4u9b3xpm0aw45vj51alh",{"title":1406,"_path":1407},"2023 05 12 Clifq4tw33we40bw8jxhaaroo","/speaking/2023-05-12-clifq4tw33we40bw8jxhaaroo",{"title":1409,"_path":1410},"2023 05 29 Clifq4thm3xel0buvdpqx8bdm","/speaking/2023-05-29-clifq4thm3xel0buvdpqx8bdm",{"title":1412,"_path":1413},"2023 06 06 Clifq4t4w40dr0bw98f7p9zrq","/speaking/2023-06-06-clifq4t4w40dr0bw98f7p9zrq",{"title":1415,"_path":1416},"2023 07 27 Clifq4sto3xph0aw4letve613","/speaking/2023-07-27-clifq4sto3xph0aw4letve613",{"title":1418,"_path":1419},"2024 02 29 Clkzot86xire30aujuy08465e","/speaking/2024-02-29-clkzot86xire30aujuy08465e",{"title":1421,"_path":1422},"2024 06 05 Clqdq6ui7ts730bvzmk1xw47t","/speaking/2024-06-05-clqdq6ui7ts730bvzmk1xw47t",{"title":1424,"_path":1425},"2024 06 26 Clxkjutfsgp2b08uncx30wni3","/speaking/2024-06-26-clxkjutfsgp2b08uncx30wni3",{"title":1427,"_path":1428},"2024 09 23 Clzln21ozhc5j07vyl823v9qt","/speaking/2024-09-23-clzln21ozhc5j07vyl823v9qt",{"title":1430,"_path":1431},"2024 10 02 Clzlmyfs3hhe607ur0myt53gv","/speaking/2024-10-02-clzlmyfs3hhe607ur0myt53gv",{"title":1433,"_path":1434},"2025 02 13 Cm0qgs8ctrqs207uk9qsijvlj","/speaking/2025-02-13-cm0qgs8ctrqs207uk9qsijvlj",{"title":1436,"_path":1437},"2025 03 13 Cm0qgtj7srztk07unk29eiehq","/speaking/2025-03-13-cm0qgtj7srztk07unk29eiehq",{"title":1439,"_path":1440},"2025 09 10 Clifq5gzg40j20bw9ne2mh9n2","/speaking/2025-09-10-clifq5gzg40j20bw9ne2mh9n2",{"title":1442,"_path":1443},"2025 09 11 Clifq5gzg40j20bw9ne2mh9n1","/speaking/2025-09-11-clifq5gzg40j20bw9ne2mh9n1",{"title":1445,"_path":1446},"2025 09 18 Clifq5gzg40j20bw9ne2mh9n3","/speaking/2025-09-18-clifq5gzg40j20bw9ne2mh9n3",{"title":1448,"_path":1449},"2025 09 19 Clifq5gzg40j20bw9n31322","/speaking/2025-09-19-clifq5gzg40j20bw9n31322",{"title":1451,"_path":1452},"2025 10 10 Clifq5gzg40j20bw9n333","/speaking/2025-10-10-clifq5gzg40j20bw9n333",{"title":1454,"_path":1455},"2025 10 24 Clifq5gzg40j20bw9n333asasdasd","/speaking/2025-10-24-clifq5gzg40j20bw9n333asasdasd",{"title":1457,"_path":1458},"2026 03 12 Clifq5gzg40j20bw9ne2mh9n87","/speaking/2026-03-12-clifq5gzg40j20bw9ne2mh9n87",{"title":1192,"_path":1193},{"title":1461,"_path":1462},"Live streams","/livestreams",{"title":1464,"_path":1465},"Press kit","/presskit",{"title":1467,"_path":1468},"Alive and kicking","/alive-and-kicking",{"title":1470,"_path":1471},"Uses","/uses",{"_path":979,"_dir":1473,"_draft":1474,"_partial":1474,"_locale":1475,"title":978,"description":1476,"slug":1477,"date":1478,"canonical_url":1479,"reading_time":1480,"image":1481,"tags":1482,"faqs":1490,"draft":1474,"head":1500,"body":1511,"_type":1908,"_id":1909,"_source":1910,"_file":1911,"_stem":1912,"_extension":1913},"writing",false,"","Claude Desktop currently launches duplicate local MCP stdio servers for a single configuration, causing two independent OAuth flows, extra browser tabs, and unnecessary resource usage. The bug is masked once credentials are cached, so it silently persists in production while still spawning two processes every time. This is not an mcp-remote or external service issue but a host-level lifecycle problem, likely caused by overlapping legacy and new MCP managers and poor observability for one of the processes. Workarounds like pre-authenticating with mcp-remote mitigate UX pain but do not fix the duplication. The article argues that open-source tools should not shoulder complex coordination logic just to survive a major desktop app’s sloppy process management.","claude-desktop-mcp-lifecycle-is-broken","2026-08-24T10:00:00Z","https://timbenniks.dev/writing/claude-desktop-mcp-lifecycle-is-broken","7 min read","https://res.cloudinary.com/dwfcofnrd/image/upload/f_auto,q_auto/v1787604216/website/vibes.png",[1483,1484,1485,1486,1487,1488,1489],"ai","webdev","architecture","devops","performance","dxp","process",[1491,1494,1497],{"question":1492,"answer":1493},"What is the core bug described with Claude Desktop and MCP servers?","Claude Desktop starts two independent instances of the same local stdio MCP server for a single configuration. Each instance runs in its own process tree with its own wrapper and Node process, which leads to duplicate OAuth flows and wasted resources. The issue is not with mcp-remote or the external OAuth provider, but with Claude Desktop’s internal lifecycle logic, where two separate subsystems both attempt to own and launch the same local MCP configuration.",{"question":1495,"answer":1496},"How can users work around the duplicate OAuth tab problem in Claude Desktop?","Users have two practical workarounds. First, if Claude opens two browser tabs, they can simply complete the OAuth flow in the first tab and close or ignore the second, since one authorization is sufficient. Second, they can pre-authenticate from the terminal by running the exact `npx -y mcp-remote \u003CREMOTE_MCP_URL>` command used in their Claude configuration. After completing the OAuth flow and stopping the terminal process, both Claude-launched instances will reuse the cached credentials and avoid opening extra tabs.",{"question":1498,"answer":1499},"Why does the author argue this bug is unfair to open-source maintainers?","The author points to an open pull request in the mcp-remote project that implements complex defensive logic solely to survive Claude Desktop’s broken lifecycle. This includes lock coordination, avoiding race conditions between sibling processes, careful PKCE handling, and token sharing, all backed by multiple new tests. The author argues that an open-source adapter should not need distributed-systems-style coordination just because a proprietary desktop host cannot manage child processes correctly. This shifts responsibility and engineering burden from the desktop vendor onto community maintainers.",{"meta":1501},[1502,1504,1506,1508],{"property":1503,"content":1481},"twitter:image",{"property":1505,"content":978},"twitter:title",{"property":1507,"content":1476},"twitter:description",{"property":1509,"content":1510},"keywords","ai, webdev, architecture, devops, performance, dxp, process",{"type":1512,"children":1513,"toc":1899},"root",[1514,1522,1527,1541,1546,1553,1558,1567,1572,1580,1585,1593,1605,1618,1624,1629,1655,1667,1675,1680,1686,1698,1703,1724,1736,1742,1747,1752,1757,1765,1777,1782,1788,1793,1825,1830,1858,1863,1868,1874,1879,1884,1889,1894],{"type":1515,"tag":1516,"props":1517,"children":1518},"element","p",{},[1519],{"type":1520,"value":1521},"text","Or the real title: Claude Desktop is sloppy vibe trash... ok, back to nice writing now.",{"type":1515,"tag":1516,"props":1523,"children":1524},{},[1525],{"type":1520,"value":1526},"I spent half of today debugging what looked like a routine OAuth bug. I configured a single local stdio MCP server in Claude Desktop. When I launched the app, it immediately opened two authentication tabs for the exact same service at the exact same time.",{"type":1515,"tag":1516,"props":1528,"children":1529},{},[1530,1532,1539],{"type":1520,"value":1531},"OAuth is finicky enough that two tabs doesn't immediately yell \"desktop lifecycle bug.\" I started where any developer would: checking the external service, the callback URL, the local token cache, and ",{"type":1515,"tag":1533,"props":1534,"children":1536},"code",{"className":1535},[],[1537],{"type":1520,"value":1538},"mcp-remote",{"type":1520,"value":1540},".",{"type":1515,"tag":1516,"props":1542,"children":1543},{},[1544],{"type":1520,"value":1545},"Every single one of those components was doing what it was asked to do. The problem was simple: Claude Desktop asked them to do it twice.",{"type":1515,"tag":1547,"props":1548,"children":1550},"h2",{"id":1549},"finding-the-duplicate-process-tree",[1551],{"type":1520,"value":1552},"Finding the duplicate process tree",{"type":1515,"tag":1516,"props":1554,"children":1555},{},[1556],{"type":1520,"value":1557},"The first clue appeared in Claude’s internal logs. Right at startup, the standard MCP lifecycle reported this:",{"type":1515,"tag":1559,"props":1560,"children":1562},"pre",{"code":1561},"MCP Server connection requested for: my-mcp-server\nLaunching MCP Server: my-mcp-server\n",[1563],{"type":1515,"tag":1533,"props":1564,"children":1565},{"__ignoreMap":1475},[1566],{"type":1520,"value":1561},{"type":1515,"tag":1516,"props":1568,"children":1569},{},[1570],{"type":1520,"value":1571},"In the exact same second, another subsystem logged this:",{"type":1515,"tag":1559,"props":1573,"children":1575},{"code":1574},"[LocalMcpServerManager] Connecting to my-mcp-server\n",[1576],{"type":1515,"tag":1533,"props":1577,"children":1578},{"__ignoreMap":1475},[1579],{"type":1520,"value":1574},{"type":1515,"tag":1516,"props":1581,"children":1582},{},[1583],{"type":1520,"value":1584},"That could have been duplicate logging from two internal modules. Annoying, but harmless. But when I checked the macOS process tree, I found two completely separate parent-child branches running under Claude:",{"type":1515,"tag":1559,"props":1586,"children":1588},{"code":1587},"Claude\n├── wrapper -> npm -> mcp-remote\n└── wrapper -> npm -> mcp-remote\n",[1589],{"type":1515,"tag":1533,"props":1590,"children":1591},{"__ignoreMap":1475},[1592],{"type":1520,"value":1587},{"type":1515,"tag":1516,"props":1594,"children":1595},{},[1596,1598,1603],{"type":1520,"value":1597},"Each branch had its own PID, its own wrapper, and its own Node process running ",{"type":1515,"tag":1533,"props":1599,"children":1601},{"className":1600},[],[1602],{"type":1520,"value":1538},{"type":1520,"value":1604},". This wasn't a logging artifact. Claude was spinning up two independent instances of the same configured server.",{"type":1515,"tag":1516,"props":1606,"children":1607},{},[1608,1610,1616],{"type":1520,"value":1609},"From their own perspective, both instances behaved correctly. Both started up, checked ",{"type":1515,"tag":1533,"props":1611,"children":1613},{"className":1612},[],[1614],{"type":1520,"value":1615},"~/.mcp-auth",{"type":1520,"value":1617},", found no cached token, and initiated an OAuth flow. The external service saw two distinct clients asking for authorization, so it opened two tabs. The browser tabs were just the symptom. The real bug was Claude Desktop launching the same server twice.",{"type":1515,"tag":1547,"props":1619,"children":1621},{"id":1620},"the-authentication-mask",[1622],{"type":1520,"value":1623},"The authentication mask",{"type":1515,"tag":1516,"props":1625,"children":1626},{},[1627],{"type":1520,"value":1628},"The authentication flow made the sequence easy to prove:",{"type":1515,"tag":1630,"props":1631,"children":1632},"ul",{},[1633,1645],{"type":1515,"tag":1634,"props":1635,"children":1636},"li",{},[1637,1643],{"type":1515,"tag":1638,"props":1639,"children":1640},"strong",{},[1641],{"type":1520,"value":1642},"Fresh credentials:",{"type":1520,"value":1644}," 2 processes, 2 OAuth flows, 2 tabs.",{"type":1515,"tag":1634,"props":1646,"children":1647},{},[1648,1653],{"type":1515,"tag":1638,"props":1649,"children":1650},{},[1651],{"type":1520,"value":1652},"Cached credentials:",{"type":1520,"value":1654}," 2 processes, 0 tabs.",{"type":1515,"tag":1516,"props":1656,"children":1657},{},[1658,1660,1665],{"type":1520,"value":1659},"Once you authenticate in the first tab and save the credentials, restarting Claude still launches two ",{"type":1515,"tag":1533,"props":1661,"children":1663},{"className":1662},[],[1664],{"type":1520,"value":1538},{"type":1520,"value":1666}," processes. They simply grab the cached token without opening a browser tab.",{"type":1515,"tag":1559,"props":1668,"children":1670},{"code":1669},"Fresh credentials: 2 processes, 2 OAuth flows, 2 tabs\nCached credentials: 2 processes, 0 tabs\n",[1671],{"type":1515,"tag":1533,"props":1672,"children":1673},{"__ignoreMap":1475},[1674],{"type":1520,"value":1669},{"type":1515,"tag":1516,"props":1676,"children":1677},{},[1678],{"type":1520,"value":1679},"This is why bugs like this survive in production. Once a developer authenticates during testing, the annoying UI symptom disappears. Under the hood, the application is still wasting resources and running duplicate client processes for a single configuration.",{"type":1515,"tag":1547,"props":1681,"children":1683},{"id":1682},"isolating-the-host",[1684],{"type":1520,"value":1685},"Isolating the host",{"type":1515,"tag":1516,"props":1687,"children":1688},{},[1689,1691,1696],{"type":1520,"value":1690},"To verify that ",{"type":1515,"tag":1533,"props":1692,"children":1694},{"className":1693},[],[1695],{"type":1520,"value":1538},{"type":1520,"value":1697}," or the external service wasn't at fault, I tested other local MCP servers: Turbo Relay and Open Loops. Both of them launched twice.",{"type":1515,"tag":1516,"props":1699,"children":1700},{},[1701],{"type":1520,"value":1702},"That ruled out the proxy and confirmed the host bug. A package cannot magically fork its own parent chain beneath Claude with different wrapper PIDs. Claude Desktop itself is triggering both launch paths.",{"type":1515,"tag":1516,"props":1704,"children":1705},{},[1706,1708,1714,1716,1722],{"type":1520,"value":1707},"The architecture split in the logs makes this even clearer. Claude Desktop appears to run a legacy MCP server lifecycle alongside a newer ",{"type":1515,"tag":1533,"props":1709,"children":1711},{"className":1710},[],[1712],{"type":1520,"value":1713},"LocalMcpServerManager",{"type":1520,"value":1715},", with tools later announced through a ",{"type":1515,"tag":1533,"props":1717,"children":1719},{"className":1718},[],[1720],{"type":1520,"value":1721},"localMcpBridge",{"type":1520,"value":1723},". Two internal managers both think they own the same local stdio configuration.",{"type":1515,"tag":1516,"props":1725,"children":1726},{},[1727,1729,1734],{"type":1520,"value":1728},"To make matters worse, there is a clear observability gap. The dedicated per-server log only accounts for ",{"type":1515,"tag":1638,"props":1730,"children":1731},{},[1732],{"type":1520,"value":1733},"one",{"type":1520,"value":1735}," of the two process IDs. The second process runs completely in the dark, invisible to the server-specific log, while remaining fully alive in the operating system.",{"type":1515,"tag":1547,"props":1737,"children":1739},{"id":1738},"the-workarounds",[1740],{"type":1520,"value":1741},"The workarounds",{"type":1515,"tag":1516,"props":1743,"children":1744},{},[1745],{"type":1520,"value":1746},"If you hit this issue, you have two options.",{"type":1515,"tag":1516,"props":1748,"children":1749},{},[1750],{"type":1520,"value":1751},"If Claude has already opened two tabs, complete the flow in the first tab and close or ignore the second. One authorization is enough.",{"type":1515,"tag":1516,"props":1753,"children":1754},{},[1755],{"type":1520,"value":1756},"Alternatively, you can pre-authenticate from your terminal before opening Claude Desktop:",{"type":1515,"tag":1559,"props":1758,"children":1760},{"code":1759},"npx -y mcp-remote \u003CREMOTE_MCP_URL>\n",[1761],{"type":1515,"tag":1533,"props":1762,"children":1763},{"__ignoreMap":1475},[1764],{"type":1520,"value":1759},{"type":1515,"tag":1516,"props":1766,"children":1767},{},[1768,1770,1775],{"type":1520,"value":1769},"Run the exact command and arguments from your Claude configuration, complete the OAuth flow in your browser, and stop the terminal process. When Claude Desktop starts, both duplicate processes will read the cached credentials from ",{"type":1515,"tag":1533,"props":1771,"children":1773},{"className":1772},[],[1774],{"type":1520,"value":1615},{"type":1520,"value":1776},", preventing the extra browser tabs.",{"type":1515,"tag":1516,"props":1778,"children":1779},{},[1780],{"type":1520,"value":1781},"This workaround fixes the user experience, but it doesn't fix the underlying bug. Claude is still running two server instances. If your local MCP server does heavy startup work, expects to be a singleton, or triggers side effects on connection, this stops being a minor UI glitch.",{"type":1515,"tag":1547,"props":1783,"children":1785},{"id":1784},"the-open-source-tax",[1786],{"type":1520,"value":1787},"The open-source tax",{"type":1515,"tag":1516,"props":1789,"children":1790},{},[1791],{"type":1520,"value":1792},"The most frustrating part of this investigation was looking at how the open-source ecosystem is forced to compensate for host bugs.",{"type":1515,"tag":1516,"props":1794,"children":1795},{},[1796,1798,1804,1806,1815,1817,1823],{"type":1520,"value":1797},"There is an open pull request on ",{"type":1515,"tag":1533,"props":1799,"children":1801},{"className":1800},[],[1802],{"type":1520,"value":1803},"geelen/mcp-remote",{"type":1520,"value":1805}," (",{"type":1515,"tag":1807,"props":1808,"children":1812},"a",{"href":1809,"rel":1810},"https://github.com/geelen/mcp-remote/pull/320",[1811],"nofollow",[1813],{"type":1520,"value":1814},"PR #320",{"type":1520,"value":1816},") titled ",{"type":1515,"tag":1818,"props":1819,"children":1820},"em",{},[1821],{"type":1520,"value":1822},"\"Survive hosts that start and stop instances during the OAuth flow.\"",{"type":1520,"value":1824}," The description explicitly names Claude Desktop and reports this exact duplicate process behavior.",{"type":1515,"tag":1516,"props":1826,"children":1827},{},[1828],{"type":1520,"value":1829},"The PR contains extensive defensive engineering. The author added logic to:",{"type":1515,"tag":1630,"props":1831,"children":1832},{},[1833,1838,1843,1848,1853],{"type":1515,"tag":1634,"props":1834,"children":1835},{},[1836],{"type":1520,"value":1837},"Detect when the process owning the auth lock dies.",{"type":1515,"tag":1634,"props":1839,"children":1840},{},[1841],{"type":1520,"value":1842},"Prevent one instance from deleting another instance's lock file.",{"type":1515,"tag":1634,"props":1844,"children":1845},{},[1846],{"type":1520,"value":1847},"Wait for instance coordination before opening a browser tab.",{"type":1515,"tag":1634,"props":1849,"children":1850},{},[1851],{"type":1520,"value":1852},"Bind PKCE verifiers to the OAuth state instead of the process PID.",{"type":1515,"tag":1634,"props":1854,"children":1855},{},[1856],{"type":1520,"value":1857},"Share tokens between surviving sibling processes.",{"type":1515,"tag":1516,"props":1859,"children":1860},{},[1861],{"type":1520,"value":1862},"It includes nine new unit tests just to survive Claude Desktop's broken lifecycle.",{"type":1515,"tag":1516,"props":1864,"children":1865},{},[1866],{"type":1520,"value":1867},"While this is impressive open-source engineering, the responsibility is completely upside down. An open-source adapter package shouldn't have to build distributed systems coordination logic just to survive a desktop app that cannot manage child processes cleanly. We are taxing open-source maintainers because a major desktop product fails to enforce basic lifecycle rules.",{"type":1515,"tag":1547,"props":1869,"children":1871},{"id":1870},"pure-vibes",[1872],{"type":1520,"value":1873},"Pure vibes...",{"type":1515,"tag":1516,"props":1875,"children":1876},{},[1877],{"type":1520,"value":1878},"This is where the term \"vibe-coded\" starts to fit. Features accumulated faster than core architecture can handle.",{"type":1515,"tag":1516,"props":1880,"children":1881},{},[1882],{"type":1520,"value":1883},"A basic regression test could spin up Claude Desktop, count the process launches for a single server configuration, and fail if the answer is anything other than one. It wouldn't look flashy in a product demo, but it protects the stability of the entire integration layer.",{"type":1515,"tag":1516,"props":1885,"children":1886},{},[1887],{"type":1520,"value":1888},"Claude Desktop is the primary entry point for a serious AI product, and MCP is a serious integration standard. Once a desktop application starts executing local binaries, managing OAuth credentials, and bridging tools, process lifecycle management is no longer an obscure detail. It is a core requirement.",{"type":1515,"tag":1516,"props":1890,"children":1891},{},[1892],{"type":1520,"value":1893},"I use Claude every day and love the models, but great AI models cannot excuse fragile desktop engineering. Brilliant AI features still depend on the unglamorous fundamentals of software engineering: clean process ownership, a single source of truth, proper logging, and tests that can count to one.",{"type":1515,"tag":1516,"props":1895,"children":1896},{},[1897],{"type":1520,"value":1898},"I filed the bug report. I don't think I'll hear back... let's see.",{"title":1475,"searchDepth":1900,"depth":1900,"links":1901},2,[1902,1903,1904,1905,1906,1907],{"id":1549,"depth":1900,"text":1552},{"id":1620,"depth":1900,"text":1623},{"id":1682,"depth":1900,"text":1685},{"id":1738,"depth":1900,"text":1741},{"id":1784,"depth":1900,"text":1787},{"id":1870,"depth":1900,"text":1873},"markdown","content:4.writing:claude-desktop-mcp-lifecycle-is-broken.md","content","4.writing/claude-desktop-mcp-lifecycle-is-broken.md","4.writing/claude-desktop-mcp-lifecycle-is-broken","md",[1915,1938,1956],{"_path":17,"_dir":1916,"_draft":1474,"_partial":1474,"_locale":1475,"title":16,"description":1917,"date":1918,"position":1919,"image":1920,"videoId":1921,"transcript":1922,"tags":1923,"playlist":1916,"body":1931,"_type":1908,"_id":1935,"_source":1910,"_file":1936,"_stem":1937,"_extension":1913},"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]",[1924,1925,1926,1927,1928,1487,1929,1930],"web development","frontend-development","Cloud","Database","deployment","frameworks","Media",{"type":1512,"children":1932,"toc":1933},[],{"title":1475,"searchDepth":1900,"depth":1900,"links":1934},[],"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":26,"_dir":1916,"_draft":1474,"_partial":1474,"_locale":1475,"title":25,"description":1475,"date":1939,"position":1940,"image":1941,"videoId":1942,"transcript":1943,"tags":1944,"playlist":1916,"body":1949,"_type":1908,"_id":1953,"_source":1910,"_file":1954,"_stem":1955,"_extension":1913},"2024-06-15T14:39:08Z","003","https://i.ytimg.com/vi/p3pm_0p8lZ4/maxresdefault.jpg","p3pm_0p8lZ4","so this talk is going to be a little different and I love that jillson was asking how many people are new here and a lot of people raised their hands so you haven't probably seen what I'm about to do because you don't see that very often at a stage for a conference about Tech stuff right so my talk is really about not how you implement the tech or how you do it but I've actually done it for you and we're going to have an experience with guitars and you guys get to do a bunch of stuff with the talk so it's hopefully it's a bit more about the inspiration of what fuds can do right so before we get started um I work at HRA and I'm doing developer relations and we love AI nowadays because that's actually my face on this F this dude and so hgraph is a hatless CMS um that is graphql native and so I won't go too deep into it but all the content that you see in this talk actually comes out of hgraph all right so I'm an ambassador for a bunch of cool stuff um of course n we have algolia we have super base we have cloudinary and all that stuff is actually in the talk and I couldn't really find any images of me um with the you know the swag on so I just literally took anything I had anyways um you might think that my accent is a little strange because I was actually born here I think that side across the water um so I'm from Amsterdam but I live in France and I work with Americans so this is how I sound when you do that and I've checked with my colleagues they use that cheese like for real that's the thing so let's talk about this talk and so I have a few images here of when I was young and skinny but why not that's when I was a proper musician and so this talk is called Alive and Kicking and so the idea is that I created a guitar karaoke application because if you play guitar you want to do that as as many places as you can right and why not at work well that's what we're doing here and so essentially we use the guitar in the browser so the browser controls the whole karaoke application and of course we're using fuggs and so the thing is that you get to vote which songs I play and so what I've come up with is you can be kind of like a DJ because the idea is that I made something called like a mashup like a DJ could do a 20 minute set and it'll have five songs that kind of flow well together we're going to do that today but you're going to be fting which song comes when and I kind of have to figure out what that song is by just looking at my screen and then playing it instantly and it just it will Loop so if I don't look it's a problem right so you vote for your favorite mashup of the eight songs that I'll you know you'll get on your phone in a second so you'll get something like this and you I try to have songs that are a little bit rock and roll focused but hopefully for everyone right so we have bon Joi with its Mickey Mouse rock and then we have Iron Maiden with the proper metal like I have hopefully something for everyone and so I've buil it with all the tools that you've probably seen um today I won't go too deep into the tech right now I think it's time to just get you awake and play a little bit and then we talk about it more right and so like I said fugs controls the whole thing and I I'll we'll go over what this box is what the guitar does all that in a sec all right are you ready to rock yes let's go but one thing first um the conference here is helping me a ton with this right because you see I have the whole screen there's a whole bunch of extra things happening and so what I would love to do is um when you vote for your mashup you can actually share that and then once you share it you see there's like the the hashtag of fugs Amsterdam and so what I would love to see is like all of Twitter full of fugs Amsterdam stuff so these guys get like some organic growth from you and of course it's fun that my stuff is shared so let's let's be honest about that um so take out your phones and scan this thing or if you're on your laptop or tablet or whatever go to Alive and Kicking dodev so while you do that I'll just grab my guitar and get ready is it working it better work it's going to be a rough day I'll leave this on for just a sec so you guys have a chance to get there okay well that's working are we good to be honest once I start on that screen there you'll have the QR code as well and so just for you to remember it's called Alive and Kicking dodev guys can you turn off these lights a little better oh you cannot scan oh the new iPhones and their F their focus problems that's problematic I did not consider that okay so go to alive and kicking. Dev instead all right so I'll give you a quick note on what's Happening Here while you figure it out so have you guys been able to log in because then you can start voting on the songs like you have four spots right now we have zero votes and so these are just the first four songs that we have on so feel free to start voting for your favorite songs which spot is which that would be one 2 3 four ah and the screens are starting to work we're seeing some photes I think I have to do a refresh of my browser there we go so what you see here is when you vote you see your little icon bounce around so keep voting as much as you can and you'll see yourself be part of this and all of you are here and it keeps updating every 10 seconds and so this is using super base real time so all of this is basically a websocket so what whatever you see is live so this is starting to go so while this is going let me show you quickly what I'm dealing with here so this little red box has an input from the guitar it makes it digital and so this is an is an is an amplifier application and so we don't need amps we don't need anything we just plug in and go so um what I asked last year is try to hack it please I want as many photes as possible so if you can hack it it feel free I think it's a little safer now I did a lot of you know security stuff this time but here we go so it seems like Michael Jackson is the first vote so what I'll do now I'll make this go and then you can no longer vote for the first one but you can actually change the second third and fourth here we go e e [Music] it oh [Music] be [Music] go thank [Applause] [Music] you to listen to me why about nothing and everything all once I am one of those melodramatic fools neurotic to the bat no doubt about it sometimes I give my myself the creeps sometimes my mind plays tricks on me I'll keep set it up I think it [Music] just I shrink I like my dreams she says it's like the step that's bringing me down and I went to he said my [Applause] qu sometimes I give [Music] myselfs sometimes My Mind Tricks on Me it all keeps heading up I think I'm get [Music] [Music] just to control so I better hold [Music] sometimes I myself theep my Minds on me it all keeps up it my know I Just sh [Music] what's next thank you oh yes [Music] [Music] it by [Music] day very you can [Music] to the work here every day learn to live like a see [Music] w [Music] [Applause] [Music] [Applause] [Music] [Music] [Music] [Applause] I [Music] [Applause] [Music] oh [Music] [Music] [Music] he [Applause] [Music] [Applause] [Music] [Applause] [Music] y thank you very much all right I think it almost worked Nikki do you mind refreshing that browser we tried a crap okay I told you to use Chrome didn't I all right all right all right so let's chat a little bit about what happened all up there let's turn that volume off um and the lovely thing is I still have 22 minutes so what I can do is actually change it up in a sec to its normal mode so you can just F and we can actually play all the songs there's more than enough time which is awesome uh let's see what are we dealing with here so let's talk about some fancy term that we call the signal chain and so the signal goes from the guitar which is this bad boy here and the strings vibrate to these we call them pickups and this is analog signal that goes out here and that analog signal somehow needs to come into the computer and we do that by this lovely Focus ride box and everybody uses these there amazing and quite cheap and so they go into the box I'm saying it's cheap because it's very important because now everybody can do this anyways you go into the browser or into the computer and then the computer actually goes to the speakers here right so that's the guitar to the speakers but then inside the computer we have this little application that I just showed you that made my guitar sound the way it sounds it's like a virtualized amplifier normally it would be a big speaker here with a bunch of knobs and pedals on the floor and musician always love this stuff because it's extra gear you can deal with it but the whole point was I want to just put my laptop down to a conference talk so I did a virtualized one and then also we have the browser so the browser is playing this backing track and that also goes to the front of house here in all the sound so basically those two things are mixed and it's lovely for me because I can control it our lovely sound people just get whatever they get from me so there's not much mixing involved but I'm sure lots of fixes were done on the fly so thanks for that Andrew and so then the browser talks again to this amplifier because of course the intro versus the first versus the solo have different sounds sometimes there's more Echo sometimes there's a different equalizer so I need to make sure that I don't have to step on any boxes for the sound to change I don't want to think in this setting right so let's talk about the browser for a sec so you can see of course here on the left top that's where you see what song is playing all the photes all the things and then it will automatically actually go to the next one and so I've had to hack that one because if I want to play the next one and I needed to refresh the browser I going to do a click with JavaScript because it needs a user interaction to do autoplay for for the song so there's there's lots of like little tweaks in there that I had to do and so then you see The Equalizer right and so this actually responds to my guitar so this is a live Channel with an audio like there's there's this web audio API and so it can analyze and that's what this is and it's just a canfest that just goes 100% And it's it's kind of true to whatever the sound that comes in and then we have the audio player that has these chapters the thing I just talked about right and so each chapter would then actually say well for this part of the song go to that preset and so all this information the presets the chapters the images they all come from high graph which is the CMS I work for right and so of course you can put this stuff in adjacent file or in any other CMS but I work there you see there's the hat so there it is and so um it's actually pretty cool that you can do so many different things with hatless stch like all of this happens in the cloud right and um this is not an application per se it just talks to things on the side and figures things out together and then it's all in the client all the fting you saw it's all in the client right and then of course that little up up the iron sound goes to the amplifier gives the sound and we play and so on your phone when you're fting something it goes to super base so super bases has this there's a bunch of stuff like you're logged in with superbase also and they have a post exess database so every phote you do is your user ID with the phote of the song like the ID and then which spot and there is a um well when the moment that happens you see like right now the screenshot has a zero but it of course scks up when you put a phote and then you see all the balls bouncing around and that is something super cool with super base and N where you could literally say I have a real-time channel that listens to a change in the database so for now I just said update or insert and based on that it says hey there's a change and then I use the the use async data composable in N to just refresh the call and query the last thing and so if that happens a thousand times it does a thousand new queries for the last row that was just inserted and it is good enough for now because sometimes you might get five votes at the same time but I didn't put any database locks because who cares it's a conference talk and you know what it held up pretty well you guys were fting your butts off and it had 60 frames per second the life thing was happening and had like the technology today is is insane that it works that well and so this is the stress test I was doing on my local host and so this is literally just everything you see is a new query and the lovely thing I've noticed with super base especially when you do a query just one it's like 100 milliseconds but when you do it like this they become like four milliseconds like it scales up like crazy and so one last thing that I didn't talk about at all these songs were short right they were like two-ish minutes and I wanted to do that because otherwise I'd be be an hour here and it's these songs are repetitive because awesome focals and things but I'm just playing guitar so what I've done also for copyright issues I have basically taken these songs and cut them up and I used AI to isolate the instruments and it works most of the time and so what I've done is like taken the drums taken the bass taken the focals make it shorter put it in remix it with the help of lovely Nikki who sits behind there doing the production awesome Nikki and basically she helped me to mix and I played my own guitars and so what this means youve see so there's eight songs here so I basically recorded an EP for this but then with famous songs like I've been just playing myself because all these songs they have all these fancy bells and whistles that make no sense for me to play guitar over so I just kind of stripped them made them easy to listen to well my guitar is over it and that's what you heard today and so there's a few months of work there and so this is the first thank you here um doesn't mean it's the end because I have 15 minutes so lucky me right I expected 30 so that would be on the dot so what we're going to do is there's a different mode in my app where I just right now it's mashup mode but let's just put it on on the normal mode so you guys can vote on the songs that you hadn't seen yet so it says extra secret confict but you guys cannot go here I promise it won't work I promise try but maybe not I don't know I don't know okay I'm just going to reset everything now so photes are gone active songs are gone all the things are gone and we're setting it to normal mode you saw that IM immediately change that's the live super base thing I changed the database row it listened it quered again something else are you looking at my page are you I did not show you this seriously it's connected to my ID okay anyways so please don't go to that page because that not fun anymore so refresh your browsers and you'll see a different way of voting now you just have eight songs and I would suggest you vote on the songs that we didn't play yet and in that order we finish the rest in the last 15 minutes you see how performant this is it's all in the client so we we don't need that much there's no SSR here anywhere I know we talk about that a lot but if you can do it like this why not browsers are fast F okay so while this is going on I need to tune because I felt my guitar go out of tuning the hotlights while I was playing oh boy oh boy so if is there a buck in my application or are you guys faulting like crazy I don't see any double faces not really wow or maybe some or who hacked it raise your hand who hacked it the people who really hack it will come to me after and show me I hope right it looks like it's going to be Iron Maiden so what will holy moly can hardly see my interface so what we'll do is we'll just play the songs I didn't play yet in the order of your votes and while I play you can continue voting so let's start with Iron Maiden and then it's going to be Bon Joi then it's going to be Aerosmith and then I just can't read okay we'll see at that point here we go are you ready for some like old school rock this is like I never play this stuff right so this was like practice to the max this song Here We Go [Music] [Music] [Applause] [Music] you take my life but I'll take yours too you fireing musk but I'll run you through so when you're waiting for the next attack you better stand there's no turning back so few charge begins on this battlefield no one wins feel the just down [Music] [Music] [Music] oh [Music] [Music] no yo if I just keep smiling you don't hear the mistakes that's what happened there I hope I didn't show it too much all right who's next well Metallica we did right oh we did not what that's awesome let's go Metallica that's fun you guys are rockers is this an alarm I have to worry about okay we're good [Music] he he [Music] [Music] T the W the drag and the that with [Music] your my hand never [Music] w [Music] [Applause] s minutes let's do this okay we're good e e e e [Applause] I think there's one left are you ready for some 80s yes this is going to be full force Mickey Mouse rock for you and you know what I might say that but this is so fun to play this is like pure party here we go through the too late love bad [Music] name Angel Smile what you say you promised me heaven and put me through hell Jesus love got to hold on me pass of prison you can't break free oh you're not God W there's nowhere to run no one can save me the damage is done shout out High and love to you love I play play all game you love you love [Music] [Applause] through the heart [Music] andame that's it thank you thank you so much for entertaining me in my guitar Endeavors here um I want to thank you and I don't have my phone on me but I'm hoping Twitter is full of your shares because that would be super fun and you can follow me on YouTube or on Twitter and if you feel like I can just give you one CTA check out hgraph because I'm doing a guitar talk I'm not talking about my job at all but feel free to have um you know it's like a free account and it's a super cool CMS so that's it for me thank you so much and have a lovely conference cheers",[1483,1945,1946,1924,1947,1926,1930,1948],"headless-cms","cms","api","Content",{"type":1512,"children":1950,"toc":1951},[],{"title":1475,"searchDepth":1900,"depth":1900,"links":1952},[],"content:3.videos:alive-and-kicking:003-p3pm_0p8lZ4.md","3.videos/alive-and-kicking/003-p3pm_0p8lZ4.md","3.videos/alive-and-kicking/003-p3pm_0p8lZ4",{"_path":36,"_dir":1957,"_draft":1474,"_partial":1474,"_locale":1475,"title":35,"description":1958,"date":1959,"position":1919,"image":1960,"videoId":1961,"transcript":1962,"tags":1963,"playlist":1957,"duration":1965,"body":1966,"_type":1908,"_id":1970,"_source":1910,"_file":1971,"_stem":1972,"_extension":1913},"contentstack","Tim Benniks, Developer Experience Lead, walks through a Kickstart Nuxt SSR front-end implementation.\n\nVisit our docs for an in-depth write up: https://www.contentstack.com/docs/developers/kickstarts/nuxt\n\nJoin our community: https://community.contentstack.com","2025-10-03T13:10:37Z","https://img.youtube.com/vi/uvqDbCXLIpM/hqdefault.jpg","uvqDbCXLIpM","In this video, I'll walk you through the SSR version of our Nux 4 Kickstart. A clean, barebones starter that connects to Content Stack with just the essentials while still giving you everything you need to build real projects. A Kickstart comes ready with live preview and visual builder, so you can edit content right on the page and instantly see the results. It supports images, rich text, and modular blocks. Every feature is linked to deeper documentation, academy courses, and our developer community if you want to explore more advanced topics. The project is built with Nux 4, and we have created a simple content stack plug-in for the setup. In the plug-in, we first grab all the settings passed into the Nux public config so we can set up the stack SDK connection. After that, when preview is enabled and we are in client site mode, we initialize live preview. So changes made in the CMS show up on your site in real time. Note that SSR is set to true. So the A-Frame reloads every time the content is updated. Finally, we provide the SDK instances so we can use them throughout the project. Fetching content is handled by a composible called use get page. It queries content stack for a given URL and returns the right page entry. Note that if SR is set to true, it passes query string params to the iframe which this code gives to the stack instance. This way the stack knows to query the preview endpoint. A small utility then adds editable tags to the returned HTML. So when you click a title or an image, the system knows exactly which field in content stack to edit. On the front end, we simply query the data while the use get page composable deals with the live preview setup and the query string parameters. The HTML is styled with Tailwind CSS chosen for its popularity and flexibility. All of the key functions creating the stack, getting the page, and initializing live preview are fully annotated in the code so you can dive in and understand every step. That's the entire setup. a modern Nux 4 project that stays minimal while still giving you a complete editable site from day one. Clone it, start building your own features, and check out our documentation or join our developer community if you'd like to go deeper. Happy coding, and I see you on Discord.",[1924,1946,1947,1485,1964,1929,1948],"Development","2:35",{"type":1512,"children":1967,"toc":1968},[],{"title":1475,"searchDepth":1900,"depth":1900,"links":1969},[],"content:3.videos:contentstack:000-uvqDbCXLIpM.md","3.videos/contentstack/000-uvqDbCXLIpM.md","3.videos/contentstack/000-uvqDbCXLIpM",{"_path":979,"_dir":1473,"_draft":1474,"_partial":1474,"_locale":1475,"title":978,"description":1476,"slug":1477,"date":1478,"canonical_url":1479,"reading_time":1480,"image":1481,"tags":1974,"faqs":1975,"draft":1474,"head":1979,"body":1985,"_type":1908,"_id":1909,"_source":1910,"_file":1911,"_stem":1912,"_extension":1913},[1483,1484,1485,1486,1487,1488,1489],[1976,1977,1978],{"question":1492,"answer":1493},{"question":1495,"answer":1496},{"question":1498,"answer":1499},{"meta":1980},[1981,1982,1983,1984],{"property":1503,"content":1481},{"property":1505,"content":978},{"property":1507,"content":1476},{"property":1509,"content":1510},{"type":1512,"children":1986,"toc":2282},[1987,1991,1995,2005,2009,2013,2017,2024,2028,2035,2039,2046,2056,2066,2070,2074,2093,2103,2110,2114,2118,2128,2132,2148,2157,2161,2165,2169,2173,2180,2190,2194,2198,2202,2223,2227,2250,2254,2258,2262,2266,2270,2274,2278],{"type":1515,"tag":1516,"props":1988,"children":1989},{},[1990],{"type":1520,"value":1521},{"type":1515,"tag":1516,"props":1992,"children":1993},{},[1994],{"type":1520,"value":1526},{"type":1515,"tag":1516,"props":1996,"children":1997},{},[1998,1999,2004],{"type":1520,"value":1531},{"type":1515,"tag":1533,"props":2000,"children":2002},{"className":2001},[],[2003],{"type":1520,"value":1538},{"type":1520,"value":1540},{"type":1515,"tag":1516,"props":2006,"children":2007},{},[2008],{"type":1520,"value":1545},{"type":1515,"tag":1547,"props":2010,"children":2011},{"id":1549},[2012],{"type":1520,"value":1552},{"type":1515,"tag":1516,"props":2014,"children":2015},{},[2016],{"type":1520,"value":1557},{"type":1515,"tag":1559,"props":2018,"children":2019},{"code":1561},[2020],{"type":1515,"tag":1533,"props":2021,"children":2022},{"__ignoreMap":1475},[2023],{"type":1520,"value":1561},{"type":1515,"tag":1516,"props":2025,"children":2026},{},[2027],{"type":1520,"value":1571},{"type":1515,"tag":1559,"props":2029,"children":2030},{"code":1574},[2031],{"type":1515,"tag":1533,"props":2032,"children":2033},{"__ignoreMap":1475},[2034],{"type":1520,"value":1574},{"type":1515,"tag":1516,"props":2036,"children":2037},{},[2038],{"type":1520,"value":1584},{"type":1515,"tag":1559,"props":2040,"children":2041},{"code":1587},[2042],{"type":1515,"tag":1533,"props":2043,"children":2044},{"__ignoreMap":1475},[2045],{"type":1520,"value":1587},{"type":1515,"tag":1516,"props":2047,"children":2048},{},[2049,2050,2055],{"type":1520,"value":1597},{"type":1515,"tag":1533,"props":2051,"children":2053},{"className":2052},[],[2054],{"type":1520,"value":1538},{"type":1520,"value":1604},{"type":1515,"tag":1516,"props":2057,"children":2058},{},[2059,2060,2065],{"type":1520,"value":1609},{"type":1515,"tag":1533,"props":2061,"children":2063},{"className":2062},[],[2064],{"type":1520,"value":1615},{"type":1520,"value":1617},{"type":1515,"tag":1547,"props":2067,"children":2068},{"id":1620},[2069],{"type":1520,"value":1623},{"type":1515,"tag":1516,"props":2071,"children":2072},{},[2073],{"type":1520,"value":1628},{"type":1515,"tag":1630,"props":2075,"children":2076},{},[2077,2085],{"type":1515,"tag":1634,"props":2078,"children":2079},{},[2080,2084],{"type":1515,"tag":1638,"props":2081,"children":2082},{},[2083],{"type":1520,"value":1642},{"type":1520,"value":1644},{"type":1515,"tag":1634,"props":2086,"children":2087},{},[2088,2092],{"type":1515,"tag":1638,"props":2089,"children":2090},{},[2091],{"type":1520,"value":1652},{"type":1520,"value":1654},{"type":1515,"tag":1516,"props":2094,"children":2095},{},[2096,2097,2102],{"type":1520,"value":1659},{"type":1515,"tag":1533,"props":2098,"children":2100},{"className":2099},[],[2101],{"type":1520,"value":1538},{"type":1520,"value":1666},{"type":1515,"tag":1559,"props":2104,"children":2105},{"code":1669},[2106],{"type":1515,"tag":1533,"props":2107,"children":2108},{"__ignoreMap":1475},[2109],{"type":1520,"value":1669},{"type":1515,"tag":1516,"props":2111,"children":2112},{},[2113],{"type":1520,"value":1679},{"type":1515,"tag":1547,"props":2115,"children":2116},{"id":1682},[2117],{"type":1520,"value":1685},{"type":1515,"tag":1516,"props":2119,"children":2120},{},[2121,2122,2127],{"type":1520,"value":1690},{"type":1515,"tag":1533,"props":2123,"children":2125},{"className":2124},[],[2126],{"type":1520,"value":1538},{"type":1520,"value":1697},{"type":1515,"tag":1516,"props":2129,"children":2130},{},[2131],{"type":1520,"value":1702},{"type":1515,"tag":1516,"props":2133,"children":2134},{},[2135,2136,2141,2142,2147],{"type":1520,"value":1707},{"type":1515,"tag":1533,"props":2137,"children":2139},{"className":2138},[],[2140],{"type":1520,"value":1713},{"type":1520,"value":1715},{"type":1515,"tag":1533,"props":2143,"children":2145},{"className":2144},[],[2146],{"type":1520,"value":1721},{"type":1520,"value":1723},{"type":1515,"tag":1516,"props":2149,"children":2150},{},[2151,2152,2156],{"type":1520,"value":1728},{"type":1515,"tag":1638,"props":2153,"children":2154},{},[2155],{"type":1520,"value":1733},{"type":1520,"value":1735},{"type":1515,"tag":1547,"props":2158,"children":2159},{"id":1738},[2160],{"type":1520,"value":1741},{"type":1515,"tag":1516,"props":2162,"children":2163},{},[2164],{"type":1520,"value":1746},{"type":1515,"tag":1516,"props":2166,"children":2167},{},[2168],{"type":1520,"value":1751},{"type":1515,"tag":1516,"props":2170,"children":2171},{},[2172],{"type":1520,"value":1756},{"type":1515,"tag":1559,"props":2174,"children":2175},{"code":1759},[2176],{"type":1515,"tag":1533,"props":2177,"children":2178},{"__ignoreMap":1475},[2179],{"type":1520,"value":1759},{"type":1515,"tag":1516,"props":2181,"children":2182},{},[2183,2184,2189],{"type":1520,"value":1769},{"type":1515,"tag":1533,"props":2185,"children":2187},{"className":2186},[],[2188],{"type":1520,"value":1615},{"type":1520,"value":1776},{"type":1515,"tag":1516,"props":2191,"children":2192},{},[2193],{"type":1520,"value":1781},{"type":1515,"tag":1547,"props":2195,"children":2196},{"id":1784},[2197],{"type":1520,"value":1787},{"type":1515,"tag":1516,"props":2199,"children":2200},{},[2201],{"type":1520,"value":1792},{"type":1515,"tag":1516,"props":2203,"children":2204},{},[2205,2206,2211,2212,2217,2218,2222],{"type":1520,"value":1797},{"type":1515,"tag":1533,"props":2207,"children":2209},{"className":2208},[],[2210],{"type":1520,"value":1803},{"type":1520,"value":1805},{"type":1515,"tag":1807,"props":2213,"children":2215},{"href":1809,"rel":2214},[1811],[2216],{"type":1520,"value":1814},{"type":1520,"value":1816},{"type":1515,"tag":1818,"props":2219,"children":2220},{},[2221],{"type":1520,"value":1822},{"type":1520,"value":1824},{"type":1515,"tag":1516,"props":2224,"children":2225},{},[2226],{"type":1520,"value":1829},{"type":1515,"tag":1630,"props":2228,"children":2229},{},[2230,2234,2238,2242,2246],{"type":1515,"tag":1634,"props":2231,"children":2232},{},[2233],{"type":1520,"value":1837},{"type":1515,"tag":1634,"props":2235,"children":2236},{},[2237],{"type":1520,"value":1842},{"type":1515,"tag":1634,"props":2239,"children":2240},{},[2241],{"type":1520,"value":1847},{"type":1515,"tag":1634,"props":2243,"children":2244},{},[2245],{"type":1520,"value":1852},{"type":1515,"tag":1634,"props":2247,"children":2248},{},[2249],{"type":1520,"value":1857},{"type":1515,"tag":1516,"props":2251,"children":2252},{},[2253],{"type":1520,"value":1862},{"type":1515,"tag":1516,"props":2255,"children":2256},{},[2257],{"type":1520,"value":1867},{"type":1515,"tag":1547,"props":2259,"children":2260},{"id":1870},[2261],{"type":1520,"value":1873},{"type":1515,"tag":1516,"props":2263,"children":2264},{},[2265],{"type":1520,"value":1878},{"type":1515,"tag":1516,"props":2267,"children":2268},{},[2269],{"type":1520,"value":1883},{"type":1515,"tag":1516,"props":2271,"children":2272},{},[2273],{"type":1520,"value":1888},{"type":1515,"tag":1516,"props":2275,"children":2276},{},[2277],{"type":1520,"value":1893},{"type":1515,"tag":1516,"props":2279,"children":2280},{},[2281],{"type":1520,"value":1898},{"title":1475,"searchDepth":1900,"depth":1900,"links":2283},[2284,2285,2286,2287,2288,2289],{"id":1549,"depth":1900,"text":1552},{"id":1620,"depth":1900,"text":1623},{"id":1682,"depth":1900,"text":1685},{"id":1738,"depth":1900,"text":1741},{"id":1784,"depth":1900,"text":1787},{"id":1870,"depth":1900,"text":1873},1787604490781]