[{"data":1,"prerenderedAt":1889},["ShallowReactive",2],{"navigation":3,"content-/writing/we-are-thinking-too-small":1457,"related-/writing/we-are-thinking-too-small":1681,"content-query-mvl4HnfLki":1744},[4,7,952,1176,1445,1448,1451,1454],{"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,1032,1035,1038,1041,1044,1047,1050,1053,1056,1059,1062,1065,1068,1071,1074,1077,1080,1083,1086,1089,1092,1095,1098,1101,1104,1107,1110,1113,1116,1119,1122,1125,1128,1131,1134,1137,1140,1143,1146,1149,1152,1155,1158,1161,1164,1167,1170,1173],{"title":957,"_path":958},"AI chat interfaces will replace web apps","/writing/ai-chat-interfaces-will-replace-web-apps",{"title":960,"_path":961},"Plot twist! AI made developers more valuable.","/writing/ai-is-not-replacing-developers-it-is-exposing-everyone-else",{"title":963,"_path":964},"AI integrations expose platforms without headless DNA","/writing/ai-native-composability-needs-real-api-first-dna",{"title":966,"_path":967},"AI will not live in one place, but trust has to","/writing/ai-will-not-live-in-one-place-but-trust-has-to",{"title":969,"_path":970},"Build context-aware MCPs, not API wrappers","/writing/build-context-aware-mcp-not-api-wrappers",{"title":972,"_path":973},"Choosing the right visual editor for your website Platform-First vs. Code-First","/writing/choosing-the-right-visual-editor",{"title":975,"_path":976},"Code is craft now, not labor","/writing/code-is-craft-now-not-labor",{"title":978,"_path":979},"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":981,"_path":982},"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":984,"_path":985},"Create a performant YouTube embed with a native web component","/writing/create-a-performant-youtube-embed-with-a-native-web-component",{"title":987,"_path":988},"Creating a custom video player in Vue.js","/writing/creating-a-custom-video-player-in-vue",{"title":990,"_path":991},"Cursor, rules, and my vibe engineer workflow","/writing/cursor-rules-and-my-vibe-engineer-workflow",{"title":993,"_path":994},"Cursor's moat","/writing/cursors-moat",{"title":996,"_path":997},"Development 101 for non-technical vibe coders","/writing/development-101-for-non-technical-vibe-coders",{"title":999,"_path":1000},"The DevRel Operating System","/writing/devrel-os",{"title":1002,"_path":1003},"DevRel success metrics that actually matter","/writing/devrel-success-metrics-that-actually-matter",{"title":1005,"_path":1006},"The different approaches to visual editing in headless CMS","/writing/different-approaches-to-visual-editing",{"title":1008,"_path":1009},"Digital experience platforms the old versus the new","/writing/digital-experience-platforms-the-old-versus-the-new",{"title":1011,"_path":1012},"Do we still need SDKs in the age of AI agents?","/writing/do-we-still-need-sdks-in-the-age-of-ai-agents",{"title":1014,"_path":1015},"Fast, personalized pages with Vercel Edge Middleware and Uniform","/writing/fast-personalized-pages-with-vercel-edge-middleware-and-uniform",{"title":1017,"_path":1018},"How I supercharched my website's speed","/writing/how-i-supercharched-my-websites-speed",{"title":1020,"_path":1021},"How to dynamically stream video","/writing/how-to-dynamically-stream-video",{"title":1023,"_path":1024},"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":1026,"_path":1027},"How to sniff out the Glue Monster","/writing/how-to-sniff-out-the-glue-monster",{"title":1029,"_path":1030},"I will not log into your vibe coded app","/writing/i-will-not-log-into-your-vibe-coded-app",{"title":953,"_path":954},{"title":1033,"_path":1034},"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":1036,"_path":1037},"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":1039,"_path":1040},"MACH versus monolithic suites","/writing/mach-versus-monolithic-suites",{"title":1042,"_path":1043},"Make the Web Greener, Luxury Edition","/writing/make-the-web-greener-luxury-edition",{"title":1045,"_path":1046},"MCP fragmentation, context efficiency, and the rise of curated skills","/writing/mcp-fragmentation-context-efficiency-and-the-rise-of-curated-skills",{"title":1048,"_path":1049},"Most CMS migrations fail before the first record moves","/writing/most-cms-migrations-fail-before-the-first-record-moves",{"title":1051,"_path":1052},"My Fitness Story","/writing/my-fitness-story",{"title":1054,"_path":1055},"New job alert - Hygraph 2023","/writing/new-job-alert",{"title":1057,"_path":1058},"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":1060,"_path":1061},"CMS Showdown do you need a page builder or a data modeler?","/writing/page-builder-cms-vs-data-modeler-cms",{"title":1063,"_path":1064},"SDKs are everywhere. But should you use them?","/writing/sdks-use-them-or-not",{"title":1066,"_path":1067},"TDD finally makes sense","/writing/tdd-finally-makes-sense",{"title":1069,"_path":1070},"Your team is the key to success when going headless","/writing/team-is-key-when-going-headless",{"title":1072,"_path":1073},"The 2015 Paris marathon","/writing/the-2015-paris-maratho",{"title":1075,"_path":1076},"The Age of the \"Super-T\" Product Person","/writing/the-age-of-the-super-t-product-person",{"title":1078,"_path":1079},"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":1081,"_path":1082},"Intuition and the real cost of research","/writing/the-best-product-decisions-were-never-analytical",{"title":1084,"_path":1085},"The case for boring setups","/writing/the-case-for-boring-setups",{"title":1087,"_path":1088},"The content Graph is the future","/writing/the-content-graph-is-the-future",{"title":1090,"_path":1091},"The Experience Factory why experience is the real flagship","/writing/the-experience-factory-01-why-experience-is-the-real-flagship",{"title":1093,"_path":1094},"The Future of CMS. It's dying.","/writing/the-future-of-cms-from-content-management-to-context-management",{"title":1096,"_path":1097},"The future of headless CMS Content Federation with GraphQL","/writing/the-future-of-headless-cms-content-federation-with-graphql",{"title":1099,"_path":1100},"The future of jamstack is composable","/writing/the-future-of-jamstack-is-composable",{"title":1102,"_path":1103},"The future of managing projects at agencies","/writing/the-future-of-managing-projects-at-agencie",{"title":1105,"_path":1106},"The future of software is bespoke","/writing/the-future-of-software-is-bespoke",{"title":1108,"_path":1109},"The lost promise of headless","/writing/the-lost-promise-of-headless",{"title":1111,"_path":1112},"The MACH monolith","/writing/the-mach-monolith",{"title":1114,"_path":1115},"The MACH monolith in 2026","/writing/the-mach-monolith-in-2026",{"title":1117,"_path":1118},"The move from monolithic to composable architectures","/writing/the-move-from-monolithic-to-composable-architectures",{"title":1120,"_path":1121},"The nuanced impact of AI we should not overlook","/writing/the-nuanced-impact-of-ai-we-should-not-overlook",{"title":1123,"_path":1124},"The pragmatic guide to coding with AI agents","/writing/the-pragmatic-guide-to-coding-with-ai-agents",{"title":1126,"_path":1127},"The real deal about content management buzzwords","/writing/the-real-deal-about-content-management-buzzword",{"title":1129,"_path":1130},"The Mini Shai-Hulud supply chain backlash will create worse software","/writing/the-supply-chain-backlash-will-create-worse-software",{"title":1132,"_path":1133},"The tool catalog is the product","/writing/the-tool-catalog-is-the-product",{"title":1135,"_path":1136},"The vibe-coded app architecture guide","/writing/the-vibe-coded-app-architecture-guide",{"title":1138,"_path":1139},"This is headless 2.0","/writing/this-is-headless-20",{"title":1141,"_path":1142},"Uniform DXCP the what, why, and how","/writing/uniform-dxcp-the-what-why-and-how",{"title":1144,"_path":1145},"Uniform is Nuxt 3 ready","/writing/uniform-is-nuxt-3-read",{"title":1147,"_path":1148},"Universal CMS the wheel we're reinventing","/writing/universal-cms-the-wheel-we-are-reinventing",{"title":1150,"_path":1151},"Want to be better at vibe coding? Become a better coder","/writing/want-to-be-better-at-vibe-coding-become-a-better-coder",{"title":1153,"_path":1154},"We are thinking too small","/writing/we-are-thinking-too-small",{"title":1156,"_path":1157},"We have collectively forgotten what monoliths are","/writing/we-have-collectively-forgotten-what-monoliths-are",{"title":1159,"_path":1160},"We moved the difficulty. We didn't make it disappear.","/writing/we-moved-the-difficulty",{"title":1162,"_path":1163},"What type of content organization do you need?","/writing/what-type-of-content-organization-do-you-need",{"title":1165,"_path":1166},"When Output Is Cheap, Taste Is Everything","/writing/when-output-is-cheap-taste-is-everything",{"title":1168,"_path":1169},"Why I didn't run the 2016 marathon","/writing/why-i-didnt-run-the-2016-marathon",{"title":1171,"_path":1172},"Your legacy patterns are technical debt in modern architecture","/writing/your-legacy-patterns-are-technical-debt-in-modern-architecture",{"title":1174,"_path":1175},"Your LinkedIn reads like a robot wrote it","/writing/your-linkedin-reads-like-a-robot",{"title":1177,"_path":1178,"children":1179},"Speaking","/speaking",[1180,1183,1186,1189,1192,1195,1198,1201,1204,1207,1210,1213,1216,1219,1222,1225,1228,1231,1234,1237,1240,1243,1246,1249,1252,1255,1258,1261,1264,1267,1270,1273,1276,1279,1282,1285,1288,1291,1294,1297,1300,1303,1306,1309,1312,1315,1318,1321,1324,1327,1330,1333,1336,1339,1342,1345,1348,1351,1354,1357,1360,1363,1366,1369,1372,1375,1378,1381,1384,1387,1390,1393,1396,1399,1402,1405,1408,1411,1414,1417,1420,1423,1426,1429,1432,1435,1438,1441,1444],{"title":1181,"_path":1182},"2019 02 14 Clifq5gzg40j20bw9ne2mh9n6","/speaking/2019-02-14-clifq5gzg40j20bw9ne2mh9n6",{"title":1184,"_path":1185},"2019 02 26 Clifq5gns3xhu0buv6a8th0jk","/speaking/2019-02-26-clifq5gns3xhu0buv6a8th0jk",{"title":1187,"_path":1188},"2019 04 19 Clifq5gd63xhq0buvufv6nagk","/speaking/2019-04-19-clifq5gd63xhq0buvufv6nagk",{"title":1190,"_path":1191},"2019 05 17 Clifq5g1f3wh90bw81u5sa0ai","/speaking/2019-05-17-clifq5g1f3wh90bw81u5sa0ai",{"title":1193,"_path":1194},"2019 05 25 Clifq5fpd3xt00aw4grnzft29","/speaking/2019-05-25-clifq5fpd3xt00aw4grnzft29",{"title":1196,"_path":1197},"2019 09 04 Clifq5fer3xhl0buvzzgwqg1k","/speaking/2019-09-04-clifq5fer3xhl0buvzzgwqg1k",{"title":1199,"_path":1200},"2019 09 09 Clifq5f1b3wh10bw8ftmppjkc","/speaking/2019-09-09-clifq5f1b3wh10bw8ftmppjkc",{"title":1202,"_path":1203},"2019 09 27 Clifq5eos3xhh0buvewly5gxs","/speaking/2019-09-27-clifq5eos3xhh0buvewly5gxs",{"title":1205,"_path":1206},"2019 11 28 Clifq5ebo3wgx0bw8vno5ce0d","/speaking/2019-11-28-clifq5ebo3wgx0bw8vno5ce0d",{"title":1208,"_path":1209},"2019 12 17 Clifq5dyh40ij0bw9oquw072b","/speaking/2019-12-17-clifq5dyh40ij0bw9oquw072b",{"title":1211,"_path":1212},"2020 02 18 Clifq5dk940if0bw9ok9achtj","/speaking/2020-02-18-clifq5dk940if0bw9ok9achtj",{"title":1214,"_path":1215},"2020 03 19 Clifq5dal3xsn0aw49a9wad1n","/speaking/2020-03-19-clifq5dal3xsn0aw49a9wad1n",{"title":1217,"_path":1218},"2020 04 22 Clifq5czw3wgs0bw8srwiffx1","/speaking/2020-04-22-clifq5czw3wgs0bw8srwiffx1",{"title":1220,"_path":1221},"2020 05 06 Clifq5cpx40hk0bw9odxcxt0q","/speaking/2020-05-06-clifq5cpx40hk0bw9odxcxt0q",{"title":1223,"_path":1224},"2020 05 13 Clifq5cfw3xh00buvhyslf4s3","/speaking/2020-05-13-clifq5cfw3xh00buvhyslf4s3",{"title":1226,"_path":1227},"2020 05 25 Clifq5c5u3wgo0bw8g8yudazp","/speaking/2020-05-25-clifq5c5u3wgo0bw8g8yudazp",{"title":1229,"_path":1230},"2020 05 28 Clifq5bvw40h20bw92kt7pmp1","/speaking/2020-05-28-clifq5bvw40h20bw92kt7pmp1",{"title":1232,"_path":1233},"2020 06 09 Clifq5bj73xrj0aw42st3pna4","/speaking/2020-06-09-clifq5bj73xrj0aw42st3pna4",{"title":1235,"_path":1236},"2020 07 21 Clifq5b6s3xrf0aw4s8ml5qjb","/speaking/2020-07-21-clifq5b6s3xrf0aw4s8ml5qjb",{"title":1238,"_path":1239},"2020 07 27 Clifq5axb3xgw0buvy6hrvpv2","/speaking/2020-07-27-clifq5axb3xgw0buvy6hrvpv2",{"title":1241,"_path":1242},"2020 08 05 Clifq5anp3xrb0aw4jxeipa7e","/speaking/2020-08-05-clifq5anp3xrb0aw4jxeipa7e",{"title":1244,"_path":1245},"2020 08 26 Clifq5a9x3wgk0bw8x8qfl5rk","/speaking/2020-08-26-clifq5a9x3wgk0bw8x8qfl5rk",{"title":1247,"_path":1248},"2020 09 17 Clifq59zj3wgg0bw8xmh09vvm","/speaking/2020-09-17-clifq59zj3wgg0bw8xmh09vvm",{"title":1250,"_path":1251},"2020 10 14 Clifq59mp3wgc0bw82qykah6x","/speaking/2020-10-14-clifq59mp3wgc0bw82qykah6x",{"title":1253,"_path":1254},"2020 10 29 Clifq59b83xr60aw45w2sqa1g","/speaking/2020-10-29-clifq59b83xr60aw45w2sqa1g",{"title":1256,"_path":1257},"2020 11 10 Clifq590340gy0bw9onnmgr7y","/speaking/2020-11-10-clifq590340gy0bw9onnmgr7y",{"title":1259,"_path":1260},"2020 11 11 Clifq58oo40gu0bw9iffiakmh","/speaking/2020-11-11-clifq58oo40gu0bw9iffiakmh",{"title":1262,"_path":1263},"2020 12 01 Clifq58cz3xr10aw4n6qndf3s","/speaking/2020-12-01-clifq58cz3xr10aw4n6qndf3s",{"title":1265,"_path":1266},"2020 12 02 Clifq582i3wg80bw8rszss5am","/speaking/2020-12-02-clifq582i3wg80bw8rszss5am",{"title":1268,"_path":1269},"2020 12 11 Clifq57o03xgp0buvlvdxm5l9","/speaking/2020-12-11-clifq57o03xgp0buvlvdxm5l9",{"title":1271,"_path":1272},"2020 12 16 Clifq57c43wg40bw81h7fr291","/speaking/2020-12-16-clifq57c43wg40bw81h7fr291",{"title":1274,"_path":1275},"2020 12 18 Clifq571z40gq0bw9b62wbowr","/speaking/2020-12-18-clifq571z40gq0bw9b62wbowr",{"title":1277,"_path":1278},"2021 01 12 Clifq56q43xgk0buv4hu04quz","/speaking/2021-01-12-clifq56q43xgk0buv4hu04quz",{"title":1280,"_path":1281},"2021 02 01 Clifq56gq3xqx0aw47qor4w9s","/speaking/2021-02-01-clifq56gq3xqx0aw47qor4w9s",{"title":1283,"_path":1284},"2021 02 02 Clifq56623xqt0aw44sbds5cn","/speaking/2021-02-02-clifq56623xqt0aw44sbds5cn",{"title":1286,"_path":1287},"2021 02 22 Clifq55tf40gk0bw9vofea3yp","/speaking/2021-02-22-clifq55tf40gk0bw9vofea3yp",{"title":1289,"_path":1290},"2021 03 03 Clifq55jz3xqp0aw4je7y5sw1","/speaking/2021-03-03-clifq55jz3xqp0aw4je7y5sw1",{"title":1292,"_path":1293},"2021 03 24 Clifq559p3xgf0buvzch9im3l","/speaking/2021-03-24-clifq559p3xgf0buvzch9im3l",{"title":1295,"_path":1296},"2021 04 07 Clifq54zf3wfz0bw80v5gzndk","/speaking/2021-04-07-clifq54zf3wfz0bw80v5gzndk",{"title":1298,"_path":1299},"2021 04 20 Clifq54na3xgb0buvrvmbamxf","/speaking/2021-04-20-clifq54na3xgb0buvrvmbamxf",{"title":1301,"_path":1302},"2021 04 29 Clifq54ct3wfu0bw8zsr9mejw","/speaking/2021-04-29-clifq54ct3wfu0bw8zsr9mejw",{"title":1304,"_path":1305},"2021 07 27 Clifq542s3xg60buvdk199xtq","/speaking/2021-07-27-clifq542s3xg60buvdk199xtq",{"title":1307,"_path":1308},"2021 09 07 Clifq53so3wfq0bw81xni3t7x","/speaking/2021-09-07-clifq53so3wfq0bw81xni3t7x",{"title":1310,"_path":1311},"2021 11 04 Clifq53ib40gf0bw9c3mxprzu","/speaking/2021-11-04-clifq53ib40gf0bw9c3mxprzu",{"title":1313,"_path":1314},"2021 11 10 Clifq536v3xg20buvlz1n7ddw","/speaking/2021-11-10-clifq536v3xg20buvlz1n7ddw",{"title":1316,"_path":1317},"2021 11 22 Clifq52wr3wfm0bw83eawjx9x","/speaking/2021-11-22-clifq52wr3wfm0bw83eawjx9x",{"title":1319,"_path":1320},"2021 12 01 Clifq52jm3xqj0aw4mxuyuaey","/speaking/2021-12-01-clifq52jm3xqj0aw4mxuyuaey",{"title":1322,"_path":1323},"2021 12 14 Clifq528940gb0bw9bok0o68k","/speaking/2021-12-14-clifq528940gb0bw9bok0o68k",{"title":1325,"_path":1326},"2022 01 27 Clifq51vy3wf30bw8qsv8nsv9","/speaking/2022-01-27-clifq51vy3wf30bw8qsv8nsv9",{"title":1328,"_path":1329},"2022 02 08 Clifq51j53wez0bw8cd1znjmi","/speaking/2022-02-08-clifq51j53wez0bw8cd1znjmi",{"title":1331,"_path":1332},"2022 02 10 Clifq515940g70bw9yu0ltedp","/speaking/2022-02-10-clifq515940g70bw9yu0ltedp",{"title":1334,"_path":1335},"2022 03 01 Clifq50sj40g30bw9rqy825mb","/speaking/2022-03-01-clifq50sj40g30bw9rqy825mb",{"title":1337,"_path":1338},"2022 03 02 Clifq50g53xfr0buv56km2voa","/speaking/2022-03-02-clifq50g53xfr0buv56km2voa",{"title":1340,"_path":1341},"2022 05 26 Clifq506e3wev0bw88q2lf63q","/speaking/2022-05-26-clifq506e3wev0bw88q2lf63q",{"title":1343,"_path":1344},"2022 06 02 Clifq4zvh40fz0bw986sdpv5u","/speaking/2022-06-02-clifq4zvh40fz0bw986sdpv5u",{"title":1346,"_path":1347},"2022 06 13 Clifq4z8o3xqf0aw49q8f55f9","/speaking/2022-06-13-clifq4z8o3xqf0aw49q8f55f9",{"title":1349,"_path":1350},"2022 06 13 Clifq4zjc40fv0bw95ufcly4y","/speaking/2022-06-13-clifq4zjc40fv0bw95ufcly4y",{"title":1352,"_path":1353},"2022 07 01 Clifq4ywg3xq60aw48tkujxyl","/speaking/2022-07-01-clifq4ywg3xq60aw48tkujxyl",{"title":1355,"_path":1356},"2022 07 27 Clifq4yep3xf20buv5vorwrl5","/speaking/2022-07-27-clifq4yep3xf20buv5vorwrl5",{"title":1358,"_path":1359},"2022 08 10 Clifq4xw640fr0bw9po5n2nug","/speaking/2022-08-10-clifq4xw640fr0bw9po5n2nug",{"title":1361,"_path":1362},"2022 08 11 Clifq4xdz3wek0bw862z7knrr","/speaking/2022-08-11-clifq4xdz3wek0bw862z7knrr",{"title":1364,"_path":1365},"2022 08 25 Clifq4x0z3xq20aw48a1n9hxy","/speaking/2022-08-25-clifq4x0z3xq20aw48a1n9hxy",{"title":1367,"_path":1368},"2022 09 14 Clifq4wqo40fh0bw9sifjtw70","/speaking/2022-09-14-clifq4wqo40fh0bw9sifjtw70",{"title":1370,"_path":1371},"2022 09 27 Clifq4wef3xpx0aw4l7ueiqwb","/speaking/2022-09-27-clifq4wef3xpx0aw4l7ueiqwb",{"title":1373,"_path":1374},"2022 10 14 Clifq4w263xet0buv0mzqzfre","/speaking/2022-10-14-clifq4w263xet0buv0mzqzfre",{"title":1376,"_path":1377},"2022 11 02 Clifq4vps3xep0buvimxfntyq","/speaking/2022-11-02-clifq4vps3xep0buvimxfntyq",{"title":1379,"_path":1380},"2022 11 08 Clifq4vdb40el0bw9il2y3pb4","/speaking/2022-11-08-clifq4vdb40el0bw9il2y3pb4",{"title":1382,"_path":1383},"2023 02 08 Clifq4uz43xpt0aw4mw4awvuj","/speaking/2023-02-08-clifq4uz43xpt0aw4mw4awvuj",{"title":1385,"_path":1386},"2023 03 29 Clifq4ul43we80bw8ihhkw7qr","/speaking/2023-03-29-clifq4ul43we80bw8ihhkw7qr",{"title":1388,"_path":1389},"2023 04 20 Clifq4u9b3xpm0aw45vj51alh","/speaking/2023-04-20-clifq4u9b3xpm0aw45vj51alh",{"title":1391,"_path":1392},"2023 05 12 Clifq4tw33we40bw8jxhaaroo","/speaking/2023-05-12-clifq4tw33we40bw8jxhaaroo",{"title":1394,"_path":1395},"2023 05 29 Clifq4thm3xel0buvdpqx8bdm","/speaking/2023-05-29-clifq4thm3xel0buvdpqx8bdm",{"title":1397,"_path":1398},"2023 06 06 Clifq4t4w40dr0bw98f7p9zrq","/speaking/2023-06-06-clifq4t4w40dr0bw98f7p9zrq",{"title":1400,"_path":1401},"2023 07 27 Clifq4sto3xph0aw4letve613","/speaking/2023-07-27-clifq4sto3xph0aw4letve613",{"title":1403,"_path":1404},"2024 02 29 Clkzot86xire30aujuy08465e","/speaking/2024-02-29-clkzot86xire30aujuy08465e",{"title":1406,"_path":1407},"2024 06 05 Clqdq6ui7ts730bvzmk1xw47t","/speaking/2024-06-05-clqdq6ui7ts730bvzmk1xw47t",{"title":1409,"_path":1410},"2024 06 26 Clxkjutfsgp2b08uncx30wni3","/speaking/2024-06-26-clxkjutfsgp2b08uncx30wni3",{"title":1412,"_path":1413},"2024 09 23 Clzln21ozhc5j07vyl823v9qt","/speaking/2024-09-23-clzln21ozhc5j07vyl823v9qt",{"title":1415,"_path":1416},"2024 10 02 Clzlmyfs3hhe607ur0myt53gv","/speaking/2024-10-02-clzlmyfs3hhe607ur0myt53gv",{"title":1418,"_path":1419},"2025 02 13 Cm0qgs8ctrqs207uk9qsijvlj","/speaking/2025-02-13-cm0qgs8ctrqs207uk9qsijvlj",{"title":1421,"_path":1422},"2025 03 13 Cm0qgtj7srztk07unk29eiehq","/speaking/2025-03-13-cm0qgtj7srztk07unk29eiehq",{"title":1424,"_path":1425},"2025 09 10 Clifq5gzg40j20bw9ne2mh9n2","/speaking/2025-09-10-clifq5gzg40j20bw9ne2mh9n2",{"title":1427,"_path":1428},"2025 09 11 Clifq5gzg40j20bw9ne2mh9n1","/speaking/2025-09-11-clifq5gzg40j20bw9ne2mh9n1",{"title":1430,"_path":1431},"2025 09 18 Clifq5gzg40j20bw9ne2mh9n3","/speaking/2025-09-18-clifq5gzg40j20bw9ne2mh9n3",{"title":1433,"_path":1434},"2025 09 19 Clifq5gzg40j20bw9n31322","/speaking/2025-09-19-clifq5gzg40j20bw9n31322",{"title":1436,"_path":1437},"2025 10 10 Clifq5gzg40j20bw9n333","/speaking/2025-10-10-clifq5gzg40j20bw9n333",{"title":1439,"_path":1440},"2025 10 24 Clifq5gzg40j20bw9n333asasdasd","/speaking/2025-10-24-clifq5gzg40j20bw9n333asasdasd",{"title":1442,"_path":1443},"2026 03 12 Clifq5gzg40j20bw9ne2mh9n87","/speaking/2026-03-12-clifq5gzg40j20bw9ne2mh9n87",{"title":1177,"_path":1178},{"title":1446,"_path":1447},"Live streams","/livestreams",{"title":1449,"_path":1450},"Press kit","/presskit",{"title":1452,"_path":1453},"Alive and kicking","/alive-and-kicking",{"title":1455,"_path":1456},"Uses","/uses",{"_path":1154,"_dir":1458,"_draft":1459,"_partial":1459,"_locale":1460,"title":1153,"description":1461,"slug":1462,"date":1463,"canonical_url":1464,"reading_time":1465,"tags":1466,"faqs":1473,"draft":1459,"head":1483,"image":1494,"body":1495,"_type":1675,"_id":1676,"_source":1677,"_file":1678,"_stem":1679,"_extension":1680},"writing",false,"","AI coding agents are not a threat to developer jobs, they are a fundamental shift in the economics of software creation. Just as the cloud removed the risk and capital cost of infrastructure, AI is removing the cost of writing and refactoring code. This kills the old moats that protected horizontal enterprise platforms and makes rebuilding wide, deeply integrated stacks viable. Instead of spending years stitching together narrow SaaS tools and APIs, teams can let agents generate bespoke services quickly and cheaply. The real risk is using AI only to speed up legacy glue work. Developers who win will treat the cost of reinventing the wheel as effectively zero and pursue much larger, previously impossible product ideas.","we-are-thinking-too-small","2026-06-20T10:00:00Z","https://timbenniks.dev/writing/ai-coding-agents-and-the-end-of-glue-software","6 min read",[1467,1468,1469,1470,1471,1472],"ai","architecture","web development","composable","cloudinary","devops",[1474,1477,1480],{"question":1475,"answer":1476},"How do AI coding agents change the economics of software development?","AI coding agents dramatically reduce the cost and time required to write and refactor code, similar to how cloud infrastructure removed the capital and risk constraints of buying physical servers. This makes experimentation cheap, shrinks the need for large dedicated teams for narrow tasks, and opens the door to building broader, more ambitious platforms. Instead of needing an army of engineers to cover the long tail of enterprise features, a small team can steer agents to produce highly specialized functionality on demand.",{"question":1478,"answer":1479},"Why does the article argue that glue software no longer makes sense?","Glue software emerged because it was too expensive and risky to rebuild everything from scratch, so teams stitched together many narrow SaaS tools and APIs. With AI agents able to generate entire services in minutes, the bottleneck becomes reading docs and debugging integrations, not writing code. In this new environment, building custom, cohesive services tailored to your needs is often faster and more maintainable than wiring together a dozen third-party systems, making much of the traditional integration layer obsolete.",{"question":1481,"answer":1482},"What should developers do differently in this new AI-driven era?","Developers should stop using AI merely to speed up existing workflows and instead question the constraints that created those workflows. They should explore larger, previously abandoned ideas that once required big teams, and push until they find genuine architectural limits rather than human-typing limits. Practically, this means being willing to rebuild parts of the stack, embrace unified platforms that tie runtime, infra, and tooling together, and treat the cost of reinventing key components as near zero when it unlocks better, more integrated products.",{"meta":1484},[1485,1487,1489,1492],{"property":1486,"content":1153},"twitter:title",{"property":1488,"content":1461},"twitter:description",{"property":1490,"content":1491},"keywords","ai, architecture, web development, composable, cloudinary, devops",{"property":1493,"content":1494},"twitter:image","https://res.cloudinary.com/dwfcofnrd/image/upload/f_auto,q_auto/v1781945621/website/think-bigger.png",{"type":1496,"children":1497,"toc":1667},"root",[1498,1506,1511,1516,1523,1528,1533,1538,1543,1549,1554,1559,1564,1569,1574,1580,1585,1590,1595,1600,1606,1611,1627,1641,1646,1652,1657,1662],{"type":1499,"tag":1500,"props":1501,"children":1502},"element","p",{},[1503],{"type":1504,"value":1505},"text","Developers are looking at coding agents and drawing the wrong conclusion. They see an agent resolve a ticket in an afternoon that used to take a team two weeks. They assume the work is drying up.",{"type":1499,"tag":1500,"props":1507,"children":1508},{},[1509],{"type":1504,"value":1510},"That framing is backward. We are judging these new tools by our old constraints. Most people are using AI to run the exact same plays they ran five years ago, just faster. They miss the structural shift. The economic rules that forced us to build small, fragmented, hyper-specialized software no longer apply.",{"type":1499,"tag":1500,"props":1512,"children":1513},{},[1514],{"type":1504,"value":1515},"It is time to think MUCH bigger.",{"type":1499,"tag":1517,"props":1518,"children":1520},"h2",{"id":1519},"the-pre-cloud-parallel",[1521],{"type":1504,"value":1522},"The pre-cloud parallel",{"type":1499,"tag":1500,"props":1524,"children":1525},{},[1526],{"type":1504,"value":1527},"To understand what is happening to code generation, look at what happened to infrastructure.",{"type":1499,"tag":1500,"props":1529,"children":1530},{},[1531],{"type":1504,"value":1532},"Before the cloud, launching a feature meant buying physical servers. You had to predict your traffic perfectly. If you guessed low, the servers crashed. If you guessed high, you burned capital on idle hardware. Because the infrastructure was rigid, experimentation was expensive and dangerous.",{"type":1499,"tag":1500,"props":1534,"children":1535},{},[1536],{"type":1504,"value":1537},"The cloud killed that risk. When you could spin a server up and down in seconds, you did not need a dedicated infrastructure team just to test an idea. You could start small and scale only if the market demanded it. The cloud did not eliminate engineering jobs. It created millions of them by making entirely new business models possible.",{"type":1499,"tag":1500,"props":1539,"children":1540},{},[1541],{"type":1504,"value":1542},"AI is doing to the writing of code what the cloud did to the hosting of it. The barrier to entry for experimentation has dropped to zero.",{"type":1499,"tag":1517,"props":1544,"children":1546},{"id":1545},"the-enterprise-moat",[1547],{"type":1504,"value":1548},"The enterprise moat",{"type":1499,"tag":1500,"props":1550,"children":1551},{},[1552],{"type":1504,"value":1553},"For the last ten years, conventional startup wisdom was simple. Do not build a giant horizontal platform. Competing directly with a behemoth like SAP or Adobe was a terrible idea.",{"type":1499,"tag":1500,"props":1555,"children":1556},{},[1557],{"type":1504,"value":1558},"The reason comes down to the shape of enterprise software. Most users rely on the same core set of features like authentication, pipelines, and notifications. A challenger looks at that core, builds a faster version, and assumes they can steal the market. But enterprise deals do not work that way. A massive client might love your UI, but they refuse to switch because they rely on one obscure feature, like a custom PDF invoice parser that talks to an ancient banking API.",{"type":1499,"tag":1500,"props":1560,"children":1561},{},[1562],{"type":1504,"value":1563},"Salesforce is made of thousands of those hyper-niche tools. No two clients use the same mix, but every client demands their specific set.",{"type":1499,"tag":1500,"props":1565,"children":1566},{},[1567],{"type":1504,"value":1568},"Historically, the only way to win those clients was to hire an army of engineers to build out that massive long tail. That capital requirement was a moat that kept the incumbents safe.",{"type":1499,"tag":1500,"props":1570,"children":1571},{},[1572],{"type":1504,"value":1573},"When the cost of writing code drops, that moat evaporates. You do not need a new sprint team to build a niche PDF parser. You just need a developer steering an agent. Suddenly, building wide horizontal software is economically viable.",{"type":1499,"tag":1517,"props":1575,"children":1577},{"id":1576},"stop-building-glue",[1578],{"type":1504,"value":1579},"Stop building glue",{"type":1499,"tag":1500,"props":1581,"children":1582},{},[1583],{"type":1504,"value":1584},"Because going wide used to bankrupt companies, the industry spent the last decade going deep. We built incredibly narrow verticals.",{"type":1499,"tag":1500,"props":1586,"children":1587},{},[1588],{"type":1504,"value":1589},"But this created a new architectural problem. We had brilliant, isolated services, and we had to make them talk to each other. We spent ten years building the glue. We wrote tools like tRPC to make the front end and back end agree on data types. We built custom OAuth brokers just to avoid fighting with five different dashboards for a simple Google login.",{"type":1499,"tag":1500,"props":1591,"children":1592},{},[1593],{"type":1504,"value":1594},"We accepted that stitching together a dozen third-party APIs was just how you build software responsibly.",{"type":1499,"tag":1500,"props":1596,"children":1597},{},[1598],{"type":1504,"value":1599},"That constraint is gone. If an agent can write and refactor entire services in ten minutes, gluing SaaS products together makes zero sense. Reading API docs and debugging webhooks now takes longer than just building the feature yourself.",{"type":1499,"tag":1517,"props":1601,"children":1603},{"id":1602},"rebuilding-the-stack",[1604],{"type":1504,"value":1605},"Rebuilding the stack",{"type":1499,"tag":1500,"props":1607,"children":1608},{},[1609],{"type":1504,"value":1610},"Instead of building another thin layer of glue, it is time to rebuild the paradigm.",{"type":1499,"tag":1500,"props":1612,"children":1613},{},[1614,1616,1625],{"type":1504,"value":1615},"Look at what Cloudflare is doing right now. They recently acquired ",{"type":1499,"tag":1617,"props":1618,"children":1622},"a",{"href":1619,"rel":1620},"https://voidzero.dev/",[1621],"nofollow",[1623],{"type":1504,"value":1624},"VoidZero",{"type":1504,"value":1626},", the company behind Vite and the modern JavaScript toolchain. They are are unifying the entire stack instead of wrapping their wrangler stuff with something that works better.",{"type":1499,"tag":1500,"props":1628,"children":1629},{},[1630,1632,1639],{"type":1504,"value":1631},"Through platforms like ",{"type":1499,"tag":1617,"props":1633,"children":1636},{"href":1634,"rel":1635},"https://void.cloud/",[1621],[1637],{"type":1504,"value":1638},"Void Cloud",{"type":1504,"value":1640},", the code itself becomes the infrastructure. The platform scans your application, detects what you are using, and automatically provisions databases, queues, and object storage natively on Cloudflare's global network. You do not have to string together a separate auth provider, a standalone database, and an independent hosting service. You get a single, cohesive environment from local development to edge deployment.",{"type":1499,"tag":1500,"props":1642,"children":1643},{},[1644],{"type":1504,"value":1645},"Ten years ago, trying to provide the runtime, the bundler, the database, and the cloud host all at once was guaranteed to fail. Today, you can point an AI tool at a fresh directory and deploy distinct, fully functional applications in minutes. The apps work because the foundational constraint of engineering cost has been removed.",{"type":1499,"tag":1517,"props":1647,"children":1649},{"id":1648},"push-until-it-breaks",[1650],{"type":1504,"value":1651},"Push until it breaks",{"type":1499,"tag":1500,"props":1653,"children":1654},{},[1655],{"type":1504,"value":1656},"The real risk to developers is not that an LLM will replace them. The risk is that they will use an LLM to write a slightly faster integration between a modern web app and a legacy API. That is applying new technology to maintain a workflow that only existed because human typing speed was slow.",{"type":1499,"tag":1500,"props":1658,"children":1659},{},[1660],{"type":1504,"value":1661},"Push until you hit the wall. You likely have a massive idea in the back of your head that you abandoned because it needed a team of ten. The wall that stopped you is gone. Try building it today and see how far you get before the architecture actually breaks. You will be surprised at how deep the water is.",{"type":1499,"tag":1500,"props":1663,"children":1664},{},[1665],{"type":1504,"value":1666},"The engineers who win this next era are the ones who realize the cost of reinventing the wheel is zero, and who decide to finally build a better vehicle.",{"title":1460,"searchDepth":1668,"depth":1668,"links":1669},2,[1670,1671,1672,1673,1674],{"id":1519,"depth":1668,"text":1522},{"id":1545,"depth":1668,"text":1548},{"id":1576,"depth":1668,"text":1579},{"id":1602,"depth":1668,"text":1605},{"id":1648,"depth":1668,"text":1651},"markdown","content:4.writing:we-are-thinking-too-small.md","content","4.writing/we-are-thinking-too-small.md","4.writing/we-are-thinking-too-small","md",[1682,1705,1725],{"_path":17,"_dir":1683,"_draft":1459,"_partial":1459,"_locale":1460,"title":16,"description":1684,"date":1685,"position":1686,"image":1687,"videoId":1688,"transcript":1689,"tags":1690,"playlist":1683,"body":1698,"_type":1675,"_id":1702,"_source":1677,"_file":1703,"_stem":1704,"_extension":1680},"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]",[1469,1691,1692,1693,1694,1695,1696,1697],"frontend-development","Cloud","Database","deployment","performance","frameworks","Media",{"type":1496,"children":1699,"toc":1700},[],{"title":1460,"searchDepth":1668,"depth":1668,"links":1701},[],"content:3.videos:alive-and-kicking:000-hhPiTREYobI.md","3.videos/alive-and-kicking/000-hhPiTREYobI.md","3.videos/alive-and-kicking/000-hhPiTREYobI",{"_path":20,"_dir":1683,"_draft":1459,"_partial":1459,"_locale":1460,"title":19,"description":1706,"date":1707,"position":1708,"image":1709,"videoId":1710,"transcript":1711,"tags":1712,"playlist":1683,"body":1718,"_type":1675,"_id":1722,"_source":1677,"_file":1723,"_stem":1724,"_extension":1680},"The folks at ContentCon asked me if I wanted to be the entertainment and open their annual conference with my Alive & Kicking guitar talk. Austin, Texas was awesome. Thanks for having me!\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2024-06-15T14:39:24Z","001","https://i.ytimg.com/vi/mvq-_s20NDk/maxresdefault.jpg","mvq-_s20NDk","[Music] it is now 543 in the morning and I'm on my way to Austin Texas cuz I'm speaking at content con and so let's just start driving anyways and because I have 24 hours of travel ahead that's why I'm this early all normally I speak at a conference just you know to to talk about the tech right now nope I have 15 probably 20 minutes to play my guitar go off stage and be gone anyways um I cannot keep driving like this so um let's make a montage shall we because this is 24 hours for d for travel anyways cheers [Music] [Applause] [Music] [Applause] [Music] so I haven't even talked about what I'm actually doing here at the conference because I did mention a little bit like I'm going to play guitar right on the entertainment and so actually um I'm coming here to do my Alive and Kicking talk which is basically a guitar karaoke where people can phote on what songs I play and together we make a mashup of four songs and then I play all the songs and the fun bit of course is that I'm using um technology that's all in the cloud it's hatless it's all in the browser and so it really fits a conference like this where I use the technology that they sell but I don't explain how to do it I actually just show you this is a way you can use it right and so because I'm traveling all the way here all the flights and stuff I couldn't bring a guitar because that's just really challenging to do and so I get here I buy a guitar and then we buy a nice flight case and then we send it back and so going back with the guitar is a lot safer than coming here because I come here and something goes wrong we're screwed essentially and so I'm going to buying a guitar now yeah [Music] [Music] now that is an awesome guitar I'm really really excited to use it so thank you content stack for actually um helping me get that and so after buying it um I went out on the town I saw a few people we had some lovely food and then we had a great um speakers dinner and then we went out for some whiskies and Good Times [Applause] [Music] [Applause] [Music] [Applause] [Music] [Applause] [Music] [Music] [Applause] more often V again try to hack it please I ask this on every conference and based on the audience they either hack it or they don't [Applause] [Music] [Applause] [Music] you",[1713,1714,1715,1716,1692,1469,1717,1697],"headless-cms","composable-architecture","digital-experience-platform","composable-dxp","Content",{"type":1496,"children":1719,"toc":1720},[],{"title":1460,"searchDepth":1668,"depth":1668,"links":1721},[],"content:3.videos:alive-and-kicking:001-mvq-_s20NDk.md","3.videos/alive-and-kicking/001-mvq-_s20NDk.md","3.videos/alive-and-kicking/001-mvq-_s20NDk",{"_path":23,"_dir":1683,"_draft":1459,"_partial":1459,"_locale":1460,"title":22,"description":1726,"date":1727,"position":1728,"image":1729,"videoId":1730,"transcript":1731,"tags":1732,"playlist":1683,"body":1737,"_type":1675,"_id":1741,"_source":1677,"_file":1742,"_stem":1743,"_extension":1680},"In this video, I explain how I created a Vue.js guitar karaoke system in which the browser controls everything. #vuejs and #nuxtjs deal with backing tracks, visualization, and guitar amp presets with midi. Users live-vote on which song I play next using #supabase.\n\nThe talk is called Alive and Kicking, a Vue into rock & roll. I did this talk in front of 1000 people at @VuejsAmsterdam in February 2023.\n\nThe code is open source: https://github.com/timbenniks/AliveAndKickingTalk\n\n00:00 Introduction\n00:57 Signal chain\n02:50 Webmidi controls the guitar amp\n07:26 Live-voting with Supabase\n11:49 Animated avatars for real-time votes\n14:17 Ending\n\nFollow me here:\nWebsite: https://timbenniks.dev\nTwitter: https://twitter.com/timbenniks\nGithub: https://github.com/timbenniks","2023-08-12T10:05:17Z","002","https://i.ytimg.com/vi/M0MrLIGs6I0/maxresdefault.jpg","M0MrLIGs6I0","I have created the ultimate piece of content for me personally as a devrel and I was thinking about this for a few years like how can I combine all my passions and have the right Tech at the right moment the right place to do it and I did and it worked I'm so excited I created a life and taking a few into rock and roll which is essentially a guitar karaoke run completely in the browser so I did this thing in front of a thousand people at a conference all my own no band behind me nothing else just a laptop a guitar and me plug-in go and the audience would live vote which songs I would play and everything happened really organically and it was a lot of fun and so in this video I'll show you how I build it [Music] let's first start with the signal chain so the signal chain of course starts with a guitar and that has to go into the computer so what we use for that is an audio interface that actually converts the analog to digital signal and over USB just sends it to the computer and so from there it goes into the laptop which then has a general output of audio over like HDMI or whatever you want to use that then goes to the venue's output and so this is the essential chain of where the guitar comes in but if you just do it like this it sounds really bad because it's just that dry signal from the guitar so what you need is you need to amplify it well that's what we do with this this is a tool by neural DSP and they have been working for a few years alongside a few other companies to actually make digital versions of old-school amplifiers that are also analog that sound amazing and a few years back this was possible but not affordable and now it gets much better and this was like 99 bucks it's amazing and so this also goes to the output of the computer and then of course we have the browser and so the browser itself playing the background tracks that I recorded because these songs were too long so I made them all two minutes recorded my own guitar backing tracks and then put back the original Focus that we extracted with AI so it feels like a real song but actually it's me playing most of the stuff and that also goes to the output and then of course there's this one more thing because from the refrain to the first to perhaps the solo or the outro of the song The Guitar needs to change its sound and so I'm using web midi API to talk from the browser to the amplifier to change the presets and the sounds like more echo or more volume or more you know gain and that could actually work through the browser using the midi API and so midi is a very old API that actually normally existed between Hardware devices you know from digital drum pads to keyboards that would actually talk over midi to other like Samplers and whatever or syncing things together with this midi signal and now that works in the browser and I had to just virtually create a midi instrument in my laptop and so we now virtually use midi between all these tools and it works extremely well let's talk a little bit about how this works in code so I just made a very very simple database because this is for a conference talk this is not live right this is not production code so I have each song has like a Json object essentially and so this is AC DC's Back in Black and you can see it has presets and so what this is doing essentially is um there is a preset control that you can send over midi and I want to go for preset 2 and the name should be Stadium Rock that's just the phrase that I'm using in the amp and Stadium Rock has to happen at second zero and then when the video is playing it's actually sending events right because it's just or I mean the audio so every second or I don't know how often but it keeps pushing events I'm here now I'm here now and I am made a listener that says oh I'm at 66 you know second 65. let me now send a program change a PC event from midi to go to program three and call it face bleeding solo so that's the solo right and then we go back to Stadium rock at second 106. and so this is literally just some chapters that I created in all these songs and when we actually go to the midi client here you can see it's getting the current time constantly from the audio player and so essentially just find the preset for the time and if it has set the preset it doesn't touch it but if there's a new preset that is higher than a certain value of where the time is it just sends this PC event over the midi and so there's literally it's that easy there's not that much to it and so essentially it's just watching the time find the preset and set the preset and so the only thing you have to do to make midi work is use an amazing Library called webmedi.js because the low level API in the browser is hard think about webgl it's pretty hard to use right web media just normalized it so the only thing you have to do is just okay let's just wait for web media to be enabled find my driver or find the midi interface I'm talking to this is a virtual one that I built in Mac OS everybody can do that and then sending presets is literally send program change on channel one and there's many things you can do in MIDI that I'm not going to talk about now because that's there's so much and so essentially when you look at that so this is now my AC DC here and you can see the amp here on the right actually sets on the default preset and it has like a lovely color here refresh this browser you'll see that it actually goes to you know zero seconds so it needs to actually send a midi event to the amp to say this is what you need to do so let's refresh so I just refreshed it goes to zero seconds and you can see this now changed to a brown interface called Stadium Rock 2. and so you can actually check here there's all these midi programs and so for channel one preset one it's boobie Boogie and then basically the stadium rock is preset two the solo for this song preset three so it's kind of mapped it just listens to these signals from the browser so when I go to play this I muted this for the video I'll go to like I don't know move it forward ah there we go so it just changed to the red face here so now it says here face bleeding solo and so it's just because it's that chapter in the song it changes whatever the amp is doing and if I go forward again oh now it went back to just the rhythm playing and that was essentially a really simple way for me to communicate between browser and amplifier which means I don't have to think about it it's all automated so I just hit play go in front of the stage don't look at my amp don't look at anything and just play and have fun all right on to the next I really wanted some interactivity in this talk because it would be the first talk of the day it would wake people up with loud music but I also wanted them to interact with you know what happened is happening on stage they have a bit of influence on what's Happening and so what I built is somebody goes to a life in kicking.forsale.app on their phone in the audience and they log in with GitHub and I want them to log in so I have their little Avatar image from GitHub that I can then use right and so the moment you log in you get to vote on five songs and you can only vote three times you can also just unfold or download and fold on another one and every time you vote I show you your avatar bouncing around on the screen which means if people start to be very enthusiastically you know voting and voting and voting you'll still see themselves live on the screen into huge venue of the conference which is a lot of fun so here on the left I have my slash live endpoint where I'm basically just counting the votes on the songs and you can see I did a few a few photos already in a previous session somewhere and on the right is essentially the interface that the end user will get to be able to vote so you're not logged in yet so let's just do that so I'm going to GitHub and I'm already logged in because I was already logged in in GitHub and this is using Super Bass for logging in and I cannot stress enough how easy it is to actually log in with Super Bass check this out literally I have a button that says login which is this function right I just do sign in with all provider GitHub done there's there's literally nothing else I have to do other than setting up my GitHub so people can log in with it this is ridiculous Super Bass you are awesome all right I have logged in and now see all the five songs here right and I just made it look good so yeah you have some lovely images behind when you scroll by it's just good fun and so when I hit vote let's vote on a few of them you can actually see my avatar bouncing around on the screen now and um I actually have three votes only so I can actually say you know what no more folds left let's remove this vote and add another vote and let's remove some a few more folds and then fold again so you can see my avatar you know going around and what I do is if like a thousand people at the same time do this every five seconds I'm removing the first little ball I've added here otherwise things go mental and this has to run at 60 frames per second while it's also visualizing the audio and also talking to the guitar amp right and so you could see every time I add a photo here these numbers update as well and all these photos are stored in Super Bass as well and so let's have a look at how I actually pull that off and so okay login is done so essentially we have a fold view component and all you need to know other than how it looks is song store which is Pina which works extremely well here upload the song ID or download the song ID and you can see like how many times you have folded what are the maximum Amber votes all this updated reactively with Pina and so in the songs um store here there's an upvote and a downfote and there's a few more but we don't need to go into that now it's so easy again with Super Bass I just have the user from Super Bass I have the client from Super Bass and literally I just say you know if I'm voting do I already have a thought from this user if so already voted stop it so if somebody's trying to hack my interface they will not be able to vote um and other than that I'm literally just saying okay I'm gonna vote well from votes and then insert this and I have a little TS ignore here please ignore that because this was coded really fast and I I didn't want to show you the errors um uh and that's it and then after that it just checks all the voted songs and then updates the interface with that and that's all there is to it it's a simple query if you want to download I'll just delete the row that's it so if you don't know how you have to write MySQL queries you don't need to know just do it like this and it's relatively simple and so there's one last bit which is like the moving balls right let's have a look at that one so let's go to life votes this is life votes and this is basically a huge canvas and what I've done I've actually created a real-time Channel Through the Super Bass SDK with nox.js every time a change happens on the photos table it actually sends refresh photos into my use async data function and so the refresh function is really easy and it's added by nux3 that essentially just refreshes your thing and this is mainly built for things like next page or paginated Ajax calls and so every time there's a new update to a table row I fresh do refresh and it queries again and this is how it gets this live thing going on because it just knows when a row was changed I query again and then I basically just create the photos data prop that is you know reactive and then you can do stuff with that and so then let's go down a little I have created a canvas and there are some gravity stuff going on and essentially what I'm doing is I create a ball and this bowl has a whole bunch of properties and it does request animation frame so 60 frames per second it's rendering these balls so every new vote is a ball and um it just renders it again with a little bit of math to make it kind of look like it's you're on the moon so it's not real gravity but it's almost real and then every time a new phone happens so I'm watching the photos reactive property I just you know add a new one with the the image of the user the avatar from cloudinary upload because I wanted to make them a PNG I wanted to rounded them and make them only 40 pixels wide and there's not much to it like and it just pushes a new ball that then is added to my canvas that is doing the animations all the time and then every five seconds it just removes a ball because otherwise it's too many balls it's ridiculous and so um once we go to another page we remove the real-time channel so it doesn't keep querying and there you go once you're done you go to the next song the whole thing repeats and so this is a short way to show you all the fun stuff that I've built and it's open source you can find it on my GitHub I'll put the link in the description and if you want more of this if you want me to do this on your conference feel free to reach out because this is so much fun to do um cheers and I'll speak to you soon [Music] thank you",[1691,1469,1733,1734,1697,1735,1692,1736],"Development","Tools","Audio","api",{"type":1496,"children":1738,"toc":1739},[],{"title":1460,"searchDepth":1668,"depth":1668,"links":1740},[],"content:3.videos:alive-and-kicking:002-M0MrLIGs6I0.md","3.videos/alive-and-kicking/002-M0MrLIGs6I0.md","3.videos/alive-and-kicking/002-M0MrLIGs6I0",{"_path":1154,"_dir":1458,"_draft":1459,"_partial":1459,"_locale":1460,"title":1153,"description":1461,"slug":1462,"date":1463,"canonical_url":1464,"reading_time":1465,"tags":1745,"faqs":1746,"draft":1459,"head":1750,"image":1494,"body":1756,"_type":1675,"_id":1676,"_source":1677,"_file":1678,"_stem":1679,"_extension":1680},[1467,1468,1469,1470,1471,1472],[1747,1748,1749],{"question":1475,"answer":1476},{"question":1478,"answer":1479},{"question":1481,"answer":1482},{"meta":1751},[1752,1753,1754,1755],{"property":1486,"content":1153},{"property":1488,"content":1461},{"property":1490,"content":1491},{"property":1493,"content":1494},{"type":1496,"children":1757,"toc":1882},[1758,1762,1766,1770,1774,1778,1782,1786,1790,1794,1798,1802,1806,1810,1814,1818,1822,1826,1830,1834,1838,1842,1852,1862,1866,1870,1874,1878],{"type":1499,"tag":1500,"props":1759,"children":1760},{},[1761],{"type":1504,"value":1505},{"type":1499,"tag":1500,"props":1763,"children":1764},{},[1765],{"type":1504,"value":1510},{"type":1499,"tag":1500,"props":1767,"children":1768},{},[1769],{"type":1504,"value":1515},{"type":1499,"tag":1517,"props":1771,"children":1772},{"id":1519},[1773],{"type":1504,"value":1522},{"type":1499,"tag":1500,"props":1775,"children":1776},{},[1777],{"type":1504,"value":1527},{"type":1499,"tag":1500,"props":1779,"children":1780},{},[1781],{"type":1504,"value":1532},{"type":1499,"tag":1500,"props":1783,"children":1784},{},[1785],{"type":1504,"value":1537},{"type":1499,"tag":1500,"props":1787,"children":1788},{},[1789],{"type":1504,"value":1542},{"type":1499,"tag":1517,"props":1791,"children":1792},{"id":1545},[1793],{"type":1504,"value":1548},{"type":1499,"tag":1500,"props":1795,"children":1796},{},[1797],{"type":1504,"value":1553},{"type":1499,"tag":1500,"props":1799,"children":1800},{},[1801],{"type":1504,"value":1558},{"type":1499,"tag":1500,"props":1803,"children":1804},{},[1805],{"type":1504,"value":1563},{"type":1499,"tag":1500,"props":1807,"children":1808},{},[1809],{"type":1504,"value":1568},{"type":1499,"tag":1500,"props":1811,"children":1812},{},[1813],{"type":1504,"value":1573},{"type":1499,"tag":1517,"props":1815,"children":1816},{"id":1576},[1817],{"type":1504,"value":1579},{"type":1499,"tag":1500,"props":1819,"children":1820},{},[1821],{"type":1504,"value":1584},{"type":1499,"tag":1500,"props":1823,"children":1824},{},[1825],{"type":1504,"value":1589},{"type":1499,"tag":1500,"props":1827,"children":1828},{},[1829],{"type":1504,"value":1594},{"type":1499,"tag":1500,"props":1831,"children":1832},{},[1833],{"type":1504,"value":1599},{"type":1499,"tag":1517,"props":1835,"children":1836},{"id":1602},[1837],{"type":1504,"value":1605},{"type":1499,"tag":1500,"props":1839,"children":1840},{},[1841],{"type":1504,"value":1610},{"type":1499,"tag":1500,"props":1843,"children":1844},{},[1845,1846,1851],{"type":1504,"value":1615},{"type":1499,"tag":1617,"props":1847,"children":1849},{"href":1619,"rel":1848},[1621],[1850],{"type":1504,"value":1624},{"type":1504,"value":1626},{"type":1499,"tag":1500,"props":1853,"children":1854},{},[1855,1856,1861],{"type":1504,"value":1631},{"type":1499,"tag":1617,"props":1857,"children":1859},{"href":1634,"rel":1858},[1621],[1860],{"type":1504,"value":1638},{"type":1504,"value":1640},{"type":1499,"tag":1500,"props":1863,"children":1864},{},[1865],{"type":1504,"value":1645},{"type":1499,"tag":1517,"props":1867,"children":1868},{"id":1648},[1869],{"type":1504,"value":1651},{"type":1499,"tag":1500,"props":1871,"children":1872},{},[1873],{"type":1504,"value":1656},{"type":1499,"tag":1500,"props":1875,"children":1876},{},[1877],{"type":1504,"value":1661},{"type":1499,"tag":1500,"props":1879,"children":1880},{},[1881],{"type":1504,"value":1666},{"title":1460,"searchDepth":1668,"depth":1668,"links":1883},[1884,1885,1886,1887,1888],{"id":1519,"depth":1668,"text":1522},{"id":1545,"depth":1668,"text":1548},{"id":1576,"depth":1668,"text":1579},{"id":1602,"depth":1668,"text":1605},{"id":1648,"depth":1668,"text":1651},1782135338292]